Вытащить изображения из GCR в GKE - PullRequest
0 голосов
/ 20 октября 2018

Сегодня мой первый день игры с GCR и GKE.Прошу прощения, если мой вопрос звучит по-детски.

Итак, я создал новый реестр в GCR.Это личное.Используя эту документацию, я получил свой токен доступа с помощью команды

gcloud auth print-access-token
#<MY-ACCESS_TOKEN>

Я знаю, что мое имя пользователя oauth2accesstoken

на локальном ноутбуке, когда япопробуй

docker login https://eu.gcr.io/v2
Username: oauth2accesstoken
Password: <MY-ACCESS_TOKEN>

Я получу:

Login Successful

Так что теперь пришло время создать секрет docker-registry в Кубернетесе.

Я выполнил следующую команду:

kubectl create secret docker-registry eu-gcr-io-registry --docker-server='https://eu.gcr.io/v2' --docker-username='oauth2accesstoken' --docker-password='<MY-ACCESS_TOKEN>' --docker-email='<MY_EMAIL>'

И тогда мое определение Pod выглядит следующим образом:

apiVersion: v1
kind: Pod
metadata:
  name: my-app
spec:
  containers:
  - name: my-app
    image: eu.gcr.io/<my-gcp-project>/<repo>/<my-app>:latest
    ports:
    - containerPort: 8090
  imagePullSecrets:
  - name: eu-gcr-io-registry

Но когда я раскручиваю стручок, я получаю ОШИБКУ:

Warning  Failed                 4m (x4 over 6m)   kubelet, node-3  Failed to pull image "eu.gcr.io/<my-gcp-project>/<repo>/<my-app>:latest": rpc error: code = Unknown desc = Error response from daemon: unauthorized: You don't have the needed permissions to perform this operation, and you may have invalid credentials. To authenticate your request, follow the steps in: https://cloud.google.com/container-registry/docs/advanced-authentication

Я подтвердил свои секретыпроверка файла YAML и выполнение base64 --decode на .dockerconfigjson, и это правильно.

Так что я здесь пропустил?

1 Ответ

0 голосов
/ 21 октября 2018

Если ваш кластер GKE и реестр GCR находятся в одном проекте: Вам не нужно настраивать аутентификацию.Кластерам GKE разрешено извлекать данные из частных реестров GCR в одном проекте без конфигурации.(Скорее всего, это так!)


Если ваш кластер GKE и реестр GCR находятся в разных проектах GCP: Следуйте этим инструкциям, чтобы указать «служебную учетную запись» вашего кластера GKE.доступ для чтения личных изображений в вашем кластере GCR: https://cloud.google.com/container-registry/docs/access-control#granting_users_and_other_projects_access_to_a_registry

В двух словах, это можно сделать следующим образом:

gsutil iam ch  serviceAccount:[PROJECT_NUMBER]-compute@developer.gserviceaccount.com:objectViewer gs://[BUCKET_NAME]

где [BUCKET_NAME] - это корзина GCS, хранящая ваши изображения GCR(например, artifacts.[PROJECT-ID].appspot.com) и [PROJECT_NUMBER] - это числовой идентификатор проекта GCP, на котором размещен ваш кластер GKE.

...