Application Load Balancer(ALB)Ingress を使用して ACK 専用 クラスターにデプロイされたサービスにアクセスするには、まずクラスターに ALB Ingress コントローラーに対する権限を付与する必要があります。このトピックでは、ACK 専用クラスター に ALB Ingress コントローラーへのアクセスを承認する方法について説明します。
前提条件
注意事項
クラスターが ACK 専用クラスター の場合のみ、クラスターに ALB Ingress コントローラーへのアクセスを承認する必要があります。クラスターが ACK マネージドクラスター または Serverless Kubernetes クラスター の場合は、この手順をスキップできます。
手順
カスタム Resource Access Management(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] をクリックします。
クラスターで使用されるワーカー RAM ロールに RAM ポリシーをアタッチします。
ACK コンソール にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターを選択し、その名前をクリックします。表示されるページで、[基本情報] タブをクリックします。
[基本情報] タブで、[ワーカー RAM ロール] フィールドの横にあるハイパーリンクをクリックして RAM コンソールにログインします。
[権限] タブで、[権限の付与] をクリックします。[権限の付与] パネルのドロップダウンリストから [カスタムポリシー] を選択し、前の手順で作成したカスタムポリシーを選択します。
[権限の付与] をクリックします。
[閉じる] をクリックします。
Elastic Compute Service(ECS)インスタンスの RAM ロールの状態が正常かどうかを確認します。
詳細ページの左側のナビゲーションウィンドウで、 を選択します。
[ノード] ページで、管理するノードの ID(i-2ze5d2qi9iy90pzb**** など)をクリックします。
表示されるページで、[インスタンスの詳細] タブをクリックします。次に、RAM ロール[その他の情報] セクションの パラメーターに ECS インスタンスの RAM ロールが表示されているかどうかを確認します。
RAM ロールが存在しない場合は、ECS インスタンスに RAM ロールを割り当てます。詳細については、「インスタンス RAM ロールのデタッチまたは変更」をご参照ください。
alb-ingress-controller のポッドを削除し、ポッドが再作成された後に alb-ingress-controller の状態を確認します。
重要この手順は、オフピーク時に実行することをお勧めします。
次のコマンドを実行して、alb-ingress-controller ポッドの名前をクエリします。
kubectl -n kube-system get pod | grep alb-ingress-controller
期待される出力:
NAME READY STATUS RESTARTS AGE alb-ingress-controller-*** 1/1 Running 0 60s
次のコマンドを実行して、alb-ingress-controller のポッドを削除します。
alb-ingress-controller-***
は、前の手順で取得したポッド名に置き換えます。kubectl -n kube-system delete pod alb-ingress-controller-***
期待される出力:
pod "alb-ingress-controller-***" deleted
数分待ってから、次のコマンドを実行して、再作成されたポッドの状態をクエリします。
kubectl -n kube-system get pod
期待される出力:
NAME READY STATUS RESTARTS AGE alb-ingress-controller-***2 1/1 Running 0 60s
出力は、再作成されたポッドが [実行中] 状態であることを示しています。
次のステップ
ACK 専用クラスター のサービスに ALB Ingress を使用してアクセスする方法の詳細については、「ALB Ingress を使用したサービスへのアクセス」をご参照ください。