Todos los productos
Search
Centro de documentos

Container Compute Service:Configure a certificate to access Knative Services over HTTPS

Última actualización: Sep 17, 2026

Si desea usar un nombre de dominio personalizado para un servicio de Knative, se recomienda configurar un certificado HTTPS para dicho dominio con el fin de mejorar la seguridad en la transmisión de datos. Knative le permite especificar un certificado HTTPS mediante la configuración de un DomainMapping, el cual asocia de forma segura un servicio de Knative con el nombre de dominio personalizado.

Requisitos previos

Knative debe estar desplegado en su clúster de ACS. Para obtener más información, consulte Deploy Knative.

Paso 1: Cree un servicio de Knative

  1. Inicie sesión en la consola de Container Compute Service (ACS). En el panel de navegación izquierdo, haga clic en Clusters.

  2. En la página Clusters, haga clic en el nombre del clúster de destino. En el panel de navegación izquierdo de la página de detalles del clúster, elija Applications > Knative.

  3. En la pestaña Services de la página Knative, establezca Namespace en default y, a continuación, haga clic en Create from Template para crear un servicio de Knative (el servicio helloworld-go) a partir de la plantilla de ejemplo de la consola. Complete la creación según las instrucciones. Una vez creado el servicio, su estado aparecerá como exitoso en la pestaña de servicios y su nombre de dominio predeterminado será helloworld-go.default.example.com. Antes de acceder al servicio, debe vincular el nombre de dominio de acceso al gateway de entrada como Host.

Paso 2: Configure el servicio HTTPS

La forma de configurar HTTPS depende del tipo de gateway:

  • Gateway ALB: AlbConfig gestiona los certificados de manera centralizada. Se habilita TLS mediante una anotación, sin necesidad de administrar manualmente los archivos de certificado.

  • Gateway Kourier: Debe crear manualmente un Secret de certificado y luego vincularlo al nombre de dominio mediante un DomainMapping.

ALB

Puede especificar un certificado en AlbConfig y habilitar el acceso TLS en el servicio de Knative mediante la anotación knative.k8s.alibabacloud/tls: "true". Consulte el siguiente ejemplo.

Para habilitar el acceso HTTPS, agregue la anotación TLS al servicio de Knative y configure un listener en el puerto 443 dentro de AlbConfig.

  1. Agregue la anotación knative.k8s.alibabacloud/tls: "true" al archivo YAML del servicio de Knative.

    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 the region with the region that you actually use.
            env:
            - name: TARGET
              value: "Knative"
  2. Agregue un listener en el puerto 443 dentro de AlbConfig (por ejemplo, knative-internet) para enrutar el tráfico HTTPS hacia el clúster.

    apiVersion: alibabacloud.com/v1
    kind: AlbConfig
    metadata:
      name: knative-internet
    spec:
      config:
      ...
      listeners:
        - port: 443
          # Valid values: HTTP, HTTPS, QUIC
          protocol: HTTPS
      ...
  3. Compruebe que el servicio sea accesible mediante HTTPS.

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

    Resultado esperado:

    Hello Knative!

Kourier

El gateway Kourier no incluye gestión de certificados integrada. Primero debe almacenar el certificado TLS en el clúster como un Secret. Una vez listo, vincule el nombre de dominio al certificado mediante un DomainMapping.

1. Cree un Secret de certificado

El siguiente ejemplo utiliza un certificado HTTPS autofirmado generado con OpenSSL. Si ya cuenta con archivos de certificado en formato .pem, puede omitir el paso 1 y comenzar desde el paso 2.

Los certificados autofirmados son únicamente para pruebas. En entornos de producción, se recomienda utilizar certificados emitidos por una autoridad certificadora (CA).

  1. Cree un certificado autofirmado con 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

    Resultado esperado:

    Signature ok
    subject=CN = helloworld.knative.top
    Getting Private key
  2. Codifique en Base64 los archivos knativetop-key.pem y knativetop-cert.pem creados en el paso 1.

    • Codifique knativetop-key.pem en Base64.

      cat knativetop-key.pem | base64

      Resultado esperado:

      a25hdGl2ZXRvcC1r******
    • Codifique knativetop-cert.pem en Base64.

      cat knativetop-cert.pem | base64

      Resultado esperado:

      a25hdGl2ZXRvcC1jZ******==
  3. Cree el Secret. Este recurso se utilizará en la configuración TLS del servicio de Knative para habilitar el acceso seguro al nombre de dominio helloworld.knative.top.

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

    Resultado esperado:

    secret/secret-tls created

2. Cree un DomainMapping

En Knative, un DomainMapping es un objeto de recurso que asocia un nombre de dominio con uno o más servicios de Knative. Cuando el Secret esté listo, utilice un DomainMapping para vincular el nombre de dominio personalizado al servicio de Knative y haga referencia al Secret creado previamente para habilitar el cifrado TLS.

  1. Cree el archivo helloworld.knative.top.yaml con el siguiente contenido.

    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
    # The tls block specifies the secret to be used.
      tls:
        secretName: secret-tls
  2. Aplique el DomainMapping al clúster.

    kubectl apply -f helloworld.knative.top.yaml

    Resultado esperado:

    domainmapping.serving.knative.dev/helloworld.knative.top created
  3. Ejecute el siguiente comando para comprobar que el DomainMapping está listo.

    kubectl get domainmapping helloworld.knative.top

    Resultado esperado:

    NAME                          URL                                      READY   REASON
    helloworld.knative.top       https://helloworld.knative.top            True
  4. Compruebe que el servicio sea accesible a través del nombre de dominio personalizado.

    # 8.141.XX.XX is the Kourier gateway address.
    curl -H "Host: helloworld-go.default.example.com" http://8.141.XX.XX -k

    Resultado esperado:

    Hello Knative!

Es posible configurar probes para supervisar el estado y la disponibilidad de sus servicios de Knative. Para obtener más información, consulte Configure port probing in Knative.