ALB Ingress コントローラーは、ご利用のクラスターに代わってロードバランサーリソースを作成および管理するために、Application Load Balancer (ALB)、Resource Access Management (RAM)、VPC、Elastic Compute Service (ECS) API など、Alibaba Cloud API を呼び出します。ACK 専用クラスターでは、コントローラーはデフォルトでクラウド API 権限を持たないワーカーノードで実行されます。このトピックでは、コントローラーが ALB リソースを管理できるように、必要な権限を付与する方法について説明します。
この手順は、ACK 専用クラスターにのみ適用されます。ACK マネージドクラスターおよび ACK Serverless クラスターの場合、ALB Ingress コントローラーはすでに必要な権限を持っており、追加の構成は不要です。
前提条件
開始する前に、以下を確認してください。
-
ACK 専用クラスター
-
クラスターに ALB Ingress コントローラーコンポーネントがインストールされていること
ステップ 1: カスタム RAM ポリシーの作成
-
管理者権限を持つ RAM ユーザーとして、RAM コンソールにログインします。
-
左側のナビゲーションウィンドウで、[権限] > [ポリシー] を選択します。
-
「ポリシー」ページで、[ポリシーの作成] をクリックします。

-
「ポリシーの作成」ページで、[JSON] タブをクリックします。

-
デフォルトのコンテンツを以下のポリシードキュメントに置き換え、[OK] をクリックします。
説明複数のポリシー ステートメントはコンマ (,) で区切ります。
{ "Version": "1", "Statement": [ { "Action": [ "alb:EnableLoadBalancerIpv6Internet", "alb:DisableLoadBalancerIpv6Internet", "alb:CreateAcl", "alb:DeleteAcl", "alb:ListAcls", "alb:ListAclRelations", "alb:AddEntriesToAcl", "alb:AssociateAclsWithListener", "alb:ListAclEntries", "alb:RemoveEntriesFromAcl", "alb:DissociateAclsFromListener", "alb:TagResources", "alb:UnTagResources", "alb:ListServerGroups", "alb:ListServerGroupServers", "alb:AddServersToServerGroup", "alb:RemoveServersFromServerGroup", "alb:ReplaceServersInServerGroup", "alb:CreateLoadBalancer", "alb:DeleteLoadBalancer", "alb:UpdateLoadBalancerAttribute", "alb:UpdateLoadBalancerEdition", "alb:EnableLoadBalancerAccessLog", "alb:DisableLoadBalancerAccessLog", "alb:EnableDeletionProtection", "alb:DisableDeletionProtection", "alb:ListLoadBalancers", "alb:GetLoadBalancerAttribute", "alb:ListListeners", "alb:CreateListener", "alb:GetListenerAttribute", "alb:UpdateListenerAttribute", "alb:ListListenerCertificates", "alb:AssociateAdditionalCertificatesWithListener", "alb:DissociateAdditionalCertificatesFromListener", "alb:DeleteListener", "alb:CreateRule", "alb:DeleteRule", "alb:UpdateRuleAttribute", "alb:CreateRules", "alb:UpdateRulesAttribute", "alb:DeleteRules", "alb:ListRules", "alb:UpdateListenerLogConfig", "alb:CreateServerGroup", "alb:DeleteServerGroup", "alb:UpdateServerGroupAttribute", "alb:UpdateLoadBalancerAddressTypeConfig", "alb:AttachCommonBandwidthPackageToLoadBalancer", "alb:DetachCommonBandwidthPackageFromLoadBalancer", "alb:UpdateServerGroupServersAttribute", "alb:MoveResourceGroup", "alb:DescribeZones", "alb:ListAScripts", "alb:CreateAScripts", "alb:UpdateAScripts", "alb:DeleteAScripts" ], "Resource": "*", "Effect": "Allow" }, { "Action": "ram:CreateServiceLinkedRole", "Resource": "*", "Effect": "Allow", "Condition": { "StringEquals": { "ram:ServiceName": [ "alb.aliyuncs.com", "audit.log.aliyuncs.com", "nlb.aliyuncs.com", "logdelivery.alb.aliyuncs.com" ] } } }, { "Action": [ "log:GetProductDataCollection", "log:OpenProductDataCollection", "log:CloseProductDataCollection" ], "Resource": "acs:log:*:*:project/*/logstore/alb_*", "Effect": "Allow" }, { "Action": [ "yundun-cert:DescribeSSLCertificateList", "yundun-cert:DescribeSSLCertificatePublicKeyDetail", "yundun-cert:CreateSSLCertificateWithName", "yundun-cert:DeleteSSLCertificate" ], "Resource": "*", "Effect": "Allow" }, { "Action": "vpc:DescribeVSwitches", "Resource": "*", "Effect": "Allow" }, { "Action": "ecs:DescribeNetworkInterfaces", "Resource": "*", "Effect": "Allow" } ] } -
「[ポリシーの作成]」ダイアログボックスで、「[ポリシー名]」と「[説明]」を入力し、「[OK]」をクリックします。
ステップ 2: ポリシーをワーカー RAM ロールにアタッチ
-
「ACK コンソール」にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
-
[クラスター] ページで、クラスター名をクリックし、[基本情報] タブをクリックします。
-
[基本情報] タブで、[ワーカー RAM ロール] の右側のリンクをクリックして、RAM コンソールを開きます。
-
[権限] タブで、[権限の付与] をクリックします。[権限の付与] パネルで、手順 1 で作成したカスタムポリシーを見つけ、選択します。
-
[権限の付与] をクリックし、次に [閉じる] をクリックします。
ステップ 3: インスタンス RAM ロールの確認
-
クラスター詳細ページの左側のナビゲーションウィンドウで、[ノード] > [ノード] を選択します。
-
[ノード]ページで、ワーカーノードのインスタンス ID(例:
i-2ze5d2qi9iy90pzb****)をクリックします。 -
インスタンスの詳細ページで、[インスタンスの詳細] タブをクリックします。[その他の情報] セクションで、[RAM ロール] の横に RAM ロールが表示されているかどうかを確認します。RAM ロールがアタッチされていない場合は、ECS インスタンスに RAM ロールをアタッチします。詳細については、「インスタンスの RAM ロールの分離または変更」をご参照ください。
ステップ 4: ALB Ingress コントローラー Pod の再起動
この手順は、オフピーク時間帯に実行してください。
新しい権限を認識させるために、alb-ingress-controller Pod を再起動します。
-
Pod 名を取得します。
kubectl -n kube-system get pod | grep alb-ingress-controller期待される出力:
NAME READY STATUS RESTARTS AGE alb-ingress-controller-*** 1/1 Running 0 60s -
Pod を削除します。
alb-ingress-controller-***を前の手順で取得した名前に置き換えます。kubectl -n kube-system delete pod alb-ingress-controller-***期待される出力:
pod "alb-ingress-controller-***" deleted 数分後、Pod が再び実行中であることを確認します。
kubectl -n kube-system get pod期待される出力:
NAME READY STATUS RESTARTS AGE alb-ingress-controller-***2 1/1 Running 0 60s[実行中] 状態により、コントローラーが新しい権限で正しく動作していることを確認できます。
次のステップ
ALB Ingress を使用してクラスター内のサービスにトラフィックをルーティングするには、「ALB Ingress を使用したサービスの公開」をご参照ください。