Pahami Konfigurasi Kubernetes Peta

Selesai

Di repositori aplikasi, ada file konfigurasi yang dimuat dalam index.html file untuk memungkinkan variabel lingkungan diperbarui tanpa perlu build gambar lengkap.

File konfigurasi tidak berisi informasi sensitif, hanya perlu dimuat bersama dengan kontainer-nya. Bagaimana kita dapat memasang file dalam kontainer tanpa perlu enkripsi atau pengodean?

Memahami ConfigMaps

Konfigurasi Peta adalah mitra rahasia. Meskipun Rahasia menyediakan cara untuk menyimpan dan mengirimkan data sensitif, Config Peta adalah objek yang menyediakan cara untuk menyimpan data nonsensitif menggunakan struktur nilai kunci yang sama dengan Rahasia. Objek Config Peta memungkinkan Anda untuk memisahkan konfigurasi dari gambar kontainer sehingga gambar tetap stateless.

Anda membuat ConfigMap untuk menyimpan data konfigurasi secara terpisah dari kode aplikasi dan memuatnya mirip dengan cara kita memuat objek Rahasia di Pod. Anda hanya dapat mereferensikan Config Peta dengan menggunakan variabel lingkungan, atau dengan memasangnya sebagai file dalam volume di dalam kontainer.

Konfigurasi Peta memiliki batasan ukuran data: Anda dapat menyimpan hingga 1 MiB data dalam ConfigMap. Batasan ukuran membantu Anda menghindari file konfigurasi besar dan kompleks dengan meminta Anda memecah konfigurasi besar menjadi gugus yang lebih kecil. Dengan Config Peta, Anda hanya dapat memasang file konfigurasi yang diperlukan dalam kontainer Anda, yang memungkinkan lebih banyak granularitas.

Seperti Rahasia, ConfigMaps di-namespace. Anda hanya dapat mengakses dan memasang ConfigMap dengan menggunakan kontainer yang ada di namespace yang sama dengan tempatnya dibuat.

Konfigurasi Peta juga banyak digunakan oleh alat lain, seperti Operator Helm dan Kubernetes, untuk menyimpan dan membaca status.

Pembaruan ConfigMap

Semua ConfigMap yang dipasang sebagai volume di dalam sebuah Pod akan diperbarui secara otomatis setelah nilainya diubah. Perubahan ini mungkin tidak segera terjadi karena konfigurasi Kubelet, tetapi terjadi secara otomatis sehingga tidak perlu menghidupkan ulang Pod.

Saat ConfigMap terikat ke variabel lingkungan, ConfigMap tidak diperbarui secara otomatis. Untuk kasus-kasus ini, perlu untuk menghidupkan ulang Pod agar perubahan diterapkan.

Membuat dan menggunakan Konfigurasi Peta

Anda dapat membuat ConfigMap menggunakan pendekatan yang sama dengan Rahasia: file YAML. Spesifikasi ConfigMap adalah sebagai berikut:

apiVersion: v1
kind: ConfigMap
metadata:
  name: configmap-name
  namespace: default
data:
  key-name: "value as key"
  key.name: |
    multi line
    property, called "file-like" values

Anda dapat mereferensikan Config Peta oleh satu atau beberapa kunci dalam spesifikasi Pod atau Deployment, seperti yang ditunjukkan pada contoh berikut:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-as-env
  namespace: default
spec:
  containers:
    - name: configmap-env
      image: alpine
      command: ["sleep", "3600"]
      env:
        - name: ENVIRONMENT_VARIABLE_NAME
          valueFrom:
            configMapKeyRef:
              name: configmap-name
              key: key-name

Anda juga dapat memasangnya sebagai file di dalam pod menggunakan volume baca-saja, seperti yang ditunjukkan dalam contoh berikut:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-as-env
  namespace: default
spec:
  containers:
    - name: configmap-env
      image: alpine
      command: ["sleep", "3600"]
      volumeMounts:
      - name: volume-name
        mountPath: "/path/to/mount"
        readOnly: true
  volumes:
    - name: volume-name
      configMap:
        name: configmap-name
        items:
        - key: "key-name"
          path: "path/to/mount/the/key"

Uji pengetahuan Anda

1.

Mengapa kita harus menggunakan ConfigMaps?

2.

Bagaimana Anda dapat menggunakan ConfigMaps dalam aplikasi?

3.

Apakah namespace merupakan batasan untuk ConfigMaps?