Penyedia Azure Key Vault untuk Driver Secrets Store CSI untuk konfigurasi dan opsi pemecahan masalah Azure Kubernetes Service (AKS)
Ikuti langkah-langkah dalam Menggunakan penyedia Azure Key Vault untuk Secrets Store CSI Driver di kluster AKS dan Berikan identitas untuk mengakses penyedia Azure Key Vault untuk Secrets Store CSI Driver di AKS. Setelah menyelesaikan langkah-langkah ini, Anda dapat menerapkan konfigurasi tambahan atau melakukan pemecahan masalah.
Opsi konfigurasi
Mengaktifkan dan menonaktifkan rotasi otomatis
Catatan
Ketika penyedia Azure Key Vault untuk Secrets Store CSI Driver diaktifkan, ia memperbarui pemasangan pod dan rahasia Kubernetes yang ditentukan di secretObjects
bidang SecretProviderClass
. Hal ini dilakukan dengan polling untuk perubahan secara berkala, berdasarkan interval polling rotasi yang Anda tentukan. Interval polling rotasi default adalah dua menit.
Catatan
Ketika rahasia diperbarui dalam penyimpanan rahasia eksternal setelah penyebaran pod awal, Rahasia Kubernetes dan pemasangan pod secara berkala diperbarui tergantung pada bagaimana aplikasi menggunakan data rahasia.
Pasang Rahasia Kubernetes sebagai volume: Gunakan fitur rotasi otomatis dan sinkronisasi rahasia K8s dari Secrets Store CSI Driver. Aplikasi perlu mengawasi perubahan dari volume Rahasia Kubernetes yang dipasang. Ketika Driver CSI memperbarui Rahasia Kubernetes, konten volume yang sesuai juga akan diperbarui secara otomatis.
Aplikasi membaca data dari sistem file kontainer: Gunakan fitur rotasi Driver Secrets Store CSI. Aplikasi perlu mengawasi perubahan file dari volume yang dipasang oleh driver CSI.
Gunakan Rahasia Kubernetes untuk variabel lingkungan: Mulai ulang pod untuk mendapatkan rahasia terbaru sebagai variabel lingkungan. Gunakan alat seperti Reloader untuk melihat perubahan pada Rahasia Kubernetes yang disinkronkan dan melakukan peningkatan bergulir pada pod.
Mengaktifkan rotasi otomatis pada kluster AKS baru
Aktifkan rotasi otomatis rahasia pada kluster baru menggunakan
az aks create
perintah dan aktifkanenable-secret-rotation
add-on.az aks create \ --name myAKSCluster2 \ --resource-group myResourceGroup \ --enable-addons azure-keyvault-secrets-provider \ --enable-secret-rotation \ --generate-ssh-keys
Mengaktifkan rotasi otomatis pada kluster AKS yang ada
Perbarui kluster yang ada untuk mengaktifkan rotasi otomatis rahasia menggunakan
az aks addon update
perintah danenable-secret-rotation
parameter .az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation
Tentukan interval rotasi kustom
Tentukan interval rotasi kustom menggunakan
az aks addon update
perintah denganrotation-poll-interval
parameter .az aks addon update --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider --enable-secret-rotation --rotation-poll-interval 5m
Menonaktifkan rotasi otomatis
Untuk menonaktifkan rotasi otomatis, Anda harus menonaktifkan add-on terlebih dahulu. Kemudian, Anda dapat mengaktifkan kembali add-on tanpa enable-secret-rotation
parameter .
Nonaktifkan add-on penyedia rahasia menggunakan
az aks addon disable
perintah .az aks addon disable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Aktifkan kembali add-on penyedia rahasia tanpa
enable-secret-rotation
parameter menggunakanaz aks addon enable
perintah .az aks addon enable --resource-group myResourceGroup --name myAKSCluster2 --addon azure-keyvault-secrets-provider
Jika Anda sudah menggunakan SecretProviderClass
, Anda dapat memperbarui add-on tanpa menonaktifkannya terlebih dahulu dengan menggunakan az aks addon enable
tanpa menentukan enable-secret-rotation
parameter.
Sinkronkan konten yang dipasang dengan rahasia Kube
Catatan
Contoh YAML di bagian ini tidak lengkap. Anda perlu memodifikasinya untuk mendukung metode akses yang Anda pilih ke identitas brankas kunci Anda. Untuk detailnya, lihat Memberikan identitas untuk mengakses penyedia Azure Key Vault untuk Secrets Store CSI Driver.
Anda mungkin ingin membuat rahasia Kubernetes untuk mencerminkan konten rahasia yang dipasang. Rahasia Anda disinkronkan setelah Anda memulai pod untuk memasangnya. Saat Anda menghapus pod yang menggunakan rahasia, rahasia Kubernetes Anda juga akan dihapus.
Sinkronkan konten yang dipasang dengan rahasia Kubernetes menggunakan
secretObjects
bidang saat membuatSecretProviderClass
untuk menentukan status rahasia Kubernetes yang diinginkan, seperti yang ditunjukkan pada contoh YAML berikut.apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: azure-sync spec: provider: azure secretObjects: # [OPTIONAL] SecretObjects defines the desired state of synced Kubernetes secret objects - data: - key: username # data field to populate objectName: foo1 # name of the mounted content to sync; this could be the object name or the object alias secretName: foosecret # name of the Kubernetes secret object type: Opaque # type of Kubernetes secret object (for example, Opaque, kubernetes.io/tls)
Catatan
Pastikan
objectName
disecretObjects
bidang cocok dengan nama file konten yang dipasang. Jika Anda menggunakanobjectAlias
sebagai gantinya, hal ini harus cocok dengan alias objek.
Mengatur variabel lingkungan untuk mereferensikan rahasia Kubernetes
Catatan
Contoh YAML menunjukkan akses ke rahasia melalui variabel env dan volume/volumeMount. Ini untuk tujuan ilustrasi. Aplikasi umum akan menggunakan satu metode atau yang lain. Namun, ketahuilah bahwa agar rahasia tersedia melalui variabel env, pertama-tama harus dipasang oleh setidaknya satu pod.
Referensikan rahasia Kubernetes yang baru dibuat dengan mengatur variabel lingkungan di pod Anda, seperti yang ditunjukkan pada contoh YAML berikut.
kind: Pod apiVersion: v1 metadata: name: busybox-secrets-store-inline spec: containers: - name: busybox image: registry.k8s.io/e2e-test-images/busybox:1.29-1 command: - "/bin/sleep" - "10000" volumeMounts: - name: secrets-store01-inline mountPath: "/mnt/secrets-store" readOnly: true env: - name: SECRET_USERNAME valueFrom: secretKeyRef: name: foosecret key: username volumes: - name: secrets-store01-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "azure-sync"
Mengakses metrik
Penyedia Azure Key Vault
Metrik disajikan melalui Prometheus dari port 8898, tetapi port ini tidak diekspos di luar pod secara default.
Akses metrik melalui localhost menggunakan
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-provider-azure 8898:8898 & curl localhost:8898/metrics
Metrik yang disediakan oleh penyedia Azure Key Vault untuk Secrets Store CSI Driver
Metrik | Deskripsi | Tag |
---|---|---|
keyvault_request | Distribusi berapa lama waktu yang dibutuhkan untuk mendapatkan dari brankas kunci. | os_type=<runtime os> , , provider=azure object_name=<keyvault object name> , , object_type=<keyvault object type> ,error=<error if failed> |
grpc_request | Distribusi berapa lama waktu yang dibutuhkan untuk permintaan gRPC. | os_type=<runtime os> , , provider=azure grpc_method=<rpc full method> , , grpc_code=<grpc status code> ,grpc_message=<grpc status message> |
Secrets Store CSI Driver
Metrik disajikan dari port 8095, tetapi port ini tidak diekspos di luar pod secara default.
Akses metrik melalui localhost menggunakan
kubectl port-forward
.kubectl port-forward -n kube-system ds/aks-secrets-store-csi-driver 8095:8095 & curl localhost:8095/metrics
Metrik yang disediakan oleh Driver Secrets Store CSI
Metrik | Deskripsi | Tag |
---|---|---|
total_node_publish | Jumlah total permintaan pemasangan volume yang berhasil. | os_type=<runtime os> , provider=<provider name> |
total_node_unpublish | Jumlah total permintaan unmount volume yang berhasil. | os_type=<runtime os> |
total_node_publish_error | Jumlah total kesalahan dengan permintaan pemasangan volume. | os_type=<runtime os> , , provider=<provider name> error_type=<error code> |
total_node_unpublish_error | Jumlah total kesalahan dengan permintaan melepas volume. | os_type=<runtime os> |
total_sync_k8s_secret | Jumlah total rahasia Kubernetes yang disinkronkan. | os_type=<runtime os , provider=<provider name> |
sync_k8s_secret_duration_sec | Distribusi berapa lama waktu yang dibutuhkan untuk menyinkronkan rahasia Kubernetes. | os_type=<runtime os> |
total_rotation_reconcile | Jumlah total rotasi rekonsiliasi. | os_type=<runtime os> , rotated=<true or false> |
total_rotation_reconcile_error | Jumlah total rotasi berdamai dengan kesalahan. | os_type=<runtime os> , , rotated=<true or false> error_type=<error code> |
total_rotation_reconcile_error | Distribusi berapa lama waktu yang dibutuhkan untuk memutar konten penyimpanan rahasia untuk pod. | os_type=<runtime os> |
Bermigrasi dari sumber terbuka ke Driver CSI Secrets Store yang dikelola AKS
Hapus instalan Driver CSI Secrets Store sumber terbuka menggunakan perintah berikut
helm delete
.helm delete <release name>
Catatan
Jika Anda menginstal driver dan penyedia menggunakan YAML penyebaran, Anda dapat menghapus komponen menggunakan perintah berikut
kubectl delete
.# Delete AKV provider pods from Linux nodes kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer.yaml # Delete AKV provider pods from Windows nodes kubectl delete -f https://raw.githubusercontent.com/Azure/secrets-store-csi-driver-provider-azure/master/deployment/provider-azure-installer-windows.yaml
Tingkatkan kluster AKS yang ada dengan fitur menggunakan
az aks enable-addons
perintah .az aks enable-addons --addons azure-keyvault-secrets-provider --name myAKSCluster --resource-group myResourceGroup
Pemecahan Masalah
Untuk langkah-langkah pemecahan masalah, lihat Memecahkan Masalah Penyedia Azure Key Vault untuk Driver Secrets Store CSI.
Langkah berikutnya
Untuk mempelajari selengkapnya tentang penyedia Azure Key Vault untuk Driver Secrets Store CSI, lihat sumber daya berikut ini:
Azure Kubernetes Service