Estoy intentando implementar mi aplicación en Kubernetes que se ejecuta en Google Container Engine .
La aplicación se puede encontrar en: https://github.com/Industrial/docker-znc .
El Dockerfile está integrado en una imagen en Google Container Registry .
Implementé la aplicación en Kubernetes a través del botón +. No tengo el YAML para esto.
He insertado un secreto en Kubernetes para el archivo PEM requerido por la aplicación.
- ¿Cómo obtengo el YAML para la implementación , el servicio y el pod creado por Kubernetes al completar el formulario?
- ¿Cómo consigo el Secret en mi Pod para su uso?

--exportestá obsoleto; ver aquí . Puede usarget -o yamlsin--export, aunque eso incluye información sobre el estado actual del objeto, así como la configuración declarativa necesaria para (re) configurar el objeto.spec.clusterIPymetadata.resourceVersionen servicio.kubectl get deployment,service,pod yourapp -o yaml --exportRespondiendo a la pregunta @Sinesthetic:
kubectl get deploy --all-namespaces -o yaml --exportEl problema con este método es que la exportación no incluye el espacio de nombres. Entonces, si desea exportar muchos recursos al mismo tiempo, le recomiendo hacerlo por espacio de nombres:
kubectl get deploy,sts,svc,configmap,secret -n default -o yaml --export > default.yamlDesafortunadamente, kubernetes todavía no admite un verdadero comando get all , por lo que debe enumerar manualmente el tipo de recursos que desea exportar. Puede obtener una lista de tipos de recursos con
kubectl api-resourcesfuente
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) -o yaml > manifest.yamlEl mismo problema se discute en la página de problemas de kubernetes GitHub y el usuario "alahijani" creó un script bash que exporta todos los archivos yaml y los escribe en archivos y carpetas individuales.
Dado que esta pregunta se clasifica bien en Google y como encontré esa solución muy buena, la represento aquí.
Script Bash exportando yaml a subcarpetas:
for n in $(kubectl get -o=name pvc,configmap,serviceaccount,secret,ingress,service,deployment,statefulset,hpa,job,cronjob) do mkdir -p $(dirname $n) kubectl get -o=yaml --export $n > $n.yaml doneOtro usuario, "acondrat", hizo un script que no usa directorios, lo que facilita la creación de un
kubectl apply -fposterior.Bash script exportando yaml a la carpeta actual:
for n in $(kubectl get -o=name pvc,configmap,ingress,service,secret,deployment,statefulset,hpa,job,cronjob | grep -v 'secret/default-token') do kubectl get -o=yaml --export $n > $(dirname $n)_$(basename $n).yaml doneEl último script no incluye la cuenta de servicio.
fuente
Sintaxis para descargar yaml de kubernetes
kubectl get [tipo de recurso] -n [espacio de nombres] [Nombre de recurso] -o yaml> [Nombre de archivo nuevo]
Cree un archivo yaml desde el pod en ejecución:
Cree el archivo yaml del conjunto de réplicas desde el pod en ejecución:
Cree el archivo yaml de implementación desde el pod en ejecución:
fuente
para la segunda pregunta sobre el secreto, esto es de la documentación de k8s. consulte https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets para obtener más información.
He usado esto y funciona bien.
fuente
fuente
Utilice este comando para obtener el formato yaml de su servicio
kubectl get service servicename -n <namespace> -o yamlPuedes ponerlo en algún archivo también
kubectl get service servicename -n <namespace> -o yaml > service.yamlfuente
kubectl -n <namespace> get <resource type> <resource Name> -o yamlCon el comando anterior, cualquier recurso definido en Kubernetes se puede exportar en
YAMLformato.fuente
Si necesita ver y editar el archivo, utilice:
kubectl edit service servicenamefuente
Puede obtener los archivos yaml de los recursos usando este comando
kubectl -n <namespace> get <resource type> <resource Name> -o yamlPara meter el secreto en tu vaina,
usa algo como esto
env - valueFrom secretKeyRef: name: secret_name key: key_nameo
envFrom - secretRef: name: secret_namefuente
Sé que es demasiado viejo para responder, pero espero que alguien lo encuentre útil.
Podemos probar el siguiente comando para obtener una especie de exportación de todos los espacios de nombres:
kubectl get <kind> --all-namespaces --export -o yamlfuente