{"id":19310990,"url":"https://github.com/a0s/rangvald","last_synced_at":"2026-02-27T22:40:13.971Z","repository":{"id":146415333,"uuid":"241070896","full_name":"a0s/rangvald","owner":"a0s","description":"Deploy simple Django app to Minikube with Terraform and Helm 3","archived":false,"fork":false,"pushed_at":"2020-02-17T14:03:13.000Z","size":27,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-12T06:37:52.496Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://github.com/a0s/rangvald","language":"HCL","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/a0s.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":"2020-02-17T09:45:28.000Z","updated_at":"2020-02-17T14:03:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"9a454307-819b-4afc-b482-9a9939b4c821","html_url":"https://github.com/a0s/rangvald","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/a0s/rangvald","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a0s%2Frangvald","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a0s%2Frangvald/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a0s%2Frangvald/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a0s%2Frangvald/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/a0s","download_url":"https://codeload.github.com/a0s/rangvald/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/a0s%2Frangvald/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29917891,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"ssl_error","status_checked_at":"2026-02-27T19:37:41.463Z","response_time":57,"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":[],"created_at":"2024-11-10T00:27:16.553Z","updated_at":"2026-02-27T22:40:13.950Z","avatar_url":"https://github.com/a0s.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rangvald\n\n\u003e Dockerize and deploy sample Django app to Minikube.\n\nOptions:\n - raw yaml files for kubectl\n - Terraform-based deployment\n - Helm3-based deployment\n\n```shell script\n\u003e git clone https://github.com/a0s/rangvald\n\u003e cd rangvald\n``` \n\nNaming:\n\n    API - Sample Django app from https://github.com/shacker/gtd.git\n    DB - Postgres 12.1\n\n# Build image\n\nAlpine-based image\n\n```shell script\n\u003e ./api-image/build.sh\n\nREPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE\ndjango-todo                      latest              4ba28edef3c4        3 minutes ago       222MB\n```\n\n## Test image with docker-compose\n\n```shell script\n\u003e ./docker-compose/run.sh\n```\n\nhttp://localhost:8000\n\n# Deploy to minikube\n\nDon't forget to switch context to your local Docker on Mac\n\n```shell script\n\u003e kubectl config get-contexts\nCURRENT   NAME                 CLUSTER          AUTHINFO                NAMESPACE\n*         docker-desktop       docker-desktop   docker-desktop\n          docker-for-desktop   docker-desktop   docker-desktop\n```\n\n## Kubectl\n\n```shell script\n\u003e kubectl apply -f ./minikube-kubectl\n```\nThen wait for some time and check http://localhost:8080\n\nIt will deploy 1 pod for DB and 3 pods for API in namespace `rangvald`. \nMost of the variables were hardcoded. \nDb settings are passing through ConfigMap (it should be Secret on production).  \n\n## Terraform\n\nThis is almost the same as kubectl, ConfigMap was skipped, many variables were added.\n\nPrerequisites:\n\n```shell script\n\u003e terraform -v\nTerraform v0.12.20\n```\n\nDeploying:\n\n```shell script\n\u003e cd minikube-terraform\n\u003e terraform init\n\u003e terraform apply\n```\n\nWait for some time and check http://localhost:8080\n\n```shell script\n\u003e kubectl get all,configmaps -n rangvald\n\nNAME                      READY   STATUS    RESTARTS   AGE\npod/api-8fb6748cd-d84fc   1/1     Running   0          52s\npod/api-8fb6748cd-ftslb   1/1     Running   0          52s\npod/api-8fb6748cd-p9g9b   1/1     Running   0          52s\npod/db-5b7c649564-dhshd   1/1     Running   0          51s\n\n\nNAME          TYPE           CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE\nservice/api   LoadBalancer   10.98.173.84   localhost     8080:31946/TCP   53s\nservice/db    ClusterIP      10.96.220.54   \u003cnone\u003e        5432/TCP         53s\n\n\nNAME                  READY   UP-TO-DATE   AVAILABLE   AGE\ndeployment.apps/api   3/3     3            3           52s\ndeployment.apps/db    1/1     1            1           51s\n\nNAME                            DESIRED   CURRENT   READY   AGE\nreplicaset.apps/api-8fb6748cd   3         3         3       52s\nreplicaset.apps/db-5b7c649564   1         1         1       51s\n```\n\nThere are many variables that can be changed with Terraform's `TF_VAR_` variable settings:\n\n| Variable name             | Default value                           | Description                                              |\n|---------------------------|-----------------------------------------|----------------------------------------------------------|\n| kube_host                 | https://kubernetes.docker.internal:6443 |                                                          |\n| kube_config_path          | ~/.kube/config                          |                                                          |\n| kube_config_context       | docker-desktop                          |                                                          |\n| namespace                 | rangvald                                |                                                          |\n| db_name                   | somedb                                  |                                                          |\n| db_user                   | someusername                            |                                                          |\n| db_password               | somepassword                            | Password for DB!                                         |\n| db_volume_size            | 5G                                      | Capacity for PersistentVolume and  PersistentVolumeClaim |\n| db_image                  | postgres:12.1-alpine                    |                                                          |\n| db_initial_delay_seconds  | 10                                      | readinessProbe.initialDelaySeconds for DB                |\n| db_failure_threshold      | 1                                       | readinessProbe.failureThreshold for DB                   |\n| db_period_seconds         | 5                                       | readinessProbe.periodSeconds for DB                      |\n| api_pods_count            | 3                                       | Number of api's replicas                                 |\n| api_image                 | django-todo:latest                      |                                                          |\n| api_initial_delay_seconds | 5                                       | readinessProbe.initialDelaySeconds for API               |\n| api_failure_threshold     | 1                                       | readinessProbe.failureThreshold for API                  |\n| api_period_seconds        | 5                                       | readinessProbe.periodSeconds for API                     |\n| api_external_port         | 8080                                    | Localhost's port to open site                            |\n\n## Helm\n\nPrerequisites:\n\n```shell script\n\u003e helm version                                                                                         ruby-2.6.3\nversion.BuildInfo{Version:\"v3.0.3\", GitCommit:\"ac925eb7279f4a6955df663a0128044a8a6b7593\", GitTreeState:\"clean\", GoVersion:\"go1.13.7\"}\n```\n\nDeploying without secrets:\n\n```\n\u003e helm install rangvald minikube-helm --set db.config.dbPassword=not_secret_password\n```\n\nDeploying with secrets:\n\n```\n# Create secret in kube\n\u003e kubectl create secret generic db-config \\\n    --from-literal=db_name=secret_db \\\n    --from-literal=db_user=secret_user \\\n    --from-literal=db_password=1111\n\n# Use secret during deploy\n\u003e helm install rangvald minikube-helm --set db.config.type=secret\n```\n\nThere are many config options prepared for this helm chart in [values.yaml](minikube-helm/values.yaml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa0s%2Frangvald","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fa0s%2Frangvald","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fa0s%2Frangvald/lists"}