Bagikan melalui


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 aktifkan enable-secret-rotation add-on.

    az aks create --name myAKSCluster2 --resource-group myResourceGroup --enable-addons azure-keyvault-secrets-provider --enable-secret-rotation
    

Mengaktifkan rotasi otomatis pada kluster AKS yang ada

  • Perbarui kluster yang ada untuk mengaktifkan rotasi otomatis rahasia menggunakan az aks addon update perintah dan enable-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 dengan rotation-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 .

  1. 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
    
  2. Aktifkan kembali add-on penyedia rahasia tanpa enable-secret-rotation parameter menggunakan az 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 membuat SecretProviderClass 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 di secretObjects bidang cocok dengan nama file konten yang dipasang. Jika Anda menggunakan objectAlias 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=azureobject_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=azuregrpc_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

  1. 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
    
  2. 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: