Estos contenidos se han traducido de forma automática para su comodidad, pero Huawei Cloud no garantiza la exactitud de estos. Para consultar los contenidos originales, acceda a la versión en inglés.
Actualización más reciente 2024-09-10 GMT+08:00

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.