{"id":20173544,"url":"https://github.com/ronasit/projects-operator","last_synced_at":"2025-05-07T01:34:37.246Z","repository":{"id":41559718,"uuid":"489239688","full_name":"RonasIT/projects-operator","owner":"RonasIT","description":"🐙 Projects operator is k8s application which manages projects developed using various frameworks and thechnologies.","archived":false,"fork":false,"pushed_at":"2023-08-10T12:50:37.000Z","size":348,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2023-08-10T15:51:08.007Z","etag":null,"topics":["devops","docker","gitops","helm","k8s","kubernetes","laravel","next","nextjs","operator","operator-sdk","react"],"latest_commit_sha":null,"homepage":"","language":"Makefile","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/RonasIT.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-05-06T06:19:58.000Z","updated_at":"2023-08-10T15:51:08.008Z","dependencies_parsed_at":"2023-02-09T15:45:59.183Z","dependency_job_id":null,"html_url":"https://github.com/RonasIT/projects-operator","commit_stats":null,"previous_names":[],"tags_count":34,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonasIT%2Fprojects-operator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonasIT%2Fprojects-operator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonasIT%2Fprojects-operator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RonasIT%2Fprojects-operator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RonasIT","download_url":"https://codeload.github.com/RonasIT/projects-operator/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224552317,"owners_count":17330241,"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","docker","gitops","helm","k8s","kubernetes","laravel","next","nextjs","operator","operator-sdk","react"],"created_at":"2024-11-14T01:36:32.608Z","updated_at":"2024-11-14T01:36:33.233Z","avatar_url":"https://github.com/RonasIT.png","language":"Makefile","readme":"\u003cimg src=\"hero.svg\" \u003e\n\n# Projects Operator\n\nProjects operator helps development companies which are working on more than one project at the same time. It allows to save time on deploy and replace DevOps routine tasks with the smart solution. At this stage the next frameworks are supported:\n\n\u003ca href=\"https://laravel.com/\" target=\"_blank\" rel=\"noreferrer\"\u003e \u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/laravel/laravel-plain-wordmark.svg\" alt=\"laravel\" width=\"16\" height=\"16\"/\u003e\u0026nbsp;Laravel\u003c/a\u003e  \n\u003ca href=\"https://reactjs.org/\" target=\"_blank\" rel=\"noreferrer\"\u003e \u003cimg src=\"https://raw.githubusercontent.com/devicons/devicon/master/icons/react/react-original-wordmark.svg\" alt=\"react\" width=\"16\" height=\"16\"/\u003e\u0026nbsp;React\u003c/a\u003e  \n\u003ca href=\"https://nextjs.org/\" target=\"_blank\" rel=\"noreferrer\"\u003e \u003cimg src=\"https://cdn.worldvectorlogo.com/logos/nextjs-2.svg\" alt=\"nextjs\" width=\"16\" height=\"16\"/\u003e\u0026nbsp;NextJS\u003c/a\u003e  \n\u003ca href=\"https://angular.io\" target=\"_blank\" rel=\"noreferrer\"\u003e \u003cimg src=\"https://angular.io/assets/images/logos/angular/angular.svg\" alt=\"angular\" width=\"16\" height=\"16\"/\u003e\u0026nbsp;Angular\u003c/a\u003e\n\nWe are more than happy to add more to cover as many cases as possible. Please feel free to open PR/issue with the technology you wish to see here.\n\n## 📄 Description\n\nProjects operator is k8s application which manages projects developed using various frameworks and thechnologies. For each framework there is a helm chart developed in line with its specifics and possible dependencies.\n\nHelm charts are used as projects templates.To describe the specific project there is a short manifest. Manifest points to operator which chart should be used to launch the project and with which values. Projects operator merges values from manifest with values from chart and creates resource in k8s cluster. \n\nBased on the created resource projects operator manages helm releases for each project.\n\nProjects operator simultaneously tracks changes in project's resources and helm charts as well. In case of changes, it updates the projects affected by these changes.  \n\n## 🧞‍♂️ Benefits\n\n🚀 Fast start  \n🔧Allows developers to be sure all apps are updated  \n👁 Manage everything from single place  \n🦾 Fully automated  \n☁️ Cloud agnostic  \n🕺🏻 Flexible and customizable  \n♻️ Smart resource usage  \n\n## 🧘🏻  Current status\n\nAt the moment projects operator is under extensive development. The number of the projects running via operator are growing, so we do fixes and add new supported technologies on a fly. \n\nOur plans are to cover the next cases by the end of 2022:\n\n- [x] Laravel\n- [x] Angular\n- [x] React\n- [x] NextJS\n- [ ] Django\n- [ ] NestJS\n- [ ] MongoDB\n\n## Developer quick start\n\nYou’ll need a Kubernetes cluster to run against. You can use [KIND](https://sigs.k8s.io/kind) to get a local cluster for testing, or run against a remote cluster.\n**Note:** Your controller will automatically use the current context in your kubeconfig file (i.e. whatever cluster `kubectl cluster-info` shows).\n\n### Running on the cluster\n1. At first you need to download helm charts from ronas repository:\n\t\n```sh\nhelm repo add ronas-helm https://ronasit.github.io/helm\n```\n\n```sh\nhelm pull ronas-helm/angular ronas-helm/laravel ronas-helm/nextjs ronas-helm/react --untar --untardir ./helm-charts\n```\n\n2. Build and push your image to the location specified by `IMG`:\n\t\n```sh\nmake docker-build docker-push IMG=gcr.io/ronas-cloud/projects-operator:latest\n```\n\t\n3. Deploy the controller to the cluster with the image specified by `IMG`:\n\n```sh\nmake deploy IMG=gcr.io/ronas-cloud/projects-operator:latest\n```\n\n### Uninstall CRDs\nTo delete the CRDs from the cluster:\n\n```sh\nmake uninstall\n```\n\n### Undeploy controller\nUnDeploy the controller to the cluster:\n\n```sh\nmake undeploy\n```\n\n## Usage\nTo get app deployed you need to create k8s resource using  simple manifest. \n\n```yaml\napiVersion: projects.ronas.cloud/v1alpha1\nkind: Laravel\nmetadata:\n  name: example-laravel\nspec:\n  ingress:\n    host: api.laravl.example.com\n  soketi:\n    enabled: true\n    host:  ws.laravel.example.com\n```\n\nMore useful samples can be found here [into repo](https://github.com/RonasIT/projects-operator/tree/main/config/samples).\n\n## How it works\nThis project aims to follow the Kubernetes [Operator pattern](https://kubernetes.io/docs/concepts/extend-kubernetes/operator/)\n\nIt uses [Controllers](https://kubernetes.io/docs/concepts/architecture/controller/) \nwhich provides a reconcile function responsible for synchronizing resources until the desired state is reached on the cluster. \n\n## Contributing\nThank you for considering contributing to projects-operator plugin! The contribution guide can be found in the [Contributing guide](CONTRIBUTING.md).\n\n## License\nProjects operator is open-sourced software licensed under the [MIT license](LICENSE).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronasit%2Fprojects-operator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fronasit%2Fprojects-operator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fronasit%2Fprojects-operator/lists"}