すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ACK専用クラスターにALB Ingressコントローラーへのアクセスを許可する

最終更新日:Oct 28, 2024

Application Load Balancer (ALB) Ingressを使用してACK専用クラスターにデプロイされたサービスにアクセスするには、まずALB Ingressコントローラーでクラスターに権限を付与する必要があります。 このトピックでは、ACK専用クラスターにALB Ingressコントローラーへのアクセスを許可する方法について説明します。

前提条件

使用上の注意

クラスターがACK専用クラスターである場合にのみ、ALB Ingressコントローラーへのアクセスをクラスターに許可する必要があります。 クラスターがACK管理クラスターまたはACKサーバーレスクラスターの場合は、この手順をスキップできます。

手順

  1. カスタムRAM (Resource Access Management) ポリシーを作成します。

    1. 左側のナビゲーションウィンドウで、権限 > ポリシー.

    2. On theポリシーページをクリックします。ポリシーの作成.

    3. On theポリシーの作成ページをクリックし、JSONタブをクリックします。

    4. On theポリシーの作成ページをクリックし、JSONタブをクリックします。 次のポリシーの内容をコードエディターにコピーし、ポリシー情報を編集する次に.

      {
          "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"
              }
          ]
      }
      説明

      複数のアクションを指定するには、次のアクションの内容を入力する前に、各アクションの内容の末尾にコンマ (,) を追加します。

    5. を指定します。Specify the名前説明フィールドを使用します。

    6. クリックOK.

  2. クラスターで使用されるワーカーRAMロールにRAMポリシーをアタッチします。

    1. ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。

    2. [クラスター] ページで、管理するクラスターの名前をクリックします。 表示されるページで、[基本情報] タブをクリックします。

    3. On the基本情報タブの横にあるハイパーリンクをクリックします。ワーカーRAMロールフィールドでRAMコンソールにログインします。

    4. [権限] タブで、[権限の付与] をクリックします。 [権限付与] パネルで、ドロップダウンリストから [カスタムポリシー] を選択し、前の手順で作成したカスタムポリシーを選択します。

    5. クリック権限の付与.

    6. クリック閉じる.

  3. Elastic Compute Service (ECS) インスタンスのRAMロールが正常かどうかを確認します。

    1. 詳細ページの左側のナビゲーションウィンドウで、[ノード] > [ノード] を選択します。

    2. On theノードページで、管理するノードのIDをクリックします。i-2ze5d2qi9iy90pzb ****.

    3. 表示されるページで、[インスタンスの詳細] タブをクリックします。 次に、[その他の情報] セクションの [RAMロール] パラメーターにECSインスタンスのRAMロールが表示されているかどうかを確認します。

      RAMロールが存在しない場合は、ECSインスタンスにRAMロールを割り当てます。 詳細については、「手順2: ECSインスタンスを作成し、RAMロールをインスタンスにアタッチする」をご参照ください。

  4. alb-ingress-controllerのポッドを削除し、ポッドの再作成後にalb-ingress-controllerのステータスを確認します。

    重要

    この手順は、オフピーク時に実行することを推奨します。

    1. 次のコマンドを実行して、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
    2. 次のコマンドを実行して、alb-ingress-controllerのポッドを削除します。

      alb-ingress-controller-*** を前の手順で取得したポッド名に置き換えます。

      kubectl -n kube-system delete pod alb-ingress-controller-***

      期待される出力:

      pod "alb-ingress-controller-***" deleted
    3. 数分待ってから次のコマンドを実行し、再作成されたポッドのステータスを照会します。

      kubectl -n kube-system get pod

      期待される出力:

      NAME                          READY   STATUS    RESTARTS   AGE
      alb-ingress-controller-***2    1/1     Running   0          60s

      出力は、再作成されたポッドが実行中の状態であることを示します。

次のステップ

ALB Ingressを使用してACK専用クラスターのサービスにアクセスする方法の詳細については、「ALB Ingressを使用したサービスへのアクセス」をご参照ください。