GNU/Linux >> Tutoriels Linux >  >> Linux

Créez et stockez des secrets comme des mots de passe, des jetons OAuth et des clés SSH dans Kubernetes

Dans Kubernetes, nous pouvons stocker et gérer des informations sensibles, telles que des mots de passe, des jetons OAuth et des clés ssh à l'aide des secrets Kubernetes. Dans Kubernetes, les secrets peuvent être définis comme des objets Kubernetes. Il est plus sûr de stocker les informations d'identification dans les secrets Kubernetes que dans les pods ou dans les images Docker.

Il existe plusieurs façons de générer des secrets dans Kubernetes :

  1. Création à partir d'un fichier texte
  2. Créer à partir d'un fichier yml

Une fois les secrets disponibles, ils peuvent être utilisés des manières suivantes :

  1. Variable d'environnement
  2. Volume
  3. Utilisation du champ imagePullSecrets

Pour en savoir plus sur les secrets Kubernetes, cliquez ici.

Dans cet article, nous allons créer des secrets à l'aide du fichier .yml et y accéder dans le pod en tant que variables d'environnement.

Prérequis

  1. Cluster Kubernetes avec au moins 1 nœud de travail.
    Si vous souhaitez apprendre à créer un cluster Kubernetes, cliquez ici. Ce guide vous aidera à créer un cluster Kubernetes avec 1 maître et 2 nœuds sur les instances AWS Ubuntu 18l04 EC2.

Ce que nous allons faire

  1. Créer des secrets

Créer des secrets

Pour créer de nouveaux secrets dans Kubernetes, chiffrez-les d'abord comme indiqué ci-dessous à l'aide de la méthode d'encodage base64.

Ici,

nom d'utilisateur=rahul et mot de passe=howtoforge123.

echo -n "rahul" | base64

echo -n "howtoforge123" | base64

Dans la capture d'écran ci-dessus, on peut voir que les informations d'identification ont été chiffrées.

Créez un fichier de définition secret comme suit, ce fichier contient la valeur base64 des informations d'identification générées à l'étape ci-dessus.

vim mon-secret.yml

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  username: cmFodWw=
  password: aG93dG9mb3JnZTEyMw==

Maintenant, créons un pod dans lequel ces secrets et sont accessibles.

Créez un nouveau fichier qui contiendra la définition de pod comme suit.

vim mon-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: secrets-in-pod
spec:
  containers:
    - name: my-container
      image: redis
      env:
        - name: SECRET_USERNAME
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: username
        - name: SECRET_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mysecret
              key: password
  restartPolicy: Never

Créons des secrets à l'aide de la commande suivante.

kubectl create -f mon-secret.yml

kubectl devient secret | grep monsecret

Maintenant, créez un pod en utilisant la définition de pod suivante pour accéder aux secrets créés précédemment.

kubectl create -f mon-pod.yml

kubectl get pods | grep secrets-dans-pod

Connectez-vous au pod à l'aide de la commande suivante.

kubectl obtenir des pods | grep secrets-dans-pod

kubectl exec -it secrets-in-pod /bin/bash

Une fois connecté au pod, les secrets sont accessibles en tant que variable d'environnement à l'aide de la commande suivante.

echo $SECRET_USERNAME

echo $SECRET_PASSWORD

Dans la capture d'écran ci-dessus, on peut voir que les secrets sont disponibles en tant que variables d'environnement.

Pour voir les détails de l'objet secret, exécutez la commande suivante.

kubectl devient secret | grep monsecret

kubectl get secret mysecret -o yaml

Ces secrets peuvent également être décodés depuis la ligne de commande à l'aide des commandes suivantes.

kubectl get secrets/mysecret --template={{.data.username}} | base64 -d

kubectl get secrets/mysecret --template={{.data.password}} | base64 -d

Dans la capture d'écran ci-dessus, on peut voir que les identifiants sont extraits des secrets et déchiffrés sur la ligne de commande à l'aide de base64.

Conclusion

Dans cet article, nous avons vu les étapes pour créer et stocker des secrets dans Kubernetes à partir d'un fichier .yml. Nous avons essayé d'accéder à ces secrets dans Pod en tant que variables d'environnement. Nous avons également vu la commande pour déchiffrer les secrets sur la ligne de commande.


Linux
  1. Comment configurer des clés SSH

  2. SSH - Générer et travailler avec des clés ssh

  3. Comment convertir un fichier PPK en clés OpenSSH et se connecter en utilisant SSH sous Linux ?

  4. Autorisations SSH et répertoire personnel ?

  5. Ssh - La différence entre une clé Openssh et une clé Putty ?

Comment créer un StatefulSet dans Kubernetes

Configurer Katello - Télécharger des référentiels, créer des environnements et des clés d'activation

Comment créer et gérer des pods Kubernetes sous Linux

Comment créer un alias SSH sous Linux

Comment créer de nouveaux utilisateurs dans OpenShift avec htpasswd et OAuth

Tunnellisation et proxy SSH