Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure HTTPS access for a Knative Service

Última atualização: Jul 08, 2026

Se você usar um domínio personalizado para um Knative Service, configure um certificado HTTPS para proteger os dados em trânsito. O Knative oferece suporte a acesso HTTPS, permitindo mapear com segurança um Knative Service para um domínio personalizado.

Pré-requisitos

O Knative deve estar implantado no cluster. Para mais informações, consulte Implantar e gerenciar componentes do Knative.

Etapa 1: Criar um Knative Service

  1. Faça login no ACK console. No painel de navegação à esquerda, clique em Clusters.

  2. Na página Clusters, clique no nome do cluster desejado. No painel de navegação à esquerda, escolha Applications > Knative.

  3. Na página Knative, na aba Services, defina o Namespace como default e clique em Create from Template. Use o modelo de exemplo para criar um Knative Service chamado helloworld-go. Siga as instruções na tela.

    Após a criação, a aba Services exibirá o serviço helloworld-go com o status Successful. O nome de domínio padrão é helloworld-go.default.example.com. Antes de acessar o serviço, configure o cabeçalho Host para garantir que o gateway de acesso roteie corretamente as solicitações para o domínio do serviço.

Etapa 2: Configurar o serviço HTTPS

O método de configuração de HTTPS varia conforme o tipo de gateway:

  • Gateway ALB: O AlbConfig gerencia os certificados. Ative o TLS adicionando uma Annotation, eliminando a necessidade de gerenciamento manual de certificados.

  • Gateway Kourier: Crie manualmente um Secret de certificado e use um DomainMapping para vincular esse Secret ao domínio.

ALB

Especifique um certificado no AlbConfig e ative o acesso TLS no Knative Service usando a Annotation knative.k8s.alibabacloud/tls: "true". Veja o exemplo abaixo.

Para ativar o acesso HTTPS, adicione uma Annotation TLS ao seu Knative Service e configure um listener na porta 443 no AlbConfig.

  1. Adicione a Annotation knative.k8s.alibabacloud/tls: "true" ao arquivo YAML do seu Knative Service.

    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"
  2. Adicione um listener na porta 443 ao seu AlbConfig, como knative-internet, para rotear o tráfego HTTPS para o cluster.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: knative-internet
    spec:
      config:
      ...
      listeners:
        - port: 443
          # Options include HTTP, HTTPS, and QUIC
          protocol: HTTPS 
      ...
  3. Verifique se o serviço está acessível via HTTPS.

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

    Saída esperada:

    Hello Knative!

Kourier

O gateway Kourier não possui gerenciamento nativo de certificados. Armazene o certificado TLS como um Secret no cluster e use um DomainMapping para associar o certificado ao domínio.

1. Criar um Secret de certificado

O exemplo a seguir usa um certificado HTTPS autoassinado gerado pelo OpenSSL. Se você já tiver um arquivo de certificado no formato .pem, ignore a Etapa 1 e inicie diretamente pela Etapa 2.

Certificados autoassinados destinam-se apenas a testes. Em ambientes de produção, use um certificado emitido por uma Autoridade Certificadora (CA).
  1. Gere um certificado autoassinado usando o 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

    Saída esperada:

    Signature ok
    subject=CN = helloworld.knative.top
    Getting Private key
  2. Opcionalmente, obtenha a codificação Base64 dos arquivos knativetop-key.pem e knativetop-cert.pem da etapa 1. Esse procedimento é necessário apenas se você for criar o Secret manualmente via arquivo YAML, não sendo exigido para o comando kubectl da próxima etapa.

    • Aplique a codificação Base64 ao arquivo knativetop-key.pem.

      cat knativetop-key.pem | base64

      Saída esperada:

      a25hdGl2ZXRvcC1r******
    • Aplique a codificação Base64 ao arquivo knativetop-cert.pem.

      cat knativetop-cert.pem | base64

      Saída esperada:

      a25hdGl2ZXRvcC1jZ******==
  3. Crie o Secret.

    Use um Secret na configuração TLS do Knative Service para ativar o acesso seguro ao domínio helloworld.knative.top.

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

    Saída esperada:

    secret/secret-tls created

2. Criar um DomainMapping

No Knative, o DomainMapping é um recurso que mapeia um domínio para um ou mais Knative Services.

Com o Secret criado, use um DomainMapping para vincular o domínio personalizado ao Knative Service e ativar a criptografia TLS referenciando o Secret correspondente.

  1. Crie um arquivo helloworld.knative.top.yaml e insira a seguinte configuração de DomainMapping.

    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
  2. Aplique o DomainMapping no cluster.

    kubectl apply -f helloworld.knative.top.yaml

    Saída esperada:

    domainmapping.serving.knative.dev/helloworld.knative.top created
  3. Execute o comando abaixo para verificar se o DomainMapping está pronto.

    kubectl get domainmapping helloworld.knative.top

    Saída esperada:

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       https://helloworld.knative.top            True
  4. Verifique se o serviço está acessível pelo domínio personalizado.

    # Replace with your Kourier gateway address.
    curl -H "Host: helloworld.knative.top" https://8.141.XX.XX -k

    Saída esperada:

    >Hello Knative!

Documentos relacionados