Si vous utilisez un domaine personnalisé pour un service Knative, configurez-y un certificat HTTPS afin de sécuriser les données en transit. Knative prend en charge l'accès HTTPS, ce qui vous permet d'associer un service Knative à un domaine personnalisé de manière sécurisée.
Prérequis
Knative est déployé dans votre cluster. Pour plus d'informations, consultez les rubriques et Déployer et gérer les composants Knative.
Étape 1 : Créer un service Knative
Connectez-vous à la console ACK. Dans le volet de navigation de gauche, cliquez sur Clusters.
Sur la page Clusters, cliquez sur le nom du cluster cible. Dans le volet de navigation de gauche, choisissez .
-
Sur la page Knative, sous l'onglet Services, définissez le paramètre Namespace sur default, puis cliquez sur Create from Template. Utilisez le modèle d'exemple pour créer un service Knative nommé helloworld-go. Suivez les instructions affichées à l'écran.
Une fois le service créé, l'onglet Services affiche le service helloworld-go avec le statut Successful. Le nom de domaine par défaut est
helloworld-go.default.example.com. Avant d'accéder au service, configurez l'en-tête Host afin de garantir que les requêtes adressées au domaine du service soient acheminées par la passerelle d'accès.
Étape 2 : Configurer le service HTTPS
La méthode de configuration HTTPS dépend du type de passerelle utilisé :
Passerelle ALB : Un AlbConfig gère les certificats. Activez TLS en ajoutant une annotation ; aucune gestion manuelle des certificats n'est nécessaire.
Passerelle Kourier : Créez manuellement un Secret contenant le certificat, puis utilisez un DomainMapping pour lier ce Secret au domaine.
ALB
Spécifiez un certificat dans l'AlbConfig et activez l'accès TLS dans le service Knative à l'aide de l'annotation knative.k8s.alibabacloud/tls: "true". Voici un exemple.
Pour activer l'accès HTTPS, ajoutez une annotation TLS à votre service Knative et configurez un écouteur sur le port 443 dans votre AlbConfig.
-
Ajoutez l'annotation
knative.k8s.alibabacloud/tls: "true"au fichier YAML de votre 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 with your region. env: - name: TARGET value: "Knative" -
Ajoutez un écouteur sur le port 443 à votre AlbConfig, tel que
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 # Options include HTTP, HTTPS, and QUIC protocol: HTTPS ... -
Vérifiez que le service est accessible via HTTPS.
# Replace with your ALB gateway address. curl -H "Host: helloworld.knative.top" https://alb-ppcate4ox6******.cn-beijing.alb.aliyuncs.com -kRésultat attendu :
Hello Knative!
Kourier
La passerelle Kourier ne dispose pas de gestion intégrée des certificats. Stockez le certificat TLS sous forme de Secret dans le cluster, puis utilisez un DomainMapping pour associer le certificat au domaine.
1. Créer un Secret de certificat
L'exemple suivant utilise un certificat HTTPS auto-signé généré avec OpenSSL. Si vous possédez déjà un fichier de certificat au format .pem, ignorez l'étape 1 et commencez directement à l'étape 2.
Les certificats auto-signés sont destinés uniquement à des fins de test. Dans les environnements de production, utilisez un certificat émis par une autorité de certification (CA).
-
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.cnfRésultat attendu :
Signature ok subject=CN = helloworld.knative.top Getting Private key -
En option, récupérez l'encodage Base64 des fichiers
knativetop-key.pemetknativetop-cert.pemgénérés à l'étape 1. Cette étape n'est nécessaire que si vous créez manuellement le Secret à partir d'un fichier YAML ; elle n'est pas requise pour la commande kubectl de l'étape suivante.-
Appliquez l'encodage Base64 au fichier
knativetop-key.pem.cat knativetop-key.pem | base64Résultat attendu :
a25hdGl2ZXRvcC1r****** -
Appliquez l'encodage Base64 au fichier
knativetop-cert.pem.cat knativetop-cert.pem | base64Résultat attendu :
a25hdGl2ZXRvcC1jZ******==
-
-
Créez le Secret.
Utilisez un Secret dans la configuration TLS d'un service Knative pour activer l'accès sécurisé au domaine
helloworld.knative.top.kubectl create secret tls secret-tls --key knativetop-key.pem --cert knativetop-cert.pemRésultat attendu :
secret/secret-tls created
2. Créer un DomainMapping
Dans Knative, un DomainMapping est une ressource qui associe un domaine à un ou plusieurs services Knative.
Une fois le Secret créé, utilisez un DomainMapping pour lier le domaine personnalisé au service Knative et activer le chiffrement TLS en référençant le Secret.
-
Créez un fichier
helloworld.knative.top.yamlet saisissez la configuration DomainMapping suivante.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 -
Appliquez le DomainMapping au cluster.
kubectl apply -f helloworld.knative.top.yamlRésultat attendu :
domainmapping.serving.knative.dev/helloworld.knative.top created -
Exécutez la commande suivante pour vérifier que le DomainMapping est prêt.
kubectl get domainmapping helloworld.knative.topRésultat attendu :
NAME URL READY REASON helloworld.knative.top https://helloworld.knative.top True -
Vérifiez que le service est accessible via le domaine personnalisé.
# Replace with your Kourier gateway address. curl -H "Host: helloworld.knative.top" https://8.141.XX.XX -kRésultat attendu :
>Hello Knative!
Documents connexes
Configurez une sonde pour surveiller l'état de santé et la disponibilité de votre service Knative. Pour plus d'informations, consultez la rubrique Configurer des sondes pour un service Knative.
Si votre instance ECI doit se connecter à Internet, associez-la à une adresse IP élastique (EIP). Pour plus d'informations, consultez la rubrique Associer une EIP à une instance ECI pour l'accès à Internet.