Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Enable backing up to Google Cloud Storage #3609

Merged
merged 44 commits into from
Jun 29, 2020
Merged

Enable backing up to Google Cloud Storage #3609

merged 44 commits into from
Jun 29, 2020

Conversation

mskdenigma
Copy link
Contributor

@mskdenigma mskdenigma commented May 6, 2020

🔩 Description: What code changed, and why?

I am adding support for backing up into Google Cloud Storage buckets. Currently only local filesystem and S3 are supported which is not ideal for customers using external elasticsearch where mounting the same filesystem between hosts may be difficult.

⛓️ Related Resources

👍 Definition of Done

I should be able to add the following config

[global.v1.backups]
  location = "gcs"
[global.v1.backups.gcs.bucket]
  # name (required): The name of the bucket
  name = "<bucket name>"

  # base_path (optional):  The path within the bucket where backups should be stored
  # If base_path is not set, backups will be stored at the root of the bucket.
  base_path = "<base path>"

[global.v1.backups.gcs.credentials]
json = '''
  {
  "type": "service_account",
  "project_id": "my-favorite-project",
  "private_key_id": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
  "private_key": "-----BEGIN PRIVATE KEY-----\nXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n-----END PRIVATE KEY-----\n",
  "client_email": "chef@my-favorite-project.iam.gserviceaccount.com",
  "client_id": "XXXXXXXXXXXXXXXXXXXXX",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/chef%40my-favorite-project.iam.gserviceaccount.com"
}
'''

[global.v1.external.elasticsearch]
  enable = true
  nodes = ["https://my-es.cluster"]

[global.v1.external.elasticsearch.auth]
  scheme = "basic_auth"

[global.v1.external.elasticsearch.auth.basic_auth]
  username = "everyuser"
  password = "pass123"

[global.v1.external.elasticsearch.backup]
  enable = true
  location = "gcs"

[global.v1.external.elasticsearch.backup.gcs]
  bucket = "mygcs-bucket"
  client = "default"

and after patching my config backups including will go into a GCS bucket

👟 How to Build and Test the Change

build components/backup-gateway
build components/es-sidecar-service
build components/automate-es-gateway
build components/automate-deployment
build components/automate-cli
start_all_services
chef-automate config patch config-with-path-based-creds.toml
chef-automate config patch config-with-json-based-creds.toml
chef-automate config patch config-with-both-set.toml
chef-automate config patch config-with-both-empty-strings.toml

✅ Checklist

📷 Screenshots, if applicable

@susanev susanev added community issues submitted by community folks deployment-team labels May 7, 2020
@mskdenigma mskdenigma changed the title Enable Elasticsearch Snapshotting to GCS Enable backing up to Google Cloud Storage May 7, 2020
api/config/shared/global.go Outdated Show resolved Hide resolved
@mskdenigma mskdenigma force-pushed the master branch 2 times, most recently from c6f5e86 to a9229a4 Compare June 8, 2020 04:48
@mskdenigma mskdenigma requested a review from a team as a code owner June 10, 2020 18:00
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
…n protobuf

Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Jay Mundrawala added 10 commits June 10, 2020 14:17
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
Signed-off-by: Jay Mundrawala <jmundrawala@chef.io>
api/config/shared/global.go Outdated Show resolved Hide resolved
api/config/shared/global.go Outdated Show resolved Hide resolved
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Signed-off-by: Emir Rios <mskdenigma@gmail.com>
Copy link
Contributor

@jaym jaym left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for all the hard work here. Looks good

@jaym jaym merged commit a2c4704 into chef:master Jun 29, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
community issues submitted by community folks deployment-team
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants