{"id":29061992,"url":"https://github.com/evalece/kafka-go-k8s","last_synced_at":"2026-02-02T18:35:24.221Z","repository":{"id":300109813,"uuid":"1005166512","full_name":"evalece/kafka-go-k8s","owner":"evalece","description":"A quick infrastructure demo showcasing K8s and Cloud service deployment with industry DevOps CD/CI operations with Docker, GitHub Actions, Helm, Helmfile, and ArgoCD (and will go from minikube to k8s) with documented notes","archived":false,"fork":false,"pushed_at":"2025-08-18T22:20:21.000Z","size":3670,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-19T00:24:51.155Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Go","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/evalece.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":"roadmap/README.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-19T19:27:43.000Z","updated_at":"2025-07-02T04:28:56.000Z","dependencies_parsed_at":"2025-08-19T00:15:16.477Z","dependency_job_id":"51082ef7-ca81-470a-a732-a7f15defb1d4","html_url":"https://github.com/evalece/kafka-go-k8s","commit_stats":null,"previous_names":["evalece/k8s","evalece/kafka-go-k8s"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/evalece/kafka-go-k8s","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evalece%2Fkafka-go-k8s","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evalece%2Fkafka-go-k8s/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evalece%2Fkafka-go-k8s/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evalece%2Fkafka-go-k8s/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/evalece","download_url":"https://codeload.github.com/evalece/kafka-go-k8s/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/evalece%2Fkafka-go-k8s/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29017519,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-02T18:20:26.228Z","status":"ssl_error","status_checked_at":"2026-02-02T18:20:25.361Z","response_time":58,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: 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":"2025-06-27T08:08:51.560Z","updated_at":"2026-02-02T18:35:24.215Z","avatar_url":"https://github.com/evalece.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# The K8s DevOps Pipeline: Helm, Helmfile, ArgoCD, and Minikube Demo\n\n\n- Purpose:\n    - Focuses on KEDA challenges (i.e., threshold logic- to avoid frequent scaleup and down with unnessary surges or spikes)\n    - A quick infrastructure demo showcasing K8s and Cloud service deployment with industry DevOps CD/CI operations with Docker, GitHub Actions, Helm, Helmfile, and ArgoCD (and will go from minikube to k8s) with docuemtned notes\n    \n\n- What It Does:\n    - Lints and builds container images (Docker + GitHub Actions) \n        - K8s orchestration \n        - Cloud service deployment (GCP, AWS)\n        - Validate builds and pushes \n\n\n\n## Development from scratch (without cloning)\n\n- Core concepts around toolings\n    - Autoscaling\n        - KEDA; Built-in in K8s\n            - uses metrics as event-trigger\n            - Recommend: Debug with downstream error log + low trigger amount \n            - need special handling when CI/CD conflicts with autoscaling\n    - Provisioning, CI/CD\n        - Tools: k8s-\u003e Helm -\u003e Terraform -\u003e ArgoCD\n\n### Minikube \nbrew install minikube\n### K8s\nbrew install kubectl   \nminikube start --driver=docker\n\n### Going from smaller bits to the tools that orchestrate them k8s \u003e Helm \u003e Helmfile/ ArgoCD\nMindmap: \nk8s \u003e Helm \u003e Helmfile/ ArgoCD\nKey idea: \nEverything is declarative, but the cluster has configurable mechanicsm to ensure the \"desirable state\" is met. Yet, tracking cluster and system health is still on us! \n\n\n- K8s Quick Guide:\nK8s focuses on defining distributed containerizations, enabling image, container and load balancing at cluster level, and assumes all images have been built, with configuration for extra \"customization\" is done via configuration (or from image's perspective, driven by container's env var).\n\n- K8s \u0026 VMs\n    - Idea: \n        - Allow distributed nodes (if not native to desired Arch, run VM) to connect to K8s API server\n        - Pass service manifests, k8s metadata to k8s. \n        - Leave node managements to K8s. \n\nThus, in a k8s manifest, we have the following catagory: \n- Pod \n    - Smallest units of K8s\n    - Holds one or more images\n    - (i.e., container level)\n- Deployment + ReplicaSet\n    - (i.e., replications of pod)\n- StatefulSet (Pod ID management)\n- Running Jobs \n    - Job, CronJob, DaemonSet \n    - (i.e.,at pod level, purpose is to track if desired state is achieved, if not, define kill or rety logic with the follwoing)\n\nOrganizing the K8s Cluster \n- Namespace- [1]\n    Kubernetes namespace \n- Configmap are can be mounted like data volumes[4]:\n    - Basically apply a configMap pod to accept mounted files \n    - shortcut kubectl create configmap my-config --from-file=config.json\n    kubectl create configmap my-config --from-file=config.json -n namespace_tag\n\n\n1. Apply Helm to enable automation on k8s compose Helm chart orchestrates k8s manifests (i.e., multiple pods specs), enabling image and k8s resources modifications\n    - Create k8s work directory with Helm     \n    - helm create k8s\n    - helm template myapp ./my-chart -f values.yaml \u003e rendered.yaml\n    - kubectl apply -f rendered.yaml\n\n\n2. How-to\n    - start with helm gen. dir (1) or a desinated dir with (2)\n        - helm install my-app ./my-chart\n        - helm install my-app ./my-chart\n\n    -  template to create k8s manifests for declarative assignment (i.e. define desired state of k8s cluster) \n    -  Chart.yaml to keep track on all release-names and chart-names \n    -  values.yaml for k8s resources spec\n\n    helm install myapp ./my-chart -f values.yaml\n\n\n\n3. Helmfile- Centralize helm chart for release-name and chart-name (warning: use with caution). One Helm chart may contain tightly coupled pipelines. Yet, loosely coupled pipelines may have specific infra logics such as \n    - ENV Var \n    - dependency \n    ... etc to be coordinated by helm chart release schedule and/ or injected script var on helm chart for orchestration.  \n\nbrew install helmfile\nhelmfile apply\n\n4. ArgoCD [3]- Alternative to Helmfile  but update my cluster with git push helm chart (using ArgoCD Application)\n    - To be deployed an image in K8s cluster and is given a repo to watch for changes \n    -  Create argocd namespace[3] \n\nkubectl create namespace argocd\nkubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml\n\nkubectl get secret argocd-initial-admin-secret -n argocd -o jsonpath=\"{.data.password}\" | base64 -d\n\nUI\nkubectl port-forward svc/argocd-server -n argocd 8080:443\n\n\n2. Prometheus\n\nhelm repo add prometheus-community https://prometheus-community.github.io/helm-charts\nhelm repo update\nhelm install prometheus prometheus-community/prometheus\n\n## Reference\n\n\n [1]https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ \n [2]https://kubernetes.io/docs/concepts/architecture/ \n [3]https://argo-cd.readthedocs.io/en/stable/ \n [4]https://kubernetes.io/docs/concepts/configuration/configmap/ \n\n\n\n- Author: \n    - lj2liu@uwaterloo.ca\n\n- ChatGPT 4o assistance in: \n    -  Readme proofreading. ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevalece%2Fkafka-go-k8s","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fevalece%2Fkafka-go-k8s","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fevalece%2Fkafka-go-k8s/lists"}