Azure Arc özellikli Kubernetes kümelerinde çevrimdışı erişim için gizli dizileri getirmek için Gizli Dizi Deposu uzantısını kullanın
Kubernetes için Azure Key Vault Gizli Depolama uzantısı ("SSE"), çevrimdışı erişim için Azure Key Vault'tan Azure Arc özellikli kubernetes kümesine gizli dizileri otomatik olarak eşitler. Bu, Kubernetes kümenizi yarı bağlantısız durumda çalıştırırken bile gizli dizilerinizi depolamak, korumak ve döndürmek için Azure Key Vault kullanabileceğiniz anlamına gelir. Eşitlenmiş gizli diziler küme gizli dizi deposunda depolanır ve kubernetes gizli dizileri olarak kullanılabilir hale getirerek her zamanki yöntemlerle kullanılabilir: veri birimleri olarak bağlanır veya poddaki bir kapsayıcıya ortam değişkenleri olarak sunulur.
Eşitlenmiş gizli diziler kritik iş varlıklarıdır, bu nedenle SSE yalıtılmış ad alanları ve düğümler, rol tabanlı erişim denetimi (RBAC) ilkeleri ve gizli dizi eşitleyicisi için sınırlı izinler aracılığıyla bunların güvenliğini sağlar. Ek koruma için kümenizdeki Kubernetes gizli dizi depoyu şifreleyin .
İpucu
Çevrimdışı erişimin gerekli olduğu veya gizli dizilerin Kubernetes gizli dizi deposuyla eşitlenmesi gereken senaryolar için SSE önerilir. Bu özelliklere ihtiyacınız yoksa Arc özellikli Kubernetes kümelerinizde gizli dizi yönetimi için Azure Key Vault Gizli Dizi Sağlayıcısı uzantısını kullanabilirsiniz. Hem çevrimiçi Azure Key Vault Gizli DiziLeri Sağlayıcısı uzantısını hem de çevrimdışı SSE'yi bir kümede yan yana çalıştırmanız önerilmez.
Bu makalede SSE'yi Azure Arc özellikli kubernetes uzantısı olarak yükleme ve yapılandırma adımları gösterilmektedir.
Önemli
SSE şu anda ÖNİzLEME aşamasındadır. Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Önkoşullar
- Arc özellikli bir küme. Bu, kendinize bağlandığınız (bu kılavuzdaki örneklerde K3s kümesi kullanılır) veya Azure Arc kümesi tarafından önerilen Microsoft tarafından yönetilen aks olabilir. Kümenin Kubernetes sürüm 1.27 veya üzerini ve desteklenen bölgelerden birinde (Doğu ABD, Doğu ABD2, Batı ABD, Batı ABD2, Batı ABD3, Batı Avrupa, Kuzey Avrupa) çalıştırıyor olması gerekir. Bölge, Arc kümesini oluşturmak için kullanılan kaynak grubu bölgesi tarafından tanımlanır.
- Azure CLI uzantısının en son sürümü de dahil olmak üzere küme uzantıları için genel önkoşulları karşıladığınızdan
k8s-extension
emin olun. - cert-manager, küme içi günlük iletişimi için TLS'yi desteklemek için gereklidir. Bu kılavuzun devamında yer alan örnekler sizi yükleme işlemine yönlendirir. cert-manager hakkında daha fazla bilgi için bkz. cert-manager.io
Henüz yapmadıysanız Azure CLI'yi yükleyin ve oturum açın:
az login
Başlamadan önce, Azure ve küme kaynaklarını yapılandırmak için kullanılacak ortam değişkenlerini ayarlayın. Burada listelenen bir yönetilen kimliğiniz, Azure Key Vault'nuz veya başka bir kaynağınız varsa ortam değişkenlerindeki adları bu kaynakları yansıtacak şekilde güncelleştirin.
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"
Kümenizde iş yükü kimlik federasyonu etkinleştirme
SSE, Azure Key Vault gizli dizilerine erişmek ve bu gizli dizileri eşitlemek için iş yükü kimlik federasyonu adlı bir özellik kullanır. Bu bölümde bunun nasıl ayarlanacağı açıklanmaktadır. Aşağıdaki bölümlerde nasıl kullanıldığı ayrıntılı olarak açıklanmaktadır.
İpucu
Aşağıdaki adımlar, Arc özellikli Kubernetes'i iş yükü kimlik federasyonuyla yapılandırmaya yönelik Nasıl Yapılır kılavuzuna dayanır. Ek yardım için bu belgelere bakın.
Kümeniz henüz Azure Arc'a bağlı değilse şu adımları izleyin. Bu adımlar sırasında, komutun bir parçası olarak iş yükü kimliği federasyonunu connect
etkinleştirin:
az connectedk8s connect --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --enable-oidc-issuer --enable-workload-identity
Kümeniz zaten Azure Arc'a bağlıysa komutunu kullanarak update
iş yükü kimliğini etkinleştirin:
az connectedk8s update --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --enable-oidc-issuer --enable-workload-identity
Şimdi kümenizi, Microsoft Entra Id'nin bu belirteçleri doğrulamak için gerekli ortak anahtarları bulmasını sağlayan yeni bir veren URL'si (service-account-issuer
) ile Hizmet Hesabı belirteçleri düzenleyebilecek şekilde yapılandırın. Bu ortak anahtarlar, kümenin kendi hizmet hesabı belirteci verene yöneliktir ve yukarıda ayarladığınız seçeneğin --enable-oidc-issuer
bir sonucu olarak bu URL'de elde edildi ve bulutta barındırıldı.
İsteğe bağlı olarak, erişim denetleyicisini yapılandırarak SSE'nin kendi izinlerindeki sınırları denetim düzleminde çalışan ayrıcalıklı bir kaynak olarak da yapılandırabilirsiniz.OwnerReferencesPermissionEnforcement
Bu erişim denetleyicisi, SSE'nin kümedeki diğer nesneleri ne kadar değiştirebileceğini kısıtlar.
Kube-apiserver'ınızı veren URL alanı ve izin zorlamasıyla yapılandırın. Aşağıdaki örnek k3s kümesi içindir. Kümenizin API sunucusu bağımsız değişkenlerini değiştirmek için farklı yöntemleri olabilir:
--kube-apiserver-arg="--service-account-issuer=${SERVICE_ACCOUNT_ISSUER}" and --kube-apiserver-arg="--enable-admission-plugins=OwnerReferencesPermissionEnforcement"
.Hizmet hesabı veren URL'sini alın.
export SERVICE_ACCOUNT_ISSUER="$(az connectedk8s show --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --query "oidcIssuerProfile.issuerUrl" --output tsv)" echo $SERVICE_ACCOUNT_ISSUER
K3s sunucusu yapılandırma dosyasını açın.
sudo nano /etc/systemd/system/k3s.service
Sunucu yapılandırmasını aşağıdaki örneğe benzer şekilde düzenleyin; SERVICE_ACCOUNT_ISSUER> değerini yukarıdaki
echo $SERVICE_ACCOUNT_ISSUER
çıkışla değiştirerek <bu URL'nin sonundaki eğik çizgiyi eklemeyi unutmayın: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"
kube-apiserver'ınızı yeniden başlatın.
sudo systemctl daemon-reload sudo systemctl restart k3s
Gizli dizi oluşturma ve bu gizli diziye erişmek için kimlik yapılandırma
Belirli bir Azure Key Vault gizli dizisine erişmek ve bunları eşitlemek için SSE, bu gizli diziye erişmek için uygun Azure izinlerine sahip bir Azure yönetilen kimliğine erişim gerektirir. Yönetilen kimlik, yukarıda etkinleştirdiğiniz iş yükü kimliği özelliği kullanılarak bir Kubernetes hizmet hesabına bağlanmalıdır. SSE, Azure Key Vault'tan Kubernetes gizli dizi deponuza gizli dizileri çekmek için ilişkili federasyon Azure yönetilen kimliğini kullanır. Aşağıdaki bölümlerde bunun nasıl ayarlanacağı açıklanmaktadır.
Azure Key Vault oluşturma
Azure Key Vault oluşturun ve gizli dizi ekleyin. Zaten bir Azure Key Vault ve gizli diziniz varsa bu bölümü atlayabilirsiniz.
Azure Key Vault oluşturma:
az keyvault create --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --name "${KEYVAULT_NAME}" --enable-rbac-authorization
Bir gizli dizi oluşturabilmek için kasada kendinize 'Gizli Dizi Sorumlusu' izinleri verin:
az role assignment create --role "Key Vault Secrets Officer" --assignee ${CURRENT_USER} --scope /subscriptions/${SUBSCRIPTION}/resourcegroups/${RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/${KEYVAULT_NAME}
Bir gizli dizi oluşturun ve iki sürümünüz olacak şekilde güncelleştirin:
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'
Kullanıcı tarafından atanan yönetilen kimlik oluşturma
Ardından, kullanıcı tarafından atanan bir yönetilen kimlik oluşturun ve Azure Key Vault'a erişim izinleri verin. Azure Key Vault'ta Key Vault Okuyucusu ve Key Vault Gizli Dizileri Kullanıcı izinlerine sahip bir yönetilen kimliğiniz zaten varsa bu bölümü atlayabilirsiniz. Daha fazla bilgi için bkz . Kullanıcı tarafından atanan yönetilen kimlikler oluşturma ve Key Vault ile Azure RBAC gizli dizisi, anahtarı ve sertifika izinlerini kullanma.
Kullanıcı tarafından atanan yönetilen kimliği oluşturun:
az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --subscription "${SUBSCRIPTION}"
Kimliğe Key Vault Okuyucusu ve Key Vault Gizli Dizileri Kullanıcı izinleri verin. Bu komutların başarılı olması için kimlik oluşturma işleminin çoğaltılması için biraz beklemeniz gerekebilir:
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}
Federasyon kimliği kimlik bilgisi oluşturma
Gizli dizilere erişmesi gereken iş yükü için bir Kubernetes hizmet hesabı oluşturun. Ardından yönetilen kimlik, OIDC hizmet hesabı veren ve Kubernetes Hizmet Hesabı arasında bağlantı kurmak için bir federasyon kimliği kimlik bilgisi oluşturun.
Yönetilen kimliğe federasyon olacak bir Kubernetes Hizmet Hesabı oluşturun. Kullanıcı tarafından atanan ilişkili yönetilen kimliğin ayrıntılarıyla buna ek açıklama ekleyin.
kubectl create ns ${KUBERNETES_NAMESPACE}
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: ${SERVICE_ACCOUNT_NAME} namespace: ${KUBERNETES_NAMESPACE} EOF
Federasyon kimliği kimlik bilgileri oluşturun:
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}
SSE'yi yükleme
SSE, Azure Arc uzantısı olarak kullanılabilir. Azure Arc özellikli Kubernetes kümesi, Azure Arc özellikli Kubernetes uzantılarıyla genişletilebilir. Uzantılar, bağlı kümenizde Azure özelliklerini etkinleştirir ve uzantı yükleme ve yaşam döngüsü yönetimi için Azure Resource Manager temelli bir deneyim sağlar.
cert-manager ve trust-manager, küme hizmetleri arasındaki günlüklerin güvenli iletişimi için de gereklidir ve Arc uzantısından önce yüklenmelidir.
cert-manager'ı yükleyin.
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
trust-manager'ı yükleyin.
helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --wait
Aşağıdaki komutu kullanarak Arc özellikli kümenize SSE yükleyin:
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
İsterseniz, ekleyerek
--configuration-settings rotationPollIntervalInSeconds=<time_in_seconds>
isteğe bağlı olarak varsayılan döndürme yoklama aralığını değiştirebilirsiniz:Parametre adı Açıklama Default value rotationPollIntervalInSeconds
SSE'nin yönettiği gizli diziyi ne kadar hızlı denetleyemiyor veya güncelleştiriyor olduğunu belirtir. 3600
(1 saat)
SSE'yi yapılandırma
Yüklü uzantıyı Azure Key Vault'unuz ve Kubernetes özel kaynaklarının örneklerini tanımlayarak kümenizle eşitlenecek gizli diziler hakkında bilgilerle yapılandırın. İki tür özel kaynak oluşturursunuz:
SecretProviderClass
Key Vault bağlantısını tanımlamak için bir nesne.SecretSync
Eşitlenecek her gizli dizi için bir nesne.
SecretProviderClass
Kaynak oluşturma
Kaynak SecretProviderClass
, Azure Key Vault bağlantısını, kasaya erişmek için kullanılacak kimliği, hangi gizli dizilerin eşitleneceğini ve her gizli anahtarın yerel olarak tutulacak sürümlerinin sayısını tanımlamak için kullanılır.
Eşitlemek istediğiniz her Azure Key Vault için, bir Azure Key Vault'a erişim için kullanılan her kimlik için ve her hedef Kubernetes ad alanı için ayrı SecretProviderClass
bir ihtiyacınız vardır.
Bu örneği izleyerek Key Vault'unuz ve gizli dizileriniz için uygun değerlerle bir veya daha fazla SecretProviderClass
YAML dosyası oluşturun.
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
SecretSync
Nesne oluşturma
Eşitlenen her gizli dizi, kümeye özgü bilgileri tanımlamak için bir SecretSync
nesne de gerektirir. Burada kümenizdeki gizli dizinin adı ve kümenizde depolanan her gizli dizi sürümünün adları gibi bilgileri belirtirsiniz.
Bu şablonu izleyerek her gizli dizi için bir SecretSync
nesne YAML dosyası oluşturun. Kubernetes ad alanı, eşleşen öğesinin ad alanıyla eşleşmelidir 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
Yapılandırma CR'lerini uygulama
Komutunu kullanarak kubectl apply
yapılandırma özel kaynaklarını (CR) uygulayın:
kubectl apply -f ./spc.yaml
kubectl apply -f ./ss.yaml
SSE gizli dizileri otomatik olarak arar ve kümeyle eşitlemeye başlar.
Yapılandırma seçeneklerini görüntüleme
Bu iki özel kaynak türünün ek yapılandırma seçeneklerini görüntülemek için komutunu kullanarak kubectl describe
kümedeki CRD'leri inceleyin:
# 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
Kümeyle eşitlenen gizli dizileri gözlemleme
Yapılandırma uygulandıktan sonra, gizli diziler SSE yüklenirken belirtilen tempoda kümeyle otomatik olarak eşitlenmeye başlar.
Eşitlenmiş gizli dizileri görüntüleme
Aşağıdaki komutu çalıştırarak kümeyle eşitlenen gizli dizileri görüntüleyin:
# 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
Son eşitleme durumunu görüntüleme
Belirli bir gizli dizi için en son eşitlemenin durumunu görüntülemek için nesnesinin kubectl describe
SecretSync
komutunu kullanın. Çıktı gizli dizi oluşturma zaman damgasını, gizli dizi sürümlerini ve her eşitleme olayı için ayrıntılı durum iletilerini içerir. Bu çıkış, bağlantı veya yapılandırma hatalarını tanılamak ve gizli dizi değerinin ne zaman değiştiğini gözlemlemek için kullanılabilir.
kubectl describe secretsync secret-sync-name -n ${KUBERNETES_NAMESPACE}
Gizli dizi değerlerini görüntüleme
Şimdi Kubernetes gizli dizi deposunda depolanan eşitlenmiş gizli dizi değerlerini görüntülemek için aşağıdaki komutu kullanın:
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
Sorun giderme
SSE, iki kapsayıcı içeren bir pod içeren bir Kubernetes dağıtımıdır: kümede gizli dizileri depolamayı yöneten denetleyici ve Azure Key Vault'a erişimi yöneten ve gizli dizileri çeken sağlayıcı. Eşitlenen her gizli dizi, Azure Key Vault'tan küme gizli dizisi deposuna eşitleme durumunu içeren bir SecretSync
nesneye sahiptir.
Bir sorunu gidermek için, son eşitleme durumunu görüntüleme bölümünde açıklandığı gibi nesnenin SecretSync
durumuna bakarak başlayın. Aşağıdaki tabloda yaygın durum türleri, anlamları ve hataları çözmek için olası sorun giderme adımları listelenmiştir.
SecretSync Durum Türü | Ayrıntılar | Daha fazla düzeltme/araştırma adımları |
---|---|---|
CreateSucceeded |
Gizli dizi başarıyla oluşturuldu. | yok |
CreateFailedProviderError |
Sağlayıcıyla ilgili bir sorun (Azure Key Vault bağlantısı) nedeniyle gizli dizi oluşturulamadı. Bu hata internet bağlantısından, gizli dizileri eşitlenen kimlik için izinlerin yetersiz olmasından, öğesinin SecretProviderClass yanlış yapılandırılmasından veya diğer sorunlardan kaynaklanabilir. |
Aşağıdaki komutları kullanarak sağlayıcının günlüklerine bakarak daha fazla araştırma yapın: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='provider-azure-installer' |
CreateFailedInvalidLabel |
Gizli dizi, SSE'nin gizli dizilerini yönetmek için kullandığı doğru Kubernetes etiketi olmadan zaten mevcut olduğundan gizli dizi oluşturulamadı. | Mevcut etiketi ve gizli diziyi kaldırın ve SSE'nin gizli diziyi yeniden oluşturmasına izin verin: kubectl delete secret <secret-name> SSE'yi, gizli diziyi yapılandırılan döndürme yoklama aralığından daha hızlı yeniden oluşturmak için nesneyi silin SecretSync (kubectl delete secretsync <secret-name> ) ve gizli dizi eşitleme sınıfını (kubectl apply -f <path_to_secret_sync> ) yeniden uygulayın. |
CreateFailedInvalidAnnotation |
Gizli dizi, SSE'nin gizli dizilerini yönetmek için kullandığı doğru Kubernetes ek açıklaması olmadan zaten mevcut olduğundan gizli dizi oluşturulamadı. | Mevcut ek açıklamayı ve gizli diziyi kaldırın ve SSE'nin gizli diziyi yeniden oluşturmasına izin verin: kubectl delete secret <secret-name> SSE'yi, gizli diziyi yapılandırılan döndürme yoklama aralığından daha hızlı yeniden oluşturmak için nesneyi silin SecretSync (kubectl delete secretsync <secret-name> ) ve gizli dizi eşitleme sınıfını (kubectl apply -f <path_to_secret_sync> ) yeniden uygulayın. |
UpdateNoValueChangeSucceeded |
SSE, yapılandırılan yoklama aralığının sonundaki güncelleştirmeler için Azure Key Vault'a baktı, ancak eşitlenecek bir değişiklik olmadı. | yok |
UpdateValueChangeOrForceUpdateSucceeded |
SSE güncelleştirmeler için Azure Key Vault'a baktı ve değeri başarıyla güncelleştirdi. | yok |
UpdateFailedInvalidLabel |
Gizli dizi güncelleştirme başarısız oldu çünkü SSE'nin gizli dizilerini yönetmek için kullandığı gizli dizideki etiket değiştirildi. | Mevcut etiketi ve gizli diziyi kaldırın ve SSE'nin gizli diziyi yeniden oluşturmasına izin verin: kubectl delete secret <secret-name> SSE'yi, gizli diziyi yapılandırılan döndürme yoklama aralığından daha hızlı yeniden oluşturmak için nesneyi silin SecretSync (kubectl delete secretsync <secret-name> ) ve gizli dizi eşitleme sınıfını (kubectl apply -f <path_to_secret_sync> ) yeniden uygulayın. |
UpdateFailedInvalidAnnotation |
Gizli dizi güncelleştirme başarısız oldu çünkü SSE'nin gizli dizilerini yönetmek için kullandığı gizli dizideki ek açıklama değiştirildi. | Mevcut ek açıklamayı ve gizli diziyi kaldırın ve SSE'nin gizli diziyi yeniden oluşturmasına izin verin: kubectl delete secret <secret-name> SSE'yi, gizli diziyi yapılandırılan döndürme yoklama aralığından daha hızlı yeniden oluşturmak için nesneyi silin SecretSync (kubectl delete secretsync <secret-name> ) ve gizli dizi eşitleme sınıfını (kubectl apply -f <path_to_secret_sync> ) yeniden uygulayın. |
UpdateFailedProviderError |
Sağlayıcıyla ilgili bir sorun (Azure Key Vault bağlantısı) nedeniyle gizli dizi güncelleştirmesi başarısız oldu. Bu hata internet bağlantısından, gizli dizileri eşitlenen kimlik için izinlerin yetersiz olmasından, yapılandırmasından SecretProviderClass veya diğer sorunlardan kaynaklanıyor olabilir. |
Aşağıdaki komutları kullanarak sağlayıcının günlüklerine bakarak daha fazla araştırma yapın: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='provider-azure-installer' |
UserInputValidationFailed |
Gizli dizi eşitleme sınıfı yanlış yapılandırıldığından (örneğin, geçersiz bir gizli dizi türü) gizli dizi güncelleştirmesi başarısız oldu. | Gizli dizi eşitleme sınıfı tanımını gözden geçirin ve hataları düzeltin. Ardından nesnesini ( ) silinSecretSync , gizli dizi eşitleme sınıfını ()kubectl delete -f <path_to_secret_sync> silin ve gizli dizi eşitleme sınıfını (kubectl apply -f <path_to_secret_sync> ) yenidenkubectl delete secretsync <secret-name> uygulayın. |
ControllerSpcError |
SSE sağlayıcı sınıfını alamadığından veya sağlayıcı sınıfı yanlış yapılandırıldığından gizli dizi güncelleştirmesi başarısız oldu. | Sağlayıcı sınıfını gözden geçirin ve hataları düzeltin. Ardından nesnesini ( ) silinSecretSync , sağlayıcı sınıfını ()kubectl delete -f <path_to_provider> silin ve sağlayıcı sınıfını (kubectl apply -f <path_to_provider> ) yenidenkubectl delete secretsync <secret-name> uygulayın. |
ControllerInternalError |
Gizli dizi güncelleştirmesi SSE'deki bir iç hata nedeniyle başarısız oldu. | Daha fazla bilgi için SSE günlüklerini veya olayları denetleyin: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='manager' |
SecretPatchFailedUnknownError |
Kubernetes gizli dizi değerine düzeltme eki uygulama sırasında gizli dizi güncelleştirmesi başarısız oldu. Gizli dizi SSE dışında bir kişi tarafından değiştirildiyse veya SSE'nin güncelleştirilmesi sırasında sorunlar varsa bu hata oluşabilir. | Gizli diziyi ve SecretSync nesneyi silmeyi deneyin, ardından gizli dizi eşitleme CR'sini yeniden ekleyerek SSE'nin gizli diziyi yeniden oluşturmasına izin verin: kubectl delete secret <secret-name> kubectl delete secretsync <secret-name> kubectl apply -f <path_to_secret_sync> |
SSE'yi kaldırma
SSE'yi kaldırmak ve gizli dizileri eşitlemeyi durdurmak için şu komutla az k8s-extension delete
kaldırın:
az k8s-extension delete --name ssarcextension --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters
Uzantının kaldırılması kümeden gizli dizileri, SecretSync
nesneleri veya CRD'leri kaldırmaz. Bu nesneler ile doğrudan kubectl
kaldırılmalıdır.
SecretSync CRD silindiğinde tüm SecretSync
nesneler kaldırılır ve varsayılan olarak sahip olunan tüm gizli diziler kaldırılır, ancak gizli diziler şu durumlarda kalıcı olabilir:
- Gizli dizilerden herhangi birinin sahipliğini değiştirdiniz.
- Kümenizde farklı sonlandırıcılar ayarlama da dahil olmak üzere çöp toplama ayarlarını değiştirdiniz.
Yukarıdaki durumlarda gizli diziler kullanılarak doğrudan kubectl
silinmelidir.