Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Usa AWS Secrets Manager i segreti in Amazon Elastic Kubernetes Service
Per mostrare i segreti di Secrets Manager come file montati nei pod Amazon EKS, puoi utilizzare AWS Secrets and Configuration Provider (ASCP) per il driver CSI Kubernetes
Se utilizzi un cluster Amazon EKS privato, assicurati che il VPC in cui si trova il cluster disponga di un endpoint Secrets Manager. Il driver CSI di Secrets Store utilizza l'endpoint per effettuare chiamate a Secrets Manager. Per informazioni su come creare un endpoint in un VPC, consulta la sezione Endpoint VPC.
Se si utilizza la rotazione automatica di Secrets Manager per i propri segreti, è anche possibile utilizzare la funzione di riconciliazione rotazione Secrets Store CSI Driver per assicurarsi di recuperare il segreto più recente da Secrets Manager. Per ulteriori informazioni, consulta Rotazione automatica dei contenuti montati e sincronizzati Kubernetes Secrets
Argomenti
Fase 1: Configurazione del controllo degli accessi
L'ASCP recupera l'identità del pod Amazon EKS e la scambia con un ruolo IAM. Le autorizzazioni vengono impostate in una policy IAM per quel ruolo IAM. Quando l'ASCP assume il ruolo IAM, ottiene l'accesso ai segreti che hai autorizzato. Altri container non possono accedere ai segreti a meno che non vengano associati anche al ruolo IAM.
Se le chiamate dall'ASCP per cercare la regione e il ruolo IAM associati al pod vengono limitate da Kubernetes, puoi modificare le quote di limitazione utilizzando, come mostrato nel passaggio 2. helm install
Per concedere al tuo pod Amazon EKS l'accesso ai segreti in Secrets Manager
-
Crea una politica di autorizzazioni che conceda
secretsmanager:GetSecretValue
esecretsmanager:DescribeSecret
autorizzi i segreti a cui il pod deve accedere. Per un esempio di policy, consulta Esempio: autorizzazione a leggere e descrivere singoli segreti. -
Crea un provider OpenID Connect (OIDC) IAM per il cluster se non ne è già presente uno. Per ulteriori informazioni, consulta Creare un provider IAM OIDC per il tuo cluster nella Amazon EKS User Guide.
-
Crea un ruolo IAM per l'account di servizio e allega la policy ad esso. Per ulteriori informazioni, consulta Creare un ruolo IAM per un account di servizio nella Amazon EKS User Guide.
-
Se utilizzi un cluster Amazon EKS privato, assicurati che il VPC in cui si trova il cluster abbia un AWS STS endpoint. Per informazioni sulla creazione di un endpoint, consulta Interface VPC endpoints nella AWS Identity and Access Management Guida per l'utente.
Fase 2: Installare e configurare l'ASCP
L'ASCP è disponibile GitHub nel repository secrets-store-csi-provider-aws
Durante l'installazione, è possibile configurare l'ASCP per utilizzare un endpoint FIPS. Per un elenco di endpoint, consulta AWS Secrets Manager endpoint.
Per installare l'ASCP utilizzando Helm
Per assicurarti che il repository punti ai grafici più recenti, usa
helm repo update.
-
Aggiungi la tabella dei driver CSI di Secrets Store.
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
-
Installare il grafico. Per configurare la limitazione, aggiungi il seguente flag:
--set-json 'k8sThrottlingParams={"qps": "
<number of queries per second>
", "burst": "<number of queries per second>
"}'helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver
-
Aggiungi il grafico ASCP.
helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
-
Installare il grafico. Per utilizzare un endpoint FIPS, aggiungete il seguente flag:
--set useFipsEndpoint=true
helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
Da installare utilizzando lo YAML nel repository
Usa i seguenti comandi.
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts helm install -n kube-system csi-secrets-store secrets-store-csi-driver/secrets-store-csi-driver kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml
Fase 3: Identifica quali segreti montare
Per determinare quali segreti l'ASCP monta in Amazon EKS come file sul file system, è necessario creare un file SecretProviderClass YAML. SecretProviderClass
Elenca i segreti da montare e il nome del file con cui montarli. La SecretProviderClass
deve trovarsi nello stesso spazio dei nomi del pod Amazon EKS a cui fa riferimento.
Gli esempi seguenti mostrano come usare SecretProviderClass
per descrivere i segreti che desideri montare e come denominare i file montati nel pod Amazon EKS.
Esempi:
Esempio: montaggio di segreti per nome o ARN
Il seguente esempio mostra un SecretProviderClass
che monta tre file in Amazon EKS:
Un segreto specificato dall'ARN completo.
Un segreto specificato dal nome.
Una versione specifica di un segreto.
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "arn:aws:secretsmanager:us-east-2:
111122223333
:secret:MySecret2-d4e5f6" - objectName: "MySecret3" objectType: "secretsmanager" - objectName: "MySecret4" objectType: "secretsmanager" objectVersionLabel: "AWSCURRENT"
Esempio: montaggio di coppie chiave/valore da un segreto
Il seguente esempio mostra un SecretProviderClass
che monta tre file in Amazon EKS:
Un segreto specificato dall'ARN completo.
La
username
coppia chiave/valore dallo stesso segreto.La
password
coppia chiave/valore dallo stesso segreto.
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "arn:aws:secretsmanager:us-east-2:
111122223333
:secret:MySecret-a1b2c3" jmesPath: - path: username objectAlias: dbusername - path: password objectAlias: dbpassword
Esempio: definizione di una Regione di failover per un segreto multiregione
Per garantire la disponibilità durante le interruzioni della connettività o per le configurazioni del ripristino di emergenza, ASCP supporta una funzionalità di failover automatizzato per recuperare i segreti da una Regione secondaria.
L'esempio seguente mostra una SecretProviderClass
che recupera un segreto replicato in più Regioni. In questo esempio, l'ASCP tenta di recuperare il segreto sia da us-east-1
che da us-east-2
. Se una delle Regioni restituisce un errore 4xx, ad esempio per un problema di autenticazione, l'ASCP non installa nessuno dei due segreti. Se il segreto viene recuperato correttamente da us-east-1
, l'ASCP monta tale valore del segreto. Se il segreto non viene recuperato correttamente da us-east-1
, ma viene correttamente recuperato da us-east-2
, l'ASCP monta tale valore del segreto.
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "MySecret"
Esempio: scelta di un segreto di failover da montare
L'esempio seguente mostra una SecretProviderClass
che specifica quale segreto montare in caso di failover. Il segreto di failover non è una replica. In questo esempio, l'ASCP tenta di recuperare i due segreti specificati da objectName
. Se uno dei due restituisce un errore 4xx, ad esempio per un problema di autenticazione, l'ASCP non installa nessuno dei due segreti. Se il segreto viene recuperato correttamente da us-east-1
, l'ASCP monta tale valore del segreto. Se il segreto non viene recuperato correttamente da us-east-1
, ma viene correttamente recuperato da us-east-2
, l'ASCP monta tale valore del segreto. Il file montato in Amazon EKS è denominato MyMountedSecret
.
apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: region: us-east-1 failoverRegion: us-east-2 objects: | - objectName: "arn:aws:secretsmanager:us-east-1:
111122223333
:secret:MySecret-a1b2c3" objectAlias: "MyMountedSecret" failoverObject: - objectName: "arn:aws:secretsmanager:us-east-2:111122223333
:secret:MyFailoverSecret-d4e5f6"
Passaggio 4: installa i segreti come file nel pod Amazon EKS
Per montare segreti in Amazon EKS
-
Applica il
SecretProviderClass
al pod con il comandokubectl apply -f ExampleSecretProviderClass.yaml
. -
Distribuisci il tuo pod con il comando
kubectl apply -f ExampleDeployment.yaml
. L'ASCP monta i file.
Risoluzione dei problemi
È possibile visualizzare la maggior parte degli errori descrivendo l'implementazione del pod.
Per visualizzare i messaggi di errore per il container
-
È possibile ottenere un elenco di nomi di pod con il comando seguente. Se non si sta utilizzando lo spazio dei nomi predefinito, utilizzare
-n <NAMESPACE>
.kubectl get pods
-
Per descrivere il pod, nel comando seguente, per
<PODID>
utilizzare l'ID pod dai pod trovati nel passaggio precedente. Se non si sta utilizzando lo spazio dei nomi predefinito, utilizzare-n <NAMESPACE>
.kubectl describe pod/
<PODID>
Come visualizzare gli errori per l'ASCP
-
Per trovare maggiori informazioni nei log del provider, nel comando seguente,
usa l'ID del csi-secrets-store-provider pod -aws. <PODID>
kubectl -n kube-system get pods kubectl -n kube-system logs pod/
<PODID>