Os balanceadores de carga internos (ILB, na sigla em inglês) expõem serviços dentro da organização de um pool de IPs internos atribuído a ela. Um serviço ILB nunca é acessível de qualquer endpoint fora da organização.
Por padrão, é possível acessar serviços de ILB no mesmo projeto de qualquer cluster na organização. A política de rede do projeto padrão não permite acessar recursos do projeto de fora dele, e essa restrição também se aplica aos serviços de ILB. Se o administrador da plataforma (PA) configurar políticas de rede do projeto que permitam o acesso ao seu projeto de outros projetos, o serviço ILB também poderá ser acessado desses outros projetos na mesma organização.
Antes de começar
Para configurar ILBs, você precisa do seguinte:
- Ser proprietário do projeto em que você está configurando o balanceador de carga. Para mais informações, consulte Criar um projeto.
Os papéis necessários de identidade e acesso:
- Peça ao administrador do IAM da organização para conceder a você o papel de administrador do balanceador de carga (
load-balancer-admin
). - Para ILBs globais, peça ao administrador do IAM da organização para conceder a você o papel de administrador do balanceador de carga global (
global-load-balancer-admin
). Para mais informações, consulte Descrições de papéis predefinidos.
- Peça ao administrador do IAM da organização para conceder a você o papel de administrador do balanceador de carga (
criar um balanceador de carga interno
É possível criar ILBs globais ou zonais. O escopo dos ILBs globais abrange um universo do GDC. O escopo dos ILBs zonais é limitado à zona especificada no momento da criação. Para mais informações, consulte Balanceadores de carga globais e zonais.
Crie ILBs usando três métodos diferentes no GDC:
- Use a CLI gdcloud para criar ILBs globais ou zonais.
- Use a API Networking Kubernetes Resource Model (KRM) para criar ILBs globais ou zonais.
- Use o serviço do Kubernetes diretamente no cluster do Kubernetes. Esse método está disponível apenas para ILBs zonais.
É possível segmentar cargas de trabalho de pods ou VMs usando a API KRM e a CLI gdcloud. Só é possível segmentar cargas de trabalho no cluster em que o objeto Service
é criado ao usar o serviço do Kubernetes diretamente do cluster do Kubernetes.
Criar um ILB zonal
Crie um ILB zonal usando a CLI gdcloud, a API KRM ou o serviço do Kubernetes no cluster do Kubernetes:
gdcloud
Crie um ILB que tenha como destino cargas de trabalho de pod ou VM usando a CLI gdcloud.
Esse ILB tem como destino todas as cargas de trabalho no projeto que correspondem ao
rótulo definido no objeto Backend
.
Para criar um ILB usando a CLI gdcloud, siga estas etapas:
Crie um recurso
Backend
para definir o endpoint do ILB:gdcloud compute backends create BACKEND_NAME \ --labels=LABELS \ --project=PROJECT_NAME \ --zone=ZONE \ --cluster=CLUSTER_NAME
Substitua:
BACKEND_NAME
: o nome escolhido para o recurso de back-end, comomy-backend
.LABELS
: um seletor que define quais endpoints entre pods e VMs usar para esse recurso de back-end. Por exemplo,app=web
.PROJECT_NAME
: o nome do projeto.ZONE
: a zona a ser usada para essa invocação. Para definir previamente a flag de zona para todos os comandos que a exigem, execute:gdcloud config set core/zone ZONE
. A flag de zona está disponível apenas em ambientes multizona. Este campo é opcional.CLUSTER_NAME
: o cluster a que o escopo dos seletores definidos é limitado. Se esse campo não for especificado, todos os endpoints com o rótulo indicado serão selecionados. Este campo é opcional.
Pule esta etapa se o ILB for para cargas de trabalho de pod. Se você estiver configurando um ILB para cargas de trabalho de VM, defina uma verificação de integridade para o ILB:
gdcloud compute health-checks create tcp HEALTH_CHECK_NAME \ --check-interval=CHECK_INTERVAL \ --healthy-threshold=HEALTHY_THRESHOLD \ --timeout=TIMEOUT \ --unhealthy-threshold=UNHEALTHY_THRESHOLD \ --port=PORT \ --zone=ZONE
Substitua:
HEALTH_CHECK_NAME
: o nome escolhido para o recurso de verificação de integridade, comomy-health-check
.CHECK_INTERVAL
: o tempo em segundos entre o início de uma sondagem e o início da próxima. O valor padrão é5
. Este campo é opcional.HEALTHY_THRESHOLD
: o tempo a ser aguardado antes de declarar falha. O valor padrão é5
. Este campo é opcional.TIMEOUT
: o tempo em segundos para aguardar antes de declarar falha. O valor padrão é5
. Este campo é opcional.UNHEALTHY_THRESHOLD
: o número de sondagens seguidas que precisam falhar para que o endpoint seja considerado não íntegro. O valor padrão é2
. Este campo é opcional.PORT
: a porta em que a verificação de integridade é realizada. O valor padrão é80
. Este campo é opcional.ZONE
: a zona em que você está criando o ILB.
Crie um recurso
BackendService
e adicione a ele o recursoBackend
criado anteriormente:gdcloud compute backend-services create BACKEND_SERVICE_NAME \ --project=PROJECT_NAME \ --target-ports=TARGET_PORTS \ --zone=ZONE \ --health-check=HEALTH_CHECK_NAME
Substitua:
BACKEND_SERVICE_NAME
: o nome escolhido para esse serviço de back-end.TARGET_PORTS
: uma lista separada por vírgulas de portas de destino que esse serviço de back-end traduz, em que cada porta de destino especifica o protocolo, a porta na regra de encaminhamento e a porta na instância de back-end. É possível especificar várias portas de destino. Esse campo precisa estar no formatoprotocol:port:targetport
, comoTCP:80:8080
. Este campo é opcional.HEALTH_CHECK_NAME
: o nome do recurso de verificação de integridade. Este campo é opcional. Inclua esse campo apenas se você estiver configurando um ILB para cargas de trabalho de VM.
Adicione o recurso
BackendService
ao recursoBackend
criado anteriormente:gdcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --backend=BACKEND_NAME \ --project=PROJECT_NAME \ --zone=ZONE
Crie um recurso
ForwardingRule
interno que defina o VIP em que o serviço está disponível:gdcloud compute forwarding-rules create FORWARDING_RULE_INTERNAL_NAME \ --backend-service=BACKEND_SERVICE_NAME \ --cidr=CIDR \ --ip-protocol-port=PROTOCOL_PORT \ --load-balancing-scheme=INTERNAL \ --zone=ZONE \ --project=PROJECT_NAME
Substitua:
BACKEND_SERVICE_NAME
: o nome do seu serviço de back-end.FORWARDING_RULE_INTERNAL_NAME
com o nome escolhido para a regra de encaminhamento.CIDR
: este campo é opcional. Se não for especificado, um CIDRIPv4/32
será reservado automaticamente do pool de IP zonal. Especifique o nome de um recursoSubnet
no mesmo namespace que esta regra de encaminhamento. Um recursoSubnet
representa as informações de solicitação e alocação de uma sub-rede zonal. Para mais informações sobre recursosSubnet
, consulte Exemplo de recursos personalizados.PROTOCOL_PORT
: o protocolo e a porta a serem expostos na regra de encaminhamento. Esse campo precisa estar no formatoip-protocol=TCP:80
. A porta exposta precisa ser a mesma que o aplicativo real está expondo dentro do contêiner.
Para validar o ILB configurado, confirme a condição
Ready
em cada um dos objetos criados. Verifique o tráfego com uma solicitaçãocurl
para o VIP:Para receber o VIP atribuído, descreva a regra de encaminhamento:
gdcloud compute forwarding-rules describe FORWARDING_RULE_INTERNAL_NAME
Verifique o tráfego com uma solicitação
curl
para o VIP na porta especificada no campoPROTOCOL_PORT
da regra de encaminhamento:curl http://FORWARDING_RULE_VIP:PORT
Substitua:
FORWARDING_RULE_VIP
: o VIP da regra de encaminhamento.PORT
: o número da porta do campoPROTOCOL_PORT
na regra de encaminhamento.
API
Crie um ILB que tenha como destino cargas de trabalho de pod ou VM usando a API KRM.
Esse ILB tem como destino todas as cargas de trabalho no projeto que correspondem ao
rótulo definido no objeto Backend
.
Para criar um ILB zonal usando a API KRM, siga estas etapas:
Crie um recurso
Backend
para definir os endpoints do ILB. Crie recursosBackend
para cada zona em que as cargas de trabalho estão localizadas:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: Backend metadata: namespace: PROJECT_NAME name: BACKEND_NAME spec: clusterName: CLUSTER_NAME endpointsLabels: matchLabels: app: server EOF
Substitua:
MANAGEMENT_API_SERVER
: o caminho kubeconfig do servidor da API Management zonal. Para mais informações, consulte Mudar para um contexto zonal.PROJECT_NAME
: o nome do projeto.BACKEND_NAME
: o nome do recurso ;Backend
CLUSTER_NAME
: este é um campo opcional. Esse campo especifica o cluster a que o escopo dos seletores definidos está limitado. Esse campo não se aplica a cargas de trabalho de VM. Se um recursoBackend
não tiver o campoclusterName
incluído, os rótulos especificados serão aplicados a todas as cargas de trabalho no projeto.
Você pode usar o mesmo recurso
Backend
para cada zona ou criar recursosBackend
com conjuntos de rótulos diferentes para cada zona.Pule esta etapa se o ILB for para cargas de trabalho de pod. Se você estiver configurando um ILB para cargas de trabalho de VM, defina uma verificação de integridade para o ILB:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: HealthCheck metadata: namespace: PROJECT_NAME name: HEALTH_CHECK_NAME spec: tcpHealthCheck: port: PORT timeoutSec: TIMEOUT checkIntervalSec: CHECK_INTERVAL healthyThreshold: HEALTHY_THRESHOLD unhealthyThreshold: UNHEALTHY_THRESHOLD EOF
Substitua:
HEALTH_CHECK_NAME
: o nome escolhido para o recurso de verificação de integridade, comomy-health-check
.PORT
: a porta em que a verificação de integridade é realizada. O valor padrão é80
.TIMEOUT
: o tempo em segundos para aguardar antes de declarar falha. O valor padrão é5
.CHECK_INTERVAL
: o tempo em segundos entre o início de uma sondagem e o início da próxima. O valor padrão é5
.HEALTHY_THRESHOLD
: o número de sondagens sequenciais que precisam ser aprovadas para que o endpoint seja considerado íntegro. O valor padrão é2
.UNHEALTHY_THRESHOLD
: o número de sondagens seguidas que precisam falhar para que o endpoint seja considerado não íntegro. O valor padrão é2
.
Crie um objeto
BackendService
usando o recursoBackend
criado anteriormente. Se você estiver configurando um ILB para cargas de trabalho de VM, inclua o recursoHealthCheck
.kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: BackendService metadata: namespace: PROJECT_NAME name: BACKEND_SERVICE_NAME spec: backendRefs: - name: BACKEND_NAME healthCheckName: HEALTH_CHECK_NAME EOF
Substitua:
BACKEND_SERVICE_NAME
: o nome escolhido para o recursoBackendService
.HEALTH_CHECK_NAME
: o nome do recursoHealthCheck
criado anteriormente. Não inclua esse campo se estiver configurando um ILB para cargas de trabalho de pod.
Crie um recurso
ForwardingRule
interno que defina o VIP em que o serviço está disponível.kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: ForwardingRuleInternal metadata: namespace: PROJECT_NAME Name: FORWARDING_RULE_INTERNAL_NAME spec: cidrRef: CIDR ports: - port: PORT Protocol: PROTOCOL backendServiceRef: name: BACKEND_SERVICE_NAME EOF
Substitua:
FORWARDING_RULE_INTERNAL_NAME
: o nome escolhido para o recursoForwardingRuleInternal
.CIDR
: este campo é opcional. Se não for especificado, um CIDRIPv4/32
será reservado automaticamente do pool de IP zonal. Especifique o nome de um recursoSubnet
no mesmo namespace que esta regra de encaminhamento. Um recursoSubnet
representa as informações de solicitação e alocação de uma sub-rede zonal. Para mais informações sobre recursosSubnet
, consulte Exemplo de recursos personalizados.PORT
: use o campoports
para especificar uma matriz de portas L4 para as quais os pacotes são encaminhados aos back-ends configurados com essa regra de encaminhamento. É necessário especificar pelo menos uma porta. Use o campoport
para especificar um número de porta. A porta exposta precisa ser a mesma que o aplicativo real está expondo dentro do contêiner.PROTOCOL
: o protocolo a ser usado para a regra de encaminhamento, comoTCP
. Uma entrada na matrizports
precisa ser assim:ports: - port: 80 protocol: TCP
Para validar o ILB configurado, confirme a condição
Ready
em cada um dos objetos criados. Verifique o tráfego com uma solicitaçãocurl
para o VIP:Para conseguir o VIP, use
kubectl get
:kubectl get forwardingruleinternal -n PROJECT_NAME
A saída será assim:
NAME BACKENDSERVICE CIDR READY ilb-name BACKEND_SERVICE_NAME 10.200.32.59/32 True
Verifique o tráfego com uma solicitação
curl
para o VIP na porta especificada no campoPORT
da regra de encaminhamento:curl http://FORWARDING_RULE_VIP:PORT
Substitua
FORWARDING_RULE_VIP
pelo VIP da regra de encaminhamento.
Serviço do Kubernetes
Para criar ILBs no GDC, crie um objeto Service
do Kubernetes do tipo LoadBalancer
em um cluster do Kubernetes. Esse ILB tem como destino apenas cargas de trabalho no cluster em que o objeto Service
é criado.
Para criar um ILB com o objeto Service
, siga estas etapas:
Crie um arquivo YAML para a definição
Service
do tipoLoadBalancer
. Você precisa projetar o serviço ILB como interno usando a anotaçãonetworking.gke.io/load-balancer-type: internal
.O objeto
Service
a seguir é um exemplo de um serviço ILB:apiVersion: v1 kind: Service metadata: annotations: networking.gke.io/load-balancer-type: internal name: ILB_SERVICE_NAME namespace: PROJECT_NAME spec: ports: - port: 1234 protocol: TCP targetPort: 1234 selector: k8s-app: my-app type: LoadBalancer
Substitua:
ILB_SERVICE_NAME
: o nome do serviço ILB.PROJECT_NAME
: o namespace do projeto que contém as cargas de trabalho de back-end.
O campo
port
configura a porta de front-end que você expõe no endereço VIP. O campotargetPort
configura a porta de back-end para onde você quer encaminhar o tráfego nas cargas de trabalho de back-end. O balanceador de carga é compatível com a conversão de endereços de rede (NAT, na sigla em inglês). As portas de front-end e back-end podem ser diferentes.No campo
selector
da definiçãoService
, especifique pods ou máquinas virtuais como as cargas de trabalho de back-end.O seletor define quais cargas de trabalho serão usadas como back-end para esse serviço, com base na correspondência entre os rótulos especificados e os rótulos das cargas de trabalho. O
Service
só pode selecionar cargas de trabalho de back-end no mesmo projeto e cluster em que você define oService
.Para mais informações sobre a seleção de serviços, consulte https://kubernetes.io/docs/concepts/services-networking/service/.
Salve o arquivo de definição
Service
no mesmo projeto que as cargas de trabalho de back-end. O serviço ILB só pode selecionar cargas de trabalho que estão no mesmo cluster da definição deService
.Aplique o arquivo de definição
Service
ao cluster:kubectl apply -f ILB_FILE
Substitua
ILB_FILE
pelo nome do arquivo de definiçãoService
do serviço ILB.Quando você cria um serviço ILB, ele recebe um endereço IP. Para conseguir o endereço IP do serviço ILB, confira o status dele:
kubectl -n PROJECT_NAME get svc ILB_SERVICE_NAME
Substitua:
PROJECT_NAME
: o namespace do projeto que contém as cargas de trabalho de back-end.ILB_SERVICE_NAME
: o nome do serviço ILB.
Você vai receber uma saída semelhante a este exemplo:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE ilb-service LoadBalancer 10.0.0.1 10.0.0.1 1234:31930/TCP 22h
Os campos
CLUSTER-IP
eEXTERNAL-IP
precisam mostrar o mesmo valor, que é o endereço IP do serviço ILB. Agora, esse endereço IP está acessível de outros clusters na organização, de acordo com as políticas de rede do projeto que ele tem.Se você não receber uma saída, verifique se criou o serviço ILB com sucesso.
O GDC aceita nomes do Sistema de Nomes de Domínio (DNS) para serviços. No entanto, esses nomes só funcionam no mesmo cluster para serviços ILB. Em outros clusters, use o endereço IP para acessar o serviço ILB.
Criar um ILB global
Crie um ILB global usando a CLI gdcloud ou a API KRM.
gdcloud
Crie um ILB que tenha como destino cargas de trabalho de pod ou VM usando a CLI gdcloud.
Esse ILB tem como destino todas as cargas de trabalho no projeto que correspondem ao
rótulo definido no objeto Backend
. O recurso personalizado Backend
precisa ter escopo em uma zona.
Para criar um ILB usando a CLI gdcloud, siga estas etapas:
Crie um recurso
Backend
para definir o endpoint do ILB:gdcloud compute backends create BACKEND_NAME \ --labels=LABELS \ --project=PROJECT_NAME \ --cluster=CLUSTER_NAME \ --zone=ZONE
Substitua:
BACKEND_NAME
: o nome escolhido para o recurso de back-end, comomy-backend
.LABELS
: um seletor que define quais endpoints entre pods e VMs usar para esse recurso de back-end. Por exemplo,app=web
.PROJECT_NAME
: o nome do projeto.CLUSTER_NAME
: o cluster a que o escopo dos seletores definidos é limitado. Se esse campo não for especificado, todos os endpoints com o rótulo indicado serão selecionados. Este campo é opcional.ZONE
: a zona a ser usada para essa invocação. Para definir a flag de zona para todos os comandos que a exigem, execute:gdcloud config set core/zone ZONE
. A flag de zona só está disponível em ambientes multizonais. Este campo é opcional.
Pule esta etapa se o ILB for para cargas de trabalho de pod. Se você estiver configurando um ILB para cargas de trabalho de VM, defina uma verificação de integridade para o ILB:
gdcloud compute health-checks create tcp HEALTH_CHECK_NAME \ --check-interval=CHECK_INTERVAL \ --healthy-threshold=HEALTHY_THRESHOLD \ --timeout=TIMEOUT \ --unhealthy-threshold=UNHEALTHY_THRESHOLD \ --port=PORT \ --global
Substitua:
HEALTH_CHECK_NAME
: o nome escolhido para o recurso de verificação de integridade, comomy-health-check
.CHECK_INTERVAL
: o tempo em segundos entre o início de uma sondagem e o início da próxima. O valor padrão é5
. Este campo é opcional.HEALTHY_THRESHOLD
: o tempo a ser aguardado antes de declarar falha. O valor padrão é5
. Este campo é opcional.TIMEOUT
: o tempo em segundos para aguardar antes de declarar falha. O valor padrão é5
. Este campo é opcional.UNHEALTHY_THRESHOLD
: o número de sondagens seguidas que precisam falhar para que o endpoint seja considerado não íntegro. O valor padrão é2
. Este campo é opcional.PORT
: a porta em que a verificação de integridade é realizada. O valor padrão é80
. Este campo é opcional.
Crie um recurso
BackendService
e adicione a ele o recursoBackend
criado anteriormente:gdcloud compute backend-services create BACKEND_SERVICE_NAME \ --project=PROJECT_NAME \ --target-ports=TARGET_PORTS \ --health-check=HEALTH_CHECK_NAME \ --global
Substitua:
BACKEND_SERVICE_NAME
: o nome escolhido para esse serviço de back-end.TARGET_PORTS
: uma lista separada por vírgulas de portas de destino que esse serviço de back-end traduz, em que cada porta de destino especifica o protocolo, a porta na regra de encaminhamento e a porta na instância de back-end. É possível especificar várias portas de destino. Esse campo precisa estar no formatoprotocol:port:targetport
, comoTCP:80:8080
. Este campo é opcional.HEALTH_CHECK_NAME
: o nome do recurso de verificação de integridade. Este campo é opcional. Inclua esse campo apenas se você estiver configurando um ILB para cargas de trabalho de VM.
Adicione o recurso
BackendService
ao recursoBackend
criado anteriormente:gdcloud compute backend-services add-backend BACKEND_SERVICE_NAME \ --backend-zone BACKEND_ZONE \ --backend=BACKEND_NAME \ --project=PROJECT_NAME \ --global
Crie um recurso
ForwardingRule
interno que defina o VIP em que o serviço está disponível:gdcloud compute forwarding-rules create FORWARDING_RULE_INTERNAL_NAME \ --backend-service=BACKEND_SERVICE_NAME \ --cidr=CIDR \ --ip-protocol-port=PROTOCOL_PORT \ --load-balancing-scheme=INTERNAL \ --project=PROJECT_NAME \ --global
Substitua:
FORWARDING_RULE_INTERNAL_NAME
: o nome escolhido para a regra de encaminhamento.CIDR
: o nome de um recursoSubnet
no mesmo namespace que esta regra de encaminhamento. Um recursoSubnet
representa as informações de solicitação e alocação de uma sub-rede global. Para mais informações sobre recursosSubnet
, consulte Exemplo de recursos personalizados. Se não for especificado, um CIDRIPv4/32
será reservado automaticamente do pool de IP global. Este campo é opcional.PROTOCOL_PORT
: o protocolo e a porta a serem expostos na regra de encaminhamento. Esse campo precisa estar no formatoip-protocol=TCP:80
. A porta exposta precisa ser a mesma que o aplicativo está expondo dentro do contêiner.
Para validar o ILB configurado, confirme a condição
Ready
em cada um dos objetos criados. Verifique o tráfego com uma solicitaçãocurl
para o VIP:Para receber o VIP atribuído, descreva a regra de encaminhamento:
gdcloud compute forwarding-rules describe FORWARDING_RULE_INTERNAL_NAME --global
Verifique o tráfego com uma solicitação
curl
para o VIP na porta especificada no campoPROTOCOL_PORT
da regra de encaminhamento:curl http://FORWARDING_RULE_VIP:PORT
Substitua:
FORWARDING_RULE_VIP
: o VIP da regra de encaminhamento.PORT
: o número da porta do campoPROTOCOL_PORT
na regra de encaminhamento.
API
Crie um ILB que tenha como destino cargas de trabalho de pod ou VM usando a API KRM. Esse ILB tem como destino todas as cargas de trabalho no projeto que correspondem ao rótulo definido no objeto Backend. Para criar um ILB zonal usando a API KRM, siga estas etapas:
Crie um recurso
Backend
para definir os endpoints do ILB. Crie recursosBackend
para cada zona em que as cargas de trabalho estão localizadas:kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.gdc.goog/v1 kind: Backend metadata: namespace: PROJECT_NAME name: BACKEND_NAME spec: clusterName: CLUSTER_NAME endpointsLabels: matchLabels: app: server EOF
Substitua:
MANAGEMENT_API_SERVER
: o caminho kubeconfig do servidor da API Management global. Para mais informações, consulte Mudar para o contexto global.PROJECT_NAME
: o nome do projeto.BACKEND_NAME
: o nome do recurso ;Backend
CLUSTER_NAME
: este é um campo opcional. Esse campo especifica o cluster a que o escopo dos seletores definidos está limitado. Esse campo não se aplica a cargas de trabalho de VM. Se um recursoBackend
não tiver o campoclusterName
incluído, os rótulos especificados serão aplicados a todas as cargas de trabalho no projeto.
Você pode usar o mesmo recurso
Backend
para cada zona ou criar recursosBackend
com conjuntos de rótulos diferentes para cada zona.Pule esta etapa se o ILB for para cargas de trabalho de pod. Se você estiver configurando um ILB para cargas de trabalho de VM, defina uma verificação de integridade para o ILB:
apiVersion: networking.global.gdc.goog/v1 kind: HealthCheck metadata: namespace: PROJECT_NAME name: HEALTH_CHECK_NAME spec: tcpHealthCheck: port: PORT timeoutSec: TIMEOUT checkIntervalSec: CHECK_INTERVAL healthyThreshold: HEALTHY_THRESHOLD unhealthyThreshold: UNHEALTHY_THRESHOLD
Substitua:
HEALTH_CHECK_NAME
: o nome escolhido para o recurso de verificação de integridade, comomy-health-check
.PORT
: a porta em que a verificação de integridade é realizada. O valor padrão é80
.TIMEOUT
: o tempo em segundos para aguardar antes de declarar falha. O valor padrão é5
.CHECK_INTERVAL
: o tempo em segundos entre o início de uma sondagem e o início da próxima. O valor padrão é5
.HEALTHY_THRESHOLD
: o número de sondagens sequenciais que precisam ser aprovadas para que o endpoint seja considerado íntegro. O valor padrão é2
.UNHEALTHY_THRESHOLD
: o número de sondagens seguidas que precisam falhar para que o endpoint seja considerado não íntegro. O valor padrão é2
.
Como este é um ILB global, crie a verificação de integridade na API global.
Crie um objeto
BackendService
usando o recursoBackend
criado anteriormente. Se você estiver configurando um ILB para cargas de trabalho de VM, inclua o recursoHealthCheck
.kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: BackendService metadata: namespace: PROJECT_NAME name: BACKEND_SERVICE_NAME spec: backendRefs: - name: BACKEND_NAME zone: ZONE healthCheckName: HEALTH_CHECK_NAME targetPorts: - port: PORT protocol: PROTOCOL targetPort: TARGET_PORT EOF
Substitua:
BACKEND_SERVICE_NAME
: o nome escolhido para o recursoBackendService
.HEALTH_CHECK_NAME
: o nome do recursoHealthCheck
criado anteriormente. Não inclua esse campo se você estiver configurando um ILB para cargas de trabalho de pod.ZONE
: a zona em que o recursoBackend
é criado. É possível especificar vários back-ends no campobackendRefs
. Exemplo:- name: my-be zone: Zone-A - name: my-be zone: Zone-B
O campo
targetPorts
é opcional. Esse recurso lista as portas que o recursoBackendService
traduz. Se você estiver usando esse objeto, forneça valores para o seguinte:PORT
: a porta exposta pelo serviço.PROTOCOL
: o protocolo da camada 4 que o tráfego precisa corresponder. Somente TCP e UDP são aceitos.TARGET_PORT
: a porta para a qual o valor dePORT
é traduzido, como8080
. O valor deTARGET_PORT
não pode ser repetido em um determinado objeto. Um exemplo detargetPorts
pode ser assim:targetPorts: - port: 80 protocol: TCP targetPort: 8080
Crie um recurso
ForwardingRule
interno que defina o VIP em que o serviço está disponível.kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF apiVersion: networking.global.gdc.goog/v1 kind: ForwardingRuleInternal metadata: namespace: PROJECT_NAME Name: FORWARDING_RULE_INTERNAL_NAME spec: cidrRef: CIDR ports: - port: PORT Protocol: PROTOCOL backendServiceRef: name: BACKEND_SERVICE_NAME EOF
Substitua:
FORWARDING_RULE_INTERNAL_NAME
: o nome escolhido para o recursoForwardingRuleInternal
.CIDR
: o nome de um recursoSubnet
no mesmo namespace que esta regra de encaminhamento. Um recursoSubnet
representa as informações de solicitação e alocação de uma sub-rede global. Para mais informações sobre recursosSubnet
, consulte Exemplo de recursos personalizados. Se não for especificado, um CIDRIPv4/32
será reservado automaticamente do pool de IP global. Este campo é opcional.PORT
: use o campoports
para especificar uma matriz de portas L4 para as quais os pacotes são encaminhados aos back-ends configurados com essa regra de encaminhamento. É necessário especificar pelo menos uma porta. Use o campoport
para especificar um número de porta. A porta exposta precisa ser a mesma que o aplicativo real está expondo dentro do contêiner.PROTOCOL
: o protocolo a ser usado para a regra de encaminhamento, comoTCP
. Uma entrada na matrizports
precisa ser assim:ports: - port: 80 protocol: TCP
Para validar o ILB configurado, confirme a condição
Ready
em cada um dos objetos criados. Verifique o tráfego com uma solicitaçãocurl
para o VIP:Para conseguir o VIP, use
kubectl get
:kubectl get forwardingruleinternal -n PROJECT_NAME
A saída será assim:
NAME BACKENDSERVICE CIDR READY ilb-name BACKEND_SERVICE_NAME 10.200.32.59/32 True
Teste o tráfego com uma solicitação
curl
para o VIP na porta especificada no campoPORT
da regra de encaminhamento:curl http://FORWARDING_RULE_VIP:PORT
Substitua
FORWARDING_RULE_VIP
pelo VIP da regra de encaminhamento.