Невозможно подключиться к частной региональной конечной точке GKE из клиента OpenVPN
Я создал частный кластер GKE через Terraform ( google_container_cluster с private = true
а также region
установить) и установить stable/openvpn
Шлем Диаграмма. Мои настройки в основном такие же, как описано в этой статье: https://itnext.io/use-helm-to-deploy-openvpn-in-kubernetes-to-access-pods-and-services-217dec344f13 и я могу см ClusterIP
- только выставленный сервис, как описано в статье. Тем не менее, пока я подключен к VPN, kubectl
не удается из-за невозможности связаться с мастером.
Я оставил OVPN_NETWORK
настройка по умолчанию (10.240.0.0
) и поменял OVPN_K8S_POD_NETWORK
и настройку маски подсети для вторичного диапазона, который я выбрал при создании своей частной подсети, в которой находится частный кластер.
Я даже пытался добавить 10.240.0.0/16
к моему master_authorized_networks_config
но я почти уверен, что настройка работает только во внешних сетях (добавление внешнего IP-адреса совершенно другого сервера OVPN позволяет мне работать kubectl
когда я к нему подключусь).
Есть идеи, что я здесь делаю не так?
Изменить: я только что вспомнил, что я должен был установить значение для master_ipv4_cidr_block
для того, чтобы создать частный кластер. Итак, я добавил 10.0.0.0/28
в файл ovpn.conf как push "route 10.0.0.0 255.255.255.240"
но это не помогло Документы по этому параметру гласят:
Определяет частный блок RFC1918 для VPC мастера. Основной диапазон не должен перекрываться с какой-либо подсетью в VPC вашего кластера. Мастер и ваш кластер используют пиринг VPC. Должен быть указан в нотации CIDR и должен быть /28 подсети.
но каково значение для клиента OpenVPN в подсети за пределами кластера? Как использовать вышеупомянутый пиринг VPC?
1 ответ
Разобрался в чем проблема: gcloud container clusters get-credentials
всегда записывает внешний IP-адрес мастера ~/.kube/config
, Так kubectl
всегда говорит с этим внешним IP-адресом вместо внутреннего IP-адреса.
Чтобы исправить: я побежал kubectl get endpoints
отметил 10.0.0.x
IP и заменили внешний IP в ~/.kube/config
с этим. Сейчас kubectl
работает нормально при подключении к серверу OVPN внутри кластера Kube.
Можете добавить --internal-ip
на вашу команду gcloud, чтобы автоматически поставить внутренний IP-адрес ~/.kube/config
файл