{"id":23629980,"url":"https://github.com/frnn4268/k8s_3-tier_webapp_deployment","last_synced_at":"2026-04-04T21:31:47.217Z","repository":{"id":265270701,"uuid":"895644503","full_name":"Frnn4268/K8s_3-tier_webapp_deployment","owner":"Frnn4268","description":"This project defines Kubernetes manifests and Helm charts to deploy a 3-tier web application, including frontend, backend, database, and ingress routing. It uses Helm for PostgreSQL and Traefik installation and provides a structured approach to manage deployments, secrets, services, and ingress routes.","archived":false,"fork":false,"pushed_at":"2024-11-29T17:47:54.000Z","size":30,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-03T14:24:12.590Z","etag":null,"topics":["deployment","devops","golang","helm","kubernetes","nodejs","postgresql","react","traefik"],"latest_commit_sha":null,"homepage":"https://github.com/Frnn4268/K8s_3-tier_webapp","language":"Nix","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/Frnn4268.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":"2024-11-28T15:42:17.000Z","updated_at":"2025-02-27T19:59:37.000Z","dependencies_parsed_at":"2024-12-02T17:15:47.107Z","dependency_job_id":null,"html_url":"https://github.com/Frnn4268/K8s_3-tier_webapp_deployment","commit_stats":null,"previous_names":["frnn4268/k8s_3-tier_webapp_deployment"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Frnn4268/K8s_3-tier_webapp_deployment","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frnn4268%2FK8s_3-tier_webapp_deployment","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frnn4268%2FK8s_3-tier_webapp_deployment/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frnn4268%2FK8s_3-tier_webapp_deployment/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frnn4268%2FK8s_3-tier_webapp_deployment/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Frnn4268","download_url":"https://codeload.github.com/Frnn4268/K8s_3-tier_webapp_deployment/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Frnn4268%2FK8s_3-tier_webapp_deployment/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31415110,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-04T20:09:54.854Z","status":"ssl_error","status_checked_at":"2026-04-04T20:09:44.350Z","response_time":60,"last_error":"SSL_read: 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","devops","golang","helm","kubernetes","nodejs","postgresql","react","traefik"],"created_at":"2024-12-28T01:19:57.092Z","updated_at":"2026-04-04T21:31:47.208Z","avatar_url":"https://github.com/Frnn4268.png","language":"Nix","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Deploying the Minimal 3-Tier Web Application using Kubernetes\n\nThis project defines Kubernetes manifests and Helm charts to deploy a 3-tier web application, including frontend, backend, database, and ingress routing. It uses Helm for PostgreSQL and Traefik installation and provides a structured approach to manage deployments, secrets, services, and ingress routes.\n\nThis section defines kubernetes manifests to deploy:\n\n- The services defined in [K8s_3-tier_webapp](https://github.com/Frnn4268/K8s_3-tier_webapp)\n- Postgresql (via [a helm chart](https://github.com/bitnami/charts/tree/main/bitnami/postgresql))\n- Traefik ingress controller (and config to route traffic to the application)\n\n## Layout\n\nThe following shows the layout of this directory:\n\n```\n├── api-golang\n│   ├── Deployment.yaml\n│   ├── IngressRoute.yaml\n│   ├── Secret.yml\n│   └── Service.yaml\n├── api-node\n│   ├── Deployment.yaml\n│   ├── IngressRoute.yaml\n│   ├── Secret.yaml\n│   └── Service.yaml\n├── client-react\n│   ├── ConfigMap.yaml\n│   ├── Deployment.yaml\n│   ├── IngressRoute.yaml\n│   └── Service.yaml\n├── common\n│   ├── Middleware.yaml\n│   ├── Namespace.yaml\n├── load-generator-python\n│   ├── ConfigMap.yaml\n│   └── Deployment.yaml\n└── postgresql\n    ├── Job.db-migrator.yaml\n    └── Secret.db-password.yaml\n```\n\n## Breakdown\n\nHelm is used to install:\n\n1. `Postgresql`\n2. `Traefik` (ingress controller)\n\nEach service effectively gets broken down into:\n\n1. `Deployment`: Contains the application\n2. `Secret`: Contains database credentials\n3. `Service`: Internal load balancer routing traffic to the deployment pods.\n4. `IngressRoute`: Configures Ingress controller to route traffic to the proper service\n\nThe database migration is structured as a Kubernetes `Job`.\n\n## Tasks\n\nThe top level `Taskfile` provides all necessary commands to deploy the application:\n\n```\n❯ task --list-all\ntask: Available tasks for this project:\n* apply-all:\n* api-golang:apply:                                     Apply kubernetes resource manifests for api-golang application\n* api-node:apply:                                       Apply kubernetes resource manifests for api-node application\n* client-react:apply:                                   Apply kubernetes resource manifests for client-react application\n* common:apply-namespace:                               Apply Kubernetes Namespace\n* common:apply-traefik-middleware:                      Deploy Traefik middleware\n* common:deploy-traefik:                                Deploy Traefik using Helm\n* load-generator-python:apply:                          Apply kubernetes resource manifests for load-generator-python application\n* load-generator-python:create-image-pull-secret:       Create image pull secret to pull from private registry\n* postgresql:apply-initial-db-migration-job:            Run init.sql script against the DB\n* postgresql:install-postgres:                          Deploy PostgreSQL using Helm\n```\n\n## Problem Solved\n\nThis project provides a comprehensive solution for deploying a 3-tier web application using Kubernetes. It simplifies the deployment process by defining Kubernetes manifests for various services, including a React frontend, Node.js and Go backends, a PostgreSQL database, and a Traefik ingress controller.\n\n## Summary\n\nThe project includes Kubernetes manifests and Helm charts to deploy a `3-tier web application`. It covers the deployment of frontend and backend services, database setup, and ingress routing.\n\n### Key Content\n- api-golang: Deployment, IngressRoute, Secret, Service\n- api-node: Deployment, IngressRoute, Secret, Service\n- client-react: ConfigMap, Deployment, IngressRoute, Service\n- common: Middleware, Namespace\n- load-generator-python: ConfigMap, Deployment\n- postgresql: Job.db-migrator, Secret.db-password\n\nIf you want to see the \"Kubernetes 3-Tier Web Application (K8s_3-tier_webapp)\" feel free to use this link to view and adjust the repository contents to your needs: [K8s_3-tier_webapp](https://github.com/Frnn4268/K8s_3-tier_webapp)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrnn4268%2Fk8s_3-tier_webapp_deployment","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffrnn4268%2Fk8s_3-tier_webapp_deployment","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffrnn4268%2Fk8s_3-tier_webapp_deployment/lists"}