imagepullsecrets hub failed docker yaml kubernetes google-container-engine google-kubernetes-engine google-container-registry

docker - hub - imagepullsecrets



Obtenga YAML para los servicios de Kubernetes implementados? (4)

Estoy tratando de 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.

  1. ¿Cómo obtengo el YAML para la Implementación , Servicio y Pod creado por Kubernetes al completar el formulario?
  2. ¿Cómo obtengo el secreto en mi Pod para usarlo?

¿Cómo obtengo el YAML para la Implementación, Servicio y Pod creado por Kubernetes al completar el formulario?

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

Respondiendo a @Sinaesthetic question:

¿Alguna idea de cómo hacerlo para el clúster completo (todas las implementaciones)?

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

Lamentablemente, 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


Para obtener el yaml para una implementación (servicio, pod, secreto, etc.):

kubectl get deploy deploymentname -o yaml --export


para la segunda pregunta sobre el secreto, esto es de la documentación de k8s. ver https://kubernetes.io/docs/concepts/configuration/secret/#using-secrets para más información.

  1. Crea un secreto o usa uno existente. Múltiples pods pueden hacer referencia al mismo secreto.
  2. Modifique la definición de su Pod para agregar un volumen en spec.volumes []. Asigne un nombre al volumen, y tenga un campo spec.volumes []. Secret.secretName igual al nombre del objeto secreto.
  3. Agregue un spec.containers []. VolumeMounts [] a cada contenedor que necesite el secreto. Especifique spec.containers []. VolumeMounts []. ReadOnly = true y spec.containers []. VolumeMounts []. MountPath a un nombre de directorio no utilizado donde desea que aparezcan los secretos.
  4. Modifique su imagen y / o línea de comando para que el programa busque archivos en ese directorio. Cada clave en el mapa de datos secretos se convierte en el nombre del archivo bajo mountPath.

He usado esto y funciona bien.


  • Como se mencionó anteriormente, "--export" es una opción para obtener el manifiesto correspondiente a los objetos kubeernetes
  • Pero "--export" se considera defectuoso y hay una propuesta para desaprobarlo
  • Actualmente, la mejor opción es hacer "-o yaml" o "-o json" y eliminar los campos innecesarios
  • La principal diferencia es que se espera que "--export" elimine la configuración específica del clúster (por ejemplo, IP de servicio de clúster de un servicio k8s). Pero se encuentra que es inconsistente a este respecto