--- title: "ALB Ingress Controller 設定" slug: "k8s-k8suse-albingress" tags: ["ALB Ingress Controller", "Load Balancer", "Ncloud Kubernetes Service", "VPC"] updated: 2026-09-17T09:31:52Z published: 2026-09-17T09:31:52Z canonical: "guide.ncloud-docs.com/k8s-k8suse-albingress" --- > ## 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 設定 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** - マッチングされる 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を定義 - 設定可能な値: `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ポート | | `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値のリスト | #### マルチゾーン Subnet IDを指定 マルチゾーンクラスタで ALBを作成する場合、各ゾーンのロードバランサ専用 Subnet IDを `alb.ingress.kubernetes.io/subnet-id` アノテーションに入力できます。マルチゾーンクラスタで Subnet IDを指定する場合、以下の内容をご参照ください。 - 2つ以上を入力する場合、コンマ(,)で区切ります。 - 各ゾーンごとにロードバランサ専用サブネットは、1つのみ指定できます。 - 同じゾーンに属する Subnet IDを2つ以上入力すると、ALB作成に失敗します。 - `subnet-id` 値は ALBを作成する場合のみ適用されます。作成された ALBのサブネットを変更するには、ALBを再度作成します。 - マルチゾーンサブネットを指定する場合、パブリック IPアドレスを指定して割り当てられません。 ``` metadata: annotations: alb.ingress.kubernetes.io/subnet-id: "123456,234567" ``` ### ロードバランサ管理を一時停止 `lb.ncloud.naver.com/pause: "true"`は Kubernetes 1.36以上の KVMクラスタで使用できる一時停止オプションです。この値が設定されると、コントローラの spec/provider reconcileが一時停止されます。 | 適用対象 | 動作 | | --- | --- | | Ingress | - pause中、Ingress変更事項が Load Balancer設定に反映されない - pauseステータスで Ingressを削除しても、既に作成された Ncloud LB/TGは削除せずに維持 | 注意 pauseは既に作成された Ncloud LB/TGを保存するためのオプションです。pauseステータスでは欠落した Load Balancerリソースを新しく作成しません。変更反映を再開するには、入力リソースで pauseアノテーションを削除します。 ### サンプルコード ALB Ingress Controllerの詳細なユースケースは、[ALB Ingress Controller のユースケース](/docs/ja/k8s-k8sexamples-albingress)をご参照ください。