Introducció
En aquest tema, explorarem com Ansible pot ser utilitzat per gestionar i automatitzar Kubernetes, una plataforma de codi obert per a l'orquestració de contenidors. Aprendrem a desplegar aplicacions, gestionar configuracions i mantenir la infraestructura de Kubernetes utilitzant Ansible.
Objectius
- Entendre com Ansible pot interactuar amb Kubernetes.
- Aprendre a utilitzar mòduls d'Ansible per gestionar recursos de Kubernetes.
- Desplegar aplicacions en un clúster de Kubernetes utilitzant Playbooks d'Ansible.
- Gestionar configuracions i mantenir la infraestructura de Kubernetes amb Ansible.
Requisits Prèvis
- Coneixements bàsics de Kubernetes.
- Coneixements bàsics d'Ansible.
- Un clúster de Kubernetes operatiu.
- Ansible instal·lat en la teva màquina local.
Mòduls d'Ansible per Kubernetes
Ansible proporciona diversos mòduls per interactuar amb Kubernetes. A continuació, es mostren alguns dels mòduls més utilitzats:
| Mòdul | Descripció |
|---|---|
k8s |
Gestiona recursos de Kubernetes (crea, actualitza, elimina). |
k8s_facts |
Obté informació sobre els recursos de Kubernetes. |
k8s_auth |
Gestiona l'autenticació amb el clúster de Kubernetes. |
k8s_scale |
Escala un objecte de Kubernetes (per exemple, un Deployment). |
k8s_service |
Gestiona serveis de Kubernetes. |
Exemple Pràctic: Desplegant una Aplicació en Kubernetes
- Configuració del Fitxer d'Inventari
Primer, hem de definir el nostre inventari. Crearem un fitxer inventory.ini:
- Playbook per Desplegar una Aplicació
Crearem un Playbook d'Ansible per desplegar una aplicació en el nostre clúster de Kubernetes. Crearem un fitxer deploy_app.yml:
---
- name: Desplegar aplicació en Kubernetes
hosts: k8s_cluster
tasks:
- name: Autenticar-se amb el clúster de Kubernetes
k8s_auth:
kubeconfig: /root/.kube/config
- name: Crear un Namespace
k8s:
state: present
definition:
apiVersion: v1
kind: Namespace
metadata:
name: my-namespace
- name: Desplegar un Deployment
k8s:
state: present
definition:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: my-namespace
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
ports:
- containerPort: 80
- name: Crear un Service
k8s:
state: present
definition:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
namespace: my-namespace
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
- Executar el Playbook
Per executar el Playbook, utilitzarem la següent comanda:
Exercici Pràctic
Desplegar una Aplicació amb ConfigMap
-
Objectiu: Desplegar una aplicació en Kubernetes que utilitzi un ConfigMap per a la seva configuració.
-
Passos:
- Crear un ConfigMap.
- Desplegar un Deployment que utilitzi el ConfigMap.
- Crear un Service per exposar l'aplicació.
-
Playbook:
---
- name: Desplegar aplicació amb ConfigMap en Kubernetes
hosts: k8s_cluster
tasks:
- name: Autenticar-se amb el clúster de Kubernetes
k8s_auth:
kubeconfig: /root/.kube/config
- name: Crear un ConfigMap
k8s:
state: present
definition:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-config
namespace: my-namespace
data:
my_key: my_value
- name: Desplegar un Deployment que utilitzi el ConfigMap
k8s:
state: present
definition:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-app
namespace: my-namespace
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-app
image: nginx:latest
ports:
- containerPort: 80
env:
- name: MY_ENV_VAR
valueFrom:
configMapKeyRef:
name: my-config
key: my_key
- name: Crear un Service
k8s:
state: present
definition:
apiVersion: v1
kind: Service
metadata:
name: my-app-service
namespace: my-namespace
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80Solució
Executa el Playbook anterior utilitzant la següent comanda:
Resum
En aquest tema, hem après com utilitzar Ansible per gestionar i automatitzar Kubernetes. Hem vist com utilitzar mòduls d'Ansible per crear i gestionar recursos de Kubernetes, i hem desplegat una aplicació en un clúster de Kubernetes utilitzant un Playbook d'Ansible. També hem realitzat un exercici pràctic per reforçar els conceptes apresos. En el proper tema, explorarem com integrar Ansible amb altres eines de DevOps.
Ansible: De Principiant a Avançat
Mòdul 1: Introducció a Ansible
Mòdul 2: Conceptes bàsics d'Ansible
Mòdul 3: Playbooks
- Introducció als Playbooks
- Escrivint el teu primer Playbook
- Estructura del Playbook
- Variables i Fets
- Condicionals i Bucles
Mòdul 4: Rols
Mòdul 5: Tècniques Avançades de Playbook
Mòdul 6: Ansible Galaxy
Mòdul 7: Ansible Tower
- Introducció a Ansible Tower
- Instal·lant Ansible Tower
- Utilitzant Ansible Tower
- Gestionant Projectes i Inventaris
