Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Utiliser Parameter Store paramètres dans Amazon Elastic Kubernetes Service
Pour afficher les secrets depuis Secrets Manager et les paramètres depuis Parameter Store en tant que fichiers montés dans EKS des pods Amazon, vous pouvez utiliser le fournisseur de AWS secrets et de configuration (ASCP) pour le pilote Kubernetes Secrets Store
Avec leASCP, vous pouvez récupérer les paramètres qui sont stockés et gérés dans Parameter Store. Vous pouvez ensuite utiliser les paramètres dans vos charges de travail exécutées sur AmazonEKS. Si votre paramètre contient plusieurs paires clé-valeur au JSON format, vous pouvez éventuellement choisir de les monter sur AmazonEKS. Ils ASCP peuvent utiliser JMESPath la syntaxe pour interroger les paires clé-valeur de votre paramètre.
Vous pouvez utiliser AWS Identity and Access Management (IAM) les rôles et les politiques pour limiter l'accès à vos paramètres à des EKS pods Amazon spécifiques d'un cluster. Il ASCP récupère l'identité du pod et échange l'identité contre un IAM rôle. ASCPassume le IAM rôle du pod. Ensuite, il peut récupérer les paramètres de Parameter Store qui sont autorisés pour ce rôle.
Pour savoir comment intégrer Secrets Manager à AmazonEKS, consultez la section Utilisation des secrets de Secrets Manager dans Amazon Elastic Kubernetes Service.
Installation du ASCP
Le ASCP est disponible sur GitHub dans le référentiel secrets-store-csi-driver-provider-aws
Pour installer le pilote Kubernetes Secrets Store CSI et le ASCP
-
Pour installer le pilote Kubernetes Secrets StoreCSI, exécutez les commandes suivantes. Pour obtenir des instructions d'installation complètes, consultez la section Installation
dans le manuel des pilotes de Kubernetes Secrets StoreCSI. Pour plus d'informations sur l'installation de Helm, consultez la section Utilisation de Helm avec Amazon EKS. 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
-
Pour installer leASCP, utilisez le YAML fichier dans le GitHub répertoire de déploiement du référentiel. Pour plus d'informations sur l'installation de
kubectl
, consultez Installation dekubectl
.kubectl apply -f https://raw.githubusercontent.com/aws/secrets-store-csi-driver-provider-aws/main/deployment/aws-provider-installer.yaml
Étape 1 : configurer le contrôle d'accès
Pour autoriser votre EKS module Amazon à accéder aux paramètres dans Parameter Store, vous devez d'abord créer une politique qui limite l'accès aux paramètres auxquels le pod a besoin pour accéder. Vous créez ensuite un IAMrôle pour le compte de service et vous y associez la politique. Pour plus d'informations sur la restriction de l'accès aux paramètres de Systems Manager à l'aide de IAM politiques, consultezRestreindre l'accès à Parameter Store paramètres à l'aide IAM de politiques.
Note
Lors de l'utilisation Parameter Store paramètres, l'autorisation ssm:GetParameters
est requise dans la politique.
Il ASCP récupère l'identité du pod et l'échange contre le IAM rôle. ASCPassume le IAM rôle du pod, qui lui donne accès aux paramètres que vous avez autorisés. Les autres conteneurs ne peuvent accéder aux paramètres que si vous les associez également au IAM rôle.
Étape 2 : paramètres de montage dans Amazon EKS
Pour afficher les paramètres dans Amazon EKS comme s'il s'agissait de fichiers du système de fichiers, vous créez un SecretProviderClass
YAML fichier contenant des informations sur vos paramètres et sur la manière de les monter dans le EKS pod Amazon.
SecretProviderClass
Il doit se trouver dans le même espace de noms que le EKS pod Amazon auquel il fait référence.
SecretProviderClass
Le format SecretProviderClass
YAML est le suivant.
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1 kind: SecretProviderClass metadata: name: <NAME> spec: provider: aws parameters:
- parameters
-
Contient les détails de la demande de montage.
- objects
-
Chaîne contenant une YAML déclaration des paramètres à monter. Nous vous recommandons d'utiliser une chaîne YAML multiligne ou un caractère en forme de tube (|).
- objectName
-
Nom convivial du paramètre. Cela devient le nom de fichier du paramètre dans le EKS pod Amazon, sauf si vous le spécifiez
objectAlias
. Dans Parameter Store il doit s'agirName
du paramètre, et il ne peut pas s'agir d'un nom de ressource Amazon complet (ARN). - jmesPath
-
(Facultatif) Une correspondance entre les clés du paramètre JSON codé et les fichiers à monter sur AmazonEKS. L'exemple suivant montre à quoi ressemble un paramètre JSON codé.
{ "username" : "myusername", "password" : "mypassword" }
Les clés sont
username
etpassword
. La valeur associée àusername
estmyusername
et la valeur associée àpassword
estmypassword
.- path
-
La clé dans le paramètre.
- objectAlias
-
Le nom du fichier à monter dans le EKS pod Amazon.
- objectType
-
Dans Parameter Store, ce champ est obligatoire. Utilisez
ssmparameter
. - objectAlias
-
(Facultatif) Le nom de fichier du paramètre dans le EKS pod Amazon. Si vous ne spécifiez pas ce champ,
objectName
apparaît en tant que nom de fichier. - objectVersion
-
(Facultatif) Numéro de version du paramètre. Nous vous recommandons de ne pas utiliser ce champ car vous devez le mettre à jour chaque fois que vous mettez à jour le paramètre. Par défaut, la version la plus récente est utilisée. Dans Parameter Store paramètres, vous pouvez utiliser
objectVersion
ouobjectVersionLabel
pas les deux. - objectVersionLabel
-
(Facultatif) Étiquette du paramètre pour la version. La version par défaut est la plus récente. Dans Parameter Store paramètres, vous pouvez utiliser
objectVersion
ouobjectVersionLabel
pas les deux.
- region
-
(Facultatif) Le Région AWS du paramètre. Si vous n'utilisez pas ce champ, la ASCP région est recherchée à partir de l'annotation sur le nœud. Comme cette recherche ajoute une surcharge aux demandes de montage, nous vous recommandons de fournir la région pour les clusters qui utilisent un grand nombre de pods.
- pathTranslation
-
(Facultatif) Un caractère de substitution unique à utiliser si le nom de fichier (
objectName
ouobjectAlias
) contient le caractère séparateur de chemin, tel que la barre oblique (/) sous Linux. Si le nom d'un paramètre contient le séparateur de chemin, il est ASCP impossible de créer un fichier monté portant ce nom. Au lieu de cela, vous pouvez remplacer le caractère séparateur de chemin d'accès par un autre caractère en le saisissant dans ce champ. Si vous n'utilisez pas ce champ, la valeur par défaut est le trait de soulignement (_). Par exemple,My/Path/Parameter
se monte en tant queMy_Path_Parameter
.Pour empêcher la substitution de caractères, entrez la chaîne
False
.
Exemple
L'exemple de configuration suivant montre un SecretProviderClass
avec un Parameter Store ressource de paramètres.
apiVersion: secrets-store.csi.x-k8s.io/v1alpha1 kind: SecretProviderClass metadata: name: aws-secrets spec: provider: aws parameters: objects: | - objectName: "MyParameter" objectType: "ssmparameter"
Étape 3 : mettre à jour le déploiement YAML
Mettez à jour votre déploiement YAML pour utiliser le secrets-store.csi.k8s.io
pilote et référencer la SecretProviderClass
ressource créée à l'étape précédente. Cela garantit que votre cluster utilise le CSI pilote Secrets Store.
Vous trouverez ci-dessous un exemple de déploiement YAML utilisant un SecretProviderClass
nomaws-secrets
.
volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: "aws-secrets"
Tutoriel : Création et montage d'un paramètre dans un EKS module Amazon
Dans ce didacticiel, vous allez créer un exemple de paramètre dans Parameter Store, puis vous montez le paramètre dans un EKS pod Amazon et vous le déployez.
Avant de commencer, installez leASCP. Pour de plus amples informations, veuillez consulter Installation du ASCP.
Pour créer et monter un secret
-
Définissez le nom Région AWS et le nom de votre cluster en tant que variables shell afin de pouvoir les utiliser dans les
bash
commandes. Dansregion
, saisissez l' Région AWS endroit où s'exécute votre EKS cluster Amazon. Dansclustername
, entrez le nom de votre cluster.REGION=
region
CLUSTERNAME=clustername
-
Créez un paramètre de test.
aws ssm put-parameter --name "MyParameter" --value "EKS parameter" --type String --region "$REGION"
-
Créez une politique de ressource pour le pod qui limite son accès au paramètre que vous avez créé à l'étape précédente. Dans
, utilisez ARN le paramètre. Enregistrez la politique ARN dans une variable shell. Pour récupérer le paramètreARN, utilisezparameter-arn
get-parameter
.POLICY_ARN=$(aws --region "$REGION" --query Policy.Arn --output text iam create-policy --policy-name nginx-parameter-deployment-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["ssm:GetParameter", "ssm:GetParameters"], "Resource": ["
parameter-arn
"] } ] }') -
Créez un fournisseur IAM OpenID Connect (OIDC) pour le cluster si vous n'en avez pas déjà un. Pour plus d'informations, voir Création d'un IAM OIDC fournisseur pour votre cluster.
eksctl utils associate-iam-oidc-provider --region="$REGION" --cluster="$CLUSTERNAME" --approve # Only run this once
-
Créez le compte de service utilisé par le pod et associez la politique de ressources que vous avez créée à l'étape 3 à ce compte de service. Pour ce didacticiel, pour le nom du compte de service, vous utilisez nginx-deployment-sa. Pour plus d'informations, voir Créer un IAM rôle pour un compte de service.
eksctl create iamserviceaccount --name nginx-deployment-sa --region="$REGION" --cluster "$CLUSTERNAME" --attach-policy-arn "$POLICY_ARN" --approve --override-existing-serviceaccounts
-
Créez la
SecretProviderClass
pour spécifier le paramètre à monter dans le pod. La commande suivante utilise l'emplacement de fichier d'un fichierSecretProviderClass
nomméExampleSecretProviderClass.yaml
. Pour plus d'informations sur la création de votre propreSecretProviderClass
, consultez SecretProviderClass.kubectl apply -f ./ExampleSecretProviderClass.yaml
-
Déployez votre pod La commande suivante utilise un fichier de déploiement nommé
ExampleDeployment.yaml
. Pour plus d'informations sur la création de votre propreSecretProviderClass
, consultez Étape 3 : mettre à jour le déploiement YAML.kubectl apply -f ./ExampleDeployment.yaml
-
Pour vérifier que le paramètre a été monté correctement, utilisez la commande suivante et confirmez que votre valeur de paramètre apparaît.
kubectl exec -it $(kubectl get pods | awk '/nginx-deployment/{print $1}' | head -1) cat /mnt/secrets-store/MyParameter; echo
La valeur du paramètre apparaît.
"EKS parameter"
Résolution des problèmes
Vous pouvez afficher la plupart des erreurs en décrivant le déploiement du pod.
Pour afficher les messages d'erreur pour votre conteneur
-
Obtenez une liste de noms de pod à l'aide de la commande suivante. Si vous n'utilisez pas l'espace de noms par défaut, utilisez
-n <NAMESPACE>
.kubectl get pods
-
Pour décrire le module, dans la commande suivante, pour
pod-id
utilisez l'identifiant des pods que vous avez trouvés à l'étape précédente. Si vous n'utilisez pas l'espace de noms par défaut, utilisez-n <NAMESPACE>
.kubectl describe pod/
pod-id
Pour voir les erreurs associées au ASCP
-
Pour trouver plus d'informations dans les journaux des fournisseurs, dans la commande suivante, pour
pod-id
utilisez l'ID du module csi-secrets-store-provider-aws.kubectl -n kube-system get pods kubectl -n kube-system logs pod/
pod-id