Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Sep 17, 2026

Pour utiliser un nom de domaine personnalisé avec un service Knative, nous vous recommandons de configurer un certificat HTTPS afin de sécuriser la transmission des données. Knative permet de spécifier ce certificat via un objet DomainMapping, qui associe le service Knative au nom de domaine personnalisé de manière sécurisée.

Prérequis

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

Étape 1 : Créer un service Knative

  1. Connectez-vous à la console Container Compute Service (ACS). Dans le volet de navigation de gauche, cliquez sur Clusters.

  2. Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche de la page des détails du cluster, choisissez Applications > Knative.

  3. Dans l'onglet Services de la page Knative, définissez le paramètre Namespace sur default, puis cliquez sur Create from Template pour créer un service Knative (le service helloworld-go) à partir du modèle d'exemple disponible dans la console. Suivez les instructions pour finaliser la création. Une fois le service créé, son statut s'affiche comme réussi dans l'onglet Services et son nom de domaine par défaut est helloworld-go.default.example.com. Avant d'accéder au service, vous devez lier le nom de domaine d'accès à la passerelle ingress en tant qu'hôte.

Étape 2 : Configurer le service HTTPS

La méthode de configuration HTTPS dépend du type de passerelle utilisé :

  • Passerelle ALB : Les certificats sont gérés de manière centralisée par AlbConfig. Vous activez TLS à l'aide d'une annotation, sans manipuler manuellement les fichiers de certificat.

  • Passerelle Kourier : Vous devez créer manuellement un Secret contenant le certificat, puis lier ce Secret au nom de domaine à l'aide d'un objet DomainMapping.

ALB

Spécifiez un certificat dans l'AlbConfig et activez l'accès TLS dans le service Knative en utilisant l'annotation knative.k8s.alibabacloud/tls: "true". Voir l'exemple ci-dessous.

Pour activer l'accès HTTPS, ajoutez l'annotation TLS au service Knative et configurez un écouteur sur le port 443 dans l'AlbConfig.

  1. Ajoutez l'annotation knative.k8s.alibabacloud/tls: "true" au fichier YAML du service Knative.

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: helloworld
      namespace: default
      annotations:
        knative.k8s.alibabacloud/tls: "true"
    spec:
      template:
        spec:
          containers:
          - image: registry-vpc.cn-shenzhen.aliyuncs.com/knative-sample/helloworld-go:73fbdd56  # Replace the region with the region that you actually use.
            env:
            - name: TARGET
              value: "Knative"
  2. Ajoutez un écouteur sur le port 443 dans l'AlbConfig (par exemple, knative-internet) pour acheminer le trafic HTTPS vers le cluster.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: knative-internet
    spec:
      config:
      ...
      listeners:
        - port: 443
          # Valid values: HTTP, HTTPS, QUIC
          protocol: HTTPS
      ...
  3. Vérifiez que le service est accessible via HTTPS.

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

    Résultat attendu :

    Hello Knative!

Kourier

La passerelle Kourier ne propose pas de gestion native des certificats. Stockez d'abord le certificat TLS dans le cluster sous forme de Secret. Une fois le Secret prêt, liez le nom de domaine au certificat à l'aide d'un objet DomainMapping.

1. Créer un Secret de certificat

L'exemple suivant utilise un certificat HTTPS auto-signé généré avec OpenSSL. Si vous disposez déjà de fichiers de certificat au format .pem, ignorez l'étape 1 et commencez directement à l'étape 2.

Les certificats auto-signés sont destinés uniquement aux tests. Dans les environnements de production, nous vous recommandons d'utiliser des certificats émis par une autorité de certification (CA).

  1. Créez un certificat auto-signé à l'aide d'OpenSSL.

    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. Encodez en Base64 les fichiers knativetop-key.pem et knativetop-cert.pem créés à l'étape 1.

    • Encodez en Base64 le fichier knativetop-key.pem.

      cat knativetop-key.pem | base64

      Résultat attendu :

      a25hdGl2ZXRvcC1r******
    • Encodez en Base64 le fichier knativetop-cert.pem.

      cat knativetop-cert.pem | base64

      Résultat attendu :

      a25hdGl2ZXRvcC1jZ******==
  3. Créez le Secret. Ce Secret sera utilisé dans la configuration TLS du service Knative pour permettre un accès sécurisé au nom de domaine helloworld.knative.top.

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

    Résultat attendu :

    secret/secret-tls created

2. Créer un objet DomainMapping

Dans Knative, un objet DomainMapping est une ressource qui associe un nom de domaine à un ou plusieurs services Knative. Une fois le Secret prêt, utilisez un objet DomainMapping pour lier le nom de domaine personnalisé au service Knative, en référençant le Secret précédemment créé pour activer le chiffrement TLS.

  1. Créez le fichier helloworld.knative.top.yaml avec le contenu suivant.

    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
    # The tls block specifies the secret to be used.
      tls:
        secretName: secret-tls
  2. Appliquez l'objet DomainMapping au cluster.

    kubectl apply -f helloworld.knative.top.yaml

    Résultat attendu :

    domainmapping.serving.knative.dev/helloworld.knative.top created
  3. Exécutez la commande suivante pour vérifier que l'objet DomainMapping est prêt.

    kubectl get domainmapping helloworld.knative.top

    Résultat attendu :

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       https://helloworld.knative.top            True
  4. Vérifiez que le service est accessible via le nom de domaine personnalisé.

    # 8.141.XX.XX is the Kourier gateway address.
    curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX -k

    Résultat attendu :

    Hello Knative!