Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2024-11-28 GMT+08:00

Serviço usando HTTP

Restrições

  • Somente os clusters v1.19.16 ou posterior suportam HTTP.
  • Não conecte o ingress e o Serviço que usa HTTP ao mesmo ouvinte do mesmo balanceador de carga. Caso contrário, ocorre um conflito de portas.
  • O roteamento de camada-7 do ELB pode ser habilitado para Serviços. Os balanceadores de carga do ELB compartilhados e dedicados podem ser interconectados.

    As restrições em balanceadores de carga do ELB dedicados são as seguintes:

    • Para interconectar-se com um balanceador de carga dedicado existente, o flavor do balanceador de carga deve suportar o roteamento de camada-4 e camada-7. Caso contrário, o balanceador de carga não funcionará como esperado.
    • Se você usar um balanceador de carga criado automaticamente, não poderá usar o console do CCE para criar automaticamente um balanceador de carga dedicado à camada 7. Em vez disso, você pode usar o YAML para criar um balanceador de carga dedicado à camada 7, use os recursos da camada 4 e da camada 7 da instância exclusiva do ELB (ou seja, especifique os flavors de camada-4 e camada-7 na anotação de kubernetes.io/elb.autocreate).

Serviço usando HTTP

As seguintes anotações precisam ser adicionadas:

  • kubernetes.io/elb.protocol-port: "https:443,http:80"

    O valor de protocol-port deve ser o mesmo que a porta no campo spec.ports do Serviço. O formato é Protocol:Port. A porta corresponde à do campo service.spec.ports e é liberada como o protocolo correspondente.

  • kubernetes.io/elb.cert-id: "17e3b4f4bc40471c86741dc3aa211379"

    cert-id indica o ID do certificado no gerenciamento de certificados do ELB. Quando https é configurado para protocol-port, o certificado do ouvinte do ELB será ajustado ao certificado cert-id. Quando vários serviços HTTPS são liberados, o mesmo certificado é usado.

Segue-se um exemplo de configuração. Os dois ports em spec.ports correspondem aos de kubernetes.io/elb.protocol-port. As portas 443 e 80 estão habilitadas para solicitações HTTPS e 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"
      }'
    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

Use as configurações de exemplo anteriores para criar um Serviço. No novo balanceador de carga do ELB, você pode ver que os ouvintes nas portas 443 e 80 são criados.