{"id":21654456,"url":"https://github.com/hvalfangst/kubernetes-ktor-api","last_synced_at":"2026-02-25T12:02:51.770Z","repository":{"id":154897324,"uuid":"605298327","full_name":"hvalfangst/kubernetes-ktor-api","owner":"hvalfangst","description":"Ktor API with Exposed, Flyway and Redis protected by JWT and deployed on Kubernetes with Nginx proxy","archived":false,"fork":false,"pushed_at":"2024-04-21T19:40:35.000Z","size":48,"stargazers_count":3,"open_issues_count":8,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-25T08:33:28.504Z","etag":null,"topics":["coroutines","docker","exposed","flyway","gradle","jedis","jwt","kotlin","ktor","ktor-auth","kubernetes","nginx","redis","tls"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hvalfangst.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-02-22T21:37:22.000Z","updated_at":"2024-10-14T21:35:00.000Z","dependencies_parsed_at":"2024-02-24T22:27:13.470Z","dependency_job_id":"7a18acb7-6f37-4d69-99c1-cbd5ee0a2ba4","html_url":"https://github.com/hvalfangst/kubernetes-ktor-api","commit_stats":null,"previous_names":["hvalfangst/kotlin-ktor-banking-api","hvalfangst/ktor-api-deployed-to-kubernetes","hvalfangst/kubernetes-ktor-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hvalfangst%2Fkubernetes-ktor-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hvalfangst%2Fkubernetes-ktor-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hvalfangst%2Fkubernetes-ktor-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hvalfangst%2Fkubernetes-ktor-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hvalfangst","download_url":"https://codeload.github.com/hvalfangst/kubernetes-ktor-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247941702,"owners_count":21022036,"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":["coroutines","docker","exposed","flyway","gradle","jedis","jwt","kotlin","ktor","ktor-auth","kubernetes","nginx","redis","tls"],"created_at":"2024-11-25T08:27:56.115Z","updated_at":"2025-10-05T23:45:16.790Z","avatar_url":"https://github.com/hvalfangst.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ktor API deployed on Kubernetes\n\nAPI programmed in Kotlin with the Ktor micro-framework utilizing Exposed for ORM and Redis for cache deployed on Kubernetes. Routes are protected by JWT.\n\n\n## Requirements\n\n* [x86-64](https://en.wikipedia.org/wiki/X86-64)\n* [Linux/WSL](https://learn.microsoft.com/en-us/windows/wsl/install)\n* [JDK 11](https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html)\n* [Gradle](https://gradle.org/)\n* [Docker](https://www.docker.com/products/docker-desktop/)\n* [Kubernetes](https://www.docker.com/products/docker-desktop/)\n\n## Running the project\n\nA startup script named 'up' has been provided for building and running the API. This script takes an argument with two permutations: local or kubernetes.\nExecuting this script with the local flag will first spin up Docker containers for PostgresSQL and Redis and then invoke gradle build \u0026 run.\nThe Kubernetes option will containerize our codebase based on a supplied Dockerfile and deploy a fully-fledged Kubernetes cluster based on the included manifest files.\n\nAfter having deployed to Kubernetes it is paramount that one utilizes the 'port-forward' command from Kubectl in order to -actually- be able to reach cluster resources.\nIt is recommended to develop in 'local' mode as build times for JVM docker images are pretty bad. \n\n## Allocating resources\nThe shell script \"up.sh\" is responsible for allocating resources.\n\n```\n./up.sh local -\u003e Creates DB and Redis containers, which are bridged on the same network to emulate Kubernetes.\n./up.sh kubernetes -\u003e Containerizes our API and provisions Kubernetes resources.\n```\n\n## Deallocating resources\nThe shell script \"down.sh\" is responsible for deallocating resources. \n\n```\n./down.sh local -\u003e Stops containers, removes images and network.\n./down.sh kubernetes -\u003e Deletes secrets, services and deployments.\n```\n\n## Postman\nA postman collection has been provided under the 'postman' folder.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhvalfangst%2Fkubernetes-ktor-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhvalfangst%2Fkubernetes-ktor-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhvalfangst%2Fkubernetes-ktor-api/lists"}