web-dev-qa-db-fra.com

Obtenir YAML pour les services Kubernetes déployés?

J'essaie de déployer mon application sur Kubernetes fonctionnant sous moteur de conteneur Google . .

L'application peut être trouvée à: https://github.com/Industrial/docker-znc .

Le Dockerfile est intégré à une image du registre de conteneurs Google .

J'ai déployé l'application dans Kubernetes via le bouton +. Je n'ai pas le YAML pour ça.

J'ai inséré un secret dans Kubernetes pour le fichier PEM requis par le app.

  1. Comment puis-je obtenir le YAML pour le déploiement , service et Pod créé par Kubernetes en remplissant le formulaire?
  2. Comment puis-je obtenir le secret dans mon pod à des fins d'utilisation?
59
Industrial

Pour obtenir le yaml pour un déploiement (service, pod, secret, etc.):

kubectl get deploy deploymentname -o yaml --export
99
Janos Lenart

pour la 2ème question concernant le secret, cela provient de la documentation de k8s. voir https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets pour plus d'informations.

  1. Créez un secret ou utilisez un existant. Plusieurs pods peuvent référencer le même secret.
  2. Modifiez la définition de votre pod pour ajouter un volume sous spec.volumes []. Nommez le volume et indiquez un champ spec.volumes []. Secret.secretName égal au nom de l'objet secret.
  3. Ajoutez un spéc.containers []. VolumeMounts [] à chaque conteneur qui requiert le secret. Spécifiez spec.containers []. VolumeMounts []. ReadOnly = true et spec.containers []. VolumeMounts []. MountPath vers un nom de répertoire inutilisé dans lequel vous souhaitez que les secrets apparaissent.
  4. Modifiez votre image et/ou votre ligne de commande afin que le programme recherche les fichiers de ce répertoire. Chaque clé de la mappe de données secrète devient le nom de fichier sous mountPath.

J'ai utilisé cela et cela fonctionne bien.

4
JamStar

Comment puis-je obtenir le YAML pour le déploiement, le service et le pod créé par Kubernetes en remplissant le formulaire?

kubectl get deployment,service,pod yourapp -o yaml --export

Répondant à la question @esthétique:

aucune idée de comment le faire pour le cluster complet (tous les déploiements)?

kubectl get deploy --all-namespaces -o yaml --export

Le problème avec cette méthode est que export n'inclut pas l'espace de nom. Donc, si vous voulez exporter plusieurs ressources en même temps, je vous recommande de le faire par espace de noms:

kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yaml

Malheureusement, kubernetes ne supporte toujours pas un vrai obtenir tout commande, vous devez donc lister manuellement le type de ressources que vous voulez exporter. Vous pouvez obtenir une liste des types de ressources avec

kubectl api-resources
3
victortv
  • Comme mentionné ci-dessus, "--export" est une option pour obtenir le manifeste correspondant aux objets kubeernetes
  • Mais "--export" est considéré comme un buggy et il est proposé de le déconseiller.
  • Actuellement, la meilleure option est de faire "-o yaml" ou "-o json" et de supprimer les champs inutiles.
  • La principale différence est que "--export" devrait supprimer les paramètres spécifiques au cluster (par exemple, l'adresse IP du service de cluster d'un service k8s). Mais il est jugé incohérent à cet égard
2

Utilisez cette commande pour obtenir le format yaml de votre service

kubectl get service servicename -o yaml

Vous pouvez aussi le mettre dans un fichier

kubectl get service servicename -o yaml >service.yaml

1
Sachin Arote