Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Compartilhar um grupo de destino entre dois clusters
O exemplo a seguir compartilha um grupo de destino entre dois clusters. O primeiro cluster possui o Application Load Balancer por meio de um Ingress, e o segundo cluster se junta ao grupo de destino compartilhado por meio de um TargetGroupBinding criado manualmente. Antes de começar, revise Compartilhar grupos de destino de vários clusters para entender como o suporte a MultiCluster funciona e como habilitá-lo.
Cluster 1: gerencie o balanceador de carga por meio de um Ingress
Implante sua aplicação (por exemplo, uma implantação com um serviço NodePort) e depois crie um IngressClass e um Ingress que carregue a anotação de vários clusters.
apiVersion: networking.k8s.io/v1 kind: IngressClass metadata: name: alb-mc spec: controller: eks.amazonaws.com/alb --- apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: echoserver namespace: echoserver annotations: alb.ingress.kubernetes.io/scheme: internet-facing alb.ingress.kubernetes.io/target-type: instance alb.ingress.kubernetes.io/multi-cluster-target-group: "true" spec: ingressClassName: alb-mc rules: - http: paths: - path: / pathType: Exact backend: service: name: echoserver port: number: 80
O controlador provisiona o balanceador de carga e gera um TargetGroupBinding com spec.multiClusterTargetGroup: true. Observe os seguintes valores do serviço e do TargetGroupBinding gerado: o segundo cluster precisa dos três:
-
O
targetGroupARN. -
O serviço do
nodePort. -
O ID do grupo de segurança do balanceador de carga de
spec.networking.ingress[].from[].securityGroup.groupID.
Cluster 2: ingresse no grupo de destino compartilhado por meio de um TargetGroupBinding
Implante a mesma aplicação fixando o serviço no nodePort do cluster 1 e, em seguida, crie um TargetGroupBinding que faça referência ao ARN do grupo de destino e ao ID do grupo de segurança do cluster 1.
apiVersion: eks.amazonaws.com/v1 kind: TargetGroupBinding metadata: name: mc-echoserver namespace: echoserver spec: multiClusterTargetGroup: true serviceRef: name: echoserver port: 80 targetGroupARN: <cluster-1-target-group-arn> targetType: instance networking: ingress: - from: - securityGroup: groupID: <cluster-1-alb-security-group-id> ports: - port: <cluster-2-node-port> protocol: TCP
Com o suporte a MultiCluster habilitado em ambas as vinculações, cada cluster registra e cancela o registro somente de seus próprios destinos. Os nós dos dois clusters permanecem íntegros em um único grupo de destino compartilhado, e o balanceador de carga distribui o tráfego em todos eles.