Documentation Index

Fetch the complete documentation index at: https://guide.ncloud-docs.com/llms.txt

Use this file to discover all available pages before exploring further.

ALB Ingress Controller の設定

Prev Next

VPC環境で利用できます。

ALB Ingress Controllerを用いて Kubernetes Ingressを Load Balancerと連携し、トラフィックをルーティングできます。

Kubernetesシステムで Ingressが作成されると ALB Ingress Controllerは Ingressに設定された値を活用して Load Balancerインスタンスを作成します。インスタンスが作成されると、Ingress Ruleで設定した Serviceのノードポートをポート値として使用し、ターゲットグループを作成してインスタンスに登録します。

注意
  • Kubernetesで作成された NAVERクラウドプラットフォームの Load Balancerは Kubernetesのリソースとして管理します。
  • Load Balancerをコンソールや APIを通じて変更する場合、Kubernetesとのステータス同期が正常に行われないため、予期せぬ問題が発生することがあります。Load Balancer設定変更が必要な場合、必ず Kubernetesリソースを変更する方式で行います。
  • コンソールまたは APIを用いた直接変更によって発生した問題には、テクニカルサポートを提供しません。

ALB Ingress Controllerのインストール

クラスタに ALB Ingress Controllerをインストールして準備する方法は、次の通りです。

  1. 以下のリージョンに該当するコマンドを実行し、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/install/pub/install.yaml
      
      • Kubernetes 1.19バージョン未満の場合、 https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/v0.3.1/docs/install/pub/install.yamlをインストールします。
    • シンガポール

      kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/main/docs/install/pub-sg/install.yaml
      
      • Kubernetes 1.19バージョン未満の場合、 https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/v0.3.1/docs/install/pub-sg/install.yamlをインストールします。
    • 日本

      kubectl --kubeconfig=$KUBE_CONFIG apply -f https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/main/docs/install/pub-jp/install.yaml
      
      • Kubernetes 1.19バージョン未満の場合、 https://raw.githubusercontent.com/NaverCloudPlatform/nks-alb-ingress-controller/v0.3.1/docs/install/pub-jp/install.yamlをインストールします。
  2. ALB Ingress Controllerが正常に Runningステータスであることを確認します。

kubectl --kubeconfig=$KUBE_CONFIG get pods -n kube-system -l app.kubernetes.io/name=alb-ingress-controller
  1. 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
TLS v1.3: TLSV13
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/listener-acl-id.{port} N/A Ingress リスナーに適用する ACL ID
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/enable-acl-operator false Ingress, Service ACL関連機能の ACL-operatorへの委任有無。有効化時に acl機能を無効化
  • 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を定義
設定可能な値は targetGroupredirection
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ポート
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 追加する条件を定義
設定可能な値は hostHeaderpathPatternhttpHeader
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 のユースケースをご参照ください。