Translate configure-pod-configmap to Bahasa Indonesia

Add example yaml

Add more missing example yamls

Fix namespace term_id

Translate comments in example files

Update example files with ID versions

Add _index.md

Fix nits:
+ translate item to butir
+ fix typos
+ add backticks for words contained in snippets
+ camelcase API objects
+ fix broken anchors
+ use singular form of imported words

Fix nits:
+ use dikontainerisasi

Fix nits:
+ fix one broken anchor
This commit is contained in:
Evan Adi 2020-04-19 14:30:12 +07:00
parent 60d3721604
commit 8d64525e6b
10 changed files with 825 additions and 0 deletions

View File

@ -0,0 +1,5 @@
---
title: "Mengatur Pod dan Kontainer"
weight: 20
---

View File

@ -0,0 +1,684 @@
---
title: Mengatur Pod untuk Menggunakan ConfigMap
content_template: templates/task
weight: 150
card:
name: tasks
weight: 50
---
{{% capture overview %}}
ConfigMap mengizinkan kamu untuk memisahkan artifak-artifak konfigurasi dari konten _image_ untuk menjaga aplikasi yang dikontainerisasi tetap portabel. Artikel ini menyediakan sekumpulan contoh penerapan yang mendemonstrasikan bagaimana cara membuat ConfigMap dan mengatur Pod menggunakan data yang disimpan di dalam ConfigMap.
{{% /capture %}}
{{% capture prerequisites %}}
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
{{% /capture %}}
{{% capture steps %}}
## Membuat ConfigMap
Kamu dapat menggunakan `kubectl create configmap` ataupun generator ConfigMap pada `kustomization.yaml` untuk membuat sebuah ConfigMap. Perlu diingat bahwa `kubectl` mulai mendukung `kustomization.yaml` sejak versi 1.14.
### Membuat ConfigMap Menggunakan kubectl create configmap
Gunakan perintah `kubectl create configmap` untuk membuat ConfigMap dari [direktori](#membuat-configmap-dari-direktori), [berkas](#membuat-configmap-dari-berkas), ataupun [nilai-nilai yang harfiah (_literal values_)](#membuat-configmap-dari-nilai-harfiah):
```shell
kubectl create configmap <map-name> <data-source>
```
di mana \<map-name> merupakan nama yang ingin kamu berikan pada ConfigMap tersebut dan \<data-source> adalah direktori, berkas, atau nilai harfiah yang digunakan sebagai sumber data.
Nama dari sebuah objek ConfigMap haruslah berupa
[nama subdomain DNS](/docs/concepts/overview/working-with-objects/names#dns-subdomain-names) yang sah.
Ketika kamu membuat ConfigMap dari sebuah berkas, secara bawaan, _basename_ dari berkas tersebut akan menjadi kunci pada \<data-source>, dan isi dari berkas tersebut akan menjadi nilai dari kunci tersebut.
Kamu dapat menggunakan [`kubectl describe`](/docs/reference/generated/kubectl/kubectl-commands/#describe) atau
[`kubectl get`](/docs/reference/generated/kubectl/kubectl-commands/#get) untuk mengambil informasi
mengenai sebuah ConfigMap.
#### Membuat ConfigMap dari direktori
Kamu dapat menggunakan `kubectl create configmap` untuk membuat sebuah ConfigMap dari banyak berkas dalam sebuah direktori yang sama. Ketika kamu membuat sebuah ConfigMap dari sebuah direktori, kubectl akan mengidentifikasi berkas-berkas yang memiliki _basename_ yang merupakan sebuah kunci yang sah pada direktori dan mengemas tiap berkas tersebut ke dalam sebuah ConfigMap baru. Seluruh entri direktori kecuali berkas reguler akan diabaikan (subdirektori, _symlink_, _device_, _pipe_, dsb).
Sebagai contoh:
```shell
# Membuat direktori lokal
mkdir -p configure-pod-container/configmap/
# Mengunduh berkas-berkas sampel ke dalam direktori `configure-pod-container/configmap/`
wget https://kubernetes.io/examples/configmap/game.properties -O configure-pod-cont1ainer/configmap/game.properties
wget https://kubernetes.io/examples/configmap/ui.properties -O configure-pod-container/configmap/ui.properties
# Membuat configmap
kubectl create configmap game-config --from-file=configure-pod-container/configmap/
```
Perintah di atas mengemas tiap berkas, dalam kasus ini, `game.properties` dan `ui.properties` dalam direktori `configure-pod-container/configmap/` ke dalam ConfigMap dengan nama game-config. Kamu dapat menampilkan detail dari ConfigMap menggunakan perintah berikut:
```shell
kubectl describe configmaps game-config
```
Keluaran akan tampil seperti berikut:
```
Name: game-config
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
ui.properties:
----
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice
```
Berkas-berkas `game.properties` dan `ui.properties` pada direktori `configure-pod-container/configmap/` direpresentasikan oleh bagian `data` pada ConfigMap.
```shell
kubectl get configmaps game-config -o yaml
```
Keluaran akan tampil seperti berikut:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: 2016-02-18T18:52:05Z
name: game-config
namespace: default
resourceVersion: "516"
uid: b4952dc3-d670-11e5-8cd0-68f728db1985
data:
game.properties: |
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
ui.properties: |
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice
```
#### Membuat ConfigMap dari berkas
Kamu dapat menggunakan `kubectl create configmap` untuk membuat sebuah ConfigMap dari berkas individual, atau dari banyak berkas.
Sebagai contoh,
```shell
kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties
```
akan menghasilkan ConfigMap berikut:
```shell
kubectl describe configmaps game-config-2
```
dengan keluaran seperti berikut:
```
Name: game-config-2
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
```
Kamu dapat memasukkan argumen `--from-file` beberapa kali untuk membuat sebuah ConfigMap dari banyak sumber data.
```shell
kubectl create configmap game-config-2 --from-file=configure-pod-container/configmap/game.properties --from-file=configure-pod-container/configmap/ui.properties
```
Kamu dapat menampilkan detail dari ConfigMap `game-config-2` menggunakan perintah berikut:
```shell
kubectl describe configmaps game-config-2
```
Keluaran akan tampil seperti berikut:
```
Name: game-config-2
Namespace: default
Labels: <none>
Annotations: <none>
Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
ui.properties:
----
color.good=purple
color.bad=yellow
allow.textmode=true
how.nice.to.look=fairlyNice
```
Gunakan opsi `--from-env-file` untuk membuat sebuah ConfigMap dari sebuah _env-file_, sebagai contoh:
```shell
# Env-file berisi sebuah daftar variabel _environment_.
# Ada aturan-aturan sintaks yang berlaku:
# Tiap baris pada sebuah env file harus memiliki format VAR=VAL.
# Baris yang diawali # (komentar) akan diabaikan.
# Baris-baris kosong akan diabaikan.
# Tidak ada penanganan spesial untuk tanda kutip (tanda kutip akan menjadi bagian dari nilai pada ConfigMap).
# Mengunduh berkas-berkas sampel berikut ke dalam direktori `configure-pod-container/configmap/`
wget https://kubernetes.io/examples/configmap/game-env-file.properties -O configure-pod-container/configmap/game-env-file.properties
# Berkas env-file `game-env-file.properties` berisi sebagai berikut:
cat configure-pod-container/configmap/game-env-file.properties
enemies=aliens
lives=3
allowed="true"
# Komentar ini dan baris kosong di atasnya akan diabaikan.
```
```shell
kubectl create configmap game-config-env-file \
--from-env-file=configure-pod-container/configmap/game-env-file.properties
```
akan menghasilkan ConfigMap sebagai berikut:
```shell
kubectl get configmap game-config-env-file -o yaml
```
dengan keluaran seperti berikut:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: 2017-12-27T18:36:28Z
name: game-config-env-file
namespace: default
resourceVersion: "809965"
uid: d9d1ca5b-eb34-11e7-887b-42010a8002b8
data:
allowed: '"true"'
enemies: aliens
lives: "3"
```
{{< caution >}}
Ketika memasukkan `--from-env-file` beberapa kali untuk membuat sebuah ConfigMap dari beberapa sumber data, hanya env-file terakhir yang akan digunakan.
{{< /caution >}}
Contoh perilaku memasukkan `--from-env-file` beberapa kali didemonstrasikan dengan:
```shell
# Mengunduh berkas-berkas sampel berikut ke dalam direktori `configure-pod-container/configmap/`
wget https://kubernetes.io/examples/configmap/ui-env-file.properties -O configure-pod-container/configmap/ui-env-file.properties
# Membuat configmap
kubectl create configmap config-multi-env-files \
--from-env-file=configure-pod-container/configmap/game-env-file.properties \
--from-env-file=configure-pod-container/configmap/ui-env-file.properties
```
akan menghasilkan ConfigMap sebagai berikut:
```shell
kubectl get configmap config-multi-env-files -o yaml
```
dengan keluaran seperti berikut:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: 2017-12-27T18:38:34Z
name: config-multi-env-files
namespace: default
resourceVersion: "810136"
uid: 252c4572-eb35-11e7-887b-42010a8002b8
data:
color: purple
how: fairlyNice
textmode: "true"
```
#### Menentukan kunci yang akan digunakan ketika membuat ConfigMap dari sebuah berkas
Kamu dapat menentukan kunci selain dari nama berkas untuk digunakan pada bagian `data` pada ConfigMap yang kamu buat menggunakan argumen `--from-file`:
```shell
kubectl create configmap game-config-3 --from-file=<my-key-name>=<path-to-file>
```
di mana `<my-key-name>` merupakan kunci yang ingin kamu gunakan pada ConfigMap dan `<path-to-file>` merupakan lokasi dari berkas sumber data yang akan menjadi nilai dari kunci tersebut.
Sebagai contoh:
```shell
kubectl create configmap game-config-3 --from-file=game-special-key=configure-pod-container/configmap/game.properties
```
akan menghasilkan ConfigMap sebagai berikut:
```
kubectl get configmaps game-config-3 -o yaml
```
dengan keluaran seperti berikut:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: 2016-02-18T18:54:22Z
name: game-config-3
namespace: default
resourceVersion: "530"
uid: 05f8da22-d671-11e5-8cd0-68f728db1985
data:
game-special-key: |
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
```
#### Membuat ConfigMap dari nilai harfiah
Kamu dapat menggunakan `kubectl create configmap` dengan argumen `--from-literal` untuk menentukan nilai harfiah dari baris perintah:
```shell
kubectl create configmap special-config --from-literal=special.how=very --from-literal=special.type=charm
```
Kamu dapat memasukkan beberapa pasang kunci-nilai. Tiap pasang yang dimasukkan pada _command line_ direpresentasikan sebagai sebuah entri terpisah pada bagian `data` dari ConfigMap.
```shell
kubectl get configmaps special-config -o yaml
```
Keluaran akan tampil seperti berikut:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: 2016-02-18T19:14:38Z
name: special-config
namespace: default
resourceVersion: "651"
uid: dadce046-d673-11e5-8cd0-68f728db1985
data:
special.how: very
special.type: charm
```
### Membuat ConfigMap dari generator
`kubectl` mendukung `kustomization.yaml` sejak versi 1.14.
Kamu juga dapat membuat ConfigMap dari generator lalu menggunakannya untuk membuat objek tersebut pada
peladen API. Generator
harus dituliskan pada `kustomization.yaml` dalam sebuah direktori.
#### Menghasilkan ConfigMap dari berkas
Sebagai contoh, untuk menghasilkan ConfigMap dari berkas `configure-pod-container/configmap/game.properties`
```shell
# Membuat berkas kustomization.yaml dengan ConfigMapGenerator
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: game-config-4
files:
- configure-pod-container/configmap/game.properties
EOF
```
Gunakan direktori kustomization untuk membuat objek ConfigMap.
```shell
kubectl apply -k .
configmap/game-config-4-m9dm2f92bt created
```
Kamu dapat melihat ConfigMap yang dihasilkan seperti berikut:
```shell
kubectl get configmap
NAME DATA AGE
game-config-4-m9dm2f92bt 1 37s
kubectl describe configmaps/game-config-4-m9dm2f92bt
Name: game-config-4-m9dm2f92bt
Namespace: default
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","data":{"game.properties":"enemies=aliens\nlives=3\nenemies.cheat=true\nenemies.cheat.level=noGoodRotten\nsecret.code.p...
Data
====
game.properties:
----
enemies=aliens
lives=3
enemies.cheat=true
enemies.cheat.level=noGoodRotten
secret.code.passphrase=UUDDLRLRBABAS
secret.code.allowed=true
secret.code.lives=30
Events: <none>
```
Perlu diingat baha nama dari ConfigMap yang dihasilkan memiliki sufiks yang ditambahkan dengan melakukan _hashing_ terhadap konten dari ConfigMap tersebut. Hal ini memastikan bahwa
sebuah ConfigMap baru akan dihasilkan setiap kali konten dimodifikasi.
#### Menentukan kunci yang akan digunakan ketika generating ConfigMap dari sebuah berkas
Kamu dapat menentukan kunci selain nama berkas untuk digunakan pada generator ConfigMap.
Sebagai contoh, untuk menghasilkan sebuah ConfigMap dari berkas `configure-pod-container/configmap/game.properties`
dengan kunci `game-special-key`
```shell
# Membuat berkas kustomization.yaml dengan ConfigMapGenerator
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: game-config-5
files:
- game-special-key=configure-pod-container/configmap/game.properties
EOF
```
Gunakan direktori kustomization untuk membuat objek ConfigMap.
```shell
kubectl apply -k .
configmap/game-config-5-m67dt67794 created
```
#### Menghasilkan ConfigMap dari Nilai-nilai Harfiah
Untuk menghasilkan ConfigMap dari nilai-nilai harfiah `special.type=charm` dan `special.how=very`,
kamu dapat menentukan generator ConfigMap pada `kustomization.yaml` sebagai berikut
```shell
# Membuat berkas kustomization.yaml dengan ConfigMapGenerator
cat <<EOF >./kustomization.yaml
configMapGenerator:
- name: special-config-2
literals:
- special.how=very
- special.type=charm
EOF
```
Gunakan direktori kustomization untuk membuat objek ConfigMap.
```shell
kubectl apply -k .
configmap/special-config-2-c92b5mmcf2 created
```
## Menentukan variabel _environment_ kontainer menggunakan data ConfigMap
### Menentukan variabel _environment_ kontainer dengan data dari sebuah ConfigMap
1. Menentukan sebuah variabel _environment_ sebagai sepasang kunci-nilai pada ConfigMap:
```shell
kubectl create configmap special-config --from-literal=special.how=very
```
2. Memberikan nilai `special.how` yang sudah terdapat pada ConfigMap pada variabel _environment_ `SPECIAL_LEVEL_KEY` di spesifikasi Pod.
{{< codenew file="pods/pod-single-configmap-env-variable.yaml" >}}
Buat Pod:
```shell
kubectl create -f https://kubernetes.io/id/examples/pods/pod-single-configmap-env-variable.yaml
```
Sekarang, keluaran dari Pod meliputi variabel _environment_ `SPECIAL_LEVEL_KEY=very`.
### Menentukan variabel _environment_ kontainer dengan data dari beberapa ConfigMap
* Seperti pada contoh sebelumnya, buat ConfigMap terlebih dahulu.
{{< codenew file="configmap/configmaps.yaml" >}}
Buat ConfigMap:
```shell
kubectl create -f https://kubernetes.io/examples/configmap/configmaps.yaml
```
* Tentukan variabel _environment_ pada spesifikasi Pod.
{{< codenew file="pods/pod-multiple-configmap-env-variable.yaml" >}}
Buat Pod:
```shell
kubectl create -f https://kubernetes.io/id/examples/pods/pod-multiple-configmap-env-variable.yaml
```
Sekarang, keluaran Pod meliputi variabel _environment_ `SPECIAL_LEVEL_KEY=very` dan `LOG_LEVEL=INFO`.
## Mengatur semua pasangan kunci-nilai pada ConfigMap sebagai variabel _environment_ kontainer
{{< note >}}
Fungsi ini tersedia pada Kubernetes v1.6 dan selanjutnya.
{{< /note >}}
* Buat ConfigMap yang berisi beberapa pasangan kunci-nilai.
{{< codenew file="configmap/configmap-multikeys.yaml" >}}
Buat ConfigMap:
```shell
kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml
```
* Gunakan `envFrom` untuk menentukan seluruh data pada ConfigMap sebagai variabel _environment_ kontainer. Kunci dari ConfigMap akan menjadi nama variabel _environment_ di dalam Pod.
{{< codenew file="pods/pod-configmap-envFrom.yaml" >}}
Buat Pod:
```shell
kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-envFrom.yaml
```
Sekarang, Pod keluaran pod meliputi variabel _environment_ `SPECIAL_LEVEL=very` dan `SPECIAL_TYPE=charm`.
## Menggunakan variabel _environment_ yang ditentukan ConfigMap pada perintah Pod
Kamu dapat menggunakan variabel _environment_ yang ditentukan ConfigMap pada bagian `command` dari spesifikasi Pod menggunakan sintaks substitusi Kubernetes `$(VAR_NAME)`.
Sebagai contoh, spesifikasi Pod berikut
{{< codenew file="pods/pod-configmap-env-var-valueFrom.yaml" >}}
dibuat dengan menjalankan
```shell
kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-env-var-valueFrom.yaml
```
menghasilkan keluaran pada kontainer `test-container` seperti berikut:
```shell
very charm
```
## Menambahkan data ConfigMap pada Volume
Seperti yang sudah dijelaskan pada [Membuat ConfigMap dari berkas](#membuat-configmap-dari-berkas), ketika kamu membuat ConfigMap menggunakan ``--from-file``, nama dari berkas tersebut akan menjadi kunci yang disimpan pada bagian `data` dari ConfigMap. Isi berkas tersebut akan menjadi nilai dari kunci tersebut.
Contoh pada bagian ini merujuk pada ConfigMap bernama `special-config`, Seperti berikut.
{{< codenew file="configmap/configmap-multikeys.yaml" >}}
Buat ConfigMap:
```shell
kubectl create -f https://kubernetes.io/examples/configmap/configmap-multikeys.yaml
```
### Mengisi Volume dengan data yang disimpan Pada ConfigMap
Tambahkan nama ConfigMap di bawah bagian `volumes` pada spesifikasi Pod.
Hal ini akan menambahkan data ConfigMap pada direktori yang ditentukan oleh `volumeMounts.mountPath` (pada kasus ini, `/etc/config`).
Bagian `command` berisi daftar berkas pada direktori dengan nama-nama yang sesuai dengan kunci-kunci pada ConfigMap.
{{< codenew file="pods/pod-configmap-volume.yaml" >}}
Buat Pod:
```shell
kubectl create -f https://kubernetes.io/i/examples/pods/pod-configmap-volume.yaml
```
Ketika Pod berjalan, perintah `ls /etc/config/` akan menghasilkan keluaran di bawah:
```shell
SPECIAL_LEVEL
SPECIAL_TYPE
```
{{< caution >}}
Jika ada beberapa berkas pada direktori `/etc/config/`, berkas-berkas tersebut akan dihapus.
{{< /caution >}}
### Menambahkan data ConfigMap pada jalur tertentu pada Volume
Gunakan kolom `path` untuk menentukan jalur berkas yang diinginkan untuk butir tertentu pada ConfigMap (butir ConfigMap tertentu).
Pada kasus ini, butir `SPECIAL_LEVEL` akan akan dipasangkan sebagai `config-volume` pada `/etc/config/keys`.
{{< codenew file="pods/pod-configmap-volume-specific-key.yaml" >}}
Buat Pod:
```shell
kubectl create -f https://kubernetes.io/examples/pods/pod-configmap-volume-specific-key.yaml
```
Ketika Pod berjalan, perintah `cat /etc/config/keys` akan menghasilkan keluaran di bawah:
```shell
very
```
{{< caution >}}
Seperti sebelumnya, semua berkas yang sebelumnya berada pada direktori `/etc/config/` akan dihapus.
{{< /caution >}}
### Memproyeksikan kunci ke jalur dan perizinan berkas tertentu
Kamu dapat memproyeksikan kunci ke jalur dan perizinan tertentu pada setiap
berkas. Panduan pengguna [Secret](/docs/concepts/configuration/secret/#using-secrets-as-files-from-a-pod) menjelaskan mengenai sintaks-sintaksnya.
### ConfigMap yang dipasang akan diperbarui secara otomatis
Ketika sebuah ConfigMap yang sudah dipasang pada sebuah volume diperbarui, kunci-kunci yang diproyeksikan akan turut diperbarui. Kubelet akan memeriksa apakah ConfigMap yang dipasang merupakan yang terbaru pada sinkronisasi berkala. Namun, ConfigMap menggunakan _cache_ lokal berbasis ttl (_time-to-live_) miliknya untuk mendapatkan nilai dari ConfigMap saat ini. Hasilnya, keseluruhan penundaan dari saat ketika ConfigMap diperbarui sampai saat ketika kunci-kunci baru diproyeksikan ke pada Pod bisa selama periode sinkronisasi kubelet (secara bawaan selama 1 menit) + ttl dari _cache_ ConfigMap (secara bawaan selama 1 menit) pada kubelet. Kamu dapat memicu pembaruan langsung dengan memperbarui salah satu dari anotasi Pod.
{{< note >}}
Kontainer yang menggunakan ConfigMap sebagai volume [subPath](/docs/concepts/storage/volumes/#using-subpath) tidak akan menerima pembaruan ConfigMap.
{{< /note >}}
{{% /capture %}}
{{% capture discussion %}}
## Memahami ConfigMap dan Pod
Sumber daya API ConfigMap menyimpan data konfigurasi sebagai pasangan kunci-nilai. Data tersebut dapat dikonsumsi oleh Pod atau sebagai penyedia konfigurasi untuk komponen-komponen sistem seperti kontroler. ConfigMap mirip dengan [Secret](/docs/concepts/configuration/secret/), tetapi ConfigMap dimaksudkan untuk mengolah tulisan yang tidak memiliki informasi yang sensitif. Baik pengguna maupun komponen sistem dapat menyimpan data konfigurasi pada ConfigMap.
{{< note >}}
ConfigMap harus mereferensikan berkas-berkas properti, bukan menggantikannya. Anggaplah ConfigMap sebagai sesuatu yang merepresentasikan direktori `/etc` beserta isinya pada Linux. Sebagai contoh, jika kamu membuat sebuah [Volume Kubernetes](/docs/concepts/storage/volumes/) dari ConfigMap, tiap butir data pada ConfigMap direpresentasikan sebagai sebuah berkas pada volume.
{{< /note >}}
Kolom `data` pada ConfigMap berisi data konfigurasi. Seperti pada contoh di bawah, hal ini bisa berupa sesuatu yang sederhana -- seperti properti individual yang ditentukan menggunakan `--from-literal` -- atau sesuatu yang kompleks -- seperti berkas konfigurasi atau _blob_ JSON yang ditentukan dengan `--from-file`.
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: 2016-02-18T19:14:38Z
name: example-config
namespace: default
data:
# contoh properti yang sederhana yang ditentukan menggunakan --from-literal
example.property.1: hello
example.property.2: world
# contoh properti yang kompleks yang ditentukan menggunakan --from-file
example.property.file: |-
property.1=value-1
property.2=value-2
property.3=value-3
```
### Batasan
- Kamu harus membuat ConfigMap sebelum merujuknya pada spesifikasi Pod (kecuali kamu menandai ConfigMap sebagai "_optional_"). Jika kamu merujuk sebuah ConfigMap yang tidak ada, Pod tersebut tidak akan berjalan. Sama halnya, mereferensikan kunci yang tidak ada pada ConfigMap akan mencegah Pod untuk berjalan.
- Jika kamu menggunakan `envFrom` untuk menentukan variabel _environment_ dari ConfigMap, kunci-kunci yang dianggap tidak sah akan dilewat. Pod akan diizinkan untuk berjalan, tetapi nama-nama yang tidak sah akan direkam pada _event log_ (`InvalidVariableNames`). Pesan _log_ tersebut mencantumkan tiap kunci yang dilewat. Sebagai contoh:
```shell
kubectl get events
```
Keluaran akan tampil seperti berikut:
```
LASTSEEN FIRSTSEEN COUNT NAME KIND SUBOBJECT TYPE REASON SOURCE MESSAGE
0s 0s 1 dapi-test-pod Pod Warning InvalidEnvironmentVariableNames {kubelet, 127.0.0.1} Keys [1badkey, 2alsobad] from the EnvFrom configMap default/myconfig were skipped since they are considered invalid environment variable names.
```
- ConfigMap berada pada {{< glossary_tooltip term_id="namespace" >}} tertentu. ConfigMap hanya dapat dirujuk oleh Pod yang berada pada Namespace yang sama.
- Kamu tidak dapat menggunakan ConfigMap untuk {{< glossary_tooltip text="Pod statis" term_id="static-pod" >}}, karena Kubelet tidak mendukung hal ini.
{{% /capture %}}
{{% capture whatsnext %}}
* Ikuti contoh penerapan pada dunia nyata [Mengatur Redis menggunakan ConfigMap](/docs/tutorials/configuration/configure-redis-using-configmap/).
{{% /capture %}}

View File

@ -0,0 +1,8 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
SPECIAL_LEVEL: very
SPECIAL_TYPE: charm

View File

@ -0,0 +1,15 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: special-config
namespace: default
data:
special.how: very
---
apiVersion: v1
kind: ConfigMap
metadata:
name: env-config
namespace: default
data:
log_level: INFO

View File

@ -0,0 +1,21 @@
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "echo $(SPECIAL_LEVEL_KEY) $(SPECIAL_TYPE_KEY)" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_LEVEL
- name: SPECIAL_TYPE_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: SPECIAL_TYPE
restartPolicy: Never

View File

@ -0,0 +1,13 @@
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "env" ]
envFrom:
- configMapRef:
name: special-config
restartPolicy: Never

View File

@ -0,0 +1,20 @@
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh","-c","cat /etc/config/keys" ]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
name: special-config
items:
- key: SPECIAL_LEVEL
path: keys
restartPolicy: Never

View File

@ -0,0 +1,19 @@
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "ls /etc/config/" ]
volumeMounts:
- name: config-volume
mountPath: /etc/config
volumes:
- name: config-volume
configMap:
# Berikan nama dari ConfigMap yang berisi berkas-berkas yang ingin kamu
# tambahkan ke kontainer
name: special-config
restartPolicy: Never

View File

@ -0,0 +1,21 @@
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
name: special-config
key: special.how
- name: LOG_LEVEL
valueFrom:
configMapKeyRef:
name: env-config
key: log_level
restartPolicy: Never

View File

@ -0,0 +1,19 @@
apiVersion: v1
kind: Pod
metadata:
name: dapi-test-pod
spec:
containers:
- name: test-container
image: k8s.gcr.io/busybox
command: [ "/bin/sh", "-c", "env" ]
env:
# Tentukan variabel environment
- name: SPECIAL_LEVEL_KEY
valueFrom:
configMapKeyRef:
# ConfigMap berisi nilai yang ingin kamu berikan pada SPECIAL_LEVEL_KEY
name: special-config
# Tentukan kunci yang diasosiasikan dengan nilainya
key: special.how
restartPolicy: Never