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

Container Service for Kubernetes:Pod に対する Alibaba Cloud プロダクトのホワイトリストを動的に構成する

最終更新日:Mar 27, 2026
適用範囲: Terway ネットワークプラグインを使用する ACK マネージドクラスター

ack-kubernetes-webhook-injector は、Pod の起動時にその IP アドレスをクラウドサービスのホワイトリストに自動的に追加し、Pod が削除された際にも自動的に削除します。これにより、ApsaraDB RDS、ApsaraDB for Redis、および Server Load Balancer (SLB) に対して、手動でホワイトリストエントリを管理することなく、細かい粒度かつライフサイクルに応じたアクセス制御を実現できます。

仕組み

Pod の仕様(spec)に特定のアノテーションを追加すると、ack-kubernetes-webhook-injector は Admission Webhook を介して Pod の作成および削除イベントをインターセプトし、対応する Alibaba Cloud サービスの API を呼び出してホワイトリストを更新します。

対応するサービス:

サービス制御対象
ApsaraDB RDS名前付きホワイトリストグループ
ApsaraDB for Redis名前付きホワイトリストグループ
Server Load Balancer (SLB)アクセス制御リスト(ACL)

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

制限事項

  • クラスターは Terway ネットワークプラグインを使用している必要があります。他のネットワークプラグインはサポートされていません。

  • デフォルトでは、ack-kubernetes-webhook-injector は Alibaba Cloud サービスのパブリックエンドポイントを呼び出します。クラスターがパブリックインターネットへのアクセスを無効化している場合は、コンポーネントを設定して内部エンドポイントを使用するようにしてください(「内部エンドポイントの使用」を参照)。

  • 一部の Alibaba Cloud サービスでは、すべてのリージョンで内部エンドポイントが提供されていません。非公開クラスターにデプロイする前に、OpenAPI Explorer を使用して、対象サービスの内部エンドポイントの可用性を確認してください。

ack-kubernetes-webhook-injector のインストール

  1. ACK コンソールにログオンします。左側のナビゲーションウィンドウで、[マーケットプレイス] > [マーケットプレイス] を選択します。

  2. ack-kubernetes-webhook-injector を検索してクリックします。ページ右上隅の デプロイ をクリックします。

  3. 表示されるペインで、コンポーネントのクラスターおよび名前空間を指定し、リリース名を入力して 次へ をクリックします。

  4. パラメーター ウィザードページで、ak および skopenapi セクション内に、それぞれ AccessKey ID および AccessKey Secret として設定し、OK をクリックします。詳細については、「AccessKey ペアの取得」をご参照ください。

    AK

ApsaraDB RDS のホワイトリストへの Pod IP アドレスの追加

ApsaraDB RDS インスタンスおよびホワイトリストグループを指定するために、Pod の仕様(spec)に以下の 2 つのアノテーションを追加します。

アノテーション説明
ack.aliyun.com/rds_idApsaraDB RDS インスタンスの ID
ack.aliyun.com/white_list_nameホワイトリストグループの名前

ack-kubernetes-webhook-injector は、Pod の起動時にその IP アドレスをホワイトリストに自動的に追加し、Pod が削除された際にも自動的に削除します。

例:RDS ホワイトリストのアノテーションを付与してデプロイする

  1. 以下の YAML を使用して Deployment を作成します。<rm-wz9nanjcud75b****> をご自身の RDS インスタンス ID に、<rds_group> をご自身のホワイトリストグループ名に置き換えてください。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      labels:
        app: inject-test
      name: inject-test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: inject-test
      template:
        metadata:
          annotations:
            ack.aliyun.com/rds_id: <rm-wz9nanjcud75b****>
            ack.aliyun.com/white_list_name: <rds_group>
          labels:
            app: inject-test
        spec:
          containers:
          - command:
            - sleep
            - "3600"
            image: alpine:latest
            name: inject-test
  2. Pod の IP アドレスを確認します。

    kubectl --kubeconfig .kube/config_sts_test -n inject-test get pod -o wide

    出力例:

    NAME                           READY   STATUS    RESTARTS   AGE   IP            NODE
    inject-test-68cc8f9bbf-gj86n   1/1     Running   0          22s   172.25.0.28   cn-hangzhou.xxx

    Pod の IP アドレスは 172.25.0.28 です。

  3. ApsaraDB RDS コンソール にログインし、指定した RDS インスタンスのホワイトリストを確認します。ホワイトリストグループに 172.25.0.28 が表示されることを確認してください。詳細については、「強化型 IP アドレスホワイトリストの設定」をご参照ください。

  4. Deployment のレプリカ数を 0 にスケールし、再度 RDS のホワイトリストを確認します。Pod の IP アドレスはホワイトリストから自動的に削除されます。

他のサービスへのアクセス制御の構成

ApsaraDB for Redis および SLB に対するアクセス制御を構成するには、以下のアノテーションを使用します。

ApsaraDB for Redis のホワイトリスト

アノテーション説明
ack.aliyun.com/redis_idApsaraDB for Redis インスタンスの ID
ack.aliyun.com/white_list_nameホワイトリストグループの名前

SLB のアクセス制御リスト(ACL)

アノテーション説明
ack.aliyun.com/access_control_policy_idSLB ACL の ID

内部エンドポイントの使用

デフォルトでは、ack-kubernetes-webhook-injector は Alibaba Cloud サービスのパブリックエンドポイントを使用します。クラスターのパブリックインターネットへのアクセスが無効化されている場合は、コンポーネントを設定して代わりに内部エンドポイントを使用するようにしてください。

OpenAPI Explorer を使用して、この変更を行う前に、対象サービスがご使用のリージョンで内部エンドポイントを提供しているかを確認してください。
  1. ACK コンソール にログインします。左側のナビゲーションウィンドウで、クラスター をクリックします。

  2. クラスター ページで、ご自身のクラスター名をクリックします。左側のナビゲーションウィンドウで、ワークロード > デプロイメント を選択します。

  3. 上部のナビゲーションバーで、kube-system名前空間 ドロップダウンリストから選択します。一覧より kubernetes-webhook-injector の Deployment を見つけ、操作 列の その他 > YAML で表示 を選択します。

    image.png

  4. - '--intranet-access'spec.template.spec.containers.command の下に追加し、更新 をクリックします。

    image.png

ack-kubernetes-webhook-injector のアンインストール

ACK の Helm リリース機能を使用して、ack-kubernetes-webhook-injector をアンインストールします。詳細については、「Helm を使用したリリースの管理」をご参照ください。

アンインストール後に、以下のコマンドを実行して関連する構成を削除します。

kubectl -n kube-system delete secret kubernetes-webhook-injector-certs
kubectl delete mutatingwebhookconfigurations.admissionregistration.k8s.io kubernetes-webhook-injector