Kubernetes не может подключить том к папке - PullRequest
0 голосов
/ 17 декабря 2018

Я следую этим документам о том, как настроить прокси-сервер sidecar для моей базы данных cloud-sql.Это относится к манифесту на github , который, как я нахожу повсюду в репозиториях github и т. Д., Похоже, работает для «всех», но у меня возникают проблемы.Контейнер прокси не может быть подключен к / secrets / cloudsql, так как он не может успешно запуститься.Когда я запускаю kubectl logs [mypod] cloudsql-proxy:

invalid json file "/secrets/cloudsql/mysecret.json": open /secrets/cloudsql/mysecret.json: no such file or directory

Таким образом, секрет, кажется, проблема.

Соответствующая часть манифеста:

- name: cloudsql-proxy
  image: gcr.io/cloudsql-docker/gce-proxy:1.11
  command: ["/cloud_sql_proxy",
            "-instances=pqbq-224713:europe-west4:osm=tcp:5432",
            "-credential_file=/secrets/cloudsql/mysecret.json"]
  securityContext:
    runAsUser: 2
    allowPrivilegeEscalation: false
  volumeMounts:
    - name: cloudsql-instance-credentials
      mountPath: /secrets/cloudsql
      readOnly: true
volumes:
  - name: cloudsql-instance-credential
      secret:
        secretName: mysecret

Чтобы проверить / отладить секрет, я подключаю том к другому контейнеру, который запускается, но затем к пути и файлу / secrets / cloudsql /mysecret.json тоже не существует.Однако, когда я монтирую секрет в уже существующую папку, я могу найти в этой папке не файл mysecret.json (как я ожидал ...), но (в моем случае) два секрета, которые он содержит, поэтому я нахожу: /existingfolder/password и/existingfolder/username (по-видимому, так оно и работает !? Когда я разглашаю эти секреты, они дают правильные строки, поэтому они кажутся нормальными).

Таким образом, похоже, что путь не может быть задан системой, это проблема с разрешениями?Я попытался просто подключить в прокси-контейнере к корневому каталогу ('/'), чтобы не было папки, но это выдает ошибку, говорящую, что это не разрешено делать.Поскольку изображение gcr.io/cloudsql-docker/gce-proxy:1.11 от Google, и я не могу запустить его, я не вижу, в какой папке оно находится.

Мои вопросы:

  1. Создан ли mountPath из манифеста или он уже находится в контейнере?
  2. Как мне заставить это работать?

1 Ответ

0 голосов
/ 17 декабря 2018

Я решил это.Я использовал тот же секрет на cloudql-proxy, что и в приложении (env), но это должен быть ключ, который вы генерируете из учетной записи службы, а затем делаете из этого секрет.Тогда это работает. Этот урок помог мне пройти.

...