コンテンツにスキップ

リソース定義@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キーを設定する。