Skip to content

ALB作成

ALBでは以下の要件を実現する。

  • PCからのhttpsアクセスをTLS終端し、privateサブネットにあるGitLabサーバへ接続
    • リスナーはhttpsで受付 :ALB用サーバ証明書としてのACM作成
    • ルーティングはGitLabサーバ :ターゲットグループ作成
  • 接続元IPの制限 :セキュリティグループ作成
  • 接続元PCのクライアント証明書による相互認証 :認証局証明書CA.crt格納用S3バケット作成、

1. セキュリティグループ作成

alt text

2. ターゲットグループ作成

alt text

  • プロトコル:HTTP
  • ポート:80
  • ヘルスチェックパス:/-/health

3. ACM作成

alt text

検証用にはnoimk.comにサブドメインを切って作成してみるが、projectで利用する場合には適当なドメインを取得する必要がある。

以下はnoimk.comを利用する場合に、cloudflareですでに取得済みのnoimk.comを利用するためにcloudflare側に設定したもの。project利用の場合はRoute53でドメイン取得すればよしなにやってくれるはず。

[1] ACMでの検証用のCNAMEレコード → 「このドメインは本当にあなたの所有のものですか?」を確認するためのレコード

text
Type: CNAME

Name:
_0b834d1b1bc2dfdc38fb26d1105bedb4.pc2029gitlab

Target:
_9a9a02c88c81af1a5e5cbd0444fb1d5f.jkddzztszm.acm-validations.aws

Proxy:
DNS only

alt text

ACM側で自動で検証してくれので、数分待つ。cloudflareにちゃんと登録されたかどうか確認するのであれば、digする。

bash
dig _0b834d1b1bc2dfdc38fb26d1105bedb4.pc2029gitlab.noimk.com CNAME

ターゲットとして登録した_9axxxxx.acm-validations.awsが帰って来るはず。

[2] ALBへの名前解決用CNAMEレコード

これは後ほど設定する。

4. S3バケット作成

alt text

  • グローバル名:pc2029-s3-alb-ca-bucket
  • あとはデフォルトのまま
  • IAMポリシー不要:ALBは裏でS3読める
  • パブリック公開しない:公開URLで見れる必要ない

バケット作成できたら、caディレクトリ作って(任意)、CA証明書ca.crtアップロード

s3://pc2029-gitlab-ca-bucket/ca/ca.crtとなる

5. トラストストア作成

alt text

先ほどS3にアップロードしたca.crtを指定して、トラストストアを作成しておく。 証明書失効リストはひとまず要らない

6. ALB作成

alt text

alt text

alt text

alt text

alt text

alt text

先ほど作成したものたちを指定して、ALBを作成

→ミス。albの配置サブネットはprivateじゃなくてpublicにおく。

alt text

7. ALBのDNSレコードを登録

ALBが起動するとALBのDNSレコードが表示される。それをDNSレコードに追加する。

alt text

検証ではcloudflareのnoimk.comドメイン使うのでcloudflareに登録。

text
タイプ:
CNAME

名前:
pc2029gitlab.noimk.com

ターゲット:
pc2029-alb-520837669.ap-northeast-1.elb.amazonaws.com

プロキシステータス:
off(DNSのみ)

8. ALBからのアクセスをEC2のSGにて許可

忘れがちだが、EC2に付与しているSGにて、インバウンドルールをALBからのものを許可する

alt text