{"id":15068917,"url":"https://github.com/trendyol/kubernetes-operator-api","last_synced_at":"2025-04-10T17:41:12.123Z","repository":{"id":62487299,"uuid":"559893757","full_name":"Trendyol/kubernetes-operator-api","owner":"Trendyol","description":"The Kubernetes API is a sample Kubernetes operator API using the Java Kubernetes Client. The API is designed for master-worker deployment to satisfy the requirements.","archived":false,"fork":false,"pushed_at":"2025-02-03T11:21:38.000Z","size":65,"stargazers_count":16,"open_issues_count":3,"forks_count":2,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-03-22T05:33:01.328Z","etag":null,"topics":["hexagonal-architecture","java11","kubernetes","kubernetes-client","kubernetes-operator","lombok","rest-api","spring-boot","strategy-pattern","swagger"],"latest_commit_sha":null,"homepage":"","language":"Java","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/Trendyol.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":"2022-10-31T10:17:55.000Z","updated_at":"2024-08-08T13:46:55.000Z","dependencies_parsed_at":"2024-10-13T04:40:40.323Z","dependency_job_id":"b35b15a7-2442-48de-83de-1d3e87257700","html_url":"https://github.com/Trendyol/kubernetes-operator-api","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/Trendyol%2Fkubernetes-operator-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Trendyol%2Fkubernetes-operator-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Trendyol%2Fkubernetes-operator-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Trendyol%2Fkubernetes-operator-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Trendyol","download_url":"https://codeload.github.com/Trendyol/kubernetes-operator-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248262182,"owners_count":21074258,"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":["hexagonal-architecture","java11","kubernetes","kubernetes-client","kubernetes-operator","lombok","rest-api","spring-boot","strategy-pattern","swagger"],"created_at":"2024-09-25T01:39:43.123Z","updated_at":"2025-04-10T17:41:12.106Z","avatar_url":"https://github.com/Trendyol.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Kubernetes Operator Api\n\nThe Kubernetes API is a sample Kubernetes operator API using the \u003cstrong\u003eJava Kubernetes Client\u003c/strong\u003e.\u003cbr\u003e\nThe API is designed for \u003cstrong\u003emaster-worker\u003c/strong\u003e deployment to satisfy the requirements.\n\n## Overview \n\n* The \u003cstrong\u003eCI/CD\u003c/strong\u003e tool we used before this API started to not be enough. \u003cbr\u003e\n  The reasons why it is not enough are: \n    - Deployments take too long to create, scale, and terminate.\n    - In synchronous requests, some of the scenarios' statuses were pending or failed.\n    - The pending scenarios could not be retried.\n    - Rollbacks could not be performed automatically.\n    - Since there was a strict structure to the deployment process, we could not do the business development at any stage.\n\n  By using this API, above problems have been solved. You can use this API for such requirements. \u003cbr\u003e\n\n* In the \u003ci\u003eresources\u003c/i\u003e folder of our application we have: \u003cbr\u003e\n  \u003cstrong\u003emaster-deployment.yaml, worker-deployment.yaml, master-service.yaml, master-service-ui.yaml \u003c/strong\u003e  \u003cbr\u003e\n  You \u003cstrong\u003emust\u003c/strong\u003e customize these files to suit you. This pattern __ was used in file reading operations. Let's not overlook it. \u003cbr\u003e\n  Note that you must use all four of these deployment yaml's. \u003cbr\u003e\n\n* The strategy pattern has been used so that the project can work with more than one data center. \u003cbr\u003e\n  You \u003cstrong\u003emust\u003c/strong\u003e define the data center strategy you want to use. After that, it will be enough to send it in the \u003cstrong\u003edata_center\u003c/strong\u003e field. \u003cbr\u003e\n\nThe following are the flows that we have implemented in this project.\n\n### Create deployment flow\n      - Deploy master\n      - Roll out status\n      - Deploy worker\n      - Roll out status\n      - Create service\n      - Create service ui \n      - Print pod status \n      - Retrieve service list\n      - Print service status\n\n### Scale deployment flow\n      - Scale deployment\n      - Roll out status\n\n### Terminate deployment flow\n      - Delete master deployment\n      - Delete worker deployment\n      - Delete master service\n      - Delete master ui service\n\n---\n\n##### Tech Stack\n- Java 11\n- Spring Boot\n- Kubernetes Client\n\n##### Requirements\n\nFor building and running the application, you need:\n- [JDK 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html)\n- [Maven](https://maven.apache.org)\n- [Lombok](https://projectlombok.org/)\n\n##### Build \u0026 Run\n\n```\n  mvn clean install \n  mvn --projects kubernetes-operator-api spring-boot:run\n```\n\n##### Port\n```\n  http://localhost:1234\n```\n\n##### License\n\nDistributed under the MIT License. See [LICENSE](LICENSE) for more information.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrendyol%2Fkubernetes-operator-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftrendyol%2Fkubernetes-operator-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftrendyol%2Fkubernetes-operator-api/lists"}