Tous les produits
Search
Centre de documentation

Container Service for Kubernetes:Configure a certificate for Knative to access Services over HTTPS

Dernière mise à jour :Aug 11, 2026

Utilisez un objet DomainMapping pour exposer un service Knative via HTTPS avec un nom de domaine personnalisé. Cette opération consiste à créer un secret TLS à partir d'un certificat et à le référencer dans la ressource DomainMapping. Lorsque le bloc tls est présent dans une ressource DomainMapping, le protocole passe automatiquement de HTTP à HTTPS.

Prérequis

Avant de commencer, assurez-vous que :

  • Knative est déployé dans votre cluster ACK. Pour plus d'informations, consultez la rubrique Déployer Knative.

  • kubectl est configuré pour se connecter à votre cluster.

Étape 1 : Créer un service Knative

  1. Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom du cluster à gérer, puis choisissez Applications > Knative dans le volet de navigation de gauche.

  3. Sous l'onglet Services de la page Knative, définissez le paramètre Namespace sur default et cliquez sur Create from Template. Sélectionnez le modèle Sample Template et cliquez sur Create. Un service nommé helloworld-go est créé.

    image.png

Étape 2 : Créer un secret TLS

Knative utilise les secrets Kubernetes pour stocker les certificats TLS et les clés privées. Cette étape crée un certificat auto-signé avec OpenSSL et le stocke en tant que secret nommé secret-tls.

Les certificats auto-signés conviennent uniquement aux tests. Les navigateurs ne font pas confiance aux certificats auto-signés et le certificat de cet exemple est valide pendant 3 650 jours sans renouvellement automatique. Pour les environnements de production, utilisez un certificat émis par une autorité de certification (CA) de confiance.
  1. Exécutez les commandes OpenSSL suivantes pour générer une clé privée de 4 096 bits et un certificat auto-signé pour le domaine helloworld.knative.top :

    openssl genrsa -out knativetop-key.pem 4096
    openssl req -subj "/CN=helloworld.knative.top" -sha256  -new -key knativetop-key.pem -out knativetop.csr
    echo subjectAltName = DNS:helloworld.knative.top > extfile.cnf
    openssl x509 -req -days 3650 -sha256 -in knativetop.csr -signkey knativetop-key.pem -out knativetop-cert.pem -extfile extfile.cnf

    Résultat attendu :

    Signature ok
    subject=CN = helloworld.knative.top
    Getting Private key
  2. Vérifiez le contenu encodé en Base64 de chaque fichier avant de créer le secret :

    • Encodez la clé privée : ``bash cat knativetop-key.pem | base64 ` Résultat attendu : ` a25hdGl2ZXRvcC1r****** ``

    • Encodez le certificat : ``bash cat knativetop-cert.pem | base64 ` Résultat attendu : ` a25hdGl2ZXRvcC1jZ******== ``

  3. Créez le secret :

    kubectl create secret tls secret-tls --key knativetop-key.pem --cert knativetop-cert.pem

    Résultat attendu :

    secret/secret-tls created

Étape 3 : Créer un objet DomainMapping

Un objet DomainMapping est une ressource Knative qui associe un domaine personnalisé à un ou plusieurs services Knative. Le champ tls.secretName fait référence au secret créé à l'étape précédente. L'ajout de ce champ permet de basculer l'URL du service de HTTP vers HTTPS.

  1. Créez un fichier nommé helloworld.knative.top.yaml :

    vim helloworld.knative.top.yaml
  2. Ajoutez le contenu suivant, puis enregistrez et quittez :

    Champ Description
    metadata.name Domaine personnalisé à mapper. Il doit correspondre au domaine indiqué dans votre certificat.
    metadata.namespace Espace de noms contenant à la fois l'objet DomainMapping et le service cible.
    spec.ref.name Nom du service Knative vers lequel acheminer le trafic.
    tls.secretName Nom du secret TLS. L'ajout de ce champ permet de basculer le protocole de HTTP vers HTTPS.
    apiVersion: serving.knative.dev/v1beta1
    kind: DomainMapping
    metadata:
      name: helloworld.knative.top
      namespace: default
    spec:
      ref:
        name: helloworld-go
        kind: Service
        apiVersion: serving.knative.dev/v1
    # tls block specifies the secret to be used
      tls:
        secretName: secret-tls

    Champs clés :

  3. Appliquez la configuration :

    kubectl apply -f helloworld.knative.top.yaml

    Résultat attendu :

    domainmapping.serving.knative.dev/helloworld.knative.top created
  4. Vérifiez que l'objet DomainMapping est prêt et que l'URL utilise HTTPS :

    kubectl get domainmapping helloworld.knative.top

    Résultat attendu :

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       https://helloworld.knative.top            True

    Lorsque READY affiche la valeur True et que l'URL commence par https://, le protocole TLS est correctement configuré.

Étape 4 : Tester l'accès HTTPS

La commande de test dépend du type d'ingress utilisé par votre cluster : ALB, MSE ou ASM.

ALB

Ajoutez un écouteur sur le port 443 dans la ressource AlbConfig. L'exemple suivant ajoute un écouteur HTTPS à la ressource knative-internet :

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name: knative-internet
spec:
  config:
  ...
  listeners:
    - port: 443
      protocol: HTTPS # Valid values for protocol: HTTP, HTTPS, and QUIC.
  ...

Exécutez la commande suivante pour tester l'accès. L'option -k ignore la vérification du certificat, ce qui est requis pour les certificats auto-signés.

# Replace alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com with your ALB ingress address.
curl -H "host: helloworld.knative.top" https://alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com -k

MSE

# Replace 8.141.XX.XX with your MSE ingress address.
curl -H "host: helloworld-go.default.example.com" https://8.141.XX.XX -k

ASM

# Replace 8.141.XX.XX with your ASM ingress address.
curl -H "host: helloworld-go.default.example.com" http://8.141.XX.XX -k

Résultat attendu pour les trois cas :

Hello Knative!

Étapes suivantes