ack-pod-identity-webhookは、Container Service for Kubernetes (ACK) のサービスアカウントのRAMロール (RRSA) 機能の操作に役立つコンポーネントです。 ack-pod-identity-webhookは、アプリケーションへのアクセスに必要なOpenID Connect (OIDC) トークンと環境変数をアプリケーションのポッドに自動的に挿入できます。 この方法では、OIDCトークンと環境変数を設定する必要はありません。 このトピックでは、ack-pod-identity-webhookについて説明し、ack-pod-identity-webhookの使用法ノートとリリースノートを提供します。
目次
概要
次の図は、ack-pod-identity-webhookのアーキテクチャを示しています。
例:
この例のアプリケーションは、RRSA機能を使用して指定されたロールを引き受け、現在のAlibaba Cloudアカウントに属するすべてのクラスターに関する情報を取得します。 この例では、次のリソースが使用されます。
名前空間: rrsa-demo
サービスアカウント: demo-sa
RAMロール: ack-pod-identity-webhook-demo
ポッドの名前空間にpod-identity.alibabacloud.com/injection: 'on'
ラベルを追加すると、ack-pod-identity-webhookは、ポッドで使用されているサービスアカウントのアノテーションに基づいて、関連する設定を自動的にポッドに挿入します。 この例では、以下のステップが実行される。
クラスターのRRSA機能を有効にします。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
On theクラスターページで、管理するクラスターの名前をクリックします。
クラスターの詳細ページで、[基本情報] タブをクリックします。 [クラスター情報] セクションで、RRSA OIDCの右側にある [RRSAの有効化] をクリックします。
表示されるメッセージで、確認.
クラスターのステータスが [更新中] から [実行中] に変わった場合、そのクラスターでRRSA機能が有効になります。 IDプロバイダー (IdP) のURLとAlibaba Cloud Resource Name (ARN) がRRSA OIDCの右側に表示されます。
ack-pod-identity-webhookをインストールします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のウィンドウで、 を選択します。
On theアドオンページをクリックし、セキュリティタブで、ack-pod-identity-webhookを見つけ、インストール右下隅にあります。
表示されるメッセージで、情報を確認し、OK.
ack-pod-identity-webhook-demoという名前のRAMロールを作成します。
にログインします。RAMコンソールをAlibaba Cloudアカウントに置き換えます。
左側のナビゲーションウィンドウで、 .
On theロールページをクリックします。ロールの作成.
では、ロールの作成パネル、選択IdP[信頼できるエンティティ] を選択し、次へ.
次のパラメーターを設定し、OK.
パラメーター
説明
RAMロール名
ack-pod-identity-webhook-demo
IdPタイプ
OIDC
IdPの選択
ack-rrsa-<cluster_id> 。 クラスターのIDを <cluster_id> で指定します。
条件
oidc:iss: デフォルト値を使用します。
oidc:aud: sts.aliyuncs.comを選択します。
oidc:sub: 条件演算子をStringEqualsに設定し、値をsystem:serviceaccount:<namespace >:< serviceAccountName> に設定します。
<namespace>: アプリケーションの名前空間を指定します。
<serviceAccountName>: サービスアカウントの名前を指定します。
この例では、system:serviceaccount:rrsa-demo:demo-saと入力します。
AliyunCSReadOnlyAccessポリシーをRAMロールにアタッチして、アプリケーションに必要な権限を付与します。 詳細については、「RAMロールへの権限の付与」をご参照ください。
アプリケーションをデプロイします。
という名前のファイルを作成します。demo.yaml次の内容をファイルにコピーします。
次のYAMLコンテンツでは、
pod-identity.alibabacloud.com/injection: 'on'
ラベルが名前空間に追加され、pod-identity.alibabacloud.com/role-name: ack-pod-identity-webhook-demo
アノテーションがサービスアカウントに追加され、ack-pod-identity-webhookの自動注入機能が有効になります。 RRSAデモの詳細については、「Code」をご参照ください。--- apiVersion: v1 kind: Namespace metadata: name: rrsa-demo labels: pod-identity.alibabacloud.com/injection: 'on' --- apiVersion: v1 kind: ServiceAccount metadata: name: demo-sa namespace: rrsa-demo annotations: pod-identity.alibabacloud.com/role-name: ack-pod-identity-webhook-demo --- apiVersion: v1 kind: Pod metadata: name: demo namespace: rrsa-demo spec: serviceAccountName: demo-sa containers: - image: registry.cn-hangzhou.aliyuncs.com/acs/ack-ram-tool:1.0.0 imagePullPolicy: "Always" args: - rrsa - demo name: demo restartPolicy: OnFailure
次のコマンドを実行して、アプリケーションをデプロイします。
kubectl apply -f demo.yaml
次のコマンドを実行して、ack-pod-identity-webhookがアプリケーション用に作成されたポッドに必要な設定を挿入したかどうかを確認します。
kubectl -n rrsa-demo get pod demo -o yaml
出力は、ack-pod-identity-webhookが次の設定をポッドに注入したことを示しています。
カテゴリ
設定アイテム
説明
環境変数
ALIBABA_CLOUD_ROLE_ARN
仮定するRAMロールのARN。
ALIBABA_CLOUD_OIDC_PROVIDER_ARN
OIDC IdPのARN。
ALIBABA_CLOUD_OIDC_TOKEN_FILE
OIDCトークンファイルのパス。
VolumeMount
rrsa-oidc-token
OIDCトークンをマウントするための設定。
ボリューム
rrsa-oidc-token
OIDCトークンをマウントするための設定。
次のコマンドを実行して、アプリケーションのログを印刷します。
kubectl -n rrsa-demo logs demo
期待される出力:
cluster id: cf***, cluster name: foo* cluster id: c8***, cluster name: bar* cluster id: c4***, cluster name: foob*
カスタム設定
ack-pod-identity-webhookの設定は、名前空間、サービスアカウント、ポッドの設定をカスタマイズできます。
名前空間の設定
パラメーター | タイプ | 説明 | サンプルコード |
pod-identity.alibabacloud.com/injection | ラベル | 現在の名前空間のポッドの自動注入を有効にするかどうかを指定します。
|
|
サービスアカウント設定
パラメーター | タイプ | 説明 | サンプルコード |
pod-identity.alibabacloud.com/role-name | 注釈 | サービスアカウントに割り当てられたRAMロールの名前。 このパラメーターを空のままにするか、無効な値に設定した場合、サービスアカウントを使用するポッドでは自動注入は有効になりません。 |
|
pod-identity.alibabacloud.com/service-account-token-expiration | 注釈 | サービスアカウントを使用するポッドにマウントされたOIDCトークンの有効期間。 有効な値: 600〜43200。 単位は秒です。 デフォルト値は 3600 です。 パラメータが無効な値に設定されている場合、デフォルト値が使用されます。 |
|
ポッドの設定
パラメーター | タイプ | 説明 | サンプルコード |
pod-identity.alibabacloud.com/service-account-token-expiration | 注釈 | ポッドにマウントされたOIDCトークンの有効期間。 有効な値: 600〜43200。 単位は秒です。 デフォルト値は 3600 です。 パラメータが無効な値に設定されている場合、デフォルト値が使用されます。 説明 このパラメーターがサービスアカウントとポッドの両方に指定されている場合、ポッドの設定が優先されます。 |
|
pod-identity.alibabacloud.com/only-containers | 注釈 | 構成を挿入するポッド内のコンテナの名前を指定します。 構成は指定されたコンテナにのみ注入されます。 複数のコンテナ名はコンマ (,) で区切ります。 このパラメーターを空のままにすると、ポッド内のすべてのコンテナーに設定が注入されます。 |
|
pod-identity.alibabacloud.com/skip-containers | 注釈 | 構成を挿入しないポッド内のコンテナの名前を指定します。 複数のコンテナ名はコンマ (,) で区切ります。 説明
|
|
RRSA SDKデモ
プログラミング言语 | サポートされているSDKバージョン | デモ |
Go | Alibaba Cloud Credentials for Go 1.2.6以降 | |
Java | Alibaba Cloud Credentials for Java 0.2.10以降 | |
Python 3 | ||
Node.jsとTypeScript |
リリースノート
6月2023
バージョン番号 | 画像アドレス | 説明 | リリース日 | 影響 |
0.1.1 | registry.cn-hangzhou.aliyuncs.com/acs/ack-pod-identity-webhook:v0.1.1.0-gbddcb74-aliyun | ACKサーバーレスクラスタとの互換性が向上します。 | 2023-06-07 | コンポーネントの更新中に例外が発生した場合、ポッドの作成に失敗する可能性があります。 オフピーク時に更新を実行することを推奨します。 |
2月2023
バージョン番号 | 画像アドレス | 説明 | リリース日 | 影響 |
0.1.0 | registry.cn-hangzhou.aliyuncs.com/acs/ack-pod-identity-webhook:v0.1.0.9-g26b8fde-aliyun | OIDCトークンは自動的にマウントでき、環境変数はアプリケーションポッド用に自動的に設定できます。 | 2023-02-01 | 最初のバージョンがリリースされました。 |