ALB Ingress Controller は、Application Load Balancer (ALB)、Resource Access Management (RAM)、Virtual Private Cloud (VPC)、および Elastic Compute Service (ECS) の API を呼び出します。Container Service for Kubernetes (ACK) 専用クラスターでは、デフォルトでワーカーノードにクラウド API 権限がないため、ALB Ingress を介して公開されるサービスをデプロイする前に、これらの権限を付与する必要があります。
前提条件
作業を開始する前に、次の条件が満たされていることを確認してください。
注意事項
ALB Ingress Controller への権限付与は、ACK 専用クラスターでのみ必要です。ACK マネージドクラスターおよび ACK Serverless クラスターでは、ALB Ingress Controller に権限を付与しなくても ALB Ingress を利用できます。
ステップ1:カスタム RAM ポリシーの作成
-
管理権限を持つ RAM ユーザーとしてRAM コンソールにログインします。
-
左側メニューで、[権限] > [ポリシー] を選択します。
-
[ポリシー] ページで、[ポリシーの作成] をクリックします。

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

デフォルトのポリシーテンプレートには、
Version("1"に設定) とステートメント配列が含まれています。各ステートメントには、エフェクト(デフォルト値:"Allow")、Action、Resource、およびConditionが含まれます。必要なアクションとリソースをActionとResourceで指定します。 -
デフォルトのコンテンツを次のポリシードキュメントで置き換え、[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 コンソールを開きます。
-
[権限] タブで、[ポリシーのアタッチ] をクリックします。[ポリシーのアタッチ] パネルの [ポリシー] セクションで、前の手順で作成したカスタムポリシーを絞り込んで選択します。
-
[OK] をクリックします。
-
[閉じる] をクリックします。
ステップ3:インスタンス RAM ロールの確認
-
クラスター詳細ページの左側メニューで、[ノード] > [ノード] を選択します。
-
[ノード] ページで、ワーカーノードのインスタンス ID (例:
i-2ze5d2qi9iy90pzb****) をクリックします。 -
インスタンス詳細ページで、[インスタンスの詳細] タブをクリックします。[その他の情報] セクションで、[RAM ロール] の横にロール名が表示されているかどうかを確認します。RAM ロールがアタッチされていない場合は、ECS インスタンスにアタッチします。詳細については、「インスタンス RAM ロールのデタッチまたは変更」をご参照ください。
ステップ4:ALB Ingress Controller 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 60sRunning ステータスは、ALB Ingress Controller が新しい権限で正しく動作していることを示します。
次のステップ
ALB Ingress を使用してクラスター内のサービスにトラフィックをルーティングするには、「ALB Ingress を使用したサービスの公開」をご参照ください。