{"id":13645627,"url":"https://github.com/pyang55/k8sdeploy","last_synced_at":"2026-01-14T20:26:42.471Z","repository":{"id":64307832,"uuid":"283809804","full_name":"pyang55/k8sdeploy","owner":"pyang55","description":"a tool to deploy to multiple namespaces in a cluster","archived":false,"fork":false,"pushed_at":"2020-08-04T20:50:45.000Z","size":65,"stargazers_count":20,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-21T14:31:59.726Z","etag":null,"topics":["deployment-automation","deployments","devops","devops-tools","golang","helm","helm3","kubernetes","kubernetes-deployment"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pyang55.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-07-30T15:21:27.000Z","updated_at":"2025-03-24T15:44:56.000Z","dependencies_parsed_at":"2023-01-15T11:00:48.674Z","dependency_job_id":null,"html_url":"https://github.com/pyang55/k8sdeploy","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/pyang55/k8sdeploy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyang55%2Fk8sdeploy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyang55%2Fk8sdeploy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyang55%2Fk8sdeploy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyang55%2Fk8sdeploy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pyang55","download_url":"https://codeload.github.com/pyang55/k8sdeploy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pyang55%2Fk8sdeploy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28434454,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T18:57:19.464Z","status":"ssl_error","status_checked_at":"2026-01-14T18:52:48.501Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["deployment-automation","deployments","devops","devops-tools","golang","helm","helm3","kubernetes","kubernetes-deployment"],"created_at":"2024-08-02T01:02:38.664Z","updated_at":"2026-01-14T20:26:42.446Z","avatar_url":"https://github.com/pyang55.png","language":"Go","readme":"# k8sdeploy\n\u003e A tool to deploy to multiple namespaces in a kubernetes cluster using Helm3 (helm2 support available). There is added feature set to deploy to different types of clusters like GKE and EKS without the use of a kubeconfig (currently only EKS is supported)\n\n## Installation\n\nOS X \u0026 Linux golang:\n\n```sh\ngo build -o k8sdeploy\n```\n\nDocker (creating binary in docker and exporting it):\n\n```sh\ndocker run --rm -i hadolint/hadolint hadolint --ignore DL3000 --ignore DL3008 --ignore DL3018 --ignore DL3019 --ignore DL4000 - \u003c ./Dockerfile\ndocker build --tag k8sdeploy:latest .\ndocker create --name temp k8sdeploy:latest\ndocker cp temp:/go/src/k8sdeploy/k8sdeploy .\ndocker rm temp\n```\n\n## Development setup\n* If you are running this locally or as part of your CI/CD pipeline, you must have the proper permissions into your environment\n* Setting deploy_timestamp to now in deployment.yaml. There is an K8s event watcher that looks for all update events after deployment timestamp is set.\n```sh\nmetadata:\n  annotations:\n    deploy_timestamp: {{ now }}\n```\n\n## Usage example\n\nDeploying directly to EKS cluster without a kubeconfig:\n\n```sh\nk8sdeploy deploy eks --clustername \u003ceks-cluster-name\u003e --releasename \u003cname-of-release\u003e --region \u003ccluster-region\u003e --namespace \u003cnamespace1,namespace2,namespace3\u003e --chartdir \u003cfull-path-to-tgz-chart-file\u003e --set \u003cset-string-values\u003e\n```\n\nDeploying with a kubeconfig:\n\n```sh\nk8sdeploy deploy kubeconfig --configpath \u003cfull-path-to-kubeconfig\u003e --releasename \u003cname-of-release\u003e --namespace \u003cnamespace1,namespace2,namespace3\u003e --chartdir \u003cfull-path-to-tgz-chart-file\u003e --set \u003cset-string-values\u003e\n```\n\n## Sample output\n\n```sh\nbuild\t29-Jul-2020 19:23:20\tStarting deployment in namespace=name-space-1 for app=customapp at 2020-07-29 19:23:20 -0700 PDT\nbuild\t29-Jul-2020 19:23:20\tWaiting for deployment  rollout to finish: 0 of 2 updated replicas are available...\nbuild\t29-Jul-2020 19:23:20\tWaiting for deployment  rollout to finish: 0 of 2 updated replicas are available...\nbuild\t29-Jul-2020 19:23:20\tStarting deployment in namespace=name-space-2 for app=customapp at 2020-07-29 19:23:20 -0700 PDT\nbuild\t29-Jul-2020 19:23:20\tWaiting for deployment  rollout to finish: 0 of 2 updated replicas are available...\nbuild\t29-Jul-2020 19:23:35\tWaiting for deployment  rollout to finish: 1 of 2 updated replicas are available...\nbuild\t29-Jul-2020 19:23:35\tWaiting for deployment  rollout to finish: 1 of 2 updated replicas are available...\nbuild\t29-Jul-2020 19:23:49\tWaiting for deployment  rollout to finish: 1 of 2 updated replicas are available...\nbuild\t29-Jul-2020 19:23:56\tWaiting for deployment  rollout to finish: 2 of 2 updated replicas are available...\nbuild\t29-Jul-2020 19:23:56\tSuccessful Deployment of customapp on name-space-2\nbuild\t29-Jul-2020 19:23:58\tWaiting for deployment  rollout to finish: 2 of 2 updated replicas are available...\nbuild\t29-Jul-2020 19:23:58\tSuccessful Deployment of customapp on name-space-2\nbuild\t29-Jul-2020 19:24:10\tAll deployments finished, sutting down watcher gracefully\nbuild\t29-Jul-2020 19:24:10\t+----------------+--------------+---------+\nbuild\t29-Jul-2020 19:24:10\t| APP            | NAMESPACE    | STATUS  |\nbuild\t29-Jul-2020 19:24:10\t+----------------+--------------+---------+\nbuild\t29-Jul-2020 19:24:10\t| customapp      | name-space-1 | Success |\nbuild\t29-Jul-2020 19:24:10\t| customapp      | name-space-2 | Success |\nbuild\t29-Jul-2020 19:24:10\t+----------------+--------------+---------+\n```\n\n## Notes\n* This is also written with support for helm3 only. There is only support to deploy with kubeconfig for helm2\n* This currently works for me. This is what we use to deploy to multiple microservices to all of production. If this works for you, that is fantastic...if it doesn't...well, it still works for me.\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyang55%2Fk8sdeploy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpyang55%2Fk8sdeploy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpyang55%2Fk8sdeploy/lists"}