Utiliser vos propres certificats TLS

Cette page explique comment configurer Cloud Run pour Anthos pour utiliser votre propre certificat SSL/TLS, lorsque vous ne souhaitez pas utiliser la fonctionnalité de certificats TLS gérés.

La passerelle d'entrée Istio peut accepter le protocole TLS fourni par votre certificat, après avoir stocké celui-ci dans un secret Kubernetes et l'avoir spécifié dans la spécification de passerelle d'entrée Istio.

Avant de commencer

Dans ces instructions, nous partons du principe que vous disposez déjà de vos propres certificats TLS.

Stocker un certificat ou une clé privée TLS dans un secret Kubernetes

Pour stocker des certificats dans un secret, procédez comme suit :

  1. Copiez les certificats dans votre répertoire actuel.

  2. Exécutez la commande suivante pour créer un secret qui stocke les certificats, où privkey.pem contient votre clé privée de certificat et fullchain.pem contient le certificat public :

    kubectl create --namespace gke-system secret tls SECRET_NAME \
      --key privkey.pem \
      --cert fullchain.pem
    

Spécifier votre certificat TLS pour la passerelle d'entrée Istio

Modifiez la spécification de la passerelle d'entrée Istio pour utiliser le secret Kubernetes contenant votre certificat TLS :

  1. Ouvrez les spécifications de la passerelle partagée pour les modifier :

    kubectl edit gateway gke-system-gateway --namespace knative-serving
  2. Spécifiez votre certificat TLS à l'aide du secret que vous avez créé précédemment, en ajoutant la section suivante à la spécification de votre passerelle :

    - hosts:
      - "*"
      port:
        name: https
        number: 443
        protocol: HTTPS
      tls:
        mode: SIMPLE
        credentialName: SECRET_NAME
    

    La spécification de votre passerelle doit se présenter comme suit :

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
    # ... skipped ...
    spec:
      selector:
        istio: ingressgateway
      servers:
        - hosts:
          - "*"
          port:
            name: http
            number: 80
            protocol: HTTP
        - hosts:
          - "*"
          port:
            name: https
            number: 443
            protocol: HTTPS
          tls:
            mode: SIMPLE
            credentialName: SECRET_NAME
    

    Si vous ajoutez plusieurs certificats TLS pour deux services différents dans des espaces de noms différents, la spécification de votre passerelle peut ressembler à ceci :

    apiVersion: networking.istio.io/v1alpha3
    kind: Gateway
    metadata:
    # ... skipped ...
    spec:
      selector:
        istio: ingressgateway
      servers:
      - hosts:
        - "*"
        port:
          name: http
          number: 80
          protocol: HTTP
      - port:
          number: 443
          name: https-SERVICE1_NAME
          protocol: HTTPS
        tls:
          mode: SIMPLE
          credentialName: SECRET1_NAME
        hosts:
        - SERVICE1_NAME.NAMESPACE1.example.com
      - port:
          number: 443
          name: https-SERVICE2_NAME
          protocol: HTTPS
        tls:
          mode: SIMPLE
          credentialName: SECRET2_NAME
        hosts:
        - SERVICE2_NAME.NAMESPACE2.example.com
    
  3. Enregistrez les modifications.

Après cette modification, vous pouvez utiliser le protocole HTTPS pour accéder à vos services déployés.