Utilizzo dei tuoi certificati TLS

Scopri come configurare Knative serving per utilizzare i tuoi certificati SSL/TLS.

In alternativa, puoi utilizzare funzionalità dei certificati TLS gestiti, che crea e rinnova automaticamente i certificati TLS mediante Crittografia

Per utilizzare i tuoi certificati, devi archiviare i certificati TLS in un ambiente Secret e configura il gateway in entrata di Cloud Service Mesh per utilizzarlo il secret.

Prima di iniziare

  • Queste istruzioni presuppongono che tu abbia già ottenuto il protocollo TLS certificati.
  • Devi configurare un dominio personalizzato. Per maggiori dettagli, vedi Mappatura di domini personalizzati.
  • Devi configurare ciascuno dei tuoi servizi Knative serving che utilizzano Gateway in entrata per gestire il traffico esterno. Se questi servizi rivolti all'esterno non vengono configurato per l'utilizzo dei certificati TLS, i servizi verifica una connessione HTTPS e, pertanto, non raggiunge mai lo stato ready.

Archiviazione di certificati TLS in un secret di Kubernetes

Per archiviare i certificati in un secret:

  1. Apri un terminale e vai alla directory in cui si trovano i tuoi certificati TLS in cui si trovano.

  2. Utilizza il comando seguente per creare un secret per l'archiviazione dei certificati:

    kubectl create --namespace INGRESS_NAMESPACE secret tls SECRET_NAME \
      --key PRIVATE_KEY.pem \
      --cert FULL_CHAIN.pem
    

    Sostituisci:

    • INGRESS_NAMESPACE con lo spazio dei nomi dei tuoi servizio in entrata, istio-ingressgateway. Specifica il valore istio-system se hai installato Cloud Service Mesh utilizzando la configurazione predefinita.
    • SECRET_NAME con il nome che vuoi utilizzare per il tuo il secret di Kubernetes.
    • PRIVATE_KEY.pem con il nome del file che contiene il tuo chiave privata del certificato.
    • FULL_CHAIN.pem con il nome del file che contiene il tuo certificato pubblico.

Ora puoi configurare il gateway in entrata in modo che utilizzi il secret che hai appena creato per il certificato TLS.

Configurazione del gateway in entrata per l'utilizzo dei certificati

Modifica il gateway in entrata di Cloud Service Mesh in modo che utilizzi il secret che hai creato per i tuoi certificati TLS:

  1. Apri il gateway YAML del gateway in entrata in modalità di modifica eseguendo questo comando:

    kubectl edit gateway knative-ingress-gateway --namespace knative-serving

    Esempio della configurazione predefinita del gateway in entrata:

    apiVersion: networking.istio.io/v1beta1
    kind: Gateway
    metadata:
      ...
      # other skipped configuration
      ...
    spec:
      selector:
        istio: ingressgateway
      servers:
      - hosts:
        - '*'
        port:
          name: http
          number: 80
          protocol: HTTP
    
  2. Configura il gateway in entrata in modo che utilizzi il tuo secret aggiungendo hosts, port e tls al file YAML esistente.

    • Per configurare tutti i servizi in modo che utilizzino lo stesso secret: aggiungi quanto segue alla configurazione YAML e specifica "*" come attributo hosts valore:

      ...
      # other skipped configuration
      ...
      - hosts:
        - "*"
        port:
          name: https
          number: 443
          protocol: HTTPS
        tls:
          mode: SIMPLE
          credentialName: SECRET_NAME
      

      Sostituisci SECRET_NAME con il nome del secret che hai creato.

      Guarda l'esempio.

    • Per configurare singolarmente ogni servizio: aggiungi quanto segue. alla configurazione YAML e specifica i valori per hosts utilizzando il nome e lo spazio dei nomi del servizio:

      Per ciascun servizio devi specificare i valori per hosts, port e tls attributi:

      ...
      # other skipped configuration
      ...
      - hosts:
        - SERVICE_NAME.SERVICE_NAMESPACE.CUSTOM_DOMAIN
        port:
          number: 443
          name: https-SERVICE_NAME
          protocol: HTTPS
        tls:
          mode: SIMPLE
          credentialName: SECRET_NAME
      

      Sostituisci:

      • SERVICE_NAME con il nome Knative serving completamente gestito di Google Cloud. Ogni servizio che utilizza il gateway in entrata per gestire server il traffico deve essere configurato singolarmente.
      • SERVICE_NAMESPACE con il nome dello spazio dei nomi in cui è in esecuzione il servizio.
      • CUSTOM_DOMAIN con il dominio personalizzato per cui configurato il servizio per l'uso.
      • SECRET_NAME con il nome del secret che che il servizio utilizzerà. Se hai creato più secret per di certificati TLS, puoi specificare il secret utilizzato da ciascun servizio.

      Guarda l'esempio.

  3. Salva le modifiche.

Ora puoi utilizzare il protocollo HTTPS per accedere alla chiave Knative serving di cui è stato eseguito il deployment i servizi di machine learning.

Esempi

Configurare tutti i servizi:

Questo esempio mostra come configurare tutti i servizi per l'utilizzo TLSsecret secret:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  ...
  # other skipped configuration
  ...
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: TLSsecret
Per configurare i singoli servizi:

Questo esempio mostra come configurare singolarmente tutte e tre le che gestiscono il traffico internet:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  ...
  # other skipped configuration
  ...
spec:
  selector:
    istio: ingressgateway
  servers:
  - hosts:
    - "*"
    port:
      name: http
      number: 80
      protocol: HTTP
  - hosts:
    - prodservice.prodnamespace.my-custom-domain.com
    port:
      number: 443
      name: https-prodservice
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: TLSsecret
  - hosts:
    - experiment.namespace.my-custom-domain.com
    port:
      number: 443
      name: https-experiment
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: TLSsecret
  - hosts:
    - fallbackservice.anothernamespace.my-custom-domain.com
    port:
      number: 443
      name: https-fallbackservice
      protocol: HTTPS
    tls:
      mode: SIMPLE
      credentialName: anotherTLSsecret