Aracılığıyla paylaş


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

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.

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

  1. Azure Key Vault oluşturma:

    az keyvault create --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --name "${KEYVAULT_NAME}" --enable-rbac-authorization
    
  2. 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}
    
  3. 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.

  1. 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}"
    
  2. 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.

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

  1. 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 
    
  2. trust-manager'ı yükleyin.

    helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --wait
    
  3. 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 SecretProviderClassyanlış 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 SecretProviderClassveya 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 kubectlkaldı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:

Yukarıdaki durumlarda gizli diziler kullanılarak doğrudan kubectlsilinmelidir.

Sonraki adımlar

  • Azure Arc uzantıları hakkında daha fazla bilgi edinin.
  • Azure Key Vault hakkında daha fazla bilgi edinin.