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?
--export
está obsoleto; ver aquí . Puede usarget -o yaml
sin--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.clusterIP
ymetadata.resourceVersion
en servicio.kubectl get deployment,service,pod yourapp -o yaml --export
Respondiendo a la pregunta @Sinesthetic:
kubectl get deploy --all-namespaces -o yaml --export
El 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.yaml
Desafortunadamente, 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-resources
fuente
kubectl get $(kubectl api-resources | awk '{print $1}' | tail -n +2 | tr '\n' ',' | sed s/,\$//) -o yaml > manifest.yaml
El 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 done
Otro usuario, "acondrat", hizo un script que no usa directorios, lo que facilita la creación de un
kubectl apply -f
posterior.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 done
El ú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 yaml
Puedes ponerlo en algún archivo también
kubectl get service servicename -n <namespace> -o yaml > service.yaml
fuente
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Con el comando anterior, cualquier recurso definido en Kubernetes se puede exportar en
YAML
formato.fuente
Si necesita ver y editar el archivo, utilice:
kubectl edit service servicename
fuente
Puede obtener los archivos yaml de los recursos usando este comando
kubectl -n <namespace> get <resource type> <resource Name> -o yaml
Para meter el secreto en tu vaina,
usa algo como esto
env - valueFrom secretKeyRef: name: secret_name key: key_name
o
envFrom - secretRef: name: secret_name
fuente
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 yaml
fuente