- 印刷する
- PDF
ALB Ingress Controller の設定
- 印刷する
- PDF
最新のコンテンツが反映されていません。早急にアップデート内容をご提供できるよう努めております。最新のコンテンツ内容は韓国語ページをご参照ください。
VPC環境で利用できます。
ALB Ingress Controllerを用いて Kubernetes Ingressを Load Balancerと連携し、トラフィックをルーティングできます。
Kubernetesシステムで Ingressが作成されると ALB Ingress Controllerは Ingressに設定された値を活用して Load Balancerインスタンスを作成します。インスタンスが作成されると、Ingress Ruleで設定した Serviceのノードポートをポート値として使用し、ターゲットグループを作成してインスタンスに登録します。
Kubernetesで作成した NAVERクラウドプラットフォームのロードバランサを Kubernetesの Ingressリソースではなくコンソールと APIを通じて設定する場合、状態の同期に問題が発生する場合があります。作成されたロードバランサに関する設定の変更は、必ず Kubernetesで作成された Ingressリソースを変更して行ってください。
ALB Ingress Controllerのインストール
クラスタに ALB Ingress Controllerをインストールして準備する方法は、次の通りです。
以下のリージョンに該当するコマンドを実行し、ALB Ingress Controllerをインストールします。
参考ハイパーバイザが KVMであるクラスタは ALB Ingress Controllerを基本的に含めているため、別途インストールせずにすぐ使用できます。
- kube-systemの名前空間に alb-ingress-controllerが作成され、必要な ServiceAccount、ClusterRole、ClusterRoleBinding、IngressClassが一緒に作成されます。
韓国
kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/main/docs/ja/install/pub/install.yaml
- Kubernetes 1.19バージョン未満の場合、 https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/v0.3.1/docs/ja/install/pub/install.yamlをインストールします。
シンガポール
kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/main/docs/ja/install/pub-sg/install.yaml
- Kubernetes 1.19バージョン未満の場合、 https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/v0.3.1/docs/ja/install/pub-sg/install.yamlをインストールします。
日本
kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/main/docs/ja/install/pub-jp/install.yaml
- Kubernetes 1.19バージョン未満の場合、 https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/v0.3.1/docs/ja/install/pub-jp/install.yamlをインストールします。
Ingressのリソースに spec.ingressClassName: albフィールドを追加します。
- Kubernetes 1.19バージョン未満の場合 kubernetes.io/ingress.class: albアノテーションを追加します。
ALB Ingress Controllerの設定とアノテーション
ALB Ingress Controllerの基本設定
ALB Ingress Controllerの基本設定に関する説明は、次の通りです。
- Service type: NodePort
Ingressで表示する Serviceはすべて NodePort typeで作成する必要があります。 - Default Rule
Default Ruleはマッチングされる Ruleがない場合に適用される Ruleで、spec.defaultBackendに設定できます。
個別の ruleと use-annotationは設定できず、設定しなかった場合は80ポートに設定されたデフォルトのターゲットグループが作成されます。 - Rule Priority
Ingressで定義した Ruleの順序に沿って優先順位が決まります。トップにある Ruleの優先順位が1に設定されます。
ALB Ingress Controllerのアノテーション
Kubernetes Ingressと Serviceオブジェクトに、アノテーションを使用して設定を変更できます。
以下の表を参照して必要なアノテーションを使用します。ALB Ingress Controllerのアノテーションはすべて alb.ingress.kubernetes.io/で始まります。
アノテーション | デフォルト値 | 適用リソース | 説明 |
---|---|---|---|
alb.ingress.kubernetes.io/listen-ports | [{"HTTP":80}] (証明書番号が設定されている場合は[{"HTTPS":443}]) | Ingress | Listenerのプロトコルとポート設定リスト。 使用可能なプロトコル: HTTP、HTTPS |
alb.ingress.kubernetes.io/description | Automatically Created By NKS | Ingress | ロードバランサのメモ |
alb.ingress.kubernetes.io/ssl-certificate-no | N/A | Ingress | プロトコルが HTTPSのリスナーに適用する Certificate Managerの証明書番号。コンマ区切り文字による複数証明書登録が可能。 (証明書番号は Resource Managerの nrnで確認可能) (例: nrn:PUB:CertificateManager::000:Certificate/External/${certificateNo}) |
alb.ingress.kubernetes.io/ssl-min-version | TLSV10 | Ingress | TLS Protocolバージョン -設定可能なバージョンと値 TLS v1.0: TLSV10 TLS v1.1: TLSV11 TLS v1.2: TLSV12 |
alb.ingress.kubernetes.io/enable-http2 | false | Ingress | プロトコルが HTTPSであるリスナーの HTTP/2の有効化有無 |
alb.ingress.kubernetes.io/cipher-suite-list | リスナーでサポートするすべての cipher suite | Ingress | リスナーでサポートする Cipher Suiteリスト (例: ["TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA", "TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256", "TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256"]) |
alb.ingress.kubernetes.io/load-balancer-size | small | Ingress | ロードバランサの負荷処理性能の設定 設定可能な値: small、medium、large、xlarge |
alb.ingress.kubernetes.io/idle-timeout | 60 | Ingress | ロードバランサの Idle Timeout設定 |
alb.ingress.kubernetes.io/network-type | public | Ingress | ロードバランサのネットワークタイプの設定(作成時のみ使用) プライベート: private、パブリック: public |
alb.ingress.kubernetes.io/public-ip-instance-no | N/A | Ingress | パブリック IPアドレスのインスタンス番号 |
alb.ingress.kubernetes.io/ncloud-load-balancer-retain-public-ip-on-termination | false | Ingress | ロードバランサ返却時のパブリック IPアドレスの保存有無 |
alb.ingress.kubernetes.io/subnet-id | kube-system configmap(ncloud-config) の lbSubnetNo 値 | Ingress | ロードバランサを作成するためのロードバランサ専用サブネットの ID値(作成時にのみ使用) |
alb.ingress.kubernetes.io/actions.${actionName} | N/A | Ingress | Listener Ruleの機能を使用するための設定(下段の説明を参照) |
alb.ingress.kubernetes.io/conditions.${conditionName} | N/A | Ingress | Ingress Ruleの Host、Path条件に追加条件を適用するための設定(下段の説明を参照) |
alb.ingress.kubernetes.io/enable-access-log | false | Ingress | アクセスログ収集の設定(Cloud Log Analyticsサービスご利用の申し込みが必要) |
alb.ingress.kubernetes.io/load-balancer-name | N/A | Ingress | ロードバランサ名(作成時のみ適用) 名前命名ルール: 長さ3 ~ 30文字、英数字/「-」のみ許可、英字で始まる |
alb.ingress.kubernetes.io/ssl-redirect | N/A | Ingress | SSL Redirect対象ポートの設定 |
alb.ingress.kubernetes.io/algorithm-type | round-robin | Ingress, Service | Target Groupのロードバランシングアルゴリズムの設定 設定可能な値: round-robin、least-connection、source-ip-hash |
alb.ingress.kubernetes.io/unhealthy-threshold-count | 2 | Ingress, Service | Health Check失敗のしきい値 |
alb.ingress.kubernetes.io/healthy-threshold-count | 2 | Ingress, Service | Health Check成功のしきい値 |
alb.ingress.kubernetes.io/healthcheck-port | TargetGroupのポート | Ingress, Service | Health Checkのポート |
alb.ingress.kubernetes.io/healthcheck-path | '/' | Ingress, Service | Health Check URLパス |
alb.ingress.kubernetes.io/healthcheck-interval-seconds | 30 | Ingress, Service | Health Checkの周期(秒) |
alb.ingress.kubernetes.io/healthcheck-protocol | HTTP | Ingress, Service | Health Checkのプロトコル HTTP, HTTPS |
alb.ingress.kubernetes.io/backend-protocol | HTTP | Ingress, Service | Target Groupのプロトコル HTTP, HTTPS |
alb.ingress.kubernetes.io/enable-sticky-session | false | Ingress, Service | Target Groupの Sticky Session設定 |
alb.ingress.kubernetes.io/actions.${actionName}
:actions
モデルに合わせて JSON形式の stringで作成し、Listener Ruleの追加機能を設定できます。Ingressに設定された Ruleの service.nameを使用しようとする${actionName}
に設定し、service.port.nameを use-annotationに設定するとアノテーションが適用されます。
プロパティ | タイプ | 説明 |
---|---|---|
type | string | actionの typeを定義 設定可能な値は targetGroup 、 redirection |
targetGroup | object | actionの typeを targetGroupに設定した場合に使用 |
targetGroup.targetGroups | array | トラフィックを転送する Serviceのリスト |
targetGroup.targetGroups[n].serviceName | string | service name |
targetGroup.targetGroups[n].servicePort | number | service port |
targetGroup.enableStickySession | boolean | sticky sessionの有効化有無 デフォルト値: false |
redirection | object | actionの typeを redirectionに設定した場合に使用 |
redirection.host | string | デフォルト値: #{host} |
redirection.path | string | デフォルト値: /#{path} |
redirection.query | string | デフォルト値: #{query} |
redirection.port | string | redirectionポート デフォルト値: #{port} |
redirection.protocol | string | 設定可能なプロトコル: HTTP、HTTPS デフォルト値: #{protocol} |
redirection.statusCode | number | 設定可能なコード: 301、302 |
alb.ingress.kubernetes.io/conditions.${conditionName}
:conditions
モデルに適した JSON形式の stringで作成し、Ingressで定義された Host、Path条件以外に他の条件を追加で設定できます。当該条件は、Ingress Ruleで${conditionName}
と一致する serviceNameを持つ Serviceに適用されます。
プロパティ | タイプ | 説明 |
---|---|---|
field | string | 追加する条件を定義 設定可能な値は hostHeader 、 pathPattern 、 httpHeader |
hostHeader | object | conditionの fieldを hostHeaderに設定した場合に使用 |
hostHeader.values | array | hostリスト |
hostHeader.values[n] | string | host値 |
pathPattern | object | conditionの fieldを pathPatternに設定した場合に使用 |
pathPattern.values | array | pathリスト |
pathPattern.values[n] | string | path値 |
httpHeader | object | conditionの fieldを httpHeaderに設定した場合に使用 |
httpHeader.key | string | header key値 |
httpHeader.values | array | header value値のリスト |
サンプルコード
ALB Ingress Controllerの詳細なユースケースは、ALB Ingress Controller活用のユースケースをご参照ください。