Как получить доступ к частному репозиторию gcloud на локальном кластере kubernetes? - PullRequest
0 голосов
/ 03 мая 2018

У нас есть кластер kubernetes, который работает локально, и у нас есть частный репозиторий GCR. Итак, как мы можем получить доступ к этому частному репозиторию к моему локальному кластеру kubernetes. Как я знаю, мы можем сделать это с помощью gcloud-sdk, но установить gcloud-sdk на каждом узле кластера kubernetes не удастся.

Ответы [ 2 ]

0 голосов
/ 09 мая 2018

Мы использовали для развертывания модулей в кластере Azure AKS, а изображения были из GCR. Вот шаги, которым мы следуем.

  1. Создайте учетную запись службы в gcloud с разрешениями для gcr.
  2. Создание ключей для учетной записи службы.
  3. Добавить секрет kubectl.
  4. Используйте секрет в yaml

gcloud iam service-accounts keys create gcr-docker-cred.json --iam-account=service-account-name@project-id.iam.gserviceaccount.com

Добавить секрет kubectl.

kubectl create secret docker-registry gcriosecret --docker-server=https://gcr.io --docker-username=_json_key --docker-email=user@example.com --docker-password="$(cat gcr-docker-cred.json)"

Использовать секрет в yaml

imagePullSecrets: - name: gcriosecret

этот блог может быть хорошей помощью

0 голосов
/ 07 мая 2018

Кластеры Kubernetes, работающие на GKE или GCE, имеют встроенную поддержку для доступа к реестру контейнеров и не требуют дальнейшей настройки.

Как вы упомянули, что вы используете локальный кластер, вы не запускаете ни одного из них и используете только реестр контейнеров из GCP, поэтому, хотя у меня не было возможности проверить это (у меня нет кластер вне Google Cloud) процесс не должен отличаться от процесса извлечения изображения из частного реестра.

В вашем случае вы можете создать секрет с учетными данными аутентификации для реестра gcr.io следующим образом:

kubectl create secret docker-registry regcred --docker-server=<your-registry-server> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email>

ваш-реестр-сервер в этом случае, вероятно, будет https://gcr.io/[your-project-id]

Когда вы создали секрет с именем regcred, вы можете настроить pods, чтобы использовать его для извлечения нужного изображения из реестра, добавив imagePullSecrets, например:

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: [The image you want to pull]
  imagePullSecrets:
  - name: regcred

Затем вы можете проверить, правильно ли вытащено изображение, развернув этот модуль:

kubectl create -f [your pod yaml]

Ожидание создания модуля и его описание с помощью kubectl describe pod private-reg и просмотр последовательности событий, аналогичной:

Events:
  Type    Reason                 Age   From                                                Message
  ----    ------                 ----  ----                                                -------
  Normal  Scheduled              4m    default-scheduler                                   Successfully assigned private-reg to gke-cluster-22-default-pool-e7830b6c-pxmt
  Normal  Pulling                4m    kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt  pulling image "gcr.io/XXX/XXX:latest"
  Normal  Pulled                 3m    kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt  Successfully pulled image ""gcr.io/XXX/XXX:latest"
  Normal  Created                3m    kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt  Created container
  Normal  Started                3m    kubelet, gke-cluster-22-default-pool-e7830b6c-pxmt  Started container
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...