Dans cet article, nous allons voir comment utiliser Let’s Encrypt pour générer des certificats SSL pour un site WordPress hébergé sur Rancher. Nous allons utiliser cert-manager pour automatiser le processus de renouvellement des certificats.
Table of Contents
Prérequis
Avant de commencer, vous devez avoir les éléments suivants en place:
- Un cluster Rancher fonctionnel
- Un nom de domaine pour votre site WordPress
- Un service DNS configuré pour pointer vers l’IP de votre cluster Rancher
Installation de cert-manager
Pour installer cert-manager, vous devez d’abord ajouter le dépôt Helm de cert-manager à votre cluster Rancher:
helm repo add jetstack https://charts.jetstack.io
Ensuite, utilisez Helm pour installer cert-manager en utilisant la commande suivante:
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--version v1.2.0
Cela va installer cert-manager dans le namespace « cert-manager » de votre cluster Rancher.
Note: Assurez-vous que vous utilisez la dernière version de cert-manager
Configuration de cert-manager
Une fois cert-manager installé, vous devez configurer un « ClusterIssuer » pour utiliser Let’s Encrypt. Pour ce faire, créez un fichier nommé « letsencrypt-issuer.yaml » avec le contenu suivant.
Note: Si vous utilisez un autre fournisseur de DNS, vous devez adapter cette configuration en conséquence.
Pour Route53
apiVersion: cert-manager.io/v1alpha2 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: email: votre_adresse_email server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-prod solvers: - dns01: route53: accessKeyID: AKIAIOSFODNN7EXAMPLE secretAccessKeySecretRef: key: access_key name: aws-secret hostedZoneID: Z1D633PJN98FT9
Ce fichier configure cert-manager pour utiliser Let’s Encrypt avec votre adresse email et une clé privée stockée dans un secret nommé « letsencrypt-prod ». Il utilise également Route53 pour vérifier les propriétés de domaine.
Pour OVH
apiVersion: cert-manager.io/v1alpha2 kind: ClusterIssuer metadata: name: letsencrypt-prod spec: acme: email: votre_adresse_email server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-prod solvers: - dns01: ovh: endpoint: ovh-eu applicationKey: "application_key" applicationSecret: "application_secret" consumerKey: "consumer_key"
Ce fichier configure cert-manager pour utiliser Let’s Encrypt avec votre adresse email et une clé privée stockée dans un secret nommé « letsencrypt-prod ». Il utilise également OVH pour vérifier les propriétés de domaine.
Notez: Il faut remplacer les valeurs « application_key », »application_secret » et « consumer_key » par les valeurs obtenues depuis votre compte OVH.
Pour créer le secret, utilisez la commande suivante :
kubectl create secret generic letsencrypt-prod --from-file=tls
Déploiement de WordPress avec un certificat Let’s Encrypt
Maintenant que cert-manager est configuré, vous pouvez déployer WordPress avec un certificat Let’s Encrypt. Pour ce faire, créez un fichier nommé « wordpress-letsencrypt.yaml » avec le contenu suivant:
apiVersion: v1 kind: Service metadata: name: wordpress labels: app: wordpress spec: ports: - name: http port: 80 targetPort: 80 selector: app: wordpress --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress spec: replicas: 1 selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: containers: - name: wordpress image: wordpress:latest ports: - name: http containerPort: 80 env: - name: WORDPRESS_DB_HOST value: wordpress-mysql - name: WORDPRESS_DB_USER value: wordpress - name: WORDPRESS_DB_PASSWORD value: wordpress - name: WORDPRESS_DB_NAME value: wordpress volumes: - name: wordpress-data persistentVolumeClaim: claimName: wordpress-data --- apiVersion: v1 kind: Service metadata: name: wordpress-mysql labels: app: wordpress spec: ports: - name: mysql port: 3306 targetPort: 3306 selector: app: wordpress --- apiVersion: apps/v1 kind: Deployment metadata: name: wordpress-mysql spec: replicas: 1 selector: matchLabels: app: wordpress template: metadata: labels: app: wordpress spec: containers: - name: wordpress-mysql image: mysql:5.7 env: - name: MYSQL_ROOT_PASSWORD value: wordpress - name: MYSQL_DATABASE value: wordpress - name: MYSQL_USER value: wordpress - name: MYSQL_PASSWORD value: wordpress ports: - name: mysql containerPort: 3306 volumeMounts: - name: mysql-data mountPath: /var/lib/mysql volumes: - name: mysql-data persistentVolumeClaim: claimName: mysql-data --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wordpress annotations: cert-manager.io/issuer: "letsencrypt-prod" kubernetes.io/ingress.class: nginx spec: tls: - hosts: - nom_de_domaine.com secretName: nom_de_domaine-tls rules: - host: nom_de_domaine.com http: paths: - path: / pathType: Prefix backend: service: name: wordpress port: name: http
Ce fichier déploie un service WordPress avec un certificat Let’s Encrypt généré par cert-manager, en utilisant l’issuer « letsencrypt-prod » configuré précédemment. Il configure également un ingress pour rediriger les requêtes vers le service WordPress.
Notes: Assurez-vous de remplacer « nom_de_domaine.com » par le nom de domaine de votre site WordPress
Pour déployer WordPress avec cert-manager, utilisez la commande suivante:
kubectl apply -f wordpress-letsencrypt.yaml
Cela va déployer WordPress avec un certificat Let’s Encrypt valide. Cert-manager va automatiquement renouveler le certificat avant qu’il n’expire. Vous n’aurez plus à vous soucier des problèmes de certificat pour votre site WordPress sur Rancher.
En résumé, en utilisant Let’s Encrypt et cert-manager, vous pouvez facilement déployer un site WordPress sur Rancher avec un certificat SSL valide et automatiquement renouvelé. Cela garantit que vous n’aurez plus jamais à vous soucier des problèmes de certificat pour votre site.
L’utilisation de OVH pour la vérification de propriété de domaine vous permet également de générer des certificats pour vos domaines sans avoir besoin d’une autorité de certification externe. Les étapes décrites dans cet article vous aideront à configurer un environnement sécurisé pour votre site WordPress sur Rancher, pour que vous puissiez vous concentrer sur la gestion de votre contenu.