[Auto TLS sur k8s] ClusterIssuer cert-manager pour OVH
... / [Auto TLS sur k8s] Cluste...
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

[Auto TLS sur k8s] ClusterIssuer cert-manager pour OVH

Par
Community Deleted user
Créé le 2017-11-18 22:45:38 (edited on 2024-09-04 12:13:48) dans Conteneurs et Orchestration

Bonjour,

Je possède un Managed k8s cluster chez OVH, avec Istio et Knative Serving. J'ai réussi à obtenir un certificat TLS pour me connecter via HTTPS à la main via buzut.net/certbot-challenge-dns-ovh-wildcard/ avec DNS-01. Voici les étapes :

étape 1 : récupéré dns_ovh_endpoint, dns_ovh_application_key, dns_ovh_application_secret et dns_ovh_consumer_key sur https://api.ovh.com/createToken/ dans un fichier ~/.ovhapi

étape 2 : `sudo certbot certonly --dns-ovh --dns-ovh-credentials ~/.ovhapi -d "*.default.mydomain.fr`

étape 3 : kubectl create --namespace istio-system secret tls istio-ingressgateway-certs \
--key /etc/letsencrypt/live/default.mydomain.fr/privkey.pem \
--cert /etc/letsencrypt/live/default.mydomain.fr/fullchain.pem

étape 4 : kubectl edit gateway knative-ingress-gateway --namespace knative-serving
- hosts:
- '*'
port:
name: https
number: 443
protocol: HTTPS
tls:
mode: SIMPLE
privateKey: /etc/istio/ingressgateway-certs/tls.key
serverCertificate: /etc/istio/ingressgateway-certs/tls.crt

Cependant je n'arrive pas à mettre en place la génération automatique des certificats via cert-manager ClusterIssuer toujours avec DNS-01, en suivant https://knative.dev/docs/serving/using-auto-tls/.
La première étape de ce tuto est de créer un ClusterIssuer, voici un exemple pour Google Cloud, cependant je n'arrive pas à l'adapter pour OVH :

apiVersion: cert-manager.io/v1alpha2
kind: ClusterIssuer
metadata:
name: letsencrypt-dns-issuer
spec:
acme:
server: https://acme-v02.api.letsencrypt.org/directory
# This will register an issuer with LetsEncrypt. Replace
# with your admin email address.
email: myemail@gmail.com
privateKeySecretRef:
# Set privateKeySecretRef to any unused secret name.
name: letsencrypt-dns-issuer
solvers:
- dns01:
clouddns:
# Set this to your GCP project-id
project: $PROJECT_ID
# Set this to the secret that we publish our service account key
# in the previous step.
serviceAccountSecretRef:
name: cloud-dns-key
key: key.json

Merci pour votre aide !
Dimitri


11 réponses ( Latest reply on 2022-01-05 15:45:40 Par
Joel
)

Bonjour,
Je me permet de répondre pour partager ma petite solution.
Ce n'est peut-être, voir surement pas la meilleur mais elle fonctionne ;)
Je suis arrivé au même cas que toi Dimiti et voilà ce que j'ai fait :
pour le dns je me suis inscrit sur CloudFlare et remplacé les serveur DNS de mon nom de domaine par les leurs.
Ensuite j'ai créé un secret contenant ma clé API

apiVersion: v1
kind: Secret
metadata:
name: cloudflare-api-token-secret
type: Opaque
stringData:
api-token: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx


Que je récupére ensuite dans mon Issuer

dns01:
cloudflare:
email: address_mail@fai.com
apiKeySecretRef:
name: cloudflare-apikey-token-secret
key: api-token

Voilà en espérant que cela puisse aider

Bonjour,

La réponse de @MatthieuL29 ne te satisfait pas ?

Pour ce qui est de la validation DNS01, le plugin officiel cert-manager n'est pas encore sorti, du coup tu peux tenter en methode HTTP01 de cert-manager, celle-ci fonctionne, réf : https://www.youtube.com/watch?v=srwdd-ombBc

Sébastien

Bonjour, je reviens sur le sujet pour vous partager ma solution avec Ovh et Let's Encrypt.
J'ai fait un petit article dessus que je vous pose ici : https://matthieulmr.fr/ovh-cloud-kubernetes-ssl/ https://matthieulmr.fr/ovh-cloud-kubernetes-ssl/

PS : Merci @SebastienJ18 c'est la vidéo qui m'a mit sur la piste ;)

Hello,

Super nouvelle ! très content que notre Tech Talk ai pu t'aider.

Le petit tuto que tu as fait, est top merci pour ta contribution.

Sébastien

Bonjour,

Le tuto de @MatthieuL29 n'est plus disponible (404). Avez-vous avancé quant au plugin officiel OVH, ou avez-vous une documentation complète pour l'implémentation du challenge DNS de cert-manager pour la génération automatique de certificat wildcard ?

Merci pour votre réponse et les excellents tutos!

Bonjour @Pierre-JacquesD,

Je n'ai pas eu de nouvelles concernant l'avancée du module pour cert-manager :/
@MatthieuL29 si tu arrives a mettre ton tuto sur un projet Github en mode markdown ce serait super, si jamais tu as le temps de le faire.

Merci pour les encouragements

Bonjour à tous ! Je viens de tomber sur ce post en recherchant un moyen d'intégrer les certificats wildcard avec le challenge DNS01 de lets encrypt sous cert-manager, et j'ai trouvé un super dépôt Github qui le permet grace aux webhook cert-manager :https://github.com/baarde/cert-manager-webhook-ovh

La marche à suivre est plutôt simple, et la solution est à mon sens suffisamment pérenne pour de la production :

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt
spec:
acme:
# The ACME server URL
server: https://1v02.api.letsencrypt.org/directoryv02.api.letsencrypt.org/directory
# Email address used for ACME registration
email:
# Name of a secret used to store the ACME account private key
privateKeySecretRef:
name: letsencrypt
# Enable the HTTP-01 challenge provider
solvers:
- dns01:
webhook:
groupName: ''
solverName: ovh
config:
endpoint: ovh-eu
applicationKey:
applicationSecretRef:
key:
name: ovh-credentials
consumerKey:

J'espère que ça en aidera certains ,
Bonne journée !

Hello,
Des gens qui ont intégrée le webhook ovh sur cert-manager ont-il déjà rencontrer ce problème dans le challenge ?

```
web traefik-web-cert-XXXXXXX pending www.mondomaine.fr OVH API call failed: GET /domain/zone/fr/status - Error 400: "Invalid signature"
```

D'après ce que je comprend, le webhook essaie de call les API avec `/domain/zone/fr/status` au lien de `/domain/zone/mondomaine.fr/status` sauf que je ne trouve pas pourquoi :/

message supprimé car spam


Ce message a été signalé par la communauté et temporairement masqué.


spam passé entre les mailles du filet de la modération

Merci pour la notification.
Je fais remonter l'information rapidement afin de supprimer ce message qui n'a rien à faire ici.
-- Joël