Using your own TLS certificates

This page describes how to set up Knative serving to use your own SSL/TLS certificate, for those cases where you don't want to use the managed TLS certificates feature.

Istio Ingress Gateway can support the TLS protocol provided from your certificate after you store your certificate into a Kubernetes Secret and specify it in the Istio Ingress Gateway spec.

Before you begin

These instructions assume that you already have your own TLS certificates.

Storing TLS certificate/private key into a Kubernetes Secret

To store the certificates into a Secret:

  1. Copy the certificates into your current directory.

  2. Use the following command to create a Secret that stores the certificates, where privkey.pem contains your certificate private key and fullchain.pem contains the public certificate:

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

Specifying your TLS certificate to Istio Ingress Gateway

Modify the Istio Ingress Gateway spec to use the Kubernetes Secret containing your TLS certificate:

  1. Open the shared gateway spec for editing:

    kubectl edit gateway gke-system-gateway --namespace knative-serving
  2. Specify your TLS certificate using the secret you created earlier, by adding the following section to your gateway spec:

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

    Your gateway spec should look like the following:

      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 
     
     
    

    If you're adding multiple TLS certificates for two different services in different namespaces, your gateway spec could look like:

      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. Save your changes.

After this change, you can use the HTTPS protocol to access your deployed services.

Create a Mobile Website
View Site in Mobile | Classic
Share by: