{"id":15288873,"url":"https://github.com/giantswarm/etcd-backup-operator","last_synced_at":"2025-04-13T06:32:09.198Z","repository":{"id":37863492,"uuid":"232779410","full_name":"giantswarm/etcd-backup-operator","owner":"giantswarm","description":"Creates etcd backups and uploads them to AWS S3","archived":false,"fork":false,"pushed_at":"2025-03-21T21:16:00.000Z","size":8273,"stargazers_count":12,"open_issues_count":2,"forks_count":6,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-03-22T06:34:36.791Z","etag":null,"topics":["backup","docker-image","etcd","metrics","operator"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/giantswarm.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-01-09T10:08:03.000Z","updated_at":"2025-03-21T12:20:23.000Z","dependencies_parsed_at":"2023-11-27T07:38:37.334Z","dependency_job_id":"d12bce8c-cb27-47ba-815b-1d6b70c0028b","html_url":"https://github.com/giantswarm/etcd-backup-operator","commit_stats":null,"previous_names":[],"tags_count":53,"template":false,"template_full_name":"giantswarm/template-operator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giantswarm%2Fetcd-backup-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giantswarm%2Fetcd-backup-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giantswarm%2Fetcd-backup-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/giantswarm%2Fetcd-backup-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/giantswarm","download_url":"https://codeload.github.com/giantswarm/etcd-backup-operator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248674659,"owners_count":21143760,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","docker-image","etcd","metrics","operator"],"created_at":"2024-09-30T15:54:00.377Z","updated_at":"2025-04-13T06:32:09.172Z","avatar_url":"https://github.com/giantswarm.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![CircleCI](https://dl.circleci.com/status-badge/img/gh/giantswarm/etcd-backup-operator.svg?style=svg)](https://dl.circleci.com/status-badge/redirect/gh/giantswarm/etcd-backup-operator)\n\n# etcd-backup-operator\n\nThe `etcd-backup-operator` takes backups of ETCD instances on both the control plane and tenant clusters.\n\nThe operator is meant to be run on the management cluster and can perform both V2 and V3 ETCD backup.\n\n## Branches\n\n- `main`\n  - When released, it triggers a deployment on all installations.\n  \n## Getting Project\n\nClone the Git repository: https://github.com/giantswarm/etcd-backup-operator.git\n\n### How to build\n\nBuild it using the standard `go build` command.\n\n```\ncd etcd-backup-operator\ngo build\n```\n\n### How to deploy\n\nUse `opsctl` the usual way. This project uses the `app` method (`opsctl deploy ... -m app`).\n\n## Running\n\nExample command run:\n\n```\nexport AWS_ACCESS_KEY_ID=\u003cS3 access key ID\u003e\nexport AWS_SECRET_ACCESS_KEY=\u003cS3 secret access key\u003e\ngo run -mod=vendor main.go daemon \\\n  --service.kubernetes.incluster=\"true\" \\\n  --service.s3.bucket=\u003cS3 bucket\u003e \\\n  --service.s3.region=\u003cS3 region\u003e \\\n  --service.etcdv2.datadir=\"\u003cPath of the directory where the V2 ETCD data is stored\u003e\" \\\n  --service.etcdv3.cacert=\u003cPath of the ETCD CA file\u003e \\\n  --service.etcdv3.cert=\u003cPath of the ETCD Cert file\u003e \\\n  --service.etcdv3.key=\u003cPath of the ETCD Private Key file\u003e \\\n  --service.etcdv3.endpoints=\u003cURL to connect to ETCD with V3 protocol\u003e\n```\n\n### Available flags:\n\n#### Kubernetes connection settings:\n\n- `--service.kubernetes.incluster`: (Optional, defaults to `false`) Whether to use the in-cluster config to authenticate with Kubernetes.\n- `--service.kubernetes.address`: (Optional, defaults to `http://127.0.0.1:6443`) Address used to connect to Kubernetes. When empty in-cluster config is created.\n- `--service.kubernetes.kubeconfig`: (Optional) KubeConfig (formatted as JSON string) used to connect to Kubernetes. When empty other settings are used.\n- `--service.kubernetes.tls.cafile`: (Optional) Certificate authority file path to use to authenticate with Kubernetes.\n- `--service.kubernetes.tls.crtfile`: (Optional) Certificate file path to use to authenticate with Kubernetes.\n- `--service.kubernetes.tls.keyfile`: (Optional) Key file path to use to authenticate with Kubernetes.\n\n#### S3 settings:\n\n- `--service.s3.bucket`: (Required) AWS S3 Bucket name.\n- `--service.s3.region`: (Required) AWS S3 Region name.\n- `--service.s3.endpoint`: (Optional) Custom S3 endpoint URL.\n- `--service.s3.force-path-style`: (Optional, defaults to `false`) Enable path-style S3 URLs.\n\n#### ETCD connection settings:\n\n- `--service.etcdv2.datadir`: (Optional, see below for details) ETCD v2 Data Dir path.\n- `--service.etcdv3.cert`: (Optional, see below for details) Client certificate for ETCD v3 connection\n- `--service.etcdv3.cacert`: (Optional, see below for details) Client CA certificate for ETCD v3 connection\n- `--service.etcdv3.key`: (Optional, see below for details) Client private key for ETCD v3 connection\n- `--service.etcdv3.endpoints`: (Optional, see below for details) \n\nEither `service.etcdv2.datadir` or all other fields are mandatory.\n\nYou can specify all of them as well (and you'll enable both V2 and V3 backups).\n\n#### Environment variables:\n\n- `AWS_ACCESS_KEY_ID`: (Required) The AWS access key ID, used to upload the backup files to AWS S3. \n- `AWS_SECRET_ACCESS_KEY`: (Required) The AWS secret access key, used to upload the backup files to AWS S3.\n\n#### Different schedules\n\nYou can schedule different cron datetimes to different clusters like it is explain here:\n\n```yaml\nschedules:\n- cronjob: 0 */6 * * *\n  clusters: '^(?!\u003ccluster-id\u003e)' # all clusters but the id defined\n- cronjob: 0 3 * * * *\n  clusters: '\u003ccluster-id\u003e' # only one cluster\n```\n\n## License\n\netcd-backup-operator is under the Apache 2.0 license. See the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiantswarm%2Fetcd-backup-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgiantswarm%2Fetcd-backup-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgiantswarm%2Fetcd-backup-operator/lists"}