As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Use segredos do AWS Secrets Manager no Amazon Elastic Kubernetes Service
Para mostrar segredos do Secrets Manager, como arquivos montados em pods do Amazon EKS, você pode usar o AWSSecrets and Configuration Provider (ASCP) para o Driver da CSI do armazenamento de segredos do Kubernetes
Se você usar um cluster privado do Amazon EKS, garanta que a VPC na qual o cluster está tenha um endpoint do Secrets Manager. O driver CSI do Secrets Store usa o endpoint para fazer chamadas para o Secrets Manager. Para obter mais informações sobre como criar um endpoint, consulte Endpoint da VPC.
Se você usar a alternância automática do Secrets Manager para seus segredos, também poderá usar o recurso de reconciliador de alternância do driver da CSI do armazenamento de segredos para garantir que está recuperando o segredo mais recente do Secrets Manager. Para obter mais informações, consulte Alternância automática de conteúdos montados e segredos do Kubernetes sincronizados
Tópicos
Etapa 1: configurar o controle de acesso
O ASCP recupera a identidade de pods do Amazon EKS e a substitui por um perfil do IAM. Você define permissões em uma política do IAM para esse perfil do IAM. Quando o ASCP assume o perfil do IAM, ele obtém acesso aos segredos que você autorizou. Outros contêineres não podem acessar os segredos, a menos que você também os associe ao perfil do IAM.
Se as chamadas do ASCP para pesquisar a região e o perfil do IAM associadas ao pod forem limitadas pelo Kubernetes, será possível alterar as cotas de controle de utilização usando helm install
, conforme mostrado na Etapa 2.
Para conceder ao seu pod do Amazon EKS acesso aos segredos no Secrets Manager
-
Crie uma política de permissões que conceda as permissões
secretsmanager:GetSecretValue
esecretsmanager:DescribeSecret
aos segredos que o pod precisa acessar. Para visualizar um exemplo de política, consulte Exemplo: permissão para ler e descrever segredos individuais. -
Crie um provedor IAM OIDC Connect (OIDC) para o cluster, se você ainda não tiver um. Para obter mais informações, consulte Criação de um provedor IAM OIDC para o seu cluster no Guia do Usuário do Amazon EKS.
-
Crie um perfil do IAM para conta de serviço e anexe a política a ele. Para obter mais informações, consulte Criação de um perfil do IAM para uma conta de serviço no Guia do usuário do Amazon EKS.
-
Se você usar um cluster privado do Amazon EKS, garanta que a VPC na qual o cluster se encontra tenha um endpoint do AWS STS. Para obter informações sobre a criação de um endpoint, consulte Endpoints da VPC da interface no Guia do usuário do AWS Identity and Access Management.
Etapa 2: instalar e configurar o ASCP
O ASCP está disponível no GitHub no repositório secrets-store-csi-driver-provider-aws
Durante a instalação, é possível configurar o ASCP para usar um endpoint do FIPS. Para uma lista de endpoints , consulte AWS Secrets Manager endpoints.
Para instalar o ASCP usando o Helm
Para garantir que o repositório esteja apontando para os gráficos mais recentes, use
helm repo update.
-
Adicione o gráfico de driver CSI do armazenamento de segredos.
helm repo add secrets-store-csi-driver https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
-
Instale o chart. Para configurar o controle de utilização, adicione o sinalizador a seguir:
--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
-
Adicione o gráfico ASCP.
helm repo add aws-secrets-manager https://aws.github.io/secrets-store-csi-driver-provider-aws
-
Instale o chart. Para usar um endpoint do FIPS, adicione o sinalizador a seguir:
--set useFipsEndpoint=true
helm install -n kube-system secrets-provider-aws aws-secrets-manager/secrets-store-csi-driver-provider-aws
Para instalar usando o YAML no repositório
Use os seguintes comandos.
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
Etapa 3: identificar quais segredos montar
Para determinar quais segredos o ASCP monta no Amazon EKS como arquivos no sistema de arquivos, você cria um arquivo YAML SecretProviderClass. O SecretProviderClass
lista os segredos a serem montados e o nome do arquivo no qual montá-los. OSecretProviderClass
deve estar no mesmo namespace que o pod Amazon EKS que ele faz referência.
Os exemplos a seguir mostram como usar o SecretProviderClass
para descrever os segredos que você deseja montar e como nomear os arquivos montados no pod do Amazon EKS.
Exemplos:
Exemplo: montar segredos por nome ou ARN
O exemplo a seguir mostra um SecretProviderClass
que monta três arquivos no Amazon EKS:
Um segredo especificado por um ARN completo.
Um segredo especificado pelo nome.
Uma versão específica de um segredo.
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"
Exemplo: montar pares de chave/valor com base em um segredo
O exemplo a seguir mostra um SecretProviderClass
que monta três arquivos no Amazon EKS:
Um segredo especificado por um ARN completo.
O par de chave-valor
username
do mesmo segredo.O par de chave-valor
password
do mesmo segredo.
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
Exemplo: definir uma região de failover para um segredo multirregional
Para proporcionar disponibilidade durante interrupções de conectividade ou para configurações de recuperação de desastres, o ASCP oferece suporte a um recurso de failover automatizado para recuperar segredos de uma região secundária.
O exemplo a seguir mostra um SecretProviderClass
que recupera um segredo que é replicado em várias regiões. Neste exemplo, o ASCP tenta recuperar o segredo de us-east-1
e us-east-2
. Se qualquer uma das regiões retornar um erro 4xx (p. ex., para um problema de autenticação), o ASCP não montará nenhum segredo. Se o segredo for recuperado com êxito de us-east-1
, o ASCP montará o valor desse segredo. Se o segredo não for recuperado com êxito de us-east-1
, mas for recuperado com êxito de us-east-2
, o ASCP montará o valor desse segredo.
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"
Exemplo: escolher um segredo de failover para montar
O exemplo a seguir mostra um SecretProviderClass
que especifica qual segredo montar em caso de failover. O segredo de failover não é uma réplica. Neste exemplo, o ASCP tenta recuperar os dois segredos especificados por objectName
. Se qualquer um deles retornar um erro 4xx (p. ex., para um problema de autenticação), o ASCP não montará nenhum segredo. Se o segredo for recuperado com êxito de us-east-1
, o ASCP montará o valor desse segredo. Se o segredo não for recuperado com êxito de us-east-1
, mas for recuperado com êxito de us-east-2
, o ASCP montará o valor desse segredo. O arquivo montado no Amazon EKS tem o nome 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"
Etapa 4: montar os segredos como arquivos no pod do Amazon EKS
As instruções a seguir mostram como montar segredos como arquivos usando exemplos de arquivos YAML: ExampleSecretProviderClass.yaml
Para montar segredos no Amazon EKS
-
Aplique
SecretProviderClass
ao pod com o comandokubectl apply -f ExampleSecretProviderClass.yaml
. -
Implante seu pod com o comando
kubectl apply -f ExampleDeployment.yaml
. O ASCP monta os arquivos.
Solução de problemas
É possível visualizar a maioria dos erros ao descrever a implantação do pod.
Para ver mensagens de erro para o contêiner
-
Obtenha uma lista de nomes de pods com o comando a seguir. Se você não estiver usando o namespace padrão, use
-n <NAMESPACE>
.kubectl get pods
-
Para descrever o pod, no comando a seguir, para
<PODID>
use o ID do pod dos pods encontrados na etapa anterior. Se você não estiver usando o namespace padrão, use-n <NAMESPACE>
.kubectl describe pod/
<PODID>
Para ver erros para o ASCP
-
Para encontrar mais informações nos logs do provedor, no comando a seguir, para
<PODID>
Use a ID do pode csi-secrets-store-provedor-aws.kubectl -n kube-system get pods kubectl -n kube-system logs pod/
<PODID>