11---
22title : kubelet image credential providerの設定
3- reviewers :
4- - liggitt
5- - cheftako
63content_type : task
74min-kubernetes-server-version : v1.26
85weight : 120
@@ -15,7 +12,7 @@ weight: 120
1512Kubernetes v1.20以降、kubeletはexecプラグインを使用してコンテナイメージレジストリへの認証情報を動的に取得できるようになりました。
1613kubeletとexecプラグインは、Kubernetesのバージョン管理されたAPIを用いて標準入出力(stdin、stdout、stderr)を通じて通信します。
1714これらのプラグインを使用することで、kubeletはディスク上に静的な認証情報を保存する代わりに、コンテナレジストリへの認証情報を動的に要求できるようになります。
18- たとえば、プラグインがローカルのメタデータサーバーと通信し、kubeletがプルしようとしているイメージに対する短命の認証情報を取得することがあります 。
15+ たとえば、プラグインがローカルのメタデータサーバーと通信し、kubeletが取得しようとしているイメージに対する、短期間有効な認証情報を取得することがあります 。
1916
2017以下のいずれかに該当する場合、この機能の利用を検討するとよいでしょう:
2118
@@ -25,10 +22,10 @@ kubeletとexecプラグインは、Kubernetesのバージョン管理されたAP
2522
2623このガイドでは、kubelet image credential providerプラグイン機構の設定方法について説明します。
2724
28- ## イメージプル用のServiceAccountトークン
25+ ## イメージ取得用のServiceAccountトークン
2926{{< feature-state feature_gate_name="KubeletServiceAccountTokenForCredentialProviders" >}}
3027
31- Kubernetes v1.33以降、kubeletは、イメージのプルを行っているPodにバインドされたサービスアカウントトークンを 、credential providerプラグインに送信するように設定できます。
28+ Kubernetes v1.33以降、kubeletは、イメージの取得を行っているPodにバインドされたサービスアカウントトークンを 、credential providerプラグインに送信するように設定できます。
3229
3330これにより、プラグインはそのトークンを使用して、イメージレジストリへのアクセスに必要な認証情報と交換することが可能になります。
3431
@@ -38,12 +35,12 @@ Kubernetes v1.33以降、kubeletは、イメージのプルを行っているPod
3835
3936サービスアカウントトークンによる認証情報を用いることで、次のようなユースケースに対応できます:
4037
41- * レジストリからイメージをプルするために 、kubeletやノードに基づくアイデンティティを必要としないようにする
42- * 長期間有効なシークレットや永続的なシークレットを使用せずに、ワークロードが自身のランタイムのアイデンティティに基づいてイメージをプルできるようにする
38+ * レジストリからイメージを取得するために 、kubeletやノードに基づくアイデンティティを必要としないようにする
39+ * 長期間有効なシークレットや永続的なシークレットを使用せずに、ワークロードが自身のランタイムのアイデンティティに基づいてイメージを取得できるようにする
4340
4441## {{% heading "prerequisites" %}}
4542
46- * kubelet credential providerプラグインをサポートするノードを持つKubernetesクラスターが必要です。このサポートは、Kubernetes {{< skew currentVersion >}} で利用可能です。Kubernetes v1.24およびv1.25で、デフォルトで有効なベータ機能として含まれるようになりました。
43+ * kubelet credential providerプラグインをサポートするノードを持つKubernetesクラスターが必要です。このサポートは、Kubernetes {{< skew currentVersion >}}で利用可能です。Kubernetes v1.24およびv1.25で、デフォルトで有効なベータ機能として含まれるようになりました。
4744* サービスアカウントトークンを必要とするcredential providerプラグインを設定する場合は、Kubernetes v1.33以降を実行しているノードを持つクラスターと、kubelet上で` KubeletServiceAccountTokenForCredentialProviders ` フィーチャーゲートが有効になっている必要があります。
4845* credential provider execプラグインの動作する実装。独自にプラグインを作成するか、クラウドプロバイダーが提供するものを使用できます。
4946
@@ -86,7 +83,7 @@ providers:
8683 # プラグインが呼び出され、認証情報を提供する機会が与えられます。
8784 # イメージには、レジストリのドメインおよびURLパスが含まれている必要があります。
8885 #
89- # matchImagesの各エントリーは 、オプションでポートおよびパスを含むことができるパターンです。
86+ # matchImagesの各エントリは 、オプションでポートおよびパスを含むことができるパターンです。
9087 # ドメインにはグロブを使用できますが、ポートやパスには使用できません。
9188 # グロブは、'*.k8s.io'や'k8s.*.io'のようなサブドメインや、'k8s.*'のようなトップレベルドメインでサポートされています。
9289 # 'app*.k8s.io'のような部分的なサブドメインの一致もサポートされています。
@@ -120,15 +117,15 @@ providers:
120117 # +optional
121118 # args:
122119 # - --example-argument
123- # Envは 、プロセスに対して公開する追加の環境変数を定義します。
120+ # envは 、プロセスに対して公開する追加の環境変数を定義します。
124121 # これらはホストの環境変数および、client-goがプラグインに引数を渡すために使用する変数と結合されます。
125122 # +optional
126123 env :
127124 - name : AWS_PROFILE
128125 value : example_profile
129126
130127 # tokenAttributesは、プラグインに渡されるサービスアカウントトークンの設定です。
131- # このフィールドを設定することで、credential providerはイメージプルにサービスアカウントトークンを使用するようになります 。
128+ # このフィールドを設定することで、credential providerはイメージの取得にサービスアカウントトークンを使用するようになります 。
132129 # このフィールドが設定されているにも関わらず、`KubeletServiceAccountTokenForCredentialProviders`フィーチャーゲートが有効になっていない場合、
133130 # kubeletは無効な設定エラーとして起動に失敗します。
134131 # +optional
@@ -140,14 +137,14 @@ providers:
140137 # trueに設定された場合、kubeletはPodにサービスアカウントがある場合にのみプラグインを呼び出します。
141138 # falseに設定された場合、Podにサービスアカウントがなくてもkubeletはプラグインを呼び出し、
142139 # CredentialProviderRequestにはトークンを含めません。これは、サービスアカウントを持たないPod
143- # (たとえば、Static Pod)に対してイメージをプルするためのプラグインに有用です 。
140+ # (たとえば、Static Pod)に対してイメージを取得するためのプラグインに有用です 。
144141 # +required
145142 requireServiceAccount : true
146143 # requiredServiceAccountAnnotationKeysは、プラグインが対象とし、サービスアカウントに存在する必要があるアノテーションキーのリストです。
147144 # このリストに定義されたキーは、対応するサービスアカウントから抽出され、CredentialProviderRequestの一部としてプラグインに渡されます。
148145 # このリストに定義されたキーのいずれかがサービスアカウントに存在しない場合、kubeletはプラグインを呼び出さず、エラーを返します。
149146 # このフィールドはオプションであり、空であっても構いません。プラグインはこのフィールドを使用して、
150- # 認証情報の取得に必要な追加情報を抽出したり、サービスアカウントトークンによるイメージプルの利用を
147+ # 認証情報の取得に必要な追加情報を抽出したり、サービスアカウントトークンによるイメージ取得の利用を
151148 # ワークロード側で選択可能にしたりできます。
152149 # このフィールドが空でない場合、requireServiceAccountはtrueに設定されていなければなりません。
153150 # このリストに定義されたキーは一意である必要があり、
@@ -172,7 +169,7 @@ providers:
172169` ` `
173170
174171` providers`フィールドは、kubeletが使用する有効なプラグインのリストです。
175- 各エントリーには 、いくつかの入力必須のフィールドがあります :
172+ 各エントリには 、いくつかの入力必須のフィールドがあります :
176173
177174* `name`: プラグインの名前であり、`--image-credential-provider-bin-dir`で指定されたディレクトリ内に存在する実行可能バイナリの名前と一致していなければなりません。
178175* `matchImages`: このプロバイダーを呼び出すべきかどうかを判断するために、イメージと照合するための文字列リスト。詳細は後述します。
@@ -182,9 +179,7 @@ providers:
182179各credential providerには、オプションの引数や環境変数を指定することもできます。
183180特定のプラグインで必要となる引数や環境変数のセットについては、プラグインの実装者に確認してください。
184181
185- KubeletServiceAccountTokenForCredentialProvidersフィーチャーゲートを使用し、
186- tokenAttributesフィールドを設定してプラグインにサービスアカウントトークンを使用させる場合、
187- 以下のフィールドの設定が必須となります :
182+ KubeletServiceAccountTokenForCredentialProvidersフィーチャーゲートを使用し、tokenAttributesフィールドを設定してプラグインにサービスアカウントトークンを使用させる場合、以下のフィールドの設定が必須となります :
188183
189184* `serviceAccountTokenAudience`:
190185 投影されたサービスアカウントトークンの対象となるオーディエンス。
@@ -195,21 +190,21 @@ tokenAttributesフィールドを設定してプラグインにサービスア
195190 * `true`に設定すると、Podにサービスアカウントがある場合にのみkubeletはプラグインを呼び出します。
196191 * `false`に設定すると、Podにサービスアカウントがなくてもkubeletはプラグインを呼び出し、`CredentialProviderRequest`にはトークンを含めません。
197192
198- これは、サービスアカウントを持たないPod(たとえば、Static Pod)に対してイメージをプルするためのプラグインに有用です 。
193+ これは、サービスアカウントを持たないPod(たとえば、Static Pod)に対してイメージを取得するためのプラグインに有用です 。
199194
200195# ### イメージのマッチングを設定する
201196
202197各credential providerの`matchImages`フィールドは、Podが使用する特定のイメージに対してプラグインを呼び出すべきかどうかを、kubeletが判断するために使用されます。
203- ` matchImages` の各エントリーはイメージパターンであり 、オプションでポートやパスを含めることができます。
198+ ` matchImages` の各エントリはイメージパターンであり 、オプションでポートやパスを含めることができます。
204199ドメインにはグロブを使用できますが、ポートやパスには使用できません。
205200グロブは、`*.k8s.io`や`k8s.*.io`のようなサブドメインや、`k8s.*`のようなトップレベルドメインで使用可能です。
206201` app*.k8s.io` のような部分的なサブドメインの一致もサポートされています。
207202ただし、各グロブは1つのサブドメインセグメントにしか一致しないため、`*.io`は`*.k8s.io`には一致しません。
208203
209- イメージ名と`matchImage`エントリーが一致すると見なされるのは 、以下のすべての条件を満たす場合です :
204+ イメージ名と`matchImage`エントリが一致すると見なされるのは 、以下のすべての条件を満たす場合です :
210205
211206* 両者が同じ数のドメインパートを持ち、それぞれのパートが一致していること。
212- * match imageに指定されたURLパスが 、対象のイメージのURLパスのプレフィックスであること。
207+ * イメージの一致条件として指定されたURLパスが 、対象のイメージのURLパスのプレフィックスであること。
213208* matchImagesにポートが含まれている場合、イメージのポートとも一致すること。
214209
215210`matchImages`パターンの値のいくつかの例 :
0 commit comments