Как я могу разрешить доступ API к кластеру GKE K8S без изменения клиента HTTP - PullRequest
0 голосов
/ 15 января 2020

Я настроил кластер k8s на GKE.

Я хочу управлять им через REST API k8s (поэтому, просматривая развертывания на модулях и т. Д., Но не обращаясь к тому, что на самом деле выполняется в кластере k8s через SSL). Я получил соответствующий токен на предъявителя (curl --insecure [request] работает) и могу делать запросы API. Однако сертификат SSL недействителен для моего клиента (это java, если это имеет значение). Я не могу легко изменить клиента, чтобы принять новый сертификат root в настоящее время.

Я копался и изучал следующие три варианта:

  • включить сертификат CA * кластера root в другую цепочку сертификатов (из моего ограниченного понимания TLS я я не уверен, что это возможно), которое уже существует в моем клиенте.
  • замените сертификат root кластера CA (чтобы я мог использовать то, что мой клиент имеет в своем хранилище ключей). Это подразумевает, что вы можете сделать это с vanilla k8s, но это подразумевает, что вы не можете использовать GKE: "Внутренняя служба Google управляет ключами root для этого ЦС, которые нельзя экспортировать . "
  • разрешить доступ к API k8s без TLS. Я не видел ничего об этом в документах , которые довольно явно указывают на то, что для доступа к kss API по сети должен использоваться TLS

. Есть ли какие-либо из этих жизнеспособных вариантов? Или мой лучший выбор для модификации клиента?

Ответы [ 2 ]

0 голосов
/ 16 января 2020

Основываясь на некоторых других отзывах (вяло), я поставил прокси между моим кластером GKE и моим клиентом. Затем я могу просто добавить сертификат CKE кластера GKE в хранилище ключей прокси (и не нужно изменять клиента). Для моих целей мне не нужно, чтобы прокси-сервер использовал SSL, но для производства я бы.

0 голосов
/ 15 января 2020

Существует статья под названием "Кластеры доступа с использованием API Kubernetes" (https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/), в которой рассматриваются ваши вопросы о том, как запрашивать REST API с помощью Java Клиент (https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#java -клиент )

Если вы используете приложение Java внутри POD, вы можете импортировать CA своего кластера в ваше Java Trust Магазин (https://docs.oracle.com/cd/E19509-01/820-3503/6nf1il6er/index.html). Сертификат CA для вашего кластера находится внутри всех модулей, работающих в вашем кластере в каталоге /var/run/secrets/kubernetes.io/serviceaccount/ca.crt. Дополнительная информация в (https://kubernetes.io/docs/tasks/administer-cluster/access-cluster-api/#without -using-a-proxy )

По вашим вопросам:

1 .- Импортируйте CA своего кластера Сертифицируйте ваш магазин доверия.

2 .- Вы не можете установить свой собственный CA в GKE, но при необходимости вы можете повернуть сертификат CA (https://cloud.google.com/kubernetes-engine/docs/how-to/credential-rotation)

3 .- Вы не можете деактивировать связь TLS в GKE (https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-trust)

Лучшим вариантом является использование официального клиента Java или ДОБАВЬТЕ СА в текущую разработку.

...