tutorial secret propósito los instalar guia español disponibilidad cuál create controles yaml kubernetes

yaml - secret - kubernetes tutorial español pdf



¿Cómo configurar múltiples comandos en un archivo yaml con Kubernetes? (3)

Mi preferencia es multilinear los argumentos, esto es más simple y fácil de leer. Además, la secuencia de comandos se puede cambiar sin afectar la imagen, solo necesita reiniciar el pod. Por ejemplo, para un volcado de mysql, la especificación del contenedor podría ser algo como esto:

containers: - name: mysqldump image: mysql command: ["/bin/sh", "-c"] args: - echo starting; ls -la /backups; mysqldump --host=... -r /backups/file.sql db_name; ls -la /backups; echo done; volumeMounts: - ...

La razón por la que esto funciona es que yaml en realidad concatena todas las líneas después del "-" en una, y sh ejecuta una cadena larga "eco que comienza; ls ...; echo hecho;".

En este documento oficial, puede ejecutar el comando en un archivo de configuración de yaml:

http://kubernetes.io/v1.1/docs/user-guide/configuring-containers.html

apiVersion: v1 kind: Pod metadata: name: hello-world spec: # specification of the pod’s contents restartPolicy: Never containers: - name: hello image: "ubuntu:14.04" env: - name: MESSAGE value: "hello world" command: ["/bin/sh","-c"] args: ["/bin/echo /"${MESSAGE}/""]

Si quiero ejecutar más de un comando, ¿cómo hacerlo?


Si está dispuesto a usar un Volumen y un ConfigMap, puede montar los datos de ConfigMap como una secuencia de comandos y luego ejecutar esa secuencia de comandos:

--- apiVersion: v1 kind: ConfigMap metadata: name: my-configmap data: entrypoint.sh: |- #!/bin/bash echo "Do this" echo "Do that" --- apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: "ubuntu:14.04" command: - /bin/entrypoint.sh volumeMounts: - name: configmap-volume mountPath: /bin/entrypoint.sh readOnly: true subPath: entrypoint.sh volumes: - name: configmap-volume configMap: defaultMode: 0700 name: my-configmap

Esto limpia un poco la especificación de su pod y permite secuencias de comandos más complejas.

$ kubectl logs my-pod Do this Do that


command: ["/bin/sh","-c"] args: ["command one; command two && command three"]

Explicación: El command ["/bin/sh", "-c"] dice "ejecutar un shell y ejecutar las siguientes instrucciones". Los argumentos se pasan luego como comandos al shell. En shell scripting, un punto y coma separa los comandos, y && ejecuta condicionalmente el siguiente comando si el primero se ejecuta correctamente. En el ejemplo anterior, siempre ejecuta el command one seguido del command two , y solo ejecuta el command three si el command two tuvo éxito.

Alternativa: en muchos casos, algunos de los comandos que desea ejecutar probablemente estén configurando el comando final para ejecutar. En este caso, construir tu propio Dockerfile es el camino a seguir. Mira la directiva RUN en particular.