Sinto muito pela complexidade! Não sou especialista em firewalls do Compute Engine, mas espero que você esteja correto quanto às limitações das tags de origem para trabalhar apenas para tráfego interno.
A equipe do Kubernetes está ciente de que é difícil coordenar vários clusters e estamos começando a trabalhar em soluções, mas infelizmente não temos nada particularmente sólido e útil para você ainda.
Nesse meio tempo, há um jeito hacker de balancear a carga do tráfego de um cluster para outro sem exigir o Google Cloud Load Balancer ou algo parecido com o haproxy. Você pode especificar o endereço IP interno de um dos nós no cluster B (ou o IP de uma rota GCE que direciona o tráfego para um dos nós no cluster B) no campo PublicIPs do serviço com o qual você deseja conversar. Em seguida, o cluster A envia suas solicitações para esse IP na porta do serviço e elas serão equilibradas em todos os pods que suportam o serviço.
Ele deve funcionar porque há algo chamado kube-proxy em execução em cada nó do cluster do kubernetes, que faz proxy automaticamente do tráfego destinado ao IP e porta de um serviço para os pods que suportam o serviço. Contanto que o PublicIP esteja na definição de serviço, o kube-proxy irá equilibrar o tráfego para você.
Se você parar aqui, isso é tão confiável quanto o nó para o qual o IP está enviando tráfego (mas a confiabilidade de nó único é realmente muito alta). No entanto, se você quiser ficar realmente chique, podemos tornar as coisas um pouco mais confiáveis, pelo balanceamento de carga do cluster A em todos os nós do cluster B.
Para fazer isso funcionar, você colocaria todos os IPs internos dos nós do cluster B (ou rotas para todos os IPs internos dos nós) no campo PublicIPs do seu serviço. Em seguida, no cluster A, você poderia criar um serviço separado com um seletor de rótulo vazio e preencher o campo de pontos de extremidade manualmente ao criá-lo com um par (IP, porta) para cada IP no cluster B. O seletor de rótulo vazio impede a infra-estrutura do kubernetes substitui seus terminais inseridos manualmente e os proxies kube no cluster A farão o balanceamento de carga do tráfego para o serviço entre os IPs do cluster B. Isso foi possível graças ao PR # 2450 , se você quiser mais contexto.
Deixe-me saber se você precisa de mais ajuda com isso!