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
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre del clúster de destino. En el panel de navegación izquierdo, elija .
-
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.
-
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" -
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 ... -
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 -kResultado 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).
-
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.cnfResultado esperado:
Signature ok subject=CN = helloworld.knative.top Getting Private key -
De manera opcional, obtenga la codificación Base64 de los archivos
knativetop-key.pemyknativetop-cert.pemdesde 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 | base64Resultado esperado:
a25hdGl2ZXRvcC1r****** -
Aplique la codificación Base64 al archivo
knativetop-cert.pem.cat knativetop-cert.pem | base64Resultado esperado:
a25hdGl2ZXRvcC1jZ******==
-
-
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.pemResultado 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.
-
Cree un archivo
helloworld.knative.top.yamly 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 -
Aplique el DomainMapping al clúster.
kubectl apply -f helloworld.knative.top.yamlResultado esperado:
domainmapping.serving.knative.dev/helloworld.knative.top created -
Ejecute el siguiente comando para comprobar que el DomainMapping esté listo.
kubectl get domainmapping helloworld.knative.topResultado esperado:
NAME URL READY REASON helloworld.knative.top https://helloworld.knative.top True -
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 -kResultado esperado:
>Hello Knative!
Documentos relacionados
Es posible configurar un probe para supervisar el estado y la disponibilidad de su servicio de Knative. Para obtener más información, consulte Configure Probes for a Knative Service.
Si su instancia ECI necesita conectarse a Internet, asóciela con una EIP. Para obtener más información, consulte Associate an EIP with an ECI instance for Internet access.