Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Configure um certificado HTTPS

Última atualização: Jul 05, 2026

Essa medida criptografa os dados transmitidos entre clientes e o gateway, impedindo que partes não autorizadas interceptem ou adulterem informações sensíveis. Ela oferece uma defesa robusta contra ataques man-in-the-middle, essencial para proteger aplicações web modernas e serviços de API.

Pré-requisitos

Métodos de configuração

O MSE Ingress oferece suporte a dois métodos para configurar certificados HTTPS: o método Kubernetes Secret e o método do console MSE.

Item de comparação

Método Kubernetes Secret

Método do console MSE

Cenários

  • Gerenciamento declarativo de certificados.

  • Automação do gerenciamento de certificados com pipelines de CI/CD ou ferramentas como Cert-Manager.

  • Gerenciamento centralizado de certificados no console do Alibaba Cloud Certificate Management Service.

  • Aplicação de um único certificado a vários produtos da nuvem, como WAF e SLB.

  • Implantação ou substituição de certificados em massa.

Prioridade

Baixa

Alta

Cross-namespace

Não suportado.

Suportado.

Atualizar certificado

Substitua o conteúdo do Kubernetes Secret.

Substitua o certificado no console MSE ou implante um certificado de substituição a partir do console do Alibaba Cloud Certificate Management Service.

Instale o controlador MSE Ingress

Pré-requisitos

O MSE Ingress Controller pode ser instalado em clusters gerenciados ACK, clusters ACK Serverless e clusters ACS.

Procedimento

  1. Faça login no Console de Gerenciamento do Container Service. No painel de navegação à esquerda, escolha Clusters.

  2. Na página Clusters, clique em no nome do cluster desejado. No painel de navegação à esquerda, clique em Add-ons.

  3. Na página Component Management, insira mse na caixa de pesquisa. No cartão MSE Ingress Controller, clique em Install.

  4. Na caixa de diálogo Install Component MSE Ingress Controller, configure os parâmetros e clique em Confirm.

    Nota

    Escolha entre Create uma nova instância de gateway nativo da nuvem MSE ou Use an existing uma já existente.

    Se uma verificação de pré-requisito falhar durante a instalação, conceda permissões ao MSE Ingress Controller.

  5. Após a instalação do componente, um recurso MseIngressConfig chamado mse-ingress-premium-{clusterid} e uma instância de gateway chamada mse-ingress-premium-{clusterid} são criados por padrão.

    Acesse Workloads > Custom Resources, selecione a aba Resource Object Browser e pesquise por mse no API Group. Na linha MseIngressConfig, clique em YAML Edit na coluna Actions para verificar o status do MseIngressConfig. Aguarde de 3 a 5 minutos e certifique-se de que o status phase seja Listening. Isso indica que o gateway nativo da nuvem está em execução e ouvindo automaticamente recursos Ingress com a IngressClass mse no cluster. Se o status da instância MSE não estiver visível no editor YAML, verifique se existe um pool de nós para o cluster.

    O status do MseIngressConfig passa pelos seguintes estados: Pending > Running > Listening.

    • Pending: O gateway nativo da nuvem está sendo criado. Esse processo pode levar até 3 minutos.

    • Running: O gateway nativo da nuvem foi criado e está em execução.

    • Listening: O gateway nativo da nuvem está em execução e ouvindo recursos Ingress no cluster.

    • Failed: O gateway nativo da nuvem está em um estado inválido. Verifique a mensagem no campo Status para obter mais detalhes.

    Importante
    • No modo Create, a instalação do MSE Ingress Controller cria um recurso MseIngressConfig por padrão. O ciclo de vida desse recurso está vinculado à instância do gateway nativo da nuvem MSE. Não exclua o recurso MseIngressConfig a menos que seja necessário. A exclusão desse recurso também remove a instância associada do gateway nativo da nuvem MSE.

    • Se já existir um recurso IngressClass chamado mse no cluster antes da instalação do MSE Ingress Controller, a instalação não criará automaticamente um recurso MseIngressConfig nem uma instância de gateway nativo da nuvem MSE.

Implantar o serviço de backend

  1. Faça login no Console de Gerenciamento do Container Service. No painel de navegação à esquerda, escolha Clusters.

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

  3. Na página Stateless, clique em Create from YAML. Use o YAML a seguir para implantar um Deployment chamado httpbin e um Service chamado httpbin.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: httpbin
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: httpbin
      template:
        metadata:
          labels:
            app: httpbin
            version: v1
        spec:
          containers:
            - image: registry.cn-hangzhou.aliyuncs.com/mse-ingress/go-httpbin
              args:
                - "--version=v1"
              imagePullPolicy: Always
              name: httpbin
    ---
    apiVersion: v1
    kind: Service
    metadata:
      name: httpbin
      namespace: default
    spec:
      ports:
        - port: 8080
          protocol: TCP
      selector:
        app: httpbin

Configure o certificado HTTPS

Kubernetes Secret

Configure um certificado HTTPS para um domínio referenciando um Kubernetes Secret, seguindo a semântica nativa do Ingress.

  1. Prepare um certificado de domínio. Este exemplo utiliza um certificado autoassinado.

    Nota

    Para ambientes de produção, substitua a chave e o certificado de exemplo pelos seus reais.

    1. Execute o comando a seguir para gerar um arquivo de certificado chamado tls.crt e um arquivo de chave privada chamado tls.key.

      openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=foo.bar.com/O=foo.bar.com"
    2. Crie um Secret para armazenar o certificado TLS.

      1. Faça login no Console de Gerenciamento do Container Service. No painel de navegação à esquerda, escolha Clusters.

      2. Na página Clusters, clique em no nome do seu cluster. No painel de navegação à esquerda, escolha Configurations > Secrets.

      3. Clique em Create. No painel Create, defina o Name como tls-test, defina o Type como Type, cole o conteúdo de tls.crt e tls.key nas caixas de texto correspondentes e clique em Create.

  2. Crie um MSE Ingress e configure o certificado HTTPS para o domínio foo.bar.com.

    1. No painel de navegação à esquerda, escolha Network > Ingresses.

    2. Na página Ingresses, clique em Create Ingress. Na caixa de diálogo Create Ingress, configure o Ingress.

      Parâmetro

      Descrição

      Exemplo

      Gateway Type

      Selecione MSE Ingress. Para comparar os tipos de gateway, consulte Comparação entre Nginx Ingress, ALB Ingress, APIG Ingress e MSE Ingress.

      MSE Ingress

      Name

      Nome personalizado para o Ingress.

      test

      Ingress Class

      Classe de recurso relevante.

      mse

      Rule

      Clique em + Add Rule para adicionar regras de roteamento.

      • Domain: Domínio da rota.

      • Path Mapping: Configure os seguintes parâmetros.

        • Path: Caminho da URL do serviço.

        • Match Rule:

          • Prefix Match (Prefix): Corresponde ao prefixo do caminho da URL da requisição.

          • Exact Match (Exact): Corresponde exatamente ao caminho da URL da requisição.

          • Implementation Specific (ImplementationSpecific): A lógica de correspondência é determinada pela implementação do controlador Ingress.

          Para mais informações, consulte Uso avançado do ALB Ingress.

        • Service: Kubernetes Service de destino.

        • Port: Porta a ser exposta para o serviço.

      • É possível configurar vários caminhos sob o mesmo domínio. Clique em + Add Path para adicionar um novo caminho.

      • Domain: foo.bar.com

      • Path Mapping:

        • Path: /

        • Match Rule: Prefix Match (Prefix)

        • Service: httpbin

        • Port: 8080

      TLS Configuration

      Ative o TLS para proteger o serviço de roteamento.

      • Domain: Domínio do certificado TLS.

      • Secret: Selecione o Secret correspondente.

        Nota

        Se este campo ficar vazio, o certificado será configurado por descoberta automática.

        Para criar um novo Secret, execute as etapas a seguir:

        1. Ao lado do campo Secret, clique em Create.

        2. Na caixa de diálogo Create Secret, especifique o Name, Cert e Key, e clique em OK.

        3. Na lista suspensa Secret, selecione o Secret criado.

      Clique em + Add TLS Configuration para adicionar várias configurações TLS.

      • Domain: foo.bar.com

      • Secret: tls-test

    3. Mantenha as outras configurações com seus valores padrão. Ao terminar, clique em OK no canto inferior esquerdo da página Create Ingress.

  3. Teste o tráfego HTTPS executando o comando a seguir. Substitua x.x.x.x pelo endereço IP do seu gateway, disponível na página Ingresses.

    Nota

    Como este exemplo usa um certificado autoassinado e o domínio não está registrado em um provedor DNS, use a flag --resolve para resolver manualmente o domínio para o endereço IP do gateway e a flag -k para ignorar a verificação de validade do certificado.

    curl -v -k https://foo.bar.com/version --resolve "foo.bar.com:443:x.x.x.x"

    A saída esperada é mostrada abaixo:

    * Connected to foo.bar.com (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=foo.bar.com; O=foo.bar.com
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=foo.bar.com; O=foo.bar.com
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: foo.bar.com
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 07:49:39 GMT
    < content-length: 53
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 3
    < req-arrive-time: 1705477779046
    < resp-start-time: 1705477779049
    < x-envoy-upstream-service-time: 2
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx

Console MSE

Com este método, você configura o certificado diretamente no console MSE, portanto, não é necessário referenciar um Kubernetes Secret no manifesto do Ingress.

Importante

Para o mesmo domínio, o método do console MSE tem precedência sobre o método Kubernetes Secret. Se você configurar um certificado para o mesmo domínio tanto no console MSE quanto em um Kubernetes Ingress, o certificado do console MSE será utilizado.

  1. Prepare um certificado de domínio e faça o upload dele no Alibaba Cloud Certificate Management Service. Para mais informações, consulte Fazer upload, sincronizar e compartilhar certificados SSL. Se o seu certificado já estiver hospedado no Alibaba Cloud Certificate Management Service, pule esta etapa.

  2. Crie um domínio e configure o certificado.

    1. Faça login no console MSE e selecione uma região na barra de menu superior.

    2. No painel de navegação à esquerda, escolha Cloud-native Gateway > Gateways e clique em no ID da instância de gateway desejada.

    3. No painel de navegação à esquerda, clique em Routes e selecione a aba Domain.

    4. Clique em Add Domain. Adicione um Domain, defina o Protocol como HTTPS e selecione o certificado correspondente.

  3. Adicione um serviço.

    1. Na página Route Management da instância MSE, selecione a aba Service e clique em Add Service.

    2. Defina Service Sources como Container Service. Selecione um Namespaces com base no seu ambiente. Na Service List, selecione o serviço httpbin criado anteriormente e clique em OK.

  4. Crie uma rota.

    1. Na página Route Management da instância MSE, selecione a aba Routes e clique em Create Route.

    2. Selecione o Domain adicionado, escolha o Backend Service da etapa anterior e clique em Save and Publish.

  5. Teste o tráfego HTTPS. Execute o comando a seguir, substituindo x.x.x.x pelo endereço IP do seu gateway, disponível na página da instância de gateway.

    Nota

    Se você estiver usando um certificado autoassinado e o domínio não estiver registrado em um provedor DNS, use a flag --resolve para resolver manualmente o domínio para o endereço IP do gateway e a flag -k para ignorar a verificação de validade do certificado.

    Substitua <Your-DomainName> pelo seu nome de domínio real.

    curl -v -k https://<Your-DomainName>/version --resolve "<Your-DomainName>:443:x.x.x.x"

    A saída esperada é mostrada abaixo:

    * Connected to ********** (X.X.X.X) port 443 (#0)
    * ALPN, offering h2
    * ALPN, offering http/1.1
    * successfully set certificate verify locations:
    *   CAfile: /etc/ssl/cert.pem
      CApath: none
    * TLSv1.2 (OUT), TLS handshake, Client hello (1):
    * TLSv1.2 (IN), TLS handshake, Server hello (2):
    * TLSv1.2 (IN), TLS handshake, Certificate (11):
    * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
    * TLSv1.2 (IN), TLS handshake, Server finished (14):
    * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
    * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (OUT), TLS handshake, Finished (20):
    * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
    * TLSv1.2 (IN), TLS handshake, Finished (20):
    * SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
    * ALPN, server accepted to use http/1.1
    * Server certificate:
    *  subject: CN=*********; O=**********
    *  start date: Jan 17 06:47:23 2024 GMT
    *  expire date: Jan 16 06:47:23 2025 GMT
    *  issuer: CN=**********; O=**********
    *  SSL certificate verify result: self signed certificate (18), continuing anyway.
    > GET /version HTTP/1.1
    > Host: **********
    > User-Agent: curl/7.64.1
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < date: Wed, 17 Jan 2024 08:16:27 GMT
    < content-length: 46
    < content-type: text/plain; charset=utf-8
    < req-cost-time: 5
    < req-arrive-time: 1705479387567
    < resp-start-time: 1705479387573
    < x-envoy-upstream-service-time: 4
    < server: istio-envoy
    <
    version: v1
    hostname: httpbin-xxxxxx