Bagikan melalui


Integrasikan dengan Penyebaran Kubernetes menggunakan Helm

Aplikasi yang dihosting di Kubernetes dapat mengakses data di App Configuration menggunakan pustaka penyedia App Configuration. Penyedia App Configuration memiliki kemampuan penembolokan dan refresh bawaan sehingga aplikasi dapat memiliki konfigurasi dinamis tanpa penyebaran ulang. Jika Anda memilih untuk tidak memperbarui aplikasi Anda, tutorial ini menunjukkan cara membawa data dari App Configuration ke Kubernetes menggunakan Helm melalui penyebaran. Dengan cara ini, aplikasi Anda dapat terus mengakses konfigurasi dari variabel dan rahasia Kubernetes. Anda menjalankan peningkatan Helm ketika Anda ingin aplikasi Anda mengambil perubahan konfigurasi baru.

Petunjuk / Saran

Lihat opsi untuk beban kerja yang dihosting di Kubernetes untuk mengakses Azure App Configuration.

Helm menyediakan cara untuk mendefinisikan, menginstal, dan memutakhirkan aplikasi yang berjalan di Kubernetes. Bagan Helm berisi informasi yang diperlukan untuk membuat instance aplikasi Kubernetes. Konfigurasi disimpan di luar bagan itu sendiri, dalam file yang disebut values.yaml.

Selama proses rilis, Helm menggabungkan bagan dengan konfigurasi yang tepat untuk menjalankan aplikasi. Misalnya, variabel yang didefinisikan dalam values.yaml dapat direferensikan sebagai variabel lingkungan di dalam kontainer yang sedang berjalan. Helm juga mendukung pembuatan Kubernetes Secrets, yang dapat dipasang sebagai volume data atau diekspos sebagai variabel lingkungan.

Anda dapat mengganti nilai yang disimpan dalam values.yaml dengan menyediakan file konfigurasi berbasis YAML tambahan pada baris perintah saat menjalankan Helm. Azure App Configuration mendukung pengekspor nilai konfigurasi ke file YAML. Mengintegrasikan kemampuan ekspor ini ke dalam deployment memungkinkan aplikasi Kubernetes untuk memanfaatkan nilai konfigurasi yang tersimpan dalam Azure App Configuration.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Gunakan nilai dari Azure App Configuration saat menyebarkan aplikasi ke Kubernetes menggunakan Helm.
  • Buat Kubernetes Secret berdasarkan referensi Key Vault dalam Azure App Configuration.

Tutorial ini mengasumsikan pemahaman dasar mengelola Kubernetes dengan Helm. Pelajari lebih lanjut cara memasang aplikasi dengan Helm di Azure Kubernetes Service (AKS).

Prasyarat

Menambahkan nilai kunci

Tambahkan nilai kunci berikut ke penyimpanan App Configuration dan biarkan Label dan Tipe Konten dengan nilai defaultnya. Untuk informasi selengkapnya tentang cara menambahkan nilai kunci ke penyimpanan menggunakan portal Azure atau CLI, buka Membuat nilai kunci.

Tombol Nilai
settings.color Putih
settings.message Data dari Azure App Configuration

Menambahkan referensi Key Vault ke Azure App Configuration

  1. Masuk ke portal Microsoft Azure dan tambahkan rahasia ke Key Vault dengan nama Kata Sandi dan nilai myPassword.

  2. Pilih instans simpan Azure App Configuration yang Anda buat di bagian sebelumnya.

  3. Pilih Penjelajah Konfigurasi.

  4. Pilih + Buat>Referensi brankas kunci, lalu tentukan nilai berikut:

    • Kunci: Pilih secrets.password.
    • Label: Biarkan nilai ini kosong.
    • Langganan, Grup sumber daya, dan Key vault: Masukkan nilai yang terkait dengan nilai yang ada di kubah kunci yang Anda buat di langkah sebelumnya.
    • Rahasia: Pilih rahasia bernama Kata Sandi yang Anda buat di bagian sebelumnya.

Membuat bagan Helm

Pertama, buat sampel bagan Helm dengan perintah berikut:

helm create mychart

Helm membuat direktori baru yang disebut mychart dengan struktur yang ditunjukkan di bawah ini.

Petunjuk / Saran

Ikuti panduan bagan ini untuk mempelajari selengkapnya.

mychart
|-- Chart.yaml
|-- charts
|-- templates
|   |-- NOTES.txt
|   |-- _helpers.tpl
|   |-- deployment.yaml
|   |-- ingress.yaml
|   `-- service.yaml
`-- values.yaml

Selanjutnya, perbarui bagian spec:template:spec:containers dari file deployment.yaml. Cuplikan berikut menambahkan dua variabel lingkungan ke dalam kontainer. Anda akan menetapkan nilainya secara dinamis pada waktu penyebaran.

env:
- name: Color
    value: {{ .Values.settings.color }}
- name: Message
    value: {{ .Values.settings.message }}

File deployment.yaml lengkap setelah pembaruan akan terlihat seperti di bawah ini.

apiVersion: apps/v1beta2
kind: Deployment
metadata:
  name: {{ include "mychart.fullname" . }}
  labels:
    app.kubernetes.io/name: {{ include "mychart.name" . }}
    helm.sh/chart: {{ include "mychart.chart" . }}
    app.kubernetes.io/instance: {{ .Release.Name }}
    app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
  replicas: {{ .Values.replicaCount }}
  selector:
    matchLabels:
      app.kubernetes.io/name: {{ include "mychart.name" . }}
      app.kubernetes.io/instance: {{ .Release.Name }}
  template:
    metadata:
      labels:
        app.kubernetes.io/name: {{ include "mychart.name" . }}
        app.kubernetes.io/instance: {{ .Release.Name }}
    spec:
      containers:
        - name: {{ .Chart.Name }}
          image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
          imagePullPolicy: {{ .Values.image.pullPolicy }}
          env:
            - name: Color
              value: {{ .Values.settings.color }}
            - name: Message
              value: {{ .Values.settings.message }}
          ports:
            - name: http
              containerPort: 80
              protocol: TCP
          livenessProbe:
            httpGet:
              path: /
              port: http
          readinessProbe:
            httpGet:
              path: /
              port: http
          resources:
{{ toYaml .Values.resources | indent 12 }}
    {{- with .Values.nodeSelector }}
      nodeSelector:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.affinity }}
      affinity:
{{ toYaml . | indent 8 }}
    {{- end }}
    {{- with .Values.tolerations }}
      tolerations:
{{ toYaml . | indent 8 }}
    {{- end }}

Untuk menyimpan data sensitif sebagai Kubernetes Secrets, tambahkan file secrets.yaml di bawah folder template.

Petunjuk / Saran

Pelajari lebih lanjut cara menggunakan Kubernetes Secrets.

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  password: {{ .Values.secrets.password | b64enc }}

Terakhir, perbarui file values.yaml dengan konten berikut untuk secara opsional memberikan nilai default dari pengaturan konfigurasi dan rahasia yang dirujuk dalam file deployment.yamldan secrets.yaml. Nilai aktual mereka akan ditimpa oleh konfigurasi yang diambil dari Azure App Configuration.

# settings will be overwritten by App Configuration
settings:
  color: red
  message: myMessage

Lewati konfigurasi dari Azure App Configuration di pemasangan Helm

Pertama, unduh konfigurasi dari Azure App Configuration ke file myConfig.yaml. Gunakan filter kunci untuk hanya mengunduh kunci-kunci yang dimulai dengan pengaturan.. Jika dalam kasus Anda filter kunci tidak cukup untuk mengecualikan kunci referensi Key Vault, Anda dapat menggunakan argumen --skip-keyvault untuk mengecualikannya.

Petunjuk / Saran

Pelajari selengkapnya tentang perintah ekspor.

az appconfig kv export -n myAppConfiguration -d file --path myConfig.yaml --key "settings.*"  --separator "." --format yaml

Selanjutnya, unduh rahasia ke file yang disebut mySecrets.yaml. Argumen baris perintah --resolve-keyvault menyelesaikan referensi Key Vault dengan mengambil nilai aktual di Key Vault. Anda harus menjalankan perintah ini dengan kredensial yang memiliki izin akses ke Key Vault yang sesuai.

Peringatan

Karena file ini berisi informasi sensitif, jaga agar file tetap berhati-hati dan bersihkan ketika tidak diperlukan lagi.

az appconfig kv export -n myAppConfiguration -d file --path mySecrets.yaml --key "secrets.*" --separator "." --resolve-keyvault --format yaml

Gunakan argumen -f peningkatan helm untuk meneruskan dua file konfigurasi yang telah Anda buat. Nilai tersebut akan menggantikan nilai konfigurasi yang ditentukan dalam values.yaml dengan nilai yang diekspor dari Azure App Configuration.

helm upgrade --install -f myConfig.yaml -f mySecrets.yaml "example" ./mychart

Anda juga dapat menggunakan argumen --set untuk peningkatan helm untuk meneruskan nilai kunci harfiah. Menggunakan argumen --set adalah cara yang baik untuk menghindari data sensitif yang bertahan ke disk.

$secrets = az appconfig kv list -n myAppConfiguration --key "secrets.*" --resolve-keyvault --query "[*].{name:key, value:value}" | ConvertFrom-Json

foreach ($secret in $secrets) {
  $keyvalues += $secret.name + "=" + $secret.value + ","
}

if ($keyvalues){
  $keyvalues = $keyvalues.TrimEnd(',')
  helm upgrade --install --set $keyvalues "example" ./mychart
}
else{
  helm upgrade --install "example" ./mychart
}

Pastikan konfigurasi dan rahasia berhasil disetel dengan mengakses Dasbor Kubernetes. Anda akan melihat bahwa nilai warna dan pesan dari Azure App Configuration diisi ke dalam variabel lingkungan kontainer.

Peluncuran aplikasi mulai cepat lokal

Satu rahasia, kata sandi, disimpan sebagai referensi Key Vault dalam Azure App Configuration juga ditambahkan ke dalam Kubernetes Secrets.

Cuplikan layar yang menyoroti kata sandi di bagian Data.

Membersihkan sumber daya

Jika Anda tidak ingin terus menggunakan sumber daya yang dibuat dalam artikel ini, hapus grup sumber daya yang Anda buat di sini untuk menghindari biaya.

Penting

Penghapusan grup sumber daya tidak bisa dipulihkan. Grup sumber daya dan semua sumber daya yang ada di dalamnya akan dihapus secara permanen. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat sumber daya untuk artikel ini dalam grup sumber daya yang ada yang berisi sumber daya lain yang ingin disimpan, hapus setiap sumber daya satu per satu dari panelnya masing-masing, bukan menghapus grup sumber daya.

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.
  2. Dalam kotak Filter menurut nama, masukkan nama grup sumber daya Anda.
  3. Dalam daftar hasil, pilih nama grup sumber daya untuk melihat gambaran umum.
  4. Pilih Hapus grup sumber daya.
  5. Anda akan diminta untuk mengonfirmasi penghapusan grup sumber daya. Masukkan nama grup sumber daya Anda untuk mengonfirmasi, dan pilih Hapus.

Setelah beberapa saat, grup sumber daya dan semua sumber dayanya akan dihapus.

Langkah berikutnya

Dalam tutorial ini, Anda mengekspor data Azure App Configuration yang akan digunakan dalam penyebaran Kubernetes dengan Helm. Untuk mempelajari selengkapnya tentang cara menggunakan App Configuration, lanjutkan ke sampel Azure CLI.