Service usando HTTP
Restricciones
- Solo los clústeres de v1.19.16 o posterior admiten HTTP.
- No conecte el ingreso y el Service que utiliza HTTP al mismo oyente del mismo balanceador de carga. De lo contrario, se produce un conflicto de puerto.
- El enrutamiento de capa 7 de ELB se puede habilitar para los Services. Tanto los balanceadores de carga de ELB compartidos como los dedicados pueden estar interconectados.
Las restricciones en los balanceadores de carga de ELB dedicados son las siguientes:
- Para interconectarse con un balanceador de carga dedicado existente, la variante de balanceador de carga debe soportar tanto el enrutamiento de capa 4 como de capa 7. De lo contrario, el balanceador de carga no funcionará como se espera.
- Si utiliza un balanceador de carga creado automáticamente, no puede utilizar la consola de CCE para crear automáticamente un balanceador de carga dedicado de capa 7. En su lugar, puede usar YAML para crear un balanceador de carga dedicado de capa 7, usar las capacidades de capa 4 y capa 7 de la instancia de ELB exclusiva (es decir, especifique las variantes de capa 4 y capa 7 en la anotación de kubernetes.io/elb.autocreate).
Service usando HTTP
Es necesario agregar las siguientes anotaciones:
- kubernetes.io/elb.protocol-port: "https:443,http:80"
El valor de protocol-port debe ser el mismo que el puerto en el campo spec.ports del Service. El formato es Protocol:Port. El puerto coincide con el del campo service.spec.ports y se libera como el protocolo correspondiente.
- kubernetes.io/elb.cert-id: "17e3b4f4bc40471c86741dc3aa211379"
cert-id indica el ID de certificado en la gestión de certificados de ELB. Cuando https está configurado para protocol-port, el certificado del oyente de ELB se establecerá en el certificado cert-id. Cuando se liberan varios servicios de HTTPS, se utiliza el mismo certificado.
El siguiente es un ejemplo de configuración. Los dos puertos de spec.ports corresponden a los de kubernetes.io/elb.protocol-port. Los puertos 443 y 80 están habilitados para solicitudes de HTTPS y de HTTP, respectivamente.
apiVersion: v1 kind: Service metadata: annotations: # When an ELB load balancer is automatically created, both layer-4 and layer-7 flavors need to be specified. kubernetes.io/elb.autocreate: ' { "type": "public", "bandwidth_name": "cce-bandwidth-1634816602057", "bandwidth_chargemode": "bandwidth", "bandwidth_size": 5, "bandwidth_sharetype": "PER", "eip_type": "5_bgp", "available_zone": [ "" ], "l7_flavor_name": "L7_flavor.elb.s2.small", "l4_flavor_name": "L4_flavor.elb.s1.medium" }' kubernetes.io/elb.class: performance kubernetes.io/elb.protocol-port: "https:443,http:80" kubernetes.io/elb.cert-id: "17e3b4f4bc40471c86741dc3aa211379" labels: app: nginx name: test name: test namespace: default spec: ports: - name: cce-service-0 port: 443 protocol: TCP targetPort: 80 - name: cce-service-1 port: 80 protocol: TCP targetPort: 80 selector: app: nginx version: v1 sessionAffinity: None type: LoadBalancer
Utilice las configuraciones de ejemplo anteriores para crear un Service. En el nuevo balanceador de carga de ELB, puede ver que se crean los oyentes en los puertos 443 y 80.