GCP kms шифрует env var и передает зашифрованный ключ через cloudbuild.yaml в движок приложения Google - PullRequest
0 голосов
/ 14 февраля 2019

Я пытаюсь зашифровать переменные env для базы данных в Cloud SQL в моем приложении RoR, развертываемом в Google App Engine.Следуя этому документу https://cloud.google.com/cloud-build/docs/securing-builds/use-encrypted-secrets-credentials

Однако у меня возникает ошибка при запуске как gcloud builds submit, так и gcloud app deploy.Обе из-за ошибки:

Состояние ошибки: НЕИЗВЕСТНО: Ответ об ошибке: [4] DEADLINE_EXCEEDED / шаг сборки 0 "gcr.io/cloud-builders/gcloud" не выполнен: выход из состояния 1.

Затем я проверяю gcloud builds described показывает, что приложение не удалось развернуть, однако, DATABASE_PASS показывает, работает / в очереди.Я увеличил компонент Cloud Build в gcloud sdk до 1000 и время ожидания тестирования: в cloudbuild.yaml; оба варианта ничего не улучшили.

До использования Cloud Build мое приложение работало, но я стираюнеобходимость учетных данных и использование зашифрованных учетных данных для конвейера CI / CD.Кроме того, я хотел бы зашифровать более одного env var в моем app.yaml.

 <cloudbuild.yaml>
steps:
- name: 'gcr.io/cloud-builders/gcloud'
  args: ['app','deploy','app-beta.yaml']

- name: 'us.gcr.io/project_ID/image_name'
  #args: [ 'app', 'deploy', 'app-beta.yaml' ]
  secretEnv: [ "DATABASE_PASS" ]


secrets:
- kmsKeyName: projects/Project_id/locations/global/keyRings/Misc/cryptoKeys/Random
  secretEnv: 
      DATABASE_PASS:< base64 encoded encryption> 

<app.yaml> 
runtime: custom

env: flex

service: authentication

resources:
  cpu: 2
  memory_gb: 2.5
  disk_size_gb: 10

beta_settings:
  cloud_sql_instances: '/cloudsql/project_id:us-central1:sqlname'

network:
  name: default

skip_files:
  - .ruby-gemset
  - .env
  - .bundle
  - .byebug_history
  - .vscode/
  - .idea/
  - storage/
  - vendor/
  - log/
  - tmp/

#liveness_check:
#path: '/liveness-check'
#   initial_delay_sec: 300
#   check_interval_sec: 30
#   timeout_sec: 4
#   failure_threshold: 2
#   success_threshold: 2
#
# readiness_check:
#   path: '/readiness-check'
#   check_interval_sec: 5
#   timeout_sec: 4
#   failure_threshold: 2
#   success_threshold: 2
#   app_start_timeout_sec: 300

env_variables:
  SECRET_KEY_BASE: 'SECRET_KEY'
  RAILS_ENV: 'redacted'
  RACK_ENV: 'redacted'
  SERVICE_NAME: 'redacted'
  REDIS_HOST: '10.0.0.3'
  REDIS_PORT: 6379
  TOTP_SECRET: 'TOTP_SECRET'
  DATABASE_USER: 'postgres'
  DATABASE_PASS: 'DATABASE_PASS'
  DATABASE_NAME: 'postgres'
  DATABASE_HOST: '/cloudsql/project_id:us-central1:sqlname'
  RAILS_LOG_TO_STDOUT: enabled
  RAILS_SERVE_STATIC_FILES: enabled
  LANG: en_US.UTF-8

1 Ответ

0 голосов
/ 21 февраля 2019

Я обнаружил проблему, во-первых, когда я использовал шифрование gcloud kms.Я ничего не шифровал.Так передавалось пустое значение.Я добавлю свое решение в блог и гиперссылку на него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...