De nombreux scénarios métier, tels que la connexion de charges de travail à des bases de données back-end ou la validation de requêtes client, nécessitent le stockage d'informations sensibles (noms d'utilisateur, mots de passe, certificats). Pour éviter les fuites de données, nous vous recommandons d'utiliser des secrets dans votre cluster Alibaba Cloud Container Compute Service (ACS) afin de gérer ces informations. Cette rubrique explique comment créer un secret dans la console Container Compute Service, puis l'utiliser en le montant comme volume ou en l'exposant comme variable d'environnement.
Prérequis
Le pod et le secret doivent se trouver dans le même cluster et le même namespace.
Vous avez établi une connexion à un cluster Kubernetes via kubectl.
Créer un secret
Cet exemple illustre la création d'un secret nommé secret-test.
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
Sur la page , cliquez sur .
-
Sélectionnez un modèle d'exemple ou personnalisez le contenu YAML, puis cliquez sur .
Le modèle YAML suivant permet de créer un secret.
apiVersion: v1 kind: Secret metadata: name: secret-test type: Opaque data: username: YWRtaW4= # The plaintext is admin. Encode it in Base64. password: MTIzNDU= # The plaintext is 12345. Encode it in Base64.
Pour créer un secret au moyen des formulaires de la console plutôt qu'en YAML, consultez la rubrique Créer un secret.
Utiliser un secret comme volume
Kubectl
Vous pouvez monter un secret sous forme de fichiers dans un pod. Dans cet exemple, les clés username et password du secret secret-test sont montées comme fichiers dans le répertoire /srt.
-
Créez un fichier nommé example0.yaml et copiez-y le contenu suivant.
apiVersion: v1 kind: Pod metadata: name: pod0 spec: containers: - name: redis image: redis volumeMounts: - name: srt mountPath: "/srt" readOnly: true volumes: - name: srt secret: secretName: secret-test -
Créez le pod.
kubectl apply -f example0.yaml -
Vérifiez que le secret est bien monté.
kubectl describe pod pod0 | grep -A 4 VolumesRésultat attendu :
Volumes: srt: Type: Secret (a volume populated by a Secret) SecretName: secret-test Optional: false
Console
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
-
Sur la page , cliquez sur .
RemarquePour obtenir une description détaillée des paramètres, consultez la rubrique Créer une charge de travail sans état (deployment).
Dans l'onglet , configurez les paramètres selon vos besoins, puis cliquez sur .
-
Dans l'onglet , sous la section , cliquez sur . Définissez le paramètre PV type sur secret. Pour le champ mount source, sélectionnez le secret créé précédemment. Dans le champ container path, saisissez le chemin d'accès souhaité dans le conteneur. Une fois ces informations configurées, cliquez sur .
Voici un exemple de configuration.
Pour mount source, sélectionnez
secret-test. Pour container path, saisissez/srt. Dans l'onglet , configurez les paramètres et cliquez sur .
Utiliser un secret comme variables d'environnement
Choisissez l'une des méthodes suivantes.
Kubectl
Cet exemple expose les clés username et password du secret secret-test sous forme de variables d'environnement dans le pod.
-
Créez un fichier nommé example1.yaml et copiez-y le contenu suivant.
apiVersion: v1 kind: Pod metadata: name: pod1 spec: containers: - name: redis image: redis env: - name: USERNAME valueFrom: secretKeyRef: name: secret-test key: username - name: PASSWORD valueFrom: secretKeyRef: name: secret-test key: password -
Créez le pod.
kubectl apply -f example1.yaml -
Vérifiez que les variables d'environnement sont correctement définies.
kubectl describe pod pod1 | grep -A 2 EnvironmentRésultat attendu :
Environment: USERNAME: <set to the key 'username' in secret 'secret-test'> Optional: false PASSWORD: <set to the key 'password' in secret 'secret-test'> Optional: false
Console
Connectez-vous à la console ACS. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez Workloads > Deployments.
-
Sur la page , cliquez sur .
RemarquePour plus d'informations, consultez la rubrique Créer une charge de travail sans état (deployment).
Dans l'onglet , configurez les paramètres selon vos besoins, puis cliquez sur .
Dans l'onglet , sous la section , cliquez sur . Définissez le paramètre type sur . Pour le champ value/value from, sélectionnez le secret créé précédemment. Sélectionnez ensuite la clé à référencer et saisissez un nom pour la variable.