Настройте gsutil на использование учетных данных учетной записи службы kubernetes внутри модуля - PullRequest
0 голосов
/ 09 октября 2018

У меня есть Cronjob kubernetes, который выполняет некоторые задания резервного копирования, и файлы резервных копий должны быть загружены в корзину.В модуле есть учетные данные учетной записи службы, смонтированные внутри модуля в /var/run/secrets/kubernetes.io/serviceaccount, , но как я могу указать gsutil использовать учетные данные в /var/run/secrets/kubernetes.io/serviceaccount?

lrwxrwxrwx 1 root root   12 Oct  8 20:56 token -> ..data/token
lrwxrwxrwx 1 root root   16 Oct  8 20:56 namespace -> ..data/namespace
lrwxrwxrwx 1 root root   13 Oct  8 20:56 ca.crt -> ..data/ca.crt
lrwxrwxrwx 1 root root   31 Oct  8 20:56 ..data -> ..2018_10_08_20_56_04.686748281
drwxr-xr-x 2 root root  100 Oct  8 20:56 ..2018_10_08_20_56_04.686748281
drwxrwxrwt 3 root root  140 Oct  8 20:56 .
drwxr-xr-x 3 root root 4096 Oct  8 20:57 ..

Ответы [ 2 ]

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

Короткий ответ: токен находится не в формате, который gsutil знает, как использовать, поэтому вы не можете его использовать.Вам понадобится файл ключей JSON, как упомянуто здесь в руководстве (за исключением того, что вы не сможете использовать переменную окружения GOOGLE_APPLICATION_CREDENTIALS):

https://cloud.google.com/kubernetes-engine/docs/tutorials/authenticating-to-cloud-platform

Вместосчитывая из переменной окружения GOOGLE_APPLICATION_CREDENTIALS, Gsutil использует файлы конфигурации Boto для загрузки учетных данных.Общие места для поиска этих файлов конфигурации Boto: /etc/boto.cfg и $HOME/.boto.Обратите внимание, что последнее значение изменяется в зависимости от пользователя, выполняющего команду ($HOME расширяется до разных значений для разных пользователей);поскольку задания cron обычно запускаются от имени другого пользователя, а не от имени пользователя, настроившего файл конфигурации, я бы не рекомендовал использовать этот путь.

Итак, на вашем модуле сначала нужно создать Boto.Конфигурационный файл, который ссылается на ключевой файл:

# This option is only necessary if you're running an installation of
# gsutil that came bundled with gcloud. It tells gcloud that you'll be
# managing credentials manually via your own Boto config files.

$ gcloud config set pass_credentials_to_gsutil False


# Set up your boto file at /path/to/my/boto.cfg - the setup will prompt
# you to supply the /path/to/your/keyfile.json.  Alternatively, to avoid
# interactive setup prompts, you could set up this config file beforehand
# and copy it to the pod.

$ gsutil config -e -o '/path/to/my/boto.cfg'

И, наконец, всякий раз, когда вы запускаете gsutil, вы должны указать ему, где найти тот конфигурационный файл Boto, который ссылается на ваш ключевой файл JSON (а также убедиться, что пользователь работаеткоманда имеет разрешение на чтение как файла конфигурации Boto, так и файла ключей JSON).Если вы записали свой файл конфигурации Boto по одному из известных путей, которые я упоминал выше, gsutil попытается найти его автоматически;если нет, вы можете указать gsutil, где искать файл конфигурации Boto, экспортировав переменную окружения BOTO_CONFIG в команды, которые вы вводите для своего задания cron:

export BOTO_CONFIG=/path/to/my/boto.cfg; /path/to/gsutil cp <src> <dst>

Edit :

Обратите внимание, что образы виртуальных машин GCE поставляются с предварительно заполненным файлом по адресу /etc/boto.cfg.Этот файл конфигурации говорит gsutil загрузить плагин, который позволяет gsutil связываться с сервером метаданных GCE и получать токены аутентификации (соответствующие учетной записи службы робота default для этой виртуальной машины) таким образом.Если ваш модуль может читать файл /etc/boto.cfg виртуальной машины, вы можете связаться с сервером метаданных GCE и у вас все в порядке с операциями, выполняемыми служебной учетной записью default виртуальной машины, это решение должноработать "из коробки".

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

Обратите внимание, что ваша учетная запись службы Kubernetes отличается от учетной записи службы облачного хранилища Google.

gsutil использует конфигурацию boto, поэтому вы можете смонтировать секрет Kubernetes в /etc/boto.cfg или ~/.boto

Вы можете пройти аутентификацию с помощью GCP, используя токен или служебную учетную запись.Вы можете сгенерировать токен с помощью gsutil config -f, с помощью gsutil config -e вы можете сгенерировать учетные данные учетной записи службы.Он сгенерирует файл ~/.boto, а затем вы сможете смонтировать его как секрет Kubernetes на ваших модулях.

Дополнительная информация здесь .

...