@@ -10,7 +10,7 @@ weight: 10
10
10
11
11
アプリケーションのコンテナイメージを作成し、一般的には{{< glossary_tooltip text="Pod" term_id="pod" >}}で参照する前にレジストリへPushします。
12
12
13
- このページではコンテナイメージのコンセプト概要を説明します 。
13
+ このページではコンテナイメージの概要を説明します 。
14
14
15
15
<!-- body -->
16
16
@@ -41,10 +41,10 @@ weight: 10
41
41
デフォルトのpull policyでは、{{< glossary_tooltip text="kubelet" term_id="kubelet" >}}はイメージを既に取得済みの場合、イメージのPullをスキップさせる` IfNotPresent ` が設定されています。
42
42
常にPullを強制させたい場合は、次のいずれかの方法で実行できます。
43
43
44
- - コンテナの` imagePullPolicy ` に` Always ` を設定します。
45
- - ` imagePullPolicy ` を省略し、使用するイメージに` :latest ` タグを使用します。
46
- - ` imagePullPolicy ` と使用するイメージのタグを省略します。
47
- - [ AlwaysPullImages] ( /docs/reference/access-authn-authz/admission-controllers/#alwayspullimages ) アドミッションコントローラーを有効にします。
44
+ - コンテナの` imagePullPolicy ` に` Always ` を設定する
45
+ - ` imagePullPolicy ` を省略し、使用するイメージに` :latest ` タグを使用する
46
+ - ` imagePullPolicy ` と使用するイメージのタグを省略する
47
+ - [ AlwaysPullImages] ( /docs/reference/access-authn-authz/admission-controllers/#alwayspullimages ) アドミッションコントローラーを有効にする
48
48
49
49
` imagePullPolicy ` が値なしで定義された場合、この場合も` Always ` が設定されます。
50
50
@@ -61,15 +61,15 @@ Kubernetes自身は、通常コンテナイメージに`-$(ARCH)`のサフィッ
61
61
認証情報はいくつかの方法で提供できます。
62
62
63
63
- プライベートレジストリへの認証をNodeに設定する
64
- - すべてのPodがプライベートレジストリを読み取ることができます。
65
- - クラスター管理者によるNodeの設定が必要です。
64
+ - すべてのPodがプライベートレジストリを読み取ることができる
65
+ - クラスター管理者によるNodeの設定が必要
66
66
- 事前にPullされたイメージ
67
- - すべてのPodがNode上にキャッシュされたイメージを利用できます。
68
- - セットアップするためにはすべてのNodeに対するrootアクセスが必要です。
67
+ - すべてのPodがNode上にキャッシュされたイメージを利用できる
68
+ - セットアップするためにはすべてのNodeに対するrootアクセスが必要
69
69
- PodでImagePullSecretsを指定する
70
- - キーを提供したPodのみがプライベートレジストリへアクセスできる。
70
+ - キーを提供したPodのみがプライベートレジストリへアクセスできる
71
71
- ベンダー固有またはローカルエクステンション
72
- - カスタムNode構成を使っている場合、あなた(または、あなたのクラウドプロバイダー)はコンテナレジストリーへの認証の仕組みを組み込むことができます。
72
+ - カスタムNode構成を使っている場合、あなた(または、あなたのクラウドプロバイダー)はコンテナレジストリーへの認証の仕組みを組み込むことができる
73
73
74
74
これらのオプションについて、以下で詳しく説明します。
75
75
@@ -104,19 +104,19 @@ kubeletプロセスの環境では、明示的に`HOME=/root`を設定する必
104
104
105
105
以下は、プライベートレジストリを使用する為にNodeを構成する推奨の手順です。この例では、デスクトップ/ノートPC上で実行します。
106
106
107
- 1 . 使用したい認証情報のセット毎に ` docker login [server] ` を実行します 。これであなたのPC上の` $HOME/.docker/config.json ` が更新されます。
108
- 1 . 使用したい認証情報が含まれているかを確認するため、エディターで` $HOME/.docker/config.json ` を見ます。
109
- 1 . Nodeの一覧を取得します。 例:
107
+ 1 . 使用したい認証情報のセット毎に ` docker login [server] ` を実行する 。これであなたのPC上の` $HOME/.docker/config.json ` が更新される
108
+ 1 . 使用したい認証情報が含まれているかを確認するため、エディターで` $HOME/.docker/config.json ` を見る
109
+ 1 . Nodeの一覧を取得 例:
110
110
- 名称が必要な場合: ` nodes=$( kubectl get nodes -o jsonpath='{range.items[*].metadata}{.name} {end}' ) `
111
111
- IPアドレスを取得したい場合: ` nodes=$( kubectl get nodes -o jsonpath='{range .items[*].status.addresses[?(@.type=="ExternalIP")]}{.address} {end}' ) `
112
- 1 . ローカルの` .docker/config.json ` を上記の検索パスのいずれかにコピーします。
113
- - 例えば、これでテストします : ` for n in $nodes; do scp ~/.docker/config.json root@"$n":/var/lib/kubelet/config.json; done `
112
+ 1 . ローカルの` .docker/config.json ` を上記の検索パスのいずれかにコピーする
113
+ - 例えば、これでテスト実施 : ` for n in $nodes; do scp ~/.docker/config.json root@"$n":/var/lib/kubelet/config.json; done `
114
114
115
115
{{< note >}}
116
116
本番環境用クラスターでは、構成管理ツールを使用して必要なすべてのNodeに設定を反映してください。
117
117
{{< /note >}}
118
118
119
- プライベートイメージを使用するPodを作成して確認します 。
119
+ プライベートイメージを使用するPodを作成し確認します 。
120
120
例:
121
121
122
122
``` shell
@@ -243,27 +243,27 @@ EOF
243
243
244
244
プライベートレジストリを設定するためのソリューションはいくつかあります。ここでは、いくつかの一般的なユースケースと推奨される解決方法を示します。
245
245
246
- 1 . クラスターに独自仕様でない(例えば、オープンソース)イメージだけを実行します。イメージを非公開にする必要がありません。
247
- - Docker hubのパブリックイメージを利用します。
248
- - 設定は不要です。
249
- - クラウドプロバイダーによっては、可用性の向上とイメージをPullする時間を短くする為に、自動的にキャッシュやミラーされたパプリックイメージを提供します。
250
- 1 . 社外には非公開の必要があるが、すべてのクラスター利用者には見せてよい独自仕様のイメージをクラスターで実行しています。
251
- - ホストされたプライペートな [ Dockerレジストリ] ( https://docs.docker.com/registry/ ) を使用する.
252
- - [ Docker Hub] ( https://hub.docker.com/signup ) または他の場所の上でホストされている場合があります。
253
- - 上記のように各Node上のdocker/config.jsonを手動で構成します。
254
- - または、オープンな読み取りアクセスを許可したファイヤーウォールの背後で内部向けプライベートレジストリを実行します。
255
- - Kubernetesの設定は必要ありません。
256
- - イメージへのアクセスを制御できるホストされたコンテナイメージレジストリサービスを利用します。
257
- - Nodeを手動設定するよりもクラスターのオートスケーリングのほうがうまく機能します。
258
- - また、Node設定変更を自由にできないクラスターでは` imagePullSecrets ` を使用します。
259
- 1 . 独自仕様のイメージを含むクラスターで、いくつかは厳格なアクセス制御が必要である。
260
- - [ AlwaysPullImagesアドミッションコントローラー] ( /docs/reference/access-authn-authz/admission-controllers/#alwayspullimages ) が有効化かを確認してください 。さもないと、全部のPodがすべてのイメージへのアクセスができてしまう可能性があります。
261
- - 機密のデータはイメージに含めてしまうのではなく、"Secret"リソースに移行してください。
262
- 1 . それぞれのテナントが独自のプライベートレジストリを必要とするマルチテナントのクラスターである。
263
- - [ AlwaysPullImagesアドミッションコントローラー] ( /docs/reference/access-authn-authz/admission-controllers/#alwayspullimages ) が有効化を確認してください 。さもないと、すべてのテナントの全Podが全部のイメージにアクセスできてしまう可能性があります。
264
- - 認証が必要なプライベートレジストリを実行します。
265
- - それぞれのテナントでレジストリ認証を生成し、Secretへ設定し、各テナントのNamespaceに追加します。
266
- - テナントは、Secretを各NamespaceのimagePullSecretsへ追加します。
246
+ 1 . クラスターに独自仕様でない(例えば、オープンソース)イメージだけを実行する。イメージを非公開にする必要がない
247
+ - Docker hubのパブリックイメージを利用する
248
+ - 設定は不要
249
+ - クラウドプロバイダーによっては、可用性の向上とイメージをPullする時間を短くする為に、自動的にキャッシュやミラーされたパプリックイメージが提供される
250
+ 1 . 社外には非公開の必要があるが、すべてのクラスター利用者には見せてよい独自仕様のイメージをクラスターで実行している
251
+ - ホストされたプライペートな [ Dockerレジストリ] ( https://docs.docker.com/registry/ ) を使用
252
+ - [ Docker Hub] ( https://hub.docker.com/signup ) または他の場所の上でホストされている場合がある
253
+ - 上記のように各Node上のdocker/config.jsonを手動で構成する
254
+ - または、オープンな読み取りアクセスを許可したファイヤーウォールの背後で内部向けプライベートレジストリを実行する
255
+ - Kubernetesの設定は必要ない
256
+ - イメージへのアクセスを制御できるホストされたコンテナイメージレジストリサービスを利用する
257
+ - Nodeを手動設定するよりもクラスターのオートスケーリングのほうがうまく機能する
258
+ - また、Node設定変更を自由にできないクラスターでは` imagePullSecrets ` を使用する
259
+ 1 . 独自仕様のイメージを含むクラスターで、いくつかは厳格なアクセス制御が必要である
260
+ - [ AlwaysPullImagesアドミッションコントローラー] ( /docs/reference/access-authn-authz/admission-controllers/#alwayspullimages ) が有効化かを確認する必要あり 。さもないと、全部のPodがすべてのイメージへのアクセスができてしまう可能性がある
261
+ - 機密のデータはイメージに含めてしまうのではなく、"Secret"リソースに移行する
262
+ 1 . それぞれのテナントが独自のプライベートレジストリを必要とするマルチテナントのクラスターである
263
+ - [ AlwaysPullImagesアドミッションコントローラー] ( /docs/reference/access-authn-authz/admission-controllers/#alwayspullimages ) が有効化を確認する必要あり 。さもないと、すべてのテナントの全Podが全部のイメージにアクセスできてしまう可能性がある
264
+ - 認証が必要なプライベートレジストリを実行する
265
+ - それぞれのテナントでレジストリ認証を生成し、Secretへ設定し、各テナントのNamespaceに追加する
266
+ - テナントは、Secretを各NamespaceのimagePullSecretsへ追加する
267
267
268
268
複数のレジストリへのアクセスが必要な場合、それぞれのレジストリ毎にひとつのSecretを作成する事ができます。
269
269
Kubeletは複数の` imagePullSecrets ` を単一の仮想的な` .docker/config.json ` にマージします。
0 commit comments