0Pricing
DevOps Bootcamp · Pelajaran

ConfigMaps & Secret

Kelola data konfigurasi dan informasi sensitif secara aman dalam deployment Kubernetes menggunakan ConfigMaps dan Secret.

ConfigMaps & Secret adalah pelajaran DevOps Bootcamp gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar DevOps Bootcamp, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus DevOps Bootcamp mencakup 4 pelajaran total.

Pengantar ConfigMaps & Secrets

Selamat datang! Dalam pelajaran ini, kita akan mempelajari cara mengelola data konfigurasi dan informasi sensitif di Kubernetes. Kita akan membahas ConfigMaps dan Secrets, dua alat penting untuk deployment aplikasi yang fleksibel dan aman.

ConfigMaps & Secret — ilustrasi 1

Mengapa Konfigurasi Perlu Dipisahkan?

Bayangkan kredensial basis data atau kunci API ditulis langsung secara permanen di dalam image Docker aplikasi Anda. Hal ini membuat pembaruan menjadi sulit dan mengekspos data sensitif.

  • Tidak fleksibel: Perubahan mengharuskan Anda membangun ulang image.
  • Risiko keamanan: Data sensitif tertanam di dalam image.
  • Bergantung pada lingkungan: Lingkungan yang berbeda (pengembangan, produksi) memerlukan pengaturan yang berbeda.

ConfigMaps: Data Non-Sensitif

ConfigMap adalah objek Kubernetes yang digunakan untuk menyimpan data konfigurasi non-sensitif sebagai pasangan kunci-nilai. Anggaplah ConfigMap sebagai tempat terpusat untuk pengaturan aplikasi Anda, seperti tingkat pencatatan atau endpoint API.

ConfigMap memisahkan konfigurasi dari kode aplikasi sehingga deployment Anda lebih portabel dan lebih mudah dikelola.

Menentukan ConfigMap

Anda dapat membuat ConfigMap dari nilai literal, file, atau direktori. Berikut contoh sederhana yang ditentukan dalam file YAML:

apiVersion: v1
kind: ConfigMap
metadata:
  name: my-app-config
data:
  log_level: "INFO"
  api_endpoint: "http://myapi.example.com"

ConfigMap sebagai Variabel Lingkungan

Setelah dibuat, Pod dapat menggunakan data ConfigMap sebagai variabel lingkungan. Ini adalah cara umum untuk meneruskan pengaturan ke aplikasi Anda.

Berikut cara Pod menggunakan my-app-config kita:

apiVersion: v1
kind: Pod
metadata:
  name: configmap-env-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "echo Log Level: $LOG_LEVEL; echo API: $API_ENDPOINT"]
    env:
    - name: LOG_LEVEL
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: log_level
    - name: API_ENDPOINT
      valueFrom:
        configMapKeyRef:
          name: my-app-config
          key: api_endpoint
  restartPolicy: Never

ConfigMap sebagai File yang Dipasang

Alternatifnya, data ConfigMap dapat dipasang sebagai file di dalam container Anda. Setiap pasangan kunci-nilai menjadi sebuah file, dengan kunci sebagai nama file dan nilai sebagai isinya.

Ini berguna untuk file konfigurasi yang diharapkan dibaca oleh aplikasi Anda dari jalur tertentu.

apiVersion: v1
kind: Pod
metadata:
  name: configmap-file-pod
spec:
  containers:
  - name: my-container
    image: busybox
    command: ["sh", "-c", "cat /etc/config/log_level; cat /etc/config/api_endpoint"]
    volumeMounts:
    - name: config-volume
      mountPath: /etc/config
  volumes:
  - name: config-volume
    configMap:
      name: my-app-config
  restartPolicy: Never

Secrets: Data Sensitif

Secrets mirip dengan ConfigMaps, tetapi dirancang untuk data sensitif seperti kata sandi, kunci API, atau sertifikat TLS. Kubernetes membantu Anda mengelola dan mendistribusikannya dengan aman.

ConfigMaps menyimpan data dalam teks biasa, sedangkan Secrets disandikan dengan base64. Ini BUKAN enkripsi, tetapi dapat mencegah paparan yang tidak disengaja.

Menentukan Secret

Saat membuat Secret, nilainya harus disandikan dengan base64. Anda dapat menggunakan echo -n 'my-password' | base64 untuk menyandikannya.

Berikut contoh untuk kata sandi basis data:

apiVersion: v1
kind: Secret
metadata:
  name: db-credentials
type: Opaque
data:
  username: YWRtaW4= # base64 of 'admin'
  password: c3VwZXJzZWNyZXRwYXNz # base64 of 'supersecretpass'

Menggunakan Secrets di dalam Pod

Pod menggunakan Secrets dengan cara yang hampir sama seperti ConfigMaps: sebagai variabel lingkungan atau file yang dipasang. Kubernetes akan otomatis mendekodekannya sebelum menyajikannya kepada container.

Secara umum, penggunaan sebagai file yang dipasang lebih disarankan untuk keamanan karena variabel lingkungan lebih mudah dicatat atau diperiksa.

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: my-app-container
    image: busybox
    command: ["sh", "-c", "echo DB User: $DB_USERNAME; echo DB Pass: $DB_PASSWORD"]
    env:
    - name: DB_USERNAME
      valueFrom:
        secretKeyRef:
          name: db-credentials
          key: username
    - name: DB_PASSWORD
      valueFrom:
        secretKeyRef:
          name: db-credentials
          key: password
  restartPolicy: Never

Praktik Terbaik Keamanan

Ingat, penyandian base64 bukanlah enkripsi. Untuk enkripsi saat data tersimpan yang sebenarnya, Anda mungkin memerlukan backend Kubernetes Secrets (seperti Vault) atau memanfaatkan layanan KMS dari penyedia cloud.

  • RBAC: Kendalikan siapa yang dapat mengakses Secrets.
  • Hak Istimewa Minimum: Berikan Pod hanya akses ke Secrets yang dibutuhkannya.
  • File yang Dipasang: Lebih baik memasang Secrets sebagai file daripada sebagai variabel lingkungan.

Pemeriksaan Singkat Konfigurasi

Anda perlu menyimpan kunci API (sensitif) dan pengaturan tingkat pencatatan (non-sensitif) untuk aplikasi Anda di Kubernetes.

Objek Kubernetes apa yang harus digunakan untuk masing-masing data tersebut?

Ringkasan: ConfigMaps & Secrets

Bagus sekali! Anda telah mempelajari cara mengelola konfigurasi aplikasi dan data sensitif di Kubernetes.

  • ConfigMaps: Menyimpan pasangan kunci-nilai non-sensitif.
  • Secrets: Menyimpan data sensitif (disandikan dengan base64).
  • Keduanya dapat digunakan oleh Pod sebagai variabel lingkungan atau file yang dipasang.
  • Selalu ikuti praktik terbaik keamanan saat menangani informasi sensitif.

Selanjutnya, pelajari topik keamanan lanjutan seperti RBAC dan solusi pengelolaan secret eksternal.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “ConfigMaps & Secret” gratis?

Ya — teks lengkap “ConfigMaps & Secret” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus DevOps Bootcamp, upgrade ke CoddyKit PRO. Kursus DevOps Bootcamp mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “ConfigMaps & Secret”?

Kelola data konfigurasi dan informasi sensitif secara aman dalam deployment Kubernetes menggunakan ConfigMaps dan Secret. Kamu berlatih DevOps Bootcamp dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai DevOps Bootcamp?

Tidak diperlukan pengalaman sebelumnya. DevOps Bootcamp di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “ConfigMaps & Secret” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran DevOps Bootcamp ini?

Ya. Setiap pelajaran DevOps Bootcamp menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Deployment untuk Aplikasi Tanpa Status
  2. Service untuk Akses Jaringan
  3. ConfigMaps & Secret
  4. Ingress dan Perutean Eksternal
← Kembali ke DevOps Bootcamp