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

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

- プロトコル:HTTP
- ポート:80
- ヘルスチェックパス:
/-/health
3. ACM作成

検証用には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
ACM側で自動で検証してくれので、数分待つ。cloudflareにちゃんと登録されたかどうか確認するのであれば、digする。
bash
dig _0b834d1b1bc2dfdc38fb26d1105bedb4.pc2029gitlab.noimk.com CNAMEターゲットとして登録した_9axxxxx.acm-validations.awsが帰って来るはず。
[2] ALBへの名前解決用CNAMEレコード
これは後ほど設定する。
4. S3バケット作成

- グローバル名:pc2029-s3-alb-ca-bucket
- あとはデフォルトのまま
- IAMポリシー不要:ALBは裏でS3読める
- パブリック公開しない:公開URLで見れる必要ない
バケット作成できたら、caディレクトリ作って(任意)、CA証明書ca.crtアップロード
s3://pc2029-gitlab-ca-bucket/ca/ca.crtとなる
5. トラストストア作成

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






先ほど作成したものたちを指定して、ALBを作成
→ミス。albの配置サブネットはprivateじゃなくてpublicにおく。

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

検証では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からのものを許可する
