Configurando um caminho privado Network Load Balancer for VPC
Nuvem Privada Virtual 4.16 e mais tarde
Em ambientes de VPC totalmente privados, sem acesso público à Internet, você pode usar um balanceador de carga de rede de caminho privado para equilibrar o tráfego de rede que flui para os aplicativos em execução nos clusters de VPC. Para obter mais informações, consulte os casos de uso do serviço Private Path.
Pré-requisitos
-
Se você ainda não tiver um aplicativo em execução, implemente um aplicativo em seu cluster. Certifique-se de incluir um rótulo na seção de metadados de seu arquivo de configuração de implementação. Esse rótulo customizado identifica todos os pods nos quais seu app é executado para incluí-los no balanceamento de carga.
Configurando o serviço “ LoadBalancer ”
-
Copie a
LoadBalancerconfiguração* e salve-a em um arquivo chamadolb.yaml.apiVersion: v1 kind: Service metadata: name: <app_name>-vpc-nlb-<VPC_zone> annotations: service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer" service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "private-path" # Required service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" # Required service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet_ID>" spec: type: LoadBalancer selector: <selector_key>: <selector_value> ports: - name: http protocol: TCP port: 8080 targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. - name: https protocol: TCP port: 443 targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise. externalTrafficPolicy: Local # Specify Local or Cluster. -
Personalize os campos para seu caso de uso. Para obter uma lista completa de anotações, consulte Anotações e especificações.
-
Salve as mudanças.
-
Implante o serviço Load Balancer em seu cluster.
oc apply -f lb.yaml
Criação de um serviço de caminho privado
Siga as instruções para criar um serviço de caminho privado.
Configuração de um Virtual Private Endpoint Gateway
Agora que você configurou um serviço de balanceador de carga, deve definir um gateway de ponto de extremidade privado virtual (VPE) para acessar os aplicativos em seu cluster.
Para obter mais informações, consulte Criação de um gateway de endpoint na interface do usuário.
Conexão com seus aplicativos por meio de seu VPE
Para obter informações sobre como se conectar aos seus aplicativos por meio do VPE, consulte Acesso ao seu ponto de extremidade privado virtual após configurar o gateway de ponto de extremidade.
Anotações e especificações
Analise as anotações e especificações necessárias e opcionais do VPC NLB.
Anotações e especificações necessárias
externalTrafficPolicy- Especifique
LocalouCluster. - Configure como
Localpara preservar o endereço IP de origem das solicitações do cliente para seus apps. Essa configuração impede que o tráfego de entrada seja encaminhado para um nó diferente. Esta opção também configura verificações de funcionamento de HTTP. - Se
Clusterestiver configurado, o DSR será implementado apenas no nó do trabalhador para o qual o VPC NLB encaminha inicialmente a solicitação recebida. Após a chegada da solicitação de entrada, ela é encaminhada para um nó de trabalho que contém o pod do aplicativo, que pode estar em uma zona diferente. A resposta do pod do app é enviada ao nó do trabalhador original, e esse nó do trabalhador usa DSR para enviar a resposta diretamente de volta ao cliente, ignorando o VPC NLB. Esta opção também configura verificações de funcionamento do TCP.
Anotações e especificações opcionais
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name- Inclua um nome exclusivo para tornar seu balanceador de carga VPC persistente. Os balanceadores de carga VPC persistentes não são excluídos quando o cluster ao qual pertencem é excluído. Para obter mais informações, consulte Balanceadores de carga VPC persistentes. Essa anotação pode ser definida somente na criação do balanceador de carga. Ele não pode ser usado em uma operação de atualização.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol- Essa anotação define o protocolo de verificação de integridade no recurso de balanceador de carga VPC associado ao serviço de balanceador de carga Kubernetes. As opções disponíveis são
http,httpsoutcp. Normalmente, o protocolo de verificação de integridade do VPC LB é determinado pelo valor da configuraçãoexternalTrafficPolicyna especificação do serviço do balanceador de carga Kubernetes. No entanto, essa anotação substitui essa lógica. Essa anotação não altera a forma como Kubernetes e o kube-proxy, em particular, se comportam em relação às várias configurações deexternalTrafficPolicy. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port- A porta do serviço “ TCP ” utilizada para as verificações de integridade. Essa anotação se aplica somente se
ibm-load-balancer-cloud-provider-vpc-health-check-protocoltambém for especificado. Se a porta TCP especificada estiver fora do intervalo de portas dos nós Kubernetes (30.000–32.767), o grupo de segurança da VPC aplicado aos nós de trabalho do cluster deverá ser modificado para permitir o tráfego de entrada nessa porta. Se essa anotação for aplicada a um serviço de balanceador de carga do Kubernetes associado a um VPC ALB, as regras de saída do grupo de segurança atribuído ao VPC ALB deverão ser modificadas para permitir o tráfego de saída para a porta TCP especificada. Para obter mais informações, consulte Noções básicas sobre redes de VPC de cluster seguras por padrão e Criação e gerenciamento de grupos de segurança de VPC. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets- Anotação para especificar a sub-rede a ser usada para atribuir os endereços IP ao ppNLB. Esses endereços IP são usados apenas internamente. O valor pode ser um ID de sub-rede da VPC, um nome de sub-rede da VPC ou um CIDR de sub-rede da VPC.
Deve-se especificar somente uma sub-rede. Todo o tráfego de entrada parece estar vindo desses endereços IP. Embora todos os endereços estejam em uma única zona, o ppNLB ainda lida com o tráfego de entrada de todas as zonas. Se essa zona
específica for desativada, o tráfego de entrada das outras zonas ainda funcionará. Se você não especificar essa anotação, a sub-rede será selecionada automaticamente e será usada a sub-rede do nó de trabalho do cluster que tiver mais endereços
IP livres disponíveis. Para ver sub-redes em todos os grupos de recursos, execute
ibmcloud oc subnets --provider vpc-gen2 --vpc-id VPC_ID --zone ZONE. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector- Anotação para especificar um seletor de rótulo de nó de trabalho. Você pode configurar nós de trabalho específicos em seu cluster para receber tráfego especificando chaves seletoras de rótulo. É possível incluir apenas um seletor de rótulo
na anotação, e esse seletor deve ser especificado no formato
"key=value". Se essa anotação não for especificada, todos os nós de trabalho do seu cluster serão configurados para receber tráfego do VPC NLB. Essa anotação tem precedência sobre a anotaçãoservice.kubernetes.io/ibm-load-balancer-cloud-provider-zone, e quaisquer rótulosdedicated: edgenos nós de trabalho são ignorados. Para limitar o tráfego a uma zona específica, você pode usar essa anotação para especificar os nós de trabalho nessa zona. Observe que a definição de um novo rótulo em um nó de trabalho do cluster não configura automaticamente o nó de trabalho para receber tráfego; é necessário recriar ou atualizar o VPC NLB para que o nó de trabalho recém-rotulado receba tráfego. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path- A verificação de integridade URL caminho para verificações de integridade de HTTP e HTTPs. Essa anotação se aplica somente se
ibm-load-balancer-cloud-provider-vpc-health-check-protocolestiver definido comohttpouhttps. O caminho URL deve estar no formato de um destino de solicitação de formato de origem. Se essa anotação não for especificada e a anotaçãoibm-load-balancer-cloud-provider-vpc-health-check-protocolfor definida comohttpouhttps, o valor padrão/será aplicado. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay- Opcional. O número de segundos de espera entre as tentativas de verificação de integridade. Por padrão, esse valor é definido como
5e tem um mínimo de2e um máximo de60. Esse valor deve ser maior que o valoribm-load-balancer-cloud-provider-vpc-health-check-timeout, que é definido como2por padrão. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout- Opcional. O número de segundos para aguardar uma resposta a uma verificação de integridade. Por padrão, esse valor é definido como
2e tem um mínimo de1e um máximo de59. Esse valor deve ser menor que oibm-load-balancer-cloud-provider-vpc-health-check-delay, que é definido como5por padrão. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries- O número máximo de novas tentativas de verificação de integridade para o balanceador de carga VPC. Por padrão, esse valor é definido como
2e tem um mínimo de1e um máximo de10. service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota- Opcional. O número de nós de trabalho por zona para os quais o balanceador de carga roteia. O valor padrão é 8. Para um cluster com nós de trabalho em três zonas, isso faz com que o balanceador de carga encaminhe o tráfego para um total de 24 nós de trabalho. O número total de nós de trabalho em todas as zonas para as quais o balanceador de carga roteia não pode exceder 50. Se o cluster tiver menos de 50 nós de trabalho em todas as zonas, especifique 0 para rotear para todos os nós de trabalho em uma zona.
selector- A chave de rótulo (
<selector_key>) e o valor (<selector_value>) usados na seçãospec.template.metadata.labelsdo YAML de implementação do app. Esse rótulo customizado identifica todos os pods nos quais seu app é executado para incluí-los no balanceamento de carga. port- A porta na qual o serviço atende.
targetPort- Opcional: a porta para a qual o serviço direciona o tráfego. O aplicativo em execução no pod deve estar à escuta para tráfego de entrada TCP nessa porta de destino. A porta de destino geralmente é definida estaticamente na imagem que está sendo executada no pod do aplicativo. A porta de destino configurada no pod é diferente da porta do nó para o serviço e também pode ser diferente da porta externa que está configurada no VPC LB.