Skip to content

Commit 897be33

Browse files
authored
Translated image page into bahasa indonesia (#19784)
1 parent 5e823c1 commit 897be33

File tree

1 file changed

+370
-0
lines changed

1 file changed

+370
-0
lines changed
Lines changed: 370 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,370 @@
1+
---
2+
title: Image
3+
content_template: templates/concept
4+
weight: 10
5+
---
6+
7+
{{% capture overview %}}
8+
9+
Kamu membuat Docker _image_ dan mengunduhnya ke sebuah registri sebelum digunakan di dalam Kubernetes Pod.
10+
11+
Properti `image` dari sebuah Container mendukung sintaksis yang sama seperti perintah `docker`, termasuk registri privat dan _tag_.
12+
13+
{{% /capture %}}
14+
15+
16+
{{% capture body %}}
17+
18+
## Memperbarui Image
19+
20+
Kebijakan _pull default_ adalah `IfNotPresent` yang membuat Kubelet tidak
21+
lagi mengunduh (_pull_) sebuah image jika sudah ada terlebih dahulu. Jika kamu ingin agar
22+
selalu diunduh, kamu bisa melakukan salah satu dari berikut:
23+
24+
- mengatur `imagePullPolicy` dari Container menjadi `Always`.
25+
- buang `imagePullPolicy` dan gunakan `:latest` _tag_ untuk _image_ yang digunakan.
26+
- buang `imagePullPolicy` dan juga _tag_ untuk _image_.
27+
- aktifkan [AlwaysPullImages](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) _admission controller_.
28+
29+
Harap diingat kamu sebaiknya hindari penggunaan _tag_ `:latest`, lihat [panduan konfigurasi](/docs/concepts/configuration/overview/#container-images) untuk informasi lebih lanjut.
30+
31+
## Membuat Image Multi-arsitektur dengan Manifest
32+
33+
Docker CLI saat ini mendukung perintah `docker manifest` dengan anak perintah `create`, `annotate`, dan `push`. Perintah-perintah ini dapat digunakan
34+
untuk membuat (_build_) dan mengunggah (_push_) manifes. Kamu dapat menggunakan perintah `docker manifest inspect` untuk membaca manifes.
35+
36+
Lihat dokumentasi docker di sini:
37+
https://docs.docker.com/edge/engine/reference/commandline/manifest/
38+
39+
Lihat contoh-contoh bagaimana kami menggunakan ini untuk proses _build harness_:
40+
https://cs.k8s.io/?q=docker%20manifest%20(create%7Cpush%7Cannotate)&i=nope&files=&repos=
41+
42+
Perintah-perintah ini bergantung pada Docker CLI, dan diimplementasi hanya di sisi CLI. Kamu harus mengubah `$HOME/.docker/config.json` dan mengatur _key_ `experimental` untuk mengaktifkan
43+
atau cukup dengan mengatur `DOCKER_CLI_EXPERIMENTAL` variabel _environment_ menjadi `enabled` ketika memanggil perintah-perintah CLI.
44+
45+
{{< note >}}
46+
Gunakan Docker *18.06 ke atas*, versi-versi di bawahnya memiliki _bug_ ataupun tidak mendukung perintah eksperimental. Contohnya https://github.com/docker/cli/issues/1135 yang menyebabkan masalah di bawah containerd.
47+
{{< /note >}}
48+
49+
Kalau kamu terkena masalah ketika mengunggah manifes-manifes yang rusak, cukup bersihkan manifes-manifes yang lama di `$HOME/.docker/manifests` untuk memulai dari awal.
50+
51+
Untuk Kubernetes, kami biasanya menggunakan _image-image_ dengan sufiks `-$(ARCH)`. Untuk kompatibilitas (_backward compatibility_), lakukan _generate image-image_ yang lama dengan sufiks. Idenya adalah men-_generate_, misalnya `pause` image yang memiliki manifes untuk semua arsitektur dan misalnya `pause-amd64` yang punya kompatibilitas terhadap konfigurasi-konfigurasi lama atau berkas-berkas YAML yang bisa saja punya _image-image_ bersufiks yang di-_hardcode_.
52+
53+
## Menggunakan Registri Privat (_Private Registry_) {#menggunakan-registri-privat}
54+
55+
Biasanya kita memerlukan _key_ untuk membaca _image-image_ yang tersedia pada suatu registri privat.
56+
Kredensial ini dapat disediakan melalui beberapa cara:
57+
58+
- Menggunakan Google Container Registry
59+
- per-klaster
60+
- konfigurasi secara otomatis pada Google Compute Engine atau Google Kubernetes Engine
61+
- semua Pod dapat membaca registri privat yang ada di dalam proyek
62+
- Menggunakan Amazon Elastic Container Registry (ECR)
63+
- menggunakan IAM _role_ dan _policy_ untuk mengontrol akses ke repositori ECR
64+
- secara otomatis _refresh_ kredensial login ECR
65+
- Menggunakan Oracle Cloud Infrastructure Registry (OCIR)
66+
- menggunakan IAM _role_ dan _policy_ untuk mengontrol akses ke repositori OCIR
67+
- Menggunakan Azure Container Registry (ACR)
68+
- Menggunakan IBM Cloud Container Registry
69+
- menggunakan IAM _role_ dan _policy_ untuk memberikan akses ke IBM Cloud Container Registry
70+
- Konfigurasi Node untuk otentikasi registri privat
71+
- semua Pod dapat membaca registri privat manapun
72+
- memerlukan konfigurasi Node oleh admin klaster
73+
- Pra-unduh _image_
74+
- semua Pod dapat menggunakan _image_ apapun yang di-_cached_ di dalam sebuah Node
75+
- memerlukan akses root ke dalam semua Node untuk pengaturannya
76+
- Mengatur ImagePullSecrets dalam sebuah Pod
77+
- hanya Pod-Pod yang menyediakan _key_ sendiri yang dapat mengakses registri privat
78+
79+
Masing-masing opsi dijelaskan lebih lanjut di bawah ini.
80+
81+
### Menggunakan Google Container Registry
82+
83+
Kubernetes memiliki dukungan _native_ untuk [Google Container
84+
Registry (GCR)](https://cloud.google.com/tools/container-registry/), ketika dijalankan pada
85+
Google Compute Engine (GCE). Jika kamu menjalankan klaster pada GCE atau Google Kubernetes Engine,
86+
cukup gunakan nama panjang _image_ (misalnya gcr.io/my_project/image:tag).
87+
88+
Semua Pod di dalam klaster akan memiliki akses baca _image_ di registri ini.
89+
90+
Kubelet akan melakukan otentikasi GCR menggunakan _service account_ yang dimiliki
91+
_instance_ Google. _Service acccount_ pada _instance_ akan memiliki sebuah `https://www.googleapis.com/auth/devstorage.read_only`,
92+
sehingga dapat mengunduh dari GCR di proyek yang sama, tapi tidak untuk unggah.
93+
94+
### Menggunakan Amazon Elastic Container Registry
95+
96+
Kubernetes memiliki dukungan _native_ untuk [Amazon Elastic Container Registry](https://aws.amazon.com/ecr/), ketika Node adalah
97+
AWS EC2 _instance_.
98+
99+
Cukup gunakan nama panjang _image_ (misalnya `ACCOUNT.dkr.ecr.REGION.amazonaws.com/imagename:tag`) di dalam definisi Pod.
100+
101+
Semua pengguna klaster yang dapat membuat Pod akan bisa menjalankan Pod yang dapat menggunakan
102+
_image-image_ di dalam registri ECR.
103+
104+
Kubelet akan mengambil dan secara periodik memperbarui kredensial ECR, yang memerlukan _permission_ sebagai berikut:
105+
106+
- `ecr:GetAuthorizationToken`
107+
- `ecr:BatchCheckLayerAvailability`
108+
- `ecr:GetDownloadUrlForLayer`
109+
- `ecr:GetRepositoryPolicy`
110+
- `ecr:DescribeRepositories`
111+
- `ecr:ListImages`
112+
- `ecr:BatchGetImage`
113+
114+
Persyaratan:
115+
116+
- Kamu harus menggunakan versi kubelet `v1.2.0` atau lebih (misal jalankan `/usr/bin/kubelet --version=true`).
117+
- Jika Node yang kamu miliki ada di region A dan registri kamu ada di region yang berbeda misalnya B, kamu perlu versi `v1.3.0` atau lebih.
118+
- ECR harus tersedia di region kamu.
119+
120+
Cara _troubleshoot_:
121+
122+
- Verifikasi semua persyaratan di atas.
123+
- Dapatkan kredensial $REGION (misalnya `us-west-2`) pada _workstation_ kamu. Lakukan SSH ke dalam _host_ dan jalankan Docker secara manual menggunakan kredensial tersebut. Apakah berhasil?
124+
- Tambahkan verbositas level _log_ kubelet paling tidak 3 dan periksa _log_ kubelet (misal `journalctl -u kubelet`) di baris-baris yang seperti ini:
125+
- `aws_credentials.go:109] unable to get ECR credentials from cache, checking ECR API`
126+
- `aws_credentials.go:116] Got ECR credentials from ECR API for <AWS account ID for ECR>.dkr.ecr.<AWS region>.amazonaws.com`
127+
128+
### Menggunakan Azure Container Registry (ACR)
129+
Ketika menggunakan [Azure Container Registry](https://azure.microsoft.com/en-us/services/container-registry/)
130+
kamu dapat melakukan otentikasi menggunakan pengguna admin maupun sebuah _service principal_.
131+
Untuk keduanya, otentikasi dilakukan melalui proses otentikasi Docker standar. Instruksi-instruksi ini
132+
menggunakan perangkat [azure-cli](https://github.com/azure/azure-cli).
133+
134+
Kamu pertama perlu membuat sebuah registri dan men-_generate_ kredensial, dokumentasi yang lengkap tentang hal ini
135+
dapat dilihat pada [dokumentasi Azure container registry](https://docs.microsoft.com/en-us/azure/container-registry/container-registry-get-started-azure-cli).
136+
137+
Setelah kamu membuat registri, kamu akan menggunakan kredensial berikut untuk login:
138+
139+
* `DOCKER_USER` : _service principal_, atau pengguna admin
140+
* `DOCKER_PASSWORD`: kata sandi dari _service principal_, atau kata sandi dari pengguna admin
141+
* `DOCKER_REGISTRY_SERVER`: `${some-registry-name}.azurecr.io`
142+
* `DOCKER_EMAIL`: `${some-email-address}`
143+
144+
Ketika kamu sudah memiliki variabel-variabel di atas, kamu dapat
145+
[mengkonfigurasi sebuah Kubernetes Secret dan menggunakannya untuk _deploy_ sebuah Pod](/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod).
146+
147+
### Menggunakan IBM Cloud Container Registry
148+
IBM Cloud Container Registry menyediakan sebuah registri _image_ privat yang _multi-tenant_, dapat kamu gunakan untuk menyimpan dan membagikan _image-image_ secara aman. Secara _default_, _image-image_ di dalam registri privat kamu akan dipindai (_scan_) oleh Vulnerability Advisor terintegrasi untuk deteksi isu
149+
keamanan dan kerentanan (_vulnerability_) yang berpotensi. Para pengguna di dalam akun IBM Cloud kamu dapat mengakses _image_, atau kamu dapat menggunakan IAM
150+
_role_ dan _policy_ untuk memberikan akses ke _namespace_ di IBM Cloud Container Registry.
151+
152+
Untuk instalasi _plugin_ CLI di IBM Cloud Containerr Registry dan membuat sebuah _namespace_ untuk _image-image_ kamu, lihat [Mulai dengan IBM Cloud Container Registry](https://cloud.ibm.com/docs/Registry?topic=registry-getting-started).
153+
154+
Jika kamu menggunakan akun dan wilayah (_region_) yang sama, kamu dapat melakukan _deploy image-image_ yang disimpan di dalam IBM Cloud Container Registry
155+
ke dalam _namespace default_ dari klaster IBM Cloud Kubernetes Service yang kamu miliki tanpa konfigurasi tambahan, lihat [Membuat kontainer dari _image_](https://cloud.ibm.com/docs/containers?topic=containers-images). Untuk opsi konfigurasi lainnya, lihat [Bagaimana cara mengotorasi klaster untuk mengunduh _image_ dari sebuah registri](https://cloud.ibm.com/docs/containers?topic=containers-registry#cluster_registry_auth).
156+
157+
### Konfigurasi Node untuk Otentikasi ke sebuah Registri Privat
158+
159+
{{< note >}}
160+
Jika kamu jalan di Google Kubernetes Engine, akan ada `.dockercfg` pada setiap Node dengan kredensial untuk Google Container Registry. Kamu tidak bisa menggunakan cara ini.
161+
{{< /note >}}
162+
163+
{{< note >}}
164+
Jika kamu jalan di AWS EC2 dan menggunakan EC2 Container Registry (ECR), kubelet pada setiap Node akan dapat
165+
mengatur dan memperbarui kredensial login ECR. Kamu tidak bisa menggunakan cara ini.
166+
{{< /note >}}
167+
168+
{{< note >}}
169+
Cara ini cocok jika kamu dapat mengontrol konfigurasi Node. Cara ini tidak akan bekerja dengan baik pada GCE,
170+
dan penyedia layanan cloud lainnya yang tidak melakukan penggantian Node secara otomatis.
171+
{{< /note >}}
172+
173+
{{< note >}}
174+
Kubernetes pada saat ini hanya mendukung bagian `auths` dan `HttpHeaders` dari konfigurasi docker. Hal ini berarti bantuan kredensial (`credHelpers` atau `credsStore`) tidak didukung.
175+
{{< /note >}}
176+
177+
178+
Docker menyimpan _key_ untuk registri privat pada `$HOME/.dockercfg` atau berkas `$HOME/.docker/config.json`. Jika kamu menempatkan berkas yang sama
179+
pada daftar jalur pencarian (_search path_) berikut, kubelet menggunakannya sebagai penyedia kredensial saat mengunduh _image_.
180+
181+
* `{--root-dir:-/var/lib/kubelet}/config.json`
182+
* `{cwd of kubelet}/config.json`
183+
* `${HOME}/.docker/config.json`
184+
* `/.docker/config.json`
185+
* `{--root-dir:-/var/lib/kubelet}/.dockercfg`
186+
* `{cwd of kubelet}/.dockercfg`
187+
* `${HOME}/.dockercfg`
188+
* `/.dockercfg`
189+
190+
{{< note >}}
191+
Kamu mungkin harus mengatur `HOME=/root` secara eksplisit pada berkas _environment_ kamu untuk kubelet.
192+
{{< /note >}}
193+
194+
Berikut langkah-langkah yang direkomendasikan untuk mengkonfigurasi Node kamu supaya bisa menggunakan registri privat.
195+
Pada contoh ini, coba jalankan pada _desktop/laptop_ kamu:
196+
197+
1. Jalankan `docker login [server]` untuk setiap set kredensial yang ingin kamu gunakan. Ini akan memperbarui `$HOME/.docker/config.json`.
198+
1. Lihat `$HOME/.docker/config.json` menggunakan _editor_ untuk memastikan sudah berisi kredensial yang ingin kamu gunakan.
199+
1. Dapatkan daftar Node, contohnya:
200+
- jika kamu ingin mendapatkan nama: `nodes=$(kubectl get nodes -o jsonpath='{range.items[*].metadata}{.name} {end}')`
201+
- jika kamu ingin mendapatkan IP: `nodes=$(kubectl get nodes -o jsonpath='{range .items[*].status.addresses[?(@.type=="ExternalIP")]}{.address} {end}')`
202+
1. Salin `.docker/config.json` yang ada di lokal kamu pada salah satu jalur pencarian di atas.
203+
- contohnya: `for n in $nodes; do scp ~/.docker/config.json root@$n:/var/lib/kubelet/config.json; done`
204+
205+
Verifikasi dengana membuat sebuah Pod yanag menggunakan _image_ privat, contohnya:
206+
207+
```shell
208+
kubectl apply -f - <<EOF
209+
apiVersion: v1
210+
kind: Pod
211+
metadata:
212+
name: private-image-test-1
213+
spec:
214+
containers:
215+
- name: uses-private-image
216+
image: $PRIVATE_IMAGE_NAME
217+
imagePullPolicy: Always
218+
command: [ "echo", "SUCCESS" ]
219+
EOF
220+
```
221+
```
222+
pod/private-image-test-1 created
223+
```
224+
225+
Jika semuanya berjalan dengan baik, maka setelah beberapa lama, kamu dapat menjalankan:
226+
227+
```shell
228+
kubectl logs private-image-test-1
229+
```
230+
dan lihat pada keluaran perintah:
231+
```
232+
SUCCESS
233+
```
234+
235+
Jika kamu mencurigai ada perintah yang gagal, kamu dapat menjalankan:
236+
```shell
237+
kubectl describe pods/private-image-test-1 | grep 'Failed'
238+
```
239+
Pada kasus gagal, keluarannya mirip seperti:
240+
```
241+
Fri, 26 Jun 2015 15:36:13 -0700 Fri, 26 Jun 2015 15:39:13 -0700 19 {kubelet node-i2hq} spec.containers{uses-private-image} failed Failed to pull image "user/privaterepo:v1": Error: image user/privaterepo:v1 not found
242+
```
243+
244+
245+
Kamu harus memastikan semua Node di dalam klaster memiliki `.docker/config.json` yang sama. Jika tidak, Pod-Pod
246+
akan jalan pada beberapa Node saja dan gagal di Node lainnya. Contohnya, jika kamu menggunakan Node _autoscaling_, maka
247+
setiap templat _instance_ perlu untuk mempunyai `.docker/config.json` atau _mount_ sebuah penyimpanan yang berisi berkas tersebut.
248+
249+
Semua Pod memiliki akses baca (_read_) untuk _image-image_ di registri privat manapun ketika
250+
_key_ registri privat ditambahkan pada `.docker/config.json`.
251+
252+
### _Image_ Pra-unduh
253+
254+
{{< note >}}
255+
Jika kamu jalan di Google Kubernetes Engine, maka akan ada `.dockercfg` pada setiap Node dengan kredensial untuk Google Container Registry. Kamu dapat menggunakan cara ini.
256+
{{< /note >}}
257+
258+
{{< note >}}
259+
Cara ini cocok jika kamu dapat mengontrol konfigurasi Node. Cara ini tidak akan
260+
bisa berjalan dengan baik pada GCE, dan penyedia cloud lainnya yang tidak menggantikan
261+
Node secara otomatis.
262+
{{< /note >}}
263+
264+
Secara _default_, kubelet akan mencoba untuk mengunduh setiap _image_ dari registri yang dispesifikasikan.
265+
Hanya saja, jika properti `imagePullPolicy` diatur menjadi `IfNotPresent` atau `Never`, maka
266+
sebuah _image_ lokal digunakan.
267+
268+
Jika kamu ingin memanfaatkan _image_ pra-unduh sebagai pengganti untuk otentikasi registri,
269+
kamu harus memastikan semua Node di dalam klaster memiliki _image_ pra-unduh yang sama.
270+
271+
Cara ini bisa digunakan untuk memuat _image_ tertentu untuk kecepatan atau sebagai alternatif untuk otentikasi untuk sebuah registri privat.
272+
273+
Semua Pod akan mendapatkan akses baca ke _image_ pra-unduh manapun.
274+
275+
### Tentukan ImagePullSecrets pada sebuah Pod
276+
277+
{{< note >}}
278+
Cara ini merupakan cara yang direkomendasikan saat ini untuk Google Kubernetes Engine, GCE, dan penyedia cloud lainnya yang
279+
secara otomatis dapat membuat Node.
280+
{{< /note >}}
281+
282+
Kubernetes mendukung penentuan _key_ registri pada sebuah Pod.
283+
284+
#### Membuat sebuah Secret dengan Docker Config
285+
286+
Jalankan perintah berikut, ganti nilai huruf besar dengan yang tepat:
287+
288+
```shell
289+
kubectl create secret docker-registry <name> --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
290+
```
291+
292+
Jika kamu sudah memiliki berkas kredensial Docker, daripada menggunakan perintah di atas,
293+
kamu dapat mengimpor berkas kredensial sebagai Kubernetes Secret.
294+
[Membuat sebuah Secret berbasiskan pada kredensial Docker yang sudah ada](/docs/tasks/configure-pod-container/pull-image-private-registry/#registry-secret-existing-credentials) menjelaskan bagaimana mengatur ini.
295+
Cara ini berguna khususnya jika kamu menggunakan beberapa registri kontainer privat,
296+
perintah `kubectl create secret docker-registry` akan membuat sebuah Secret yang akan
297+
hanya bekerja menggunakan satu registri privat.
298+
299+
{{< note >}}
300+
Pod-Pod hanya dapat mengacu pada imagePullSecrets di dalam _namespace_,
301+
sehingga proses ini perlu untuk diselesaikan satu kali setiap _namespace_.
302+
{{< /note >}}
303+
304+
#### Mengacu pada imagePullSecrets di dalam sebuah Pod
305+
306+
Sekarang, kamu dapat membuat Pod yang mengacu pada Secret dengan menambahkan bagian `imagePullSecrets`
307+
untuk sebuah definisi Pod.
308+
309+
```shell
310+
cat <<EOF > pod.yaml
311+
apiVersion: v1
312+
kind: Pod
313+
metadata:
314+
name: foo
315+
namespace: awesomeapps
316+
spec:
317+
containers:
318+
- name: foo
319+
image: janedoe/awesomeapp:v1
320+
imagePullSecrets:
321+
- name: myregistrykey
322+
EOF
323+
324+
cat <<EOF >> ./kustomization.yaml
325+
resources:
326+
- pod.yaml
327+
EOF
328+
```
329+
330+
Cara ini perlu untuk diselesaikan untuk setiap Pod yang mengguunakan registri privat.
331+
332+
Hanya saja, mengatur _field_ ini dapat diotomasi dengan mengatur imagePullSecrets di dalam
333+
sumber daya [serviceAccount](/docs/user-guide/service-accounts).
334+
Periksa [Tambahan ImagePullSecrets untuk sebuah Service Account](/docs/tasks/configure-pod-container/configure-service-account/#add-imagepullsecrets-to-a-service-account) untuk instruksi yang lebih detail.
335+
336+
Kamu dapat menggunakan cara ini bersama `.docker/config.json` pada setiap Node. Kredensial-kredensial
337+
akan dapat di-_merged_. Cara ini akan dapat bekerja pada Google Kubernetes Engine.
338+
339+
### Kasus-Kasus Penggunaan (_Use Case_)
340+
341+
Ada beberapa solusi untuk konfigurasi registri privat. Berikut beberapa kasus penggunaan
342+
dan solusi yang disarankan.
343+
344+
1. Klaster yang hanya menjalankan _image non-proprietary_ (misalnya open-source). Tidak perlu unutuk menyembunyikan _image_.
345+
- Gunakan _image_ publik pada Docker hub.
346+
- Tidak ada konfigurasi yang diperlukan.
347+
- Pada GCE/Google Kubernetes Engine, sebuah _mirror_ lokal digunakan secara otomatis untuk meningkatkan kecepatan dan ketersediaan.
348+
1. Klaster yang menjalankan _image proprietary_ yang seharusnya disembunyikan dari luar perusahaan, tetapi bisa terlihat oleh pengguna klaster.
349+
- Gunakan sebuah privat [registri Docker](https://docs.docker.com/registry/) yang _hosted_.
350+
- Bisa saja di-_host_ pada [Docker Hub](https://hub.docker.com/signup), atau lainnya.
351+
- Konfigurasi `.docker/config.json` secara manual pada setiap Node seperti dijelaskan di atas.
352+
- Atau, jalankan sebuah registri privat internal di belakang _firewall_ kamu dengan akses baca terbuka.
353+
- Tidak ada konfigurasi Kubernetes yang diperlukan.
354+
- Atau, ketika pada GCE/Google Kubernetes Engine, menggunakan Google Container Registry yang ada di proyek.
355+
- Hal ini bisa bekerja baik dengan _autoscaling_ klaster dibandingkan konfigurasi Node manual.
356+
- Atau, pada sebuah klaster dimana mengubah konfigurasi Node tidak nyaman, gunakan `imagePullSecrets`.
357+
1. Klaster dengan _image proprietary_, beberapa memerlukan akses kontrol yang lebih ketat.
358+
- Pastikan [AlwaysPullImages _admission controller_](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) aktif. Sebaliknya, semua Pod berpotensi memiliki akses ke semua _image_.
359+
- Pindahkan data sensitif pada sumber daya "Secret", daripada mengemasnya menjadi sebuah _image_.
360+
1. Sebuah klaster _multi-tenant_ dimana setiap _tenant_ memerlukan registri privatnya masing-masing.
361+
- Pastikan [AlwaysPullImages _admission controller_](/docs/reference/access-authn-authz/admission-controllers/#alwayspullimages) aktif. Sebaliknya, semua Pod dari semua tenant berpotensi memiliki akses pada semua _image_.
362+
- Jalankan sebuah registri privat dimana otorisasi diperlukan.
363+
- Men-_generate_ kredensial registri uuntuk setiap _tenant_, masukkan ke dalam _secret_ uuntuk setiap _namespace tenant_.
364+
- _Tenant_ menambahkan _secret_ pada imagePullSecrets uuntuk setiap _namespace_.
365+
366+
367+
Jika kamu memiliki akses pada beberapa registri, kamu dapat membuat satu _secret_ untuk setiap registri.
368+
Kubelet akan melakukan _merge_ `imagePullSecrets` manapun menjadi sebuah virtual `.docker/config.json`.
369+
370+
{{% /capture %}}

0 commit comments

Comments
 (0)