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: 80
Solució
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