Archivos YAML orientados a Kubernetes.
YAML se utiliza para la configuración de despliegues con Kubernetes. Si se conocen otros formatos de estructura de datos como XML o JSON, este formato se entenderá fácilmente. Un archivo YAML orientado a Kubernetes se utiliza para representar datos. En este caso, los datos de configuración de Kubernetes. Las reglas son las mismas que ya se vieron en Docker Compose
La forma más simple es un listado de pares clave-valor separados por dos puntos + espacio (Es importante el espacio después de los dos puntos):
Fruit: Apple Vegetable: Carrot Liquid: Water Meat: Chicken
Listas
Para representar una matriz se utiliza la clave seguida de dos puntos y en las siguientes lineas un guión con cada uno de los valores:
Fruits: - Apple - Orange - Banana Vegetables: - Carrot - Cauliflower - Tomato
Diccionarios
Para representar un conjunto de propiedades agrupadas bajo un elemento (un diccionario), se coloca la clave y en las siguientes lineas las claves+valor de cada uno de ellos anteponiendo espacios. Siempre el mismo número de espacios para que estén alineados:
Banana: Calories: 105 Fat: 0.4 g Carbs: 27 g Grapes: Calories: 62 Fat: 0.3 g Carbs: 27 g
Listas de diccionarios
Si algunos de los pares clave-valor tuviera diferentes espacios, YAML entendería que son propiedades de los anteriores elementos. Esto daría como resultado un error de sintaxis que le indicará que los valores no están permitidos, ya que el anterior ya tiene un valor. Cada clave puede tener un valor o un listado. Por esta razón, los espacios son importantes en un archivo YAML orientado a Kubernetes.
Si subimos de nivel, podemos tener listas que tienen diccionarios que tienen propiedades:
Fruits: - Banana: Calories: 105 Fat: 0.4 g Carbs: 27 g - Grapes: Calories: 62 Fat: 0.3 g Carbs: 27
Vistos los ejemplo, podem
os resumir que existen tres tipos de estructuras: Listas, Diccionarios y listas de diccionarios. El diccionario es una colección desordenada, mientras que las listas son colecciones ordenadas. Varios elementos con las mismas propiedades se pueden representar con esos elementos en diferente orden, serían los mismos. Sin embargo, si dos listas tienen los mismos elementos, pero en orden diferente, las listas son diferentes.
Por último decir que el hash (#) es el caracter de comentario, cualquier linea que comience con un # será ignorada.
Configuración de PODs con YAML orientado a Kubernetes
Kubernetes utiliza archivos YAML como entradas para la creación de objetos como POD, réplicas, servicios de implementación, etc. Todos estos siguen una estructura similar. El archivo de definición de Kubernetes siempre contiene 4 campos de nivel superior: La versión de API, tipo, metadatos y especificaciones. Estas son las propiedades de nivel superior o nivel raíz. Estos también son campos obligatorios, por lo que deben estar en el archivo de configuración:
- apiVersion: Esta es la versión de la API de Kubernetes que se utiliza para crear los objetos. Dependiendo de lo que se esté tratando de crear, se debe usar la versión API correcta. Los valores posibles para este campo son v1, apps, beta, etc…
- kind: Es el tipo de objeto que se quiere crear, puede ser un POD (pod), una replica (ReplicaSet), una implementación (Deployment) o un servicio (Service).
- metadata: Son datos sobre el objeto, como sus etiquetas, su nombre, etc. Tiene estructura de un diccionario. Por lo tanto, todo lo que se encuentra debajo de los metadatos está un poco a la derecha.
- spec:
Especifica el objeto que vamos a crear. La información es diferente para diferentes objetos, por lo que es importante comprender o consultar la sección de documentación para obtener el formato correcto para cada uno. Si solo creamos un POD con un solo contenedor spec sería un diccionario con una serie de propiedades específicas como son «containers» (lista de nombres e imagenes)
apiVersion: v1 kind: Pod metadata: name: myapp-pod labels: app: myapp type: front-end spec: containers: - name: nginx-container image: nginx env: - name: VARIABLE_ENTORNO value: valor
Ejecución
Una vez creado el archivo desde la linea de comando ejecutar «kubectl create -f pod-definition.yml» para que Kubernetes cree el POD. Usando el comando «kubectl get pods» se puede ver la lista de pods disponibles. Para ver información detallada sobre el pod se ejecuta el comando «kubectl describe pod myapp-pod». Mostrará las etiquetas, los contenedores que forman parte de él y los eventos asociados.
A la hora de crear un archivo YAML orientado a Kubernetes se puede usar una herramienta de validación como esta: https://kubeyaml.com/