De secret store-extensie gebruiken om geheimen op te halen voor offlinetoegang in Kubernetes-clusters met Azure Arc
De Azure Key Vault Secret Store-extensie voor Kubernetes ('SSE') synchroniseert automatisch geheimen van een Azure Key Vault naar een Kubernetes-cluster met Azure Arc voor offlinetoegang. Dit betekent dat u Azure Key Vault kunt gebruiken om uw geheimen op te slaan, te onderhouden en te roteren, zelfs wanneer u uw Kubernetes-cluster in een semi-verbroken status uitvoert. Gesynchroniseerde geheimen worden opgeslagen in het clustergeheimarchief, waardoor ze beschikbaar worden gemaakt als Kubernetes-geheimen die op alle gebruikelijke manieren moeten worden gebruikt: gekoppeld als gegevensvolumes of worden weergegeven als omgevingsvariabelen voor een container in een pod.
Gesynchroniseerde geheimen zijn essentiële zakelijke assets, dus de SSE beveiligt deze via geïsoleerde naamruimten en knooppunten, op rollen gebaseerd toegangsbeheerbeleid (RBAC) en beperkte machtigingen voor de geheimensynchronisatieroutine. Versleutel voor extra beveiliging het Kubernetes-geheimarchief op uw cluster.
Tip
De SSE wordt aanbevolen voor scenario's waarin offlinetoegang nodig is, of als u geheimen wilt synchroniseren met het Kubernetes-geheimarchief. Als u deze functies niet nodig hebt, kunt u de Azure Key Vault Secrets Provider-extensie gebruiken voor geheimbeheer in uw Kubernetes-clusters met Arc. Het wordt niet aanbevolen om zowel de online Azure Key Vault Secrets Provider-extensie als de offline-SSE naast elkaar in een cluster uit te voeren.
In dit artikel leest u hoe u de SSE installeert en configureert als een Kubernetes-extensie met Azure Arc.
Belangrijk
SSE is momenteel beschikbaar als PREVIEW-versie. Raadpleeg de Aanvullende voorwaarden voor Microsoft Azure-previews voor juridische voorwaarden die van toepassing zijn op Azure-functies die in bèta of preview zijn of die anders nog niet algemeen beschikbaar zijn.
Vereisten
- Een cluster dat is verbonden met Azure Arc, waarop Kubernetes versie 1.27 of hoger wordt uitgevoerd en in een van de ondersteunde regio's (VS - oost, VS - oost2, VS - west, VS - west2, VS - west3, Europa - west, Europa - noord). De regio wordt gedefinieerd door de resourcegroepregio die wordt gebruikt voor het maken van het Arc-cluster.
- In de voorbeelden in deze handleiding wordt een K3s-cluster gebruikt.
- Zorg ervoor dat u voldoet aan de algemene vereisten voor clusterextensies, inclusief de nieuwste versie van de
k8s-extension
Azure CLI-extensie. - Certificaatbeheer is vereist om TLS te ondersteunen voor intraclusterlogboekcommunicatie. In de voorbeelden verderop in deze handleiding wordt u door de installatie geleid. Zie cert-manager.io voor meer informatie over certificaatbeheer
Installeer de Azure CLI en meld u aan als u dat nog niet hebt gedaan:
az login
Voordat u begint, stelt u omgevingsvariabelen in die moeten worden gebruikt voor het configureren van Azure- en clusterbronnen. Als u al een beheerde identiteit, Azure Key Vault of een andere resource hebt die hier wordt vermeld, werkt u de namen in de omgevingsvariabelen bij om deze resources weer te geven.
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"
Een identiteit configureren voor toegang tot geheimen
Voor toegang tot en synchronisatie van een bepaald Azure Key Vault-geheim heeft de SSE toegang nodig tot een door Azure beheerde identiteit met de juiste Azure-machtigingen voor toegang tot dat geheim. De beheerde identiteit moet worden gekoppeld aan een Kubernetes-serviceaccount via federatie van workloadidentiteit. Het Kubernetes-serviceaccount is wat u gebruikt in een Kubernetes-pod of een andere workload voor toegang tot geheimen uit het Kubernetes-geheime archief. De SSE maakt gebruik van de gekoppelde federatieve, door Azure beheerde identiteit om geheimen uit Azure Key Vault op te halen naar uw Kubernetes-geheimarchief. In de volgende secties wordt beschreven hoe u dit instelt.
Workloadidentiteit inschakelen in uw cluster
Als uw cluster nog niet is verbonden met Azure Arc, volgt u deze stappen. Schakel tijdens deze stappen de workloadidentiteit in als onderdeel van de connect
opdracht:
az connectedk8s connect --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --enable-oidc-issuer --enable-workload-identity
Als uw cluster al is verbonden met Azure Arc, schakelt u de workloadidentiteit in met behulp van de update
opdracht:
az connectedk8s update --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --enable-oidc-issuer --enable-workload-identity
Uw cluster configureren om tokenvalidatie in te schakelen
Uw cluster moet zijn geconfigureerd om serviceaccounttokens uit te geven met een nieuwe URL voor verleners (service-account-issuer
) waarmee Microsoft Entra ID de openbare sleutels kan vinden die nodig zijn om deze tokens te valideren. Deze openbare sleutels zijn voor de tokenverlener van het eigen serviceaccount van het cluster en ze zijn verkregen en in de cloud gehost op deze URL als gevolg van de --enable-oidc-issuer
optie die u hierboven hebt ingesteld.
U kunt eventueel ook limieten voor de eigen machtigingen van de SSE configureren als een bevoegde resource die wordt uitgevoerd in het besturingsvlak door de toegangscontroller te OwnerReferencesPermissionEnforcement
configureren. Deze toegangscontroller beperkt hoeveel de SSE andere objecten in het cluster kan wijzigen.
Op uw Kubernetes-cluster moet Kubernetes versie 1.27 of hoger worden uitgevoerd.
Configureer uw kube-apiserver met het verlener-URL-veld en het afdwingen van machtigingen. Het volgende voorbeeld is voor een k3s-cluster. Het cluster kan verschillende methoden hebben voor het wijzigen van ARGUMENTEN voor API-servers:
--kube-apiserver-arg="--service-account-issuer=${SERVICE_ACCOUNT_ISSUER}" and --kube-apiserver-arg="--enable-admission-plugins=OwnerReferencesPermissionEnforcement"
.Haal de URL van de verlener van het serviceaccount op.
export SERVICE_ACCOUNT_ISSUER="$(az connectedk8s show --name ${CLUSTER_NAME} --resource-group ${RESOURCE_GROUP} --query "oidcIssuerProfile.issuerUrl" --output tsv)" echo $SERVICE_ACCOUNT_ISSUER
Open het configuratiebestand van de K3s-server.
sudo nano /etc/systemd/system/k3s.service
Bewerk de serverconfiguratie zodat deze eruitziet zoals in het volgende voorbeeld, waarbij <u SERVICE_ACCOUNT_ISSUER> vervangt door de bovenstaande uitvoer,
echo $SERVICE_ACCOUNT_ISSUER
waarbij u de afsluitende slash van deze URL moet opnemen: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"
Start uw kube-apiserver opnieuw op.
sudo systemctl daemon-reload sudo systemctl restart k3s
Een Azure Key Vault maken
Maak een Azure Key Vault en voeg een geheim toe. Als u al een Azure Key Vault en een geheim hebt, kunt u deze sectie overslaan.
Een Azure Key Vault maken:
az keyvault create --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --name "${KEYVAULT_NAME}" --enable-rbac-authorization
Geef uzelf de machtigingen 'Secrets Officer' voor de kluis, zodat u een geheim kunt maken:
az role assignment create --role "Key Vault Secrets Officer" --assignee ${CURRENT_USER} --scope /subscriptions/${SUBSCRIPTION}/resourcegroups/${RESOURCE_GROUP}/providers/Microsoft.KeyVault/vaults/${KEYVAULT_NAME}
Maak een geheim en werk het bij zodat u twee versies hebt:
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'
Een door de gebruiker toegewezen beheerde identiteit maken
Maak vervolgens een door de gebruiker toegewezen beheerde identiteit en geef deze machtigingen voor toegang tot Azure Key Vault. Als u al een beheerde identiteit hebt met key vault-lezer- en Key Vault-geheimengebruikersmachtigingen voor Azure Key Vault, kunt u deze sectie overslaan. Zie Een door de gebruiker toegewezen beheerde identiteiten maken en Azure RBAC-geheim, sleutel- en certificaatmachtigingen gebruiken met Key Vault voor meer informatie.
Maak de door de gebruiker toegewezen beheerde identiteit:
az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}" --location "${LOCATION}" --subscription "${SUBSCRIPTION}"
Geef de gebruikersmachtigingen voor key vault-lezer en Key Vault-geheimen. Mogelijk moet u even wachten op de replicatie van het maken van de identiteit voordat deze opdrachten zijn geslaagd:
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}
Een federatieve identiteitsreferentie maken
Maak een Kubernetes-serviceaccount voor de workload die toegang nodig heeft tot geheimen. Maak vervolgens een federatieve identiteitsreferentie om een koppeling te maken tussen de beheerde identiteit, de OIDC-serviceaccountverlener en het Kubernetes-serviceaccount.
Maak een Kubernetes-serviceaccount dat wordt gefedereerd naar de beheerde identiteit. Aantekeningen maken met details van de gekoppelde door de gebruiker toegewezen beheerde identiteit.
kubectl create ns ${KUBERNETES_NAMESPACE}
cat <<EOF | kubectl apply -f - apiVersion: v1 kind: ServiceAccount metadata: name: ${SERVICE_ACCOUNT_NAME} namespace: ${KUBERNETES_NAMESPACE} EOF
Maak een federatieve identiteitsreferentie:
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}
De SSE installeren en gebruiken
De SSE is beschikbaar als een Azure Arc-extensie. Een Kubernetes-cluster met Azure Arc kan worden uitgebreid met Kubernetes-extensies met Azure Arc. Extensies maken Azure-mogelijkheden in uw verbonden cluster mogelijk en bieden een azure Resource Manager-gestuurde ervaring voor het installatie- en levenscyclusbeheer van extensies.
cert-manager en trust-manager installeren
cert-manager en trust-manager zijn vereist voor beveiligde communicatie van logboeken tussen clusterservices en moeten worden geïnstalleerd vóór de Arc-extensie.
Installeer cert-manager.
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.15.3/cert-manager.yaml
Installeer trust-manager.
helm repo add jetstack https://charts.jetstack.io helm repo update helm upgrade trust-manager jetstack/trust-manager --install --namespace cert-manager --wait
De SSE installeren
Installeer de SSE in uw cluster met Arc met behulp van de volgende opdracht:
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
Desgewenst kunt u desgewenst het standaardrotatiepollinterval wijzigen door het volgende toe te voegen
--configuration-settings rotationPollIntervalInSeconds=<time_in_seconds>
:Parameternaam Beschrijving Default value rotationPollIntervalInSeconds
Hiermee geeft u op hoe snel de SSE het geheim controleert of bijwerken dat wordt beheerd. 3600
(1 uur)
De SSE configureren
Configureer de geïnstalleerde extensie met informatie over uw Azure Key Vault en welke geheimen u wilt synchroniseren met uw cluster door exemplaren van aangepaste Kubernetes-resources te definiëren. U maakt twee typen aangepaste resources:
- Een
SecretProviderClass
object om de verbinding met de sleutelkluis te definiëren. - Een
SecretSync
object voor elk geheim dat moet worden gesynchroniseerd.
SecretProviderClass
Een resource maken
De SecretProviderClass
resource wordt gebruikt om de verbinding met Azure Key Vault te definiëren, de identiteit die moet worden gebruikt voor toegang tot de kluis, welke geheimen moeten worden gesynchroniseerd en het aantal versies van elk geheim dat lokaal moet worden bewaard.
U hebt een afzonderlijke SecretProviderClass
naam nodig voor elke Azure Key Vault die u wilt synchroniseren, voor elke identiteit die wordt gebruikt voor toegang tot een Azure Key Vault en voor elke Kubernetes-doelnaamruimte.
Maak een of meer SecretProviderClass
YAML-bestanden met de juiste waarden voor uw Key Vault en geheimen door dit voorbeeld te volgen.
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
Een object maken
Elk gesynchroniseerd geheim vereist ook een SecretSync
object om clusterspecifieke informatie te definiëren. Hier geeft u informatie op, zoals de naam van het geheim in uw cluster en namen voor elke versie van het geheim dat is opgeslagen in uw cluster.
Maak één SecretSync
YAML-objectbestand voor elk geheim, volgens deze sjabloon. De Kubernetes-naamruimte moet overeenkomen met de naamruimte van de overeenkomende SecretProviderClass
naamruimte.
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
De configuratie-CA's toepassen
Pas de aangepaste configuratieresources (CR's) toe met behulp van de kubectl apply
opdracht:
kubectl apply -f ./spc.yaml
kubectl apply -f ./ss.yaml
De SSE zoekt automatisch naar de geheimen en begint deze te synchroniseren met het cluster.
Configuratieopties weergeven
Als u aanvullende configuratieopties voor deze twee aangepaste resourcetypen wilt weergeven, gebruikt u de kubectl describe
opdracht om de CRD's in het cluster te controleren:
# 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
Geheimen bekijken die worden gesynchroniseerd met het cluster
Zodra de configuratie is toegepast, beginnen geheimen automatisch te synchroniseren met het cluster volgens de frequentie die is opgegeven bij het installeren van de SSE.
Gesynchroniseerde geheimen weergeven
Bekijk de geheimen die zijn gesynchroniseerd met het cluster door de volgende opdracht uit te voeren:
# 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
Laatste synchronisatiestatus weergeven
Als u de status van de meest recente synchronisatie voor een bepaald geheim wilt weergeven, gebruikt u de kubectl describe
opdracht voor het SecretSync
object. De uitvoer bevat de tijdstempel voor het maken van geheimen, de versies van het geheim en gedetailleerde statusberichten voor elke synchronisatie-gebeurtenis. Deze uitvoer kan worden gebruikt om verbindings- of configuratiefouten vast te stellen en om te zien wanneer de geheime waarde verandert.
kubectl describe secretsync secret-sync-name -n ${KUBERNETES_NAMESPACE}
Geheimenwaarden weergeven
Gebruik de volgende opdracht om de gesynchroniseerde geheime waarden weer te geven die nu zijn opgeslagen in het Kubernetes-geheime archief:
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
Probleemoplossing
De SSE is een Kubernetes-implementatie die een pod met twee containers bevat: de controller, die het opslaan van geheimen in het cluster beheert, en de provider, waarmee de toegang tot en het ophalen van geheimen wordt beheerd, de Azure Key Vault. Elk gesynchroniseerd geheim heeft een SecretSync
object dat de status van de synchronisatie van dat geheim van Azure Key Vault naar het clustergeheimarchief bevat.
Als u een probleem wilt oplossen, kijkt u eerst naar de status van het SecretSync
object, zoals beschreven in De laatste synchronisatiestatus weergeven. De volgende tabel bevat veelvoorkomende statustypen, betekenissen en mogelijke stappen voor probleemoplossing om fouten op te lossen.
Statustype SecretSync | DETAILS | Stappen voor het oplossen/onderzoeken van verder onderzoek |
---|---|---|
CreateSucceeded |
Het geheim is gemaakt. | n.v.t. |
CreateFailedProviderError |
Het maken van geheimen is mislukt vanwege een probleem met de provider (verbinding met Azure Key Vault). Deze fout kan worden veroorzaakt door internetverbinding, onvoldoende machtigingen voor het synchroniseren van identiteiten, onjuiste configuratie van de SecretProviderClass of andere problemen. |
Onderzoek verder door de logboeken van de provider te bekijken met behulp van de volgende opdrachten: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='provider-azure-installer' |
CreateFailedInvalidLabel |
Het maken van het geheim is mislukt omdat het geheim al bestaat zonder het juiste Kubernetes-label dat de SSE gebruikt om de geheimen te beheren. | Verwijder het bestaande label en het bestaande geheim en laat de SSE het geheim opnieuw maken: kubectl delete secret <secret-name> Als u wilt afdwingen dat de SSE het geheim sneller maakt dan het geconfigureerde poll-interval voor rotatie, verwijdert u het SecretSync object (kubectl delete secretsync <secret-name> ) en past u de geheime synchronisatieklasse () opnieuw toe.kubectl apply -f <path_to_secret_sync> |
CreateFailedInvalidAnnotation |
Het maken van geheimen is mislukt omdat het geheim al bestaat zonder de juiste Kubernetes-aantekening die door de SSE wordt gebruikt om de geheimen te beheren. | Verwijder de bestaande aantekening en het geheim en laat de SSE het geheim opnieuw maken: kubectl delete secret <secret-name> Als u wilt afdwingen dat de SSE het geheim sneller maakt dan het geconfigureerde poll-interval voor rotatie, verwijdert u het SecretSync object (kubectl delete secretsync <secret-name> ) en past u de geheime synchronisatieklasse () opnieuw toe.kubectl apply -f <path_to_secret_sync> |
UpdateNoValueChangeSucceeded |
De SSE heeft Azure Key Vault gecontroleerd op updates aan het einde van het geconfigureerde poll-interval, maar er zijn geen wijzigingen aangebracht om te synchroniseren. | n.v.t. |
UpdateValueChangeOrForceUpdateSucceeded |
De SSE heeft Azure Key Vault gecontroleerd op updates en de waarde is bijgewerkt. | n.v.t. |
UpdateFailedInvalidLabel |
Bijwerken van geheimen is mislukt omdat het label op het geheim dat door de SSE wordt gebruikt voor het beheren van de geheimen, is gewijzigd. | Verwijder het bestaande label en geheim en laat de SSE het geheim opnieuw maken: kubectl delete secret <secret-name> Als u wilt afdwingen dat de SSE het geheim sneller maakt dan het geconfigureerde poll-interval voor rotatie, verwijdert u het SecretSync object (kubectl delete secretsync <secret-name> ) en past u de geheime synchronisatieklasse () opnieuw toe.kubectl apply -f <path_to_secret_sync> |
UpdateFailedInvalidAnnotation |
Bijwerken van geheim is mislukt omdat de aantekening voor het geheim dat door de SSE wordt gebruikt voor het beheren van de geheimen, is gewijzigd. | Verwijder de bestaande aantekening en het geheim en laat de SSE het geheim opnieuw maken: kubectl delete secret <secret-name> Als u wilt afdwingen dat de SSE het geheim sneller maakt dan het geconfigureerde poll-interval voor rotatie, verwijdert u het SecretSync object (kubectl delete secretsync <secret-name> ) en past u de geheime synchronisatieklasse () opnieuw toe.kubectl apply -f <path_to_secret_sync> |
UpdateFailedProviderError |
Het bijwerken van het geheim is mislukt vanwege een probleem met de provider (verbinding met Azure Key Vault). Deze fout kan worden veroorzaakt door internetverbinding, onvoldoende machtigingen voor het synchroniseren van identiteiten, configuratie van de SecretProviderClass of andere problemen. |
Onderzoek verder door de logboeken van de provider te bekijken met behulp van de volgende opdrachten: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='provider-azure-installer' |
UserInputValidationFailed |
Het bijwerken van het geheim is mislukt omdat de geheime synchronisatieklasse onjuist is geconfigureerd (zoals een ongeldig geheimtype). | Controleer de definitie van de geheime synchronisatieklasse en corrigeer eventuele fouten. Verwijder vervolgens het SecretSync object (kubectl delete secretsync <secret-name> ), verwijder de geheime synchronisatieklasse (kubectl delete -f <path_to_secret_sync> ) en pas de geheime synchronisatieklasse (kubectl apply -f <path_to_secret_sync> ) opnieuw toe. |
ControllerSpcError |
Het bijwerken van het geheim is mislukt omdat de SSE de providerklasse niet kan ophalen of omdat de providerklasse onjuist is geconfigureerd. | Controleer de providerklasse en corrigeer eventuele fouten. Verwijder vervolgens het SecretSync object (kubectl delete secretsync <secret-name> ), verwijder de providerklasse (kubectl delete -f <path_to_provider> ) en pas de providerklasse (kubectl apply -f <path_to_provider> opnieuw toe). |
ControllerInternalError |
Het bijwerken van het geheim is mislukt vanwege een interne fout in de SSE. | Controleer de SSE-logboeken of de gebeurtenissen voor meer informatie: kubectl get pods -n azure-secret-store kubectl logs <secret-sync-controller-pod-name> -n azure-secret-store --container='manager' |
SecretPatchFailedUnknownError |
Bijwerken van geheimen is mislukt tijdens het patchen van de Kubernetes-geheime waarde. Deze fout kan optreden als het geheim is gewijzigd door iemand anders dan de SSE of als er problemen zijn opgetreden tijdens een update van de SSE. | Verwijder het geheim en SecretSync object en laat de SSE het geheim opnieuw maken door de geheime synchronisatie CR opnieuw toe te past: kubectl delete secret <secret-name> kubectl delete secretsync <secret-name> kubectl apply -f <path_to_secret_sync> |
De SSE verwijderen
Als u de SSE wilt verwijderen en het synchroniseren van geheimen wilt stoppen, verwijdert u deze met de az k8s-extension delete
opdracht:
az k8s-extension delete --name ssarcextension --cluster-name $CLUSTER_NAME --resource-group $RESOURCE_GROUP --cluster-type connectedClusters
Als u de extensie verwijdert, worden geheimen, SecretSync
objecten of CRD's niet uit het cluster verwijderd. Deze objecten moeten rechtstreeks worden verwijderd met kubectl
.
Als u secretsync CRD verwijdert, worden alle SecretSync
objecten verwijderd en worden standaard alle geheimen in eigendom verwijderd, maar geheimen kunnen zich blijven voordoen als:
- U hebt het eigendom van een van de geheimen gewijzigd.
- U hebt de instellingen voor garbagecollection in uw cluster gewijzigd, inclusief het instellen van verschillende finalizers.
In de bovenstaande gevallen moeten geheimen rechtstreeks worden verwijderd met behulp van kubectl
.
Volgende stappen
- Meer informatie over Azure Arc-extensies.
- Meer informatie over Azure Key Vault.