Application sur les notions de bases
Terraform et Ansible
Étape 1 : Installation de Terraform
1. Téléchargez Terraform:
wget https://releases.hashicorp.com/terraform/1.6.0/terraform_1.6.0_linux_amd64.zip
unzip terraform_1.6.0_linux_amd64.zip
sudo mv terraform /usr/local/bin/
2. Vérifiez l'installation :
terraform version
Étape 2 : Installation d'Ansible
1. Installez Ansible:
sudo apt update && sudo apt install ansible -y
2. Vérifiez l'installation :
ansible --version
Étape 3 : Récupération des Valeurs des Variables
1. Variables nécessaires pour Terraform :
KUBERNETES_API_ENDPOINT :
Vous pouvez récupérer l'API endpoint en exécutant la commande suivante sur le nœud maître :
kubectl cluster-info | grep 'Kubernetes' | awk '{print $NF}'
Cela vous donnera une sortie similaire à https://10.0.0.10:6443.
TOKEN :
Le token d'accès peut être récupéré avec la commande suivante :
kubectl get secrets -n kube-system | grep bootstrap-token | awk '{print $1}'
Ensuite, utilisez ce nom de secret pour obtenir le token :
kubectl describe secret <TOKEN_NAME> -n kube-system
PATH_TO_CA_CERT :
Le certificat CA est généralement situé dans le dossier /etc/kubernetes/pki. Vous pouvez le copier sur
votre machine locale ou directement dans votre configuration Terraform en utilisant :
cat /etc/kubernetes/pki/ca.crt > ca.crt
Étape 4 : Utilisation de Terraform
Voici un exemple détaillé d'un fichier Terraform «main.tf » qui utilise les variables récupérées :
provider "kubernetes" {
host = "<KUBERNETES_API_ENDPOINT>"
token = "<TOKEN>"
cluster_ca_certificate = file("<PATH_TO_CA_CERT>")
resource "kubernetes_namespace" "example" {
metadata {
name = "example"
}
}
resource "kubernetes_deployment" "nginx" {
metadata {
name = "nginx-deployment"
namespace = kubernetes_namespace.example.metadata[0].name
spec {
replicas = 2
selector {
match_labels = {
app = "nginx"
}
}
template {
metadata {
labels = {
app = "nginx"
spec {
container {
name = "nginx"
image = "nginx:latest"
port {
container_port = 80
Déploiement avec Terraform
Pour déployer vos ressources Kubernetes avec Terraform, exécutez les commandes suivantes :
terraform init
terraform apply -auto-approve
Utilisation d'Ansible
Vous pouvez utiliser Ansible pour gérer vos applications sur Kubernetes.
Playbook deploy.yml
---
- name: Déployer une application sur Kubernetes
hosts: localhost
tasks:
- name: Appliquer le manifeste Kubernetes pour Nginx Deployment
kubernetes.core.k8s:
state: present
definition:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
namespace: example
spec:
replicas: 2
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
Exécution du Playbook Ansible
Pour exécuter le playbook, utilisez la commande suivante :
ansible-playbook deploy.yml