リソース定義@AWS Load Balancerコントローラー¶
はじめに¶
本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。
01. Ingressの.metadata.annotations
キー¶
Ingressの.metadata.annotations
キーとは¶
特定のNginxのルーティングルールを決める。
Ingressでalb
のIngressClassを指定する必要がある。
AWS Load Balancerコントローラーは、Ingressの.metadata.annotations
キーと.spec.rules
キーに設定に応じて、AWS ALBを自動的にプロビジョニングする。
alb.ingress.kubernetes.io/certificate-arn
キー¶
▼ alb.ingress.kubernetes.io/certificate-arn
キーとは¶
AWS ALBでHTTPSプロトコルを受け付ける場合、事前に作成したACMのSSL証明書のARNを設定する。
AWS LBコントローラーは、プロビジョニングしたALBにACMのSSL証明書を自動的に紐づける。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-northeast-1:<AWSアカウントID>:certificate/*****
▼ オートディスカバリー¶
ACMのSSL証明書のARNを指定せずとも、オートディスカバリーを使用して、ACMのSSL証明書を紐づけられる。
aws-load-balancer-controllerは、Ingressの.spec.tls
キーや.spec.rules[*].host
キーに基づいて、適切なACMのSSL証明書をALBに自動的に紐づける。
例えばIngressで.spec.rules[*].hosts
キーにfoo.example.com
を設定していた場合、aws-load-balancer-controllerは*.example.com
で認証されたSSL証明書をACMから探す。
alb.ingress.kubernetes.io/healthcheck-path
キー¶
ヘルスチェックのパスを設定する。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/healthcheck-path: /healthz
alb.ingress.kubernetes.io/inbound-cidrs
キー¶
インバウンド通信で許可するCIDRを設定する。
alb.ingress.kubernetes.io/wafv2-acl-arn
キーを使用して、同じルールを持ったWAFを紐づけても良い。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/inbound-cidrs: *.*.*.*
alb.ingress.kubernetes.io/listen-ports
キー¶
AWS ALBでインバウンド通信を受け付けるポート番号を設定する。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
alb.ingress.kubernetes.io/load-balancer-attributes
キー¶
AWS ALBの属性を設定する。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/load-balancer-attributes: access_logs.s3.enabled=true,access_logs.s3.bucket=foo-alb-ingress-backet,access_logs.s3.prefix=foo
alb.ingress.kubernetes.io/group.name
キー¶
Ingressのグループ名を設定する。
同じalb.ingress.kubernetes.io/group.name
キーのIngressを作成した場合、新しくALBを作成するのではなく、既存のALBにインバウンドルールのみを追加する。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/group.name: foo-common-alb
alb.ingress.kubernetes.io/scheme
キー¶
AWS ALBのスキームを設定する。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/success-codes
キー¶
成功した場合のステータスコードを設定する。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/success-codes: "200"
alb.ingress.kubernetes.io/subnets
キー¶
AWS ALBのルーティング先のサブネットを設定する。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/subnets: ["subnet-*****", "subnet-*****"]
alb.ingress.kubernetes.io/target-type
キー¶
▼ alb.ingress.kubernetes.io/target-type
キーとは¶
ルーティング先のターゲットタイプを設定する。
▼ instance
の場合¶
instanceターゲットタイプを設定する。
インスタンスターゲットタイプの場合、宛先PodのダウンストリームのServiceはNodePort Serviceとする。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/target-type: instance
▼ ip
の場合¶
IPターゲットタイプを設定する。
IPターゲットタイプの場合、宛先PodのダウンストリームのServiceはClusterIP Serviceとする。
AWS Fargateの場合は、ip
を設定する必要がある。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/target-type: ip
alb.ingress.kubernetes.io/waf-acl-id
キー¶
LBに紐付けるAWS WAF v1のIDを設定する。ALBと同じリージョンで、AWS WAF v1を作成する必要がある。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/waf-acl-id: *****
alb.ingress.kubernetes.io/wafv2-acl-arn
キー¶
LBに紐付けるAWS WAF v2のARNを設定する。ALBと同じリージョンで、AWS WAF v2を作成する必要がある。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: foo-alb-ingress
annotations:
alb.ingress.kubernetes.io/wafv2-acl-arn: arn:aws:wafv2:ap-northeast-1:<AWSアカウントID>:regional/webacl/<WAFのACL名>/<ID>
02. Ingressの.spec.rules
キー¶
AWS ALBのリスナールールを定義するために、Ingressの.spec.rules
キーを設定する。