ALB Ingress を使用して ACK 専用クラスター 内のサービスにアクセスする前に、ALB Ingress コントローラーに必要な権限を付与する必要があります。このトピックでは、ACK 専用クラスター 内の ALB Ingress コントローラーコンポーネントに権限を付与する方法について説明します。
前提条件
使用上の注意
ALB Ingress コントローラーへのアクセス権限を付与する必要があるのは、ACK 専用クラスター のみです。ACK マネージドクラスター および Serverless Kubernetes クラスター の場合、ALB Ingress コントローラーに権限を付与しなくても ALB Ingress を使用できます。
手順
カスタムポリシーを作成します。
管理者権限を持つ 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] をクリックします。
クラスターのワーカー RAM ロールに権限を付与します。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、対象のクラスターの名前をクリックし、[基本情報] タブをクリックします。
[基本情報] タブで、[ワーカー RAM ロール] の右側にあるリンクをクリックして RAM コンソールに移動します。
[権限] タブで、[権限の付与] をクリックします。[権限の付与] パネルの [ポリシーの選択] セクションで、前のステップで作成したカスタムポリシーを見つけて選択します。
[OK] をクリックします。
[閉じる] をクリックします。
インスタンス RAM ロールのステータスを確認します。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[ノード] ページで、ターゲットノードのインスタンス ID (例:
i-2ze5d2qi9iy90pzb****) をクリックします。インスタンス詳細ページで、[インスタンス詳細] タブをクリックします。[その他の情報] セクションで、[RAM ロール] の右側に RAM ロールが表示されているかどうかを確認します。
RAM ロールがアタッチされていない場合は、ECS インスタンスに RAM ロールをアタッチします。詳細については、「インスタンス RAM ロールをデタッチまたは変更する」をご参照ください。
alb-ingress-controller Pod を削除して再作成し、コンポーネントが正しく動作していることを確認します。
重要この操作はオフピーク時に実行してください。
alb-ingress-controller Pod の名前を照会します。
kubectl -n kube-system get pod | grep alb-ingress-controller期待される出力:
NAME READY STATUS RESTARTS AGE alb-ingress-controller-*** 1/1 Running 0 60salb-ingress-controller 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出力は、再作成された Pod のステータスが [Running] であり、コンポーネントが正しく動作していることを示しています。
次のステップ
ACK 専用クラスター 内のサービスにアクセスするために ALB Ingress を使用する方法については、「ALB Ingress を作成してサービスを公開する」をご参照ください。