web-dev-qa-db-fra.com

kops/kubectl - comment importer un état créé sur un autre serveur?

j'ai configuré mon cluster kubernetes à l'aide de kops, et je l'ai fait à partir de la machine locale. Donc, mon répertoire .kube est stocké sur ma machine locale, mais j’ai configuré kops pour le stockage d’état dans s3.

Je suis en train de configurer mon serveur de CI et je veux exécuter mes commandes kubectl à partir de cette boîte. Comment puis-je importer l'état existant sur ce serveur?

6
djt

Pour exécuter la commande kubectl, vous aurez besoin de l'URL apiServer du cluster et des informations d'identification associées pour l'authentification. Ces données sont par convention stockées dans le fichier ~/.kube/config. Vous pouvez également le visualiser via la commande kubectl config view.

Pour pouvoir exécuter kubectl sur votre serveur CI, vous devez vous assurer que le fichier ~/.kube/config contient toutes les informations dont le client kubectl a besoin. 

Avec kops, une solution naïve simple consiste à:

1) installer kops, kubectl sur votre serveur CI

2) configurez les informations d'identification d'accès AWS sur votre serveur CI (via le rôle IAM ou simplement via env vars), assurez-vous qu'il a accès au chemin de votre magasin d'état s3

3) définissez env var pour que Kops puisse accéder à votre cluster:

  export NAME=${YOUR_CLUSTER_NAME}
  export KOPS_STATE_STORE=s3://${YOUR_CLUSTER_KOPS_STATE_STORE}

4) Utilisez la commande d'exportation de kops pour obtenir le kubecfg nécessaire à l'exécution de kubectl

  kops export kubecfg ${YOUR_CLUSTER_NAME}

voir https://github.com/kubernetes/kops/blob/master/docs/cli/kops_export.md

Le fichier ~/.kube/config sur votre serveur CI doit maintenant contenir toutes les informations dont kubectl a besoin pour accéder à votre cluster.

Notez que cela utilisera le compte administrateur par défaut sur votre serveur CI. Pour mettre en place un environnement CI/CD plus sécurisé, vous devez créer une liaison de compte de service à une étendue d'autorisations requise (un espace de noms, un type ou des ressources, par exemple), puis placer ses informations d'identification sur votre ordinateur serveur CI.

10
Parano

.kube/config est à peine un "état", il s’agit simplement d’une configuration client, il est donc possible d’en prendre le contenu (ou sa partie si vous avez plusieurs contextes localement) et de l’utiliser sur une autre machine. C’est-à-dire sauf si vous souhaitez créer un utilisateur dédié (clé/cert) pour CI, auquel cas vous devez créer des informations d’identification distinctes. Si vous utilisez clé/cert, elles doivent être associées à un certificat "sujet" différent. les utilisateurs peuvent être reconnus comme différents