全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan ConfigMaps

更新时间:Jan 13, 2026

Penerapan aplikasi enterprise memerlukan manajemen konfigurasi yang ekstensif. Menyematkan konfigurasi langsung ke dalam gambar aplikasi mengaitkan aplikasi tersebut dengan lingkungan tertentu, sehingga Anda harus membuat gambar baru untuk setiap lingkungan. ConfigMap Kubernetes mengatasi masalah ini dengan memisahkan konfigurasi dari kode aplikasi. ConfigMap memungkinkan Anda menyimpan data konfigurasi non-sensitif secara eksternal dan menyuntikkannya ke dalam pod pada waktu proses, sehingga gambar aplikasi yang sama dapat digunakan di berbagai lingkungan. Untuk data sensitif, gunakan Secrets.

Panduan pemilihan

  • Mount sebagai volume (Direkomendasikan): Metode ini mengekspos data konfigurasi sebagai file. Perubahan pada ConfigMap secara otomatis disinkronkan ke file yang dimount tanpa perlu me-restart pod. Gunakan metode ini untuk mengelola file konfigurasi lengkap dan skenario yang memerlukan pembaruan dinamis.

  • Suntikkan sebagai environment variables: Metode ini menyuntikkan konfigurasi langsung ke dalam kontainer sebagai environment variables. Gunakan metode ini untuk parameter pasangan kunci-nilai sederhana, seperti argumen waktu proses atau fitur flags.

Buat item konfigurasi

Bagian ini menjelaskan cara membuat ConfigMap untuk deployment Nginx.

Konsol

  1. Login ke Container Service for Kubernetes (ACK) console. Di panel navigasi sebelah kiri, klik Clusters.Klik nama kluster target. Di panel navigasi sebelah kiri, pilih Configuration > ConfigMaps.

  2. Buat item konfigurasi contoh: atur Namespace ke default, lalu klik Create.

  3. Masukkan nama untuk ConfigMap, lalu klik + Add, masukkan Name dan Value untuk item konfigurasi, kemudian klik OK.

    • ConfigMap Name: app-config

    • Tambahkan item konfigurasi dengan memasukkan nama dan nilai. Anda juga dapat mengklik Import from File untuk membuat ConfigMap dari file JSON.

      nginx.conf:

      server {
          listen 80;
          location / {
              root /usr/share/nginx/html;
              index index.html;
          }
          location /health {
              return 200 "healthy\n";
              add_header Content-Type text/plain;
          }
      }

kubectl

  1. Hubungkan ke kluster ACK menggunakan kubectl.

  2. Buat ConfigMap.

    kubectl create configmap app-config \
      --namespace=default \
      --from-literal=nginx.conf="$(cat <<'EOF'
    server {
        listen 80;
        location / {
            root /usr/share/nginx/html;
            index index.html;
        }
        location /health {
            return 200 "healthy\n";
            add_header Content-Type text/plain;
        }
    }
    EOF
    )" 
  3. Periksa ConfigMap. Output DATA: 1 menunjukkan bahwa item konfigurasi telah dibuat.

    kubectl get configmap app-config

Gunakan ConfigMap dalam pod

Workload dan ConfigMap yang digunakannya harus berada dalam kluster dan namespace yang sama.

Metode 1: Pemasangan volume

Konfigurasi Konsol

  1. Login ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.Klik nama kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Deployments.

  2. Buat deployment.

    1. Pada halaman Stateless, klik Create From Image.

    2. Pada halaman Basic Information, konfigurasikan informasi dasar untuk aplikasi.

      • Name: nginx-volume-demo. Namespace: default.

      • Replicas: 2. Type: Stateless (Deployment).

      Klik Next untuk melanjutkan ke halaman Container Configuration.

    3. Konfigurasikan Image Name dan Port.

      • Image Name: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

      • Container Port: 80, Protocol: TCP.

      Penting

      Sebelum Anda dapat menarik gambar ini, kluster harus memiliki akses jaringan publik. Jika Anda memilih Configure SNAT for VPC saat membuat kluster—yang diaktifkan secara default—tidak diperlukan konfigurasi tambahan. Jika tidak, untuk informasi lebih lanjut, lihat Enable an ACK cluster to access the internet.

    4. Di bagian Volumes, klik Add Local Storage untuk menambahkan mount untuk ConfigMap.Setelah mengonfigurasi informasi, klik Next.

      • PV Type: ConfigMap. Name: nginx-config. Mount Source: app-config. Container Path: /etc/nginx/conf.d.

    5. Pada halaman Advanced Configuration, konfigurasikan scaling, penjadwalan, serta label dan anotasi sesuai kebutuhan, lalu klik Create.

    6. Pada halaman Creation Complete, lihat tugas aplikasi.

      Di panel Application Creation Task Submitted, klik View Application Details dan pastikan status aplikasi terkontainerisasi adalah Running.

  3. Verifikasi bahwa file ConfigMap telah di-mount.

    Pilih kontainer yang ingin Anda login, misalnya nginx-volume-demo-7xxxxxx****. Di kolom Actions, klik Terminal dan pilih nginx untuk login ke kontainer.

    1. Output berisi file nginx.conf. Hal ini menunjukkan bahwa ConfigMap telah dimount.

      ls -la /etc/nginx/conf.d/
    2. Verifikasi isi file.

      cat /etc/nginx/conf.d/nginx.conf

      Outputnya sama dengan isi item konfigurasi. Hal ini menunjukkan bahwa aplikasi dapat mengakses data ConfigMap dengan memount ConfigMap sebagai volume.

Konfigurasi kubectl

  1. Buat file bernama nginx-volume-demo.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-volume-demo
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-volume
      template:
        metadata:
          labels:
            app: nginx-volume
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
            - name: nginx-config
              mountPath: /etc/nginx/conf.d
          volumes:
          - name: nginx-config
            configMap:
              name: app-config
              items:
              - key: nginx.conf
                path: nginx.conf
  2. Buat deployment.

    kubectl apply -f  nginx-volume-demo.yaml
  3. Periksa deployment. Jika status pod adalah Running, aplikasi telah dibuat.

    kubectl get pods -l app=nginx-volume -n default
  4. Output berisi file nginx.conf. Hal ini menunjukkan bahwa ConfigMap telah dimount.

    kubectl exec deployment/nginx-volume-demo -n default -- ls -la /etc/nginx/conf.d/
  5. Verifikasi isi file.

    kubectl exec deployment/nginx-volume-demo -n default -- cat /etc/nginx/conf.d/nginx.conf

    Outputnya sama dengan isi item konfigurasi. Hal ini menunjukkan bahwa aplikasi dapat mengakses data ConfigMap dengan memount ConfigMap sebagai volume.

Metode 2: Penyuntikan Environment Variable

Konfigurasi Konsol

  1. Login ke ACK console. Di panel navigasi sebelah kiri, klik Clusters.Klik nama kluster target. Di panel navigasi sebelah kiri, pilih Workloads > Deployments.

  2. Buat deployment.

    1. Pada halaman Stateless, klik Create From Image.

    2. Pada halaman Basic Information, konfigurasikan informasi dasar untuk aplikasi.

      • Application Name: nginx-env-demo. Namespace: default.

      • Replicas: 2. Type: Stateless (Deployment).

      Klik Next untuk melanjutkan ke halaman Container Configuration.

    3. Konfigurasikan Image Name dan Port.

      • Image Name: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

      • Container Port: 80, Protocol: TCP.

      Penting

      Sebelum Anda dapat menarik gambar ini, kluster harus memiliki akses jaringan publik. Jika Anda memilih Configure SNAT for VPC saat membuat kluster—yang diaktifkan secara default—tidak diperlukan konfigurasi tambahan. Jika tidak, untuk informasi lebih lanjut, lihat Enable an ACK cluster to access the internet.

    4. Di bagian Environment Variables, klik Add.Setelah mengonfigurasi informasi, klik Next.

      • Type: configuration item, Name: CONFIG_, Variable/Variable reference: app-config.

    5. Pada halaman Advanced Configuration, konfigurasikan scaling, penjadwalan, serta label dan anotasi sesuai kebutuhan, lalu klik Create.

    6. Pada halaman Creation Complete, lihat tugas aplikasi.

      Di panel Application Creation Task Submitted, klik View Application Details dan pastikan status kontainer adalah Running.

  3. Verifikasi bahwa environment variables telah disuntikkan.

    Pilih kontainer yang ingin Anda login, misalnya nginx-env-demo-7xxxxxx****. Di kolom Actions, klik Terminal dan pilih nginx untuk login ke dalamnya.

    env | grep CONFIG_

    Outputnya sama dengan isi item konfigurasi. Hal ini menunjukkan bahwa aplikasi dapat mengakses data ConfigMap melalui environment variables.

Konfigurasi kubectl

  1. Buat file bernama nginx-env-demo.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nginx-env-demo
      namespace: default
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx-env
      template:
        metadata:
          labels:
            app: nginx-env
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            # Suntikkan semua pasangan kunci-nilai dari ConfigMap.
            envFrom:
            - prefix: CONFIG_
              configMapRef:
                name: app-config
    
  2. Buat deployment.

    kubectl apply -f nginx-env-demo.yaml
  3. Periksa deployment. Jika status pod adalah Running, aplikasi telah dibuat.

    kubectl get pods -l app=nginx-env -n default
  4. Verifikasi bahwa variabel lingkungan telah di-inject.

    kubectl exec deployment/nginx-env-demo -n default -- env | grep CONFIG_

    Outputnya sama dengan isi item konfigurasi. Hal ini menegaskan bahwa aplikasi dapat mengakses data ConfigMap melalui environment variables.

Mengelola ConfigMap

Setelah membuat item konfigurasi, Anda dapat melakukan operasi berikut di halaman Configuration Item:

Operasi

Deskripsi

Edit ConfigMap

Di kolom Actions ConfigMap target, klik Edit. Anda dapat mengubah Name dan Value dari item konfigurasi.

Penting

Memodifikasi ConfigMap yang sedang digunakan secara langsung memengaruhi aplikasi terkait, yang dapat menyebabkan restart layanan atau error. Evaluasi dampaknya sebelum melakukan perubahan, dan lakukan operasi tersebut pada jam sepi.

Delete a configuration item

Di kolom Actions ConfigMap target, klik Delete untuk menghapus ConfigMap yang tidak lagi digunakan.

Penting

Jangan menghapus ConfigMap yang dihasilkan sistem di namespace kube-system dan kube-public, seperti konfigurasi CoreDNS. Menghapusnya dapat memengaruhi stabilitas kluster.

Referensi

  • Untuk informasi lebih lanjut tentang proses diagnosis, metode troubleshooting, masalah umum, dan solusi untuk exception pod, lihat Troubleshoot pod exceptions.

  • Untuk informasi lebih lanjut tentang cara membuat aplikasi tanpa status di kluster ACK menggunakan konsol dan kubectl, lihat Create a stateless Deployment.

  • Untuk informasi lebih lanjut, lihat dokumentasi Kubernetes tentang ConfigMaps.