{"id":18796418,"url":"https://github.com/ankitkataria/on-premise-deployments","last_synced_at":"2025-04-13T15:42:45.381Z","repository":{"id":129233128,"uuid":"220236449","full_name":"ankitkataria/on-premise-deployments","owner":"ankitkataria","description":" :tiger: Tiger: A tool to manage and deploy enterprise applications to k8s clusters","archived":false,"fork":false,"pushed_at":"2019-11-07T14:38:55.000Z","size":4697,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-27T06:44:52.715Z","etag":null,"topics":["devops","devops-tools","golang","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/ankitkataria.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-11-07T12:51:58.000Z","updated_at":"2020-02-15T06:16:08.000Z","dependencies_parsed_at":"2023-04-27T04:31:56.919Z","dependency_job_id":null,"html_url":"https://github.com/ankitkataria/on-premise-deployments","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitkataria%2Fon-premise-deployments","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitkataria%2Fon-premise-deployments/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitkataria%2Fon-premise-deployments/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ankitkataria%2Fon-premise-deployments/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ankitkataria","download_url":"https://codeload.github.com/ankitkataria/on-premise-deployments/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248740208,"owners_count":21154248,"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":["devops","devops-tools","golang","kubernetes","kubernetes-deployment"],"created_at":"2024-11-07T21:40:02.399Z","updated_at":"2025-04-13T15:42:45.361Z","avatar_url":"https://github.com/ankitkataria.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# On-Premise-Deployments\n\n\u003e Tiger: A tool to manage and deploy enterprise applications to k8s clusters\n\nTiger is a simple command line tool developed in Golang using [cobra](https://github.com/spf13/cobra) and [kubernetes/client-go](https://github.com/kubernetes/client-go). Tiger has the ability to add/manage Kubernetes cluster configs. It also provides the functionality to deploy enterprise application images on separately managed Kubernetes clusters. These Kubernetes clusters may be managed by enterprise-clients or the enterprise itself.\n\n## Development\n\n### Requirements\n\nTiger has been developed on Go-1.13.4. Instruction and binaries to install it can be found [here](https://golang.org/doc/install). Dependencies have been vendored. Tiger requires `GO111MODULES` to be set to `on`. Do so by, `export GO111MODULES=on`. For Kubernetes deployment testing, [minikube](https://kubernetes.io/docs/tasks/tools/install-minikube/) has been used. The Kubernetes cli tool, [kubectl](https://kubernetes.io/docs/tasks/tools/install-kubectl/), has been used for additional debugging.\n\n### Quick Setup\n\n1. Install Go, Minikube and Kubectl.\n2. Set `export GO111MODULES=on`.\n3. Clone project.\n3. Start minikube cluster by, `minikube start`\n4. Create a symlink of minikube kubeconfig in the `contexts` directory of the project. `ln -s $HOME/.kube/config $GOPATH/src/github.com/ankitkataria/on-premise-deployments/contexts/minikube-prod.yml`. This is the default configuration used when no `cluster-config` has been provided.\n5. Build binary, `make clean \u0026\u0026 make build`. The binary will be available in `bin` directory.\n6. Optionally, add `bin` to current $PATH, `export PATH=$PATH:$GOPATH/github.com/ankitkataria/on-premise-deployments/bin`.\n\n\n### Usage\n\n1. Tiger help.\n\n```bash\n$ tiger help\n\nTiger: On Premise Deployments\n\nUsage:\n  tiger [flags]\n  tiger [command]\n\nAvailable Commands:\n  add         Add and configure new clients\n  deploy      Manage applications on required client clusters\n  help        Help about any command\n  version     Displays the version of the current Tiger build\n\nFlags:\n  -h, --help   help for tiger\n\nUse \"tiger [command] --help\" for more information about a command.\n```\n\n2. Add a new Kubernetes config\n\n```bash\n$ tiger add --clusters=cluster1,cluster2 --users=dev,prod --contexts=frontend,backend enterprise-client\n#Configuration will be available to manage at ./contexts/enterprise-client-prod.yml\n\n$ pwd \u0026\u0026 vim ./contexts/enterprise-client-prod.yml\n# Sample output should look like:\n# /home/kataria/go/src/github.com/ankitkataria/on-premise-deployments\n#./contexts/minikube-example.yml\n```\n\n3. Creating a deployment on Kubernetes cluster\n\n```bash\n$ tiger deploy create --image=\u003cimage-name\u003e --replicas=\u003creplica-number\u003e --cluster-config=./contexts/enterprise-client-prod.yml test-deployment\n# if flag is not present, --cluster-config defaults to ./contexts/minikube-prod.yml for create, update and delete\n\n# Verify on minikube using - \n$ kubectl get pods\n```\n\n4. Updating deployments on a cluster\n\n```bash\n$ tiger deploy update --image=\u003cupdated-image\u003e --replicas=\u003creplica-number\u003e ---cluster-config=./contexts/enterprise-client-prod.yml test-deployment\n\n# Verify on minikube using -\n$ kubectl describe deployment test-deployment\n```\n\n5. Deleting deployments on a cluster\n\n```bash\n$ tiger deploy delete --cluster-config=./contexts/enterprise-client-prod.yml test-deployment\n\n# Verify on minikube using -\n$ kubectl get deployments\n```\n\n### Project structure\n\n- `cmd`\n\t- contains `tiger` subcommands `add`, `deploy`, `version`\n\t- `deploy`\n\t\t- contains `deploy` subcommands `create`, `update`, `delete`\n\n\n- `pkg`\n\t- `utils`\n\t\t- `ops` - contains k8s client-go functions to handle creatation, updations and deletion of deployments\n\t\t- `config` - contains go-interface mappings for k8s configs\n\n- `contexts`\n\t- contains added k8s config files\n\n### Future Work\n\n- [ ] Make Tiger more flexible in handling Kubernetes configurations\n- [ ] Add [Prometheus](https://prometheus.io/) for Metrics\n\n## License\n\nThis project is under MIT License. \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankitkataria%2Fon-premise-deployments","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fankitkataria%2Fon-premise-deployments","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fankitkataria%2Fon-premise-deployments/lists"}