Gunakan ekstensi Secret Store untuk mengambil rahasia untuk akses offline di kluster Kubernetes dengan dukungan Azure Arc
Ekstensi Azure Key Vault Secret Store untuk Kubernetes ("SSE") secara otomatis menyinkronkan rahasia dari Azure Key Vault ke kluster Kubernetes dengan dukungan Azure Arc untuk akses offline. Ini berarti Anda dapat menggunakan Azure Key Vault untuk menyimpan, memelihara, dan memutar rahasia Anda, bahkan saat menjalankan kluster Kubernetes dalam keadaan semi-terputus. Rahasia yang disinkronkan disimpan di penyimpanan rahasia kluster, membuatnya tersedia sebagai rahasia Kubernetes untuk digunakan dengan semua cara yang biasa: dipasang sebagai volume data, atau diekspos sebagai variabel lingkungan ke kontainer dalam pod.
Rahasia yang disinkronkan adalah aset bisnis penting, sehingga SSE mengamankannya melalui namespace dan simpul yang terisolasi, kebijakan kontrol akses berbasis peran (RBAC), dan izin terbatas untuk penyinkron rahasia. Untuk perlindungan ekstra, enkripsi penyimpanan rahasia Kubernetes di kluster Anda.
Tip
SSE direkomendasikan untuk skenario di mana akses offline diperlukan, atau jika Anda memerlukan rahasia yang disinkronkan ke penyimpanan rahasia Kubernetes. Jika tidak memerlukan fitur ini, Anda dapat menggunakan ekstensi Penyedia Rahasia Azure Key Vault untuk manajemen rahasia di kluster Kubernetes dengan dukungan Arc. Tidak disarankan untuk menjalankan ekstensi Penyedia Rahasia Azure Key Vault online dan SSE offline secara berdampingan dalam kluster.
Artikel ini menunjukkan kepada Anda cara menginstal dan mengonfigurasi SSE sebagai ekstensi Kubernetes dengan dukungan Azure Arc.
Penting
SSE saat ini dalam PRATINJAU. Lihat Ketentuan Penggunaan Tambahan untuk Pratinjau Microsoft Azure untuk persyaratan hukum yang berlaku pada fitur Azure dalam versi beta, pratinjau, atau belum dirilis secara umum.
Prasyarat
- Kluster dengan dukungan Arc. Ini bisa menjadi salah satu yang Anda sambungkan ke diri Anda sendiri (contoh di seluruh panduan ini menggunakan kluster K3s ) atau AKS yang dikelola Microsoft yang diaktifkan oleh kluster Azure Arc . Kluster harus menjalankan Kubernetes versi 1.27 atau yang lebih tinggi, dan di salah satu wilayah yang didukung (US Timur, US Timur2, US Barat, US2 Barat, US3 Barat, Eropa Barat, Eropa Utara). Wilayah ini ditentukan oleh wilayah grup sumber daya yang digunakan untuk membuat kluster Arc.
- Pastikan Anda memenuhi prasyarat umum untuk ekstensi kluster, termasuk versi
k8s-extension
terbaru ekstensi Azure CLI. - cert-manager diperlukan untuk mendukung TLS untuk komunikasi log intrakluster. Contohnya nanti dalam panduan ini mengarahkan Anda melalui penginstalan. Untuk informasi selengkapnya tentang cert-manager, lihat cert-manager.io
Instal Azure CLI dan masuk, jika Anda belum:
az login
Sebelum memulai, atur variabel lingkungan yang akan digunakan untuk mengonfigurasi sumber daya Azure dan kluster. Jika Anda sudah memiliki identitas terkelola, Azure Key Vault, atau sumber daya lain yang tercantum di sini, perbarui nama dalam variabel lingkungan untuk mencerminkan sumber daya tersebut.
export RESOURCE_GROUP="AzureArcTest"
export CLUSTER_NAME="AzureArcTest1"
export LOCATION="EastUS"
export SUBSCRIPTION="$(az account show --query id --output tsv)"
az account set --subscription "${SUBSCRIPTION}"
export AZURE_TENANT_ID="$(az account show -s $SUBSCRIPTION --query tenantId --output tsv)"
export CURRENT_USER="$(az ad signed-in-user show --query userPrincipalName --output tsv)"
export KEYVAULT_NAME="my-kv"
export KEYVAULT_SECRET_NAME="my-secret"
export USER_ASSIGNED_IDENTITY_NAME="my-identity"
export FEDERATED_IDENTITY_CREDENTIAL_NAME="my-credential"
export KUBERNETES_NAMESPACE="my-namespace"
export SERVICE_ACCOUNT_NAME="my-service-account"
Mengaktifkan federasi identitas beban kerja di kluster Anda
SSE menggunakan fitur yang disebut federasi identitas beban kerja untuk mengakses dan menyinkronkan rahasia Azure Key Vault. Bagian ini menjelaskan cara menyiapkannya. Bagian berikut akan menjelaskan cara penggunaannya secara rinci.
Tip
Langkah-langkah berikut didasarkan pada panduan Cara mengonfigurasi Kubernetes dengan dukungan Arc dengan federasi identitas beban kerja. Lihat dokumentasi tersebut untuk bantuan tambahan apa pun.
Jika kluster Anda belum tersambung ke Azure Arc, ikuti langkah-langkah berikut. Selama langkah-langkah ini, aktifkan federasi identitas beban kerja sebagai bagian connect
dari perintah:
az connectedk8s connect --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --enable-oidc-issuer
Jika kluster Anda sudah tersambung ke Azure Arc, aktifkan identitas beban kerja menggunakan update
perintah :
az connectedk8s update --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --enable-oidc-issuer
Sekarang konfigurasikan kluster Anda untuk mengeluarkan token Akun Layanan dengan URL penerbit baru (service-account-issuer
) yang memungkinkan MICROSOFT Entra ID menemukan kunci publik yang diperlukan agar dapat memvalidasi token ini. Kunci publik ini adalah untuk penerbit token akun layanan kluster sendiri, dan mereka diperoleh dan dihosting cloud di URL ini sebagai hasil dari --enable-oidc-issuer
opsi yang Anda tetapkan di atas.
Secara opsional, Anda juga dapat mengonfigurasi batasan pada izin SSE sendiri sebagai sumber daya istimewa yang berjalan di sarana kontrol dengan mengonfigurasi OwnerReferencesPermissionEnforcement
pengontrol penerimaan. Pengontrol penerimaan ini membatasi berapa banyak SSE yang dapat mengubah objek lain dalam kluster.
Konfigurasikan kube-apiserver Anda dengan bidang URL penerbit dan penerapan izin. Contoh berikut adalah untuk kluster k3s. Kluster Anda mungkin memiliki cara yang berbeda untuk mengubah argumen server API:
--kube-apiserver-arg="--service-account-issuer=${SERVICE_ACCOUNT_ISSUER}" and --kube-apiserver-arg="--enable-admission-plugins=OwnerReferencesPermissionEnforcement"
.Dapatkan URL penerbit akun layanan.
export SERVICE_ACCOUNT_ISSUER="$(az connectedk8s show --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --query "oidcIssuerProfile.issuerUrl" --output tsv)" echo $SERVICE_ACCOUNT_ISSUER
Buka file konfigurasi server K3s.
sudo nano /etc/systemd/system/k3s.service
Edit konfigurasi server agar terlihat seperti contoh berikut, mengganti <SERVICE_ACCOUNT_ISSUER> dengan output di atas dari
echo $SERVICE_ACCOUNT_ISSUER
, ingatlah untuk menyertakan garis miring berikutnya dari URL ini:ExecStart=/usr/local/bin/k3s \ server --write-kubeconfig-mode=644 \ --kube-apiserver-arg="--service-account-issuer=<SERVICE_ACCOUNT_ISSUER>" \ --kube-apiserver-arg="--enable-admission-plugins=OwnerReferencesPermissionEnforcement"
Mulai ulang kube-apiserver Anda.
sudo systemctl daemon-reload sudo systemctl restart k3s
Membuat rahasia dan mengonfigurasi identitas untuk mengaksesnya
Untuk mengakses dan menyinkronkan rahasia Azure Key Vault tertentu, SSE memerlukan akses ke identitas terkelola Azure dengan izin Azure yang sesuai untuk mengakses rahasia tersebut. Identitas terkelola harus ditautkan ke akun layanan Kubernetes menggunakan fitur identitas beban kerja yang Anda aktifkan di atas. SSE menggunakan identitas terkelola Azure federasi terkait untuk menarik rahasia dari Azure Key Vault ke penyimpanan rahasia Kubernetes Anda. Bagian berikut ini menjelaskan cara menyiapkannya.
Membuat Azure Key Vault
Buat Azure Key Vault dan tambahkan rahasia. Jika Anda sudah memiliki Azure Key Vault dan rahasia, Anda dapat melewati bagian ini.
Buat Azure Key Vault:
az keyvault create --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --name "${KEYVAULT_NAME}" --enable-rbac-authorization
Beri diri Anda izin 'Secrets Officer' di vault, sehingga Anda dapat membuat rahasia:
az role assignment create --role "Key Vault Secrets Officer" --assignee ${CURRENT_USER} --scope /subscriptions/${SUBSCRIPTION}/resourcegroups/${RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/${KEYVAULT_NAME}
Buat rahasia dan perbarui sehingga Anda memiliki dua versi:
az keyvault secret set --vault-name "${KEYVAULT_NAME}" --name "${KEYVAULT_SECRET_NAME}" --value 'Hello!' az keyvault secret set --vault-name "${KEYVAULT_NAME}" --name "${KEYVAULT_SECRET_NAME}" --value 'Hello2'
Membuat identitas terkelola yang ditetapkan pengguna
Selanjutnya, buat identitas terkelola yang ditetapkan pengguna dan beri izin untuk mengakses Azure Key Vault. Jika Anda sudah memiliki identitas terkelola dengan izin Pembaca Key Vault dan Pengguna Rahasia Key Vault ke Azure Key Vault, Anda dapat melewati bagian ini. Untuk informasi selengkapnya, lihat Membuat identitas terkelola yang ditetapkan pengguna dan Menggunakan izin rahasia, kunci, dan sertifikat Azure RBAC dengan Key Vault.
Buat identitas terkelola yang ditetapkan pengguna:
az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --subscription "${SUBSCRIPTION}"
Berikan identitas Pembaca Key Vault dan Izin Pengguna Rahasia Key Vault. Anda mungkin perlu menunggu sejenak untuk replikasi pembuatan identitas sebelum perintah ini berhasil:
export USER_ASSIGNED_CLIENT_ID="$(az identity show --resource-group "${RESOURCE_GROUP}" --name "${USER_ASSIGNED_IDENTITY_NAME}" --query 'clientId' -otsv)" az role assignment create --role "Key Vault Reader" --assignee "${USER_ASSIGNED_CLIENT_ID}" --scope /subscriptions/${SUBSCRIPTION}/resourcegroups/${RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/${KEYVAULT_NAME} az role assignment create --role "Key Vault Secrets User" --assignee "${USER_ASSIGNED_CLIENT_ID}" --scope /subscriptions/${SUBSCRIPTION}/resourcegroups/${RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/${KEYVAULT_NAME}
Membuat kredensial identitas gabungan
Buat akun layanan Kubernetes untuk beban kerja yang membutuhkan akses ke rahasia. Kemudian, buat kredensial identitas federasi untuk menautkan antara identitas terkelola, penerbit akun layanan OIDC, dan Akun Layanan Kubernetes.
Buat Akun Layanan Kubernetes yang akan digabungkan ke identitas terkelola. Buat anotasi dengan detail identitas terkelola terkait yang ditetapkan pengguna.
kubectl create ns ${KUBERNETES_NAMESPACE}
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: ${SERVICE_ACCOUNT_NAME} namespace: ${KUBERNETES_NAMESPACE} EOF
Buat kredensial identitas gabungan:
az identity federated-credential create --name ${FEDERATED_IDENTITY_CREDENTIAL_NAME} --identity-name ${USER_ASSIGNED_IDENTITY_NAME} --resource-group ${RESOURCE_GROUP} --issuer ${SERVICE_ACCOUNT_ISSUER} --subject system:serviceaccount:${KUBERNETES_NAMESPACE}:${SERVICE_ACCOUNT_NAME}
Menginstal SSE
SSE tersedia sebagai ekstensi Azure Arc. Kluster Kubernetes dengan dukungan Azure Arc dapat diperluas dengan ekstensi Kubernetes dengan dukungan Azure Arc. Ekstensi memungkinkan kemampuan Azure pada kluster terhubung Anda dan memberikan pengalaman berbasis Azure Resource Manager untuk penginstalan ekstensi dan manajemen siklus hidup.
cert-manager dan trust-manager juga diperlukan untuk komunikasi log yang aman antara layanan kluster dan harus diinstal sebelum ekstensi Arc.
Pasang cert-manager.
helm repo add jetstack https://charts.jetstack.io/ --force-update helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.16.2 --set crds.enabled=true
Instal trust-manager.
helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --wait
Instal SSE ke kluster berkemampuan Arc Anda menggunakan perintah berikut:
az k8s-extension create \ --cluster-name ${CLUSTER_NAME} \ --cluster-type connectedClusters \ --extension-type microsoft.azure.secretstore \ --resource-group ${RESOURCE_GROUP} \ --release-train preview \ --name ssarcextension \ --scope cluster
Jika diinginkan, Anda dapat secara opsional memodifikasi interval polling
--configuration-settings rotationPollIntervalInSeconds=<time_in_seconds>
rotasi default dengan menambahkan :Nama Parameter Deskripsi Nilai default rotationPollIntervalInSeconds
Menentukan seberapa cepat SSE memeriksa atau memperbarui rahasia yang mengelolanya. 3600
(1 jam)
Mengonfigurasi SSE
Konfigurasikan ekstensi yang diinstal dengan informasi tentang Azure Key Vault dan rahasia mana yang akan disinkronkan ke kluster Anda dengan menentukan instans sumber daya kustom Kubernetes. Anda membuat dua jenis sumber daya kustom:
- Objek
SecretProviderClass
untuk menentukan koneksi ke Key Vault. - Objek
SecretSync
untuk setiap rahasia yang akan disinkronkan.
Membuat SecretProviderClass
sumber daya
Sumber SecretProviderClass
daya digunakan untuk menentukan koneksi ke Azure Key Vault, identitas yang digunakan untuk mengakses vault, rahasia mana yang akan disinkronkan, dan jumlah versi setiap rahasia untuk dipertahankan secara lokal.
Anda memerlukan terpisah SecretProviderClass
untuk setiap Azure Key Vault yang ingin Anda sinkronkan, untuk setiap identitas yang digunakan untuk akses ke Azure Key Vault, dan untuk setiap namespace Layanan Kubernetes target.
Buat satu atau beberapa SecretProviderClass
file YAML dengan nilai yang sesuai untuk Key Vault dan rahasia Anda dengan mengikuti contoh ini.
cat <<EOF > spc.yaml
apiVersion: secrets-store.csi.x-k8s.io/v1
kind: SecretProviderClass
metadata:
name: secret-provider-class-name # Name of the class; must be unique per Kubernetes namespace
namespace: ${KUBERNETES_NAMESPACE} # Kubernetes namespace to make the secrets accessible in
spec:
provider: azure
parameters:
clientID: "${USER_ASSIGNED_CLIENT_ID}" # Managed Identity Client ID for accessing the Azure Key Vault with.
keyvaultName: ${KEYVAULT_NAME} # The name of the Azure Key Vault to synchronize secrets from.
objects: |
array:
- |
objectName: ${KEYVAULT_SECRET_NAME} # The name of the secret to sychronize.
objectType: secret
objectVersionHistory: 2 # [optional] The number of versions to synchronize, starting from latest.
tenantID: "${AZURE_TENANT_ID}" # The tenant ID of the Key Vault
EOF
Membuat SecretSync
objek
Setiap rahasia yang disinkronkan SecretSync
juga memerlukan objek, untuk menentukan informasi khusus kluster. Di sini Anda menentukan informasi seperti nama rahasia di kluster dan nama Anda untuk setiap versi rahasia yang disimpan di kluster Anda.
Buat satu SecretSync
file YAML objek untuk setiap rahasia, mengikuti templat ini. Namespace Layanan Kubernetes harus cocok dengan namespace dari pencocokan SecretProviderClass
.
cat <<EOF > ss.yaml
apiVersion: secret-sync.x-k8s.io/v1alpha1
kind: SecretSync
metadata:
name: secret-sync-name # Name of the object; must be unique per Kubernetes namespace
namespace: ${KUBERNETES_NAMESPACE} # Kubernetes namespace
spec:
serviceAccountName: ${SERVICE_ACCOUNT_NAME} # The Kubernetes service account to be given permissions to access the secret.
secretProviderClassName: secret-provider-class-name # The name of the matching SecretProviderClass with the configuration to access the AKV storing this secret
secretObject:
type: Opaque
data:
- sourcePath: ${KEYVAULT_SECRET_NAME}/0 # Name of the secret in Azure Key Vault with an optional version number (defaults to latest)
targetKey: ${KEYVAULT_SECRET_NAME}-data-key0 # Target name of the secret in the Kubernetes secret store (must be unique)
- sourcePath: ${KEYVAULT_SECRET_NAME}/1 # [optional] Next version of the AKV secret. Note that versions of the secret must match the configured objectVersionHistory in the secrets provider class
targetKey: ${KEYVAULT_SECRET_NAME}-data-key1 # [optional] Next target name of the secret in the K8s secret store
EOF
Menerapkan CR konfigurasi
Terapkan sumber daya kustom konfigurasi (CR) menggunakan kubectl apply
perintah :
kubectl apply -f ./spc.yaml
kubectl apply -f ./ss.yaml
SSE secara otomatis mencari rahasia dan mulai menyinkronkannya ke kluster.
Lihat opsi konfigurasi
Untuk melihat opsi konfigurasi tambahan untuk dua jenis sumber daya kustom ini, gunakan kubectl describe
perintah untuk memeriksa CRD di kluster:
# Get the name of any applied CRD(s)
kubectl get crds -o custom-columns=NAME:.metadata.name
# View the full configuration options and field parameters for a given CRD
kubectl describe crd secretproviderclass
kubectl describe crd secretsync
Mengamati rahasia yang disinkronkan ke kluster
Setelah konfigurasi diterapkan, rahasia mulai disinkronkan ke kluster secara otomatis pada irama yang ditentukan saat menginstal SSE.
Menampilkan rahasia yang disinkronkan
Lihat rahasia yang disinkronkan ke kluster dengan menjalankan perintah berikut:
# View a list of all secrets in the namespace
kubectl get secrets -n ${KUBERNETES_NAMESPACE}
# View details of all secrets in the namespace
kubectl get secrets -n ${KUBERNETES_NAMESPACE} -o yaml
Menampilkan status sinkronisasi terakhir
Untuk melihat status sinkronisasi terbaru untuk rahasia tertentu, gunakan kubectl describe
perintah untuk SecretSync
objek . Output mencakup tanda waktu pembuatan rahasia, versi rahasia, dan pesan status terperinci untuk setiap peristiwa sinkronisasi. Output ini dapat digunakan untuk mendiagnosis kesalahan koneksi atau konfigurasi, dan untuk mengamati kapan nilai rahasia berubah.
kubectl describe secretsync secret-sync-name -n ${KUBERNETES_NAMESPACE}
Menampilkan nilai rahasia
Untuk melihat nilai rahasia yang disinkronkan, yang sekarang disimpan di penyimpanan rahasia Kubernetes, gunakan perintah berikut:
kubectl get secret secret-sync-name -n ${KUBERNETES_NAMESPACE} -o jsonpath="{.data.${KEYVAULT_SECRET_NAME}-data-key0}" | base64 -d
kubectl get secret secret-sync-name -n ${KUBERNETES_NAMESPACE} -o jsonpath="{.data.${KEYVAULT_SECRET_NAME}-data-key1}" | base64 -d
Pemecahan Masalah
SSE adalah penyebaran Kubernetes yang berisi pod dengan dua kontainer: pengontrol, yang mengelola penyimpanan rahasia di kluster, dan penyedia, yang mengelola akses ke, dan menarik rahasia dari, Azure Key Vault. Setiap rahasia yang disinkronkan memiliki SecretSync
objek yang berisi status sinkronisasi rahasia itu dari Azure Key Vault ke penyimpanan rahasia kluster.
Untuk memecahkan masalah, mulailah dengan melihat status SecretSync
objek, seperti yang dijelaskan dalam Menampilkan status sinkronisasi terakhir. Tabel berikut ini mencantumkan jenis status umum, maknanya, dan potensi langkah pemecahan masalah untuk mengatasi kesalahan.
Jenis Status SecretSync | Detail | Langkah-langkah untuk memperbaiki/menyelidiki lebih lanjut |
---|---|---|
CreateSucceeded |
Rahasia berhasil dibuat. | n/a |
CreateFailedProviderError |
Pembuatan rahasia gagal karena beberapa masalah dengan penyedia (koneksi ke Azure Key Vault). Kegagalan ini bisa disebabkan oleh konektivitas internet, izin yang tidak mencukup untuk rahasia sinkronisasi identitas, kesalahan konfigurasi SecretProviderClass , atau masalah lainnya. |
Selidiki lebih lanjut dengan melihat log penyedia menggunakan perintah berikut: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='provider-azure-installer' |
CreateFailedInvalidLabel |
Pembuatan rahasia gagal karena rahasia sudah ada tanpa label Kubernetes yang benar yang digunakan SSE untuk mengelola rahasianya. | Hapus label dan rahasia yang ada dan izinkan SSE untuk membuat ulang rahasia: kubectl delete secret <secret-name> Untuk memaksa SSE membuat ulang rahasia lebih cepat dari interval polling rotasi yang dikonfigurasi, hapus SecretSync objek (kubectl delete secretsync <secret-name> ) dan terapkan kembali kelas sinkronisasi rahasia (kubectl apply -f <path_to_secret_sync> ). |
CreateFailedInvalidAnnotation |
Pembuatan rahasia gagal karena rahasia sudah ada tanpa anotasi Kubernetes yang benar yang digunakan SSE untuk mengelola rahasianya. | Hapus anotasi dan rahasia yang ada dan izinkan SSE untuk membuat ulang rahasia: kubectl delete secret <secret-name> Untuk memaksa SSE membuat ulang rahasia lebih cepat dari interval polling rotasi yang dikonfigurasi, hapus SecretSync objek (kubectl delete secretsync <secret-name> ) dan terapkan kembali kelas sinkronisasi rahasia (kubectl apply -f <path_to_secret_sync> ). |
UpdateNoValueChangeSucceeded |
SSE memeriksa Azure Key Vault untuk pembaruan di akhir interval polling yang dikonfigurasi, tetapi tidak ada perubahan untuk disinkronkan. | n/a |
UpdateValueChangeOrForceUpdateSucceeded |
SSE memeriksa Azure Key Vault untuk pembaruan dan berhasil memperbarui nilai. | n/a |
UpdateFailedInvalidLabel |
Pembaruan rahasia gagal karena label pada rahasia yang digunakan SSE untuk mengelola rahasianya dimodifikasi. | Hapus label dan rahasia yang ada, dan izinkan SSE untuk membuat ulang rahasia: kubectl delete secret <secret-name> Untuk memaksa SSE membuat ulang rahasia lebih cepat dari interval polling rotasi yang dikonfigurasi, hapus SecretSync objek (kubectl delete secretsync <secret-name> ) dan terapkan kembali kelas sinkronisasi rahasia (kubectl apply -f <path_to_secret_sync> ). |
UpdateFailedInvalidAnnotation |
Pembaruan rahasia gagal karena anotasi pada rahasia yang digunakan SSE untuk mengelola rahasianya dimodifikasi. | Hapus anotasi dan rahasia yang ada dan izinkan SSE untuk membuat ulang rahasia: kubectl delete secret <secret-name> Untuk memaksa SSE membuat ulang rahasia lebih cepat dari interval polling rotasi yang dikonfigurasi, hapus SecretSync objek (kubectl delete secretsync <secret-name> ) dan terapkan kembali kelas sinkronisasi rahasia (kubectl apply -f <path_to_secret_sync> ). |
UpdateFailedProviderError |
Pembaruan rahasia gagal karena beberapa masalah dengan penyedia (koneksi ke Azure Key Vault). Kegagalan ini bisa disebabkan oleh konektivitas internet, izin yang tidak mencukup untuk rahasia sinkronisasi identitas, konfigurasi SecretProviderClass , atau masalah lainnya. |
Selidiki lebih lanjut dengan melihat log penyedia menggunakan perintah berikut: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='provider-azure-installer' |
UserInputValidationFailed |
Pembaruan rahasia gagal karena kelas sinkronisasi rahasia dikonfigurasi dengan salah (seperti jenis rahasia yang tidak valid). | Tinjau definisi kelas sinkronisasi rahasia dan koreksi kesalahan apa pun. Kemudian, hapus SecretSync objek (kubectl delete secretsync <secret-name> ), hapus kelas sinkronisasi rahasia (kubectl delete -f <path_to_secret_sync> ), dan terapkan kembali kelas sinkronisasi rahasia (kubectl apply -f <path_to_secret_sync> ). |
ControllerSpcError |
Pembaruan rahasia gagal karena SSE gagal mendapatkan kelas penyedia atau kelas penyedia salah dikonfigurasi. | Tinjau kelas penyedia dan koreksi kesalahan apa pun. Kemudian, hapus SecretSync objek (kubectl delete secretsync <secret-name> ), hapus kelas penyedia (kubectl delete -f <path_to_provider> ), dan terapkan kembali kelas penyedia (kubectl apply -f <path_to_provider> ). |
ControllerInternalError |
Pembaruan rahasia gagal karena kesalahan internal di SSE. | Periksa log SSE atau peristiwa untuk informasi selengkapnya: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='manager' |
SecretPatchFailedUnknownError |
Pembaruan rahasia gagal selama patching nilai rahasia Kubernetes. Kegagalan ini mungkin terjadi jika rahasia dimodifikasi oleh seseorang selain SSE atau jika ada masalah selama pembaruan SSE. | Coba hapus rahasia dan SecretSync objek, lalu biarkan SSE membuat ulang rahasia dengan menerapkan kembali CR sinkronisasi rahasia: kubectl delete secret <secret-name> kubectl delete secretsync <secret-name> kubectl apply -f <path_to_secret_sync> |
Menghapus SSE
Untuk menghapus SSE dan berhenti menyinkronkan rahasia, hapus instalannya az k8s-extension delete
dengan perintah :
az k8s-extension delete --name ssarcextension --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters
Menghapus instalan ekstensi tidak menghapus rahasia, SecretSync
objek, atau CRD dari kluster. Objek-objek ini harus dihapus langsung dengan kubectl
.
Menghapus SecretSync CRD menghapus semua SecretSync
objek, dan secara default menghapus semua rahasia yang dimiliki, tetapi rahasia dapat bertahan jika:
- Anda memodifikasi kepemilikan rahasia apa pun.
- Anda mengubah pengaturan pengumpulan sampah di kluster Anda, termasuk mengatur finalizer yang berbeda.
Dalam kasus di atas, rahasia harus dihapus secara langsung menggunakan kubectl
.
Langkah berikutnya
- Pelajari selengkapnya tentang ekstensi Azure Arc.
- Pelajari lebih lanjut tentang Azure Key Vault.