Todos los productos
Search
Centro de documentos

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

Última actualización: Sep 12, 2026

Si utiliza un dominio personalizado para un servicio de Knative, configure un certificado HTTPS para proteger los datos en tránsito. Knative admite el acceso HTTPS, lo que le permite vincular de forma segura un servicio de Knative a un dominio personalizado.

Requisitos previos

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

Paso 1: Crear un servicio de Knative

  1. Inicie sesión en la consola de ACK. 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, elija Applications > Knative.

  3. En la página Knative, dentro de la pestaña Services, establezca Namespace en default y, a continuación, haga clic en Create from Template. Utilice la plantilla de ejemplo para crear un servicio de Knative llamado helloworld-go. Siga las instrucciones que aparecen en pantalla.

    Una vez creado el servicio, la pestaña Services muestra el servicio helloworld-go con el estado Successful. El nombre de dominio predeterminado es helloworld-go.default.example.com. Antes de acceder al servicio, configure el encabezado Host para asegurar que la puerta de enlace de acceso enrute las solicitudes hacia el dominio del servicio.

Paso 2: Configurar el servicio HTTPS

El método de configuración de HTTPS depende del tipo de puerta de enlace que utilice:

  • Puerta de enlace ALB: un objeto AlbConfig gestiona los certificados. TLS se habilita mediante una Annotation, por lo que no es necesario administrar los certificados de forma manual.

  • Puerta de enlace Kourier: debe crear manualmente un Secret de certificado y luego utilizar un DomainMapping para vincular dicho Secret al dominio.

ALB

Es posible especificar un certificado en el AlbConfig y habilitar el acceso TLS en el servicio de Knative mediante la Annotation knative.k8s.alibabacloud/tls: "true". A continuación se muestra un ejemplo.

Para habilitar el acceso HTTPS, agregue una Annotation TLS a su servicio de Knative y configure un listener en el puerto 443 dentro de su AlbConfig.

  1. Agregue la Annotation knative.k8s.alibabacloud/tls: "true" al archivo YAML de su 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 with your region.
            env:
            - name: TARGET
              value: "Knative"
  2. Agregue un listener en el puerto 443 a su AlbConfig, como 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
          # Options include HTTP, HTTPS, and QUIC
          protocol: HTTPS 
      ...
  3. Compruebe que el servicio sea accesible mediante HTTPS.

    # Replace 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

La puerta de enlace Kourier no incluye gestión de certificados integrada. Debe almacenar el certificado TLS como un Secret en el clúster y, posteriormente, utilizar un DomainMapping para vincular el certificado al dominio.

1. Crear un Secret de certificado

El siguiente ejemplo utiliza un certificado HTTPS autofirmado generado con OpenSSL. Si ya cuenta con un archivo de certificado en formato .pem, omita el paso 1 y comience directamente desde el paso 2.

Los certificados autofirmados son únicamente para fines de prueba. En entornos de producción, utilice un certificado emitido por una autoridad de certificación (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. De manera opcional, obtenga la codificación Base64 de los archivos knativetop-key.pem y knativetop-cert.pem desde step 1. Este procedimiento solo es obligatorio si crea el Secret manualmente a partir de un archivo YAML; no se requiere para el comando kubectl del siguiente paso.

    • Aplique la codificación Base64 al archivo knativetop-key.pem.

      cat knativetop-key.pem | base64

      Resultado esperado:

      a25hdGl2ZXRvcC1r******
    • Aplique la codificación Base64 al archivo knativetop-cert.pem.

      cat knativetop-cert.pem | base64

      Resultado esperado:

      a25hdGl2ZXRvcC1jZ******==
  3. Cree el Secret.

    Al usar un Secret en la configuración TLS de un servicio de Knative, se habilita el acceso seguro al 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. Crear un DomainMapping

En Knative, un DomainMapping es un recurso que asocia un dominio con uno o más servicios de Knative.

Una vez creado el Secret, utilice un DomainMapping para vincular el dominio personalizado al servicio de Knative y habilite el cifrado TLS haciendo referencia a dicho Secret.

  1. Cree un archivo helloworld.knative.top.yaml y escriba a continuación la configuración del 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 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 dominio personalizado.

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

    Resultado esperado:

    >Hello Knative!

Documentos relacionados