Я совсем растерялся, и мне нужны некоторые четкие указания.
Я создал 2 кластера kubernetes на aws в VPC.Каждый кластер имеет свои собственные подсети.
Первый кластер «MI» предназначен для микросервисов и приложений, которым необходимы секреты хранилища
Второй «VA» предназначен для консула / хранилища.
Очевидно, что идея состоит в том, чтобы заставить кластер "MI" взаимодействовать с хранилищем в кластере "VA".В контейнере init каждого микро-сервиса я получал токен хранилища:
$(curl -sS --request POST $VAULT_ADDRESS/v1/auth/kubernetes/login -H "Content-Type: application/json" -d '{"role":"$VAULT_POLICY","jwt":"$JWT"}' --insecure | jq -r 'if .errors then . else .auth.client_token end')
Чтобы достичь этого, даже если это не рекомендуется, мне нужен балансировщик нагрузки, так как узлы моего кластера недоступны, ониесть только частный ip ... верно?
В этом отношении документация гласит:
Иногда клиенты используют балансировщики нагрузки в качестве начального метода для доступа к одному из серверов Vault, нона самом деле имеют прямой доступ к каждому узлу Vault.В этом случае серверы Vault должны быть настроены так, как описано в приведенном выше разделе, поскольку для перенаправления клиенты имеют прямой доступ.
В моем случае, с учетом узлов Vault находятся за VPCЯ полагаю, что этот абзац не относится ко мне, так как я не смогу напрямую связаться с этим адресом.
Тогда там написано:
Однако, если единственный доступ к Хранилищусерверы через балансировщик нагрузки, api_addr на каждом узле должен быть одинаковым: адрес балансировщика нагрузки.Клиенты, которые достигают резервного узла, будут перенаправлены обратно на балансировщик нагрузки;в этот момент, надеюсь, конфигурация балансировщика нагрузки будет обновлена, чтобы узнать адрес текущего лидера.Это может вызвать петлю перенаправления и, как таковое, не является рекомендуемой настройкой, когда ее можно избежать.
Полагаю, я нахожусь в такой ситуации, поскольку мои экземпляры хранилища будут доступны только через ELB, верно?Я понимаю, что для того, чтобы это работало, нужно установить
api_addr = "https://$(LOAD_BALANCER_ADDR):8200"
. Есть ли способ исправить цикл перенаправления?
Я видел, что конфигурация, использующая ELB, также настроила для него глобальный ip.,Я не понимаю, почему статический IP имеет значение?Разве DNS не достаточно?
В AWS вы не можете создать глобальный ip для LB, но, начиная с kubernetes 1.9, вы можете использовать сетевой LB со статическим IP?NLB?