{"id":15017821,"url":"https://github.com/zerohertz/k8s-on-premise","last_synced_at":"2025-07-11T13:06:06.092Z","repository":{"id":188580625,"uuid":"679015336","full_name":"Zerohertz/k8s-on-premise","owner":"Zerohertz","description":"👾 [On-premise] 단일 node k8s 환경 구축 👾","archived":false,"fork":false,"pushed_at":"2025-03-20T14:51:11.000Z","size":6745,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"v1.30.3-4.Argo-CD","last_synced_at":"2025-04-12T12:43:16.971Z","etag":null,"topics":["airflow","argo-cd","grafana","k8s","kubernetes","nextcloud","prometheus","traefik"],"latest_commit_sha":null,"homepage":"https://zerohertz.xyz","language":"Shell","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/Zerohertz.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,"zenodo":null}},"created_at":"2023-08-15T23:15:04.000Z","updated_at":"2025-03-20T14:51:14.000Z","dependencies_parsed_at":"2023-12-26T17:40:01.635Z","dependency_job_id":"894806df-6336-4ecf-a622-2c6fa1542126","html_url":"https://github.com/Zerohertz/k8s-on-premise","commit_stats":{"total_commits":82,"total_committers":1,"mean_commits":82.0,"dds":0.0,"last_synced_commit":"05756045703ee9f893e77aeb381fb06b7a3dfce1"},"previous_names":["zerohertz/k8s-on-premise"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Zerohertz/k8s-on-premise","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zerohertz%2Fk8s-on-premise","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zerohertz%2Fk8s-on-premise/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zerohertz%2Fk8s-on-premise/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zerohertz%2Fk8s-on-premise/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Zerohertz","download_url":"https://codeload.github.com/Zerohertz/k8s-on-premise/tar.gz/refs/heads/v1.30.3-4.Argo-CD","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Zerohertz%2Fk8s-on-premise/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264815742,"owners_count":23668016,"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":["airflow","argo-cd","grafana","k8s","kubernetes","nextcloud","prometheus","traefik"],"created_at":"2024-09-24T19:51:01.674Z","updated_at":"2025-07-11T13:06:06.074Z","avatar_url":"https://github.com/Zerohertz.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=center\u003e\n    \u003ch1\u003e\n        🚢 Kubernetes: On-premise 🚢\n    \u003c/h1\u003e\n\u003c/div\u003e\n\n\u003e Kubernetes를 직접 구축해보고 서비스를 배포해보기 위한 코드들입니다.\n\n\u003c/br\u003e\n\u003cdiv align = \"center\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Kubernetes-v1.30.3-800A0A?style=for-the-badge\u0026logo=Kubernetes\u0026labelColor=326CE5\u0026logoColor=white\"/\u003e\n    \u003c/br\u003e\n    \u003ca href = \"https://zerohertz.xyz\"\u003e\n        \u003cimg src=\"https://img.shields.io/badge/Zerohertz's%20Server-800a0a?style=for-the-badge\u0026logo=data.ai\u0026logoColor=white\"/\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n|   No.   | Stacks                                                                                                                                                                                                                                                                  | Features                                                                                                                                                                                                                                         |\n| :-----: | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |\n| :zero:  | :o: [Kubelet](https://github.com/kubernetes/kubelet)\u003c/br\u003e:o: [Kubeadm](https://github.com/kubernetes/kubeadm)\u003c/br\u003e:o: [Kubectl](https://github.com/kubernetes/kubectl)\u003c/br\u003e:o: [Calico](https://github.com/projectcalico/calico)                                        | :white_check_mark: 단일 node로 실행하므로 [master node의 `taint` 변경](https://github.com/Zerohertz/k8s-on-premise/blob/v1.30.3-4.Argo-CD/sh/install_k8s.sh#L52)                                                                                 |\n|  :one:  | :o: [Metrics Server](https://github.com/kubernetes-sigs/metrics-server)\u003c/br\u003e:o: [Local Path Provisioner](https://github.com/rancher/local-path-provisioner)\u003c/br\u003e:o: [MetalLB](https://github.com/metallb/metallb)\u003c/br\u003e:o: [Traefik](https://github.com/traefik/traefik) | :white_check_mark: [thomseddon/traefik-forward-auth](https://github.com/thomseddon/traefik-forward-auth)를 통한 [Google OAuth](https://developers.google.com/identity/protocols/oauth2?hl=ko) Middleware                                         |\n|  :two:  | :o: [Argo CD](https://github.com/argoproj/argo-cd)                                                                                                                                                                                                                      |                                                                                                                                                                                                                                                  |\n| :three: | :o: [Prometheus](https://github.com/prometheus/prometheus)\u003c/br\u003e:o: [Grafana](https://github.com/grafana/grafana)                                                                                                                                                        | :white_check_mark: [Node Exporter Full](https://grafana.com/grafana/dashboards/1860-node-exporter-full/), [Traefik Official Kubernetes Dashboard](https://grafana.com/grafana/dashboards/17347-traefik-official-kubernetes-dashboard/) 사용 가능 |\n| :three: | :o: [Apache Airflow](https://github.com/apache/airflow)                                                                                                                                                                                                                 | :white_check_mark: [Kubernetes Executor](https://airflow.apache.org/docs/apache-airflow/stable/core-concepts/executor/kubernetes.html) 사용                                                                                                      |\n| :three: | :o: [Nextcloud](https://github.com/nextcloud)                                                                                                                                                                                                                           | :white_check_mark: [Backend PostgreSQL 사용](https://zerohertz.github.io/home-server-cloud/#PostgreSQL)                                                                                                                                          |\n|  :art:  | :o: [@rldnd](https://github.com/rldnd)                                                                                                                                                                                                                                  | :white_check_mark: 모든 서비스를 한번에 접속할 수 있는 portal 추가\u003c/br\u003e:white_check_mark: [GitHub Actions 및 Argo CD 기반 CI/CD 적용](https://zerohertz.github.io/cicd-init/)                                                                    |\n\n```mermaid\n%%{\n    init: {\n        'theme': 'default',\n        'themeVariables': {\n            'fontFamily': 'Times New Roman'\n        }\n    }\n}%%\nflowchart TD\n    user[User]\n    dns[Domain Namer Server: GoDaddy]\n    user--Domain request\u003c/br /\u003e(service.zerohertz.xyz)--\u003edns\n    dns--DNS routing\u003cbr /\u003e(XXX.XXX.XXX.XXX)--\u003erouter\n    router--Port forwarding--\u003eingress\n\n    github[GitHub]\n    click github \"https://github.com/Zerohertz/k8s-on-premise\" _blank\n    github--Webhook\u003c/br /\u003e(argocd.zerohertz.xyz)--\u003edns\n\n    router--Google 2FA--\u003efail2ban\n    fail2ban--\u003essh\n\n    slack[Slack Bot]\n    airflow-kubernetes-pod-operator--\u003eslack\n\n    subgraph Home\n        router[\"Router\u003cbr /\u003e(XXX.XXX.XXX.XXX)\"]\n        subgraph 0hz-controlplane\n            fail2ban[Fail2Ban]\n            ssh[SSH]\n            node-exporter[Node Exporter]\n            node-exporter--\u003eprometheus\n            subgraph Kubernetes\n                kube-apiserver[kube-apiserver]\n                kube-scheduler[kube-scheduler]\n                kube-controller-manager[kube-controller-manager]\n                kubelet[Kubelet]\n                ingress[Ingress: Traefik]\n                cni[CNI: Calico]\n\n                argo-cd-application-controller--\u003ekube-apiserver\n                airflow-triggerer--\u003ekube-apiserver\n                kube-apiserver--\u003ekube-scheduler\n                kube-apiserver--\u003ekube-controller-manager\n                kube-scheduler--\u003ekubelet\n                kube-controller-manager--\u003ekubelet\n\n                storage-class[Storage Class:\u003cbr/\u003eLocal Path Storage]\n\n                kubelet-.-\u003eMonitoring\n                kubelet-.-\u003eAirflow\n                kubelet-.-\u003eNextCloud\n                kubelet-.-\u003eairflow-kubernetes-pod-operator\n\n                ingress--Ingress--\u003eargo-cd-server\n                ingress--Ingress--\u003eprometheus\n                ingress--Ingress--\u003egrafana\n                ingress--Ingress--\u003eairflow-webserver\n                ingress--Ingress--\u003enextcloud\n\n                subgraph Argo-CD\n                    argo-cd-server[Server]\n                    argo-cd-dex-server[Dex Server]\n                    argo-cd-repo-server[Repo Server]\n                    argo-cd-application-controller[Application Controller]\n                    argo-cd-applicationset-controller[ApplicationSet Controller]\n                    argo-cd-notifications-controller[Notifications Controller]\n                    argo-cd-db[(Redis)]\n                    argo-cd-server--\u003eargo-cd-dex-server\n                    argo-cd-server--\u003eargo-cd-repo-server\n                    argo-cd-server--Sync Apps--\u003eargo-cd-application-controller\n                    argo-cd-server--\u003eargo-cd-applicationset-controller\n                    argo-cd-server--\u003eargo-cd-notifications-controller\n                    argo-cd-repo-server--\u003eargo-cd-db\n                    argo-cd-application-controller--\u003eargo-cd-repo-server\n                    argo-cd-applicationset-controller--\u003eargo-cd-repo-server\n                    argo-cd-notifications-controller--Monitors Events--\u003eargo-cd-server\n                end\n\n                subgraph Monitoring\n                    prometheus[Prometheus]\n                    grafana[Grafana]\n                    prometheus--\u003egrafana\n                end\n\n                subgraph Airflow\n                    airflow-webserver[Webserver]\n                    airflow-db[(PostgreSQL)]\n                    airflow-statsd[statsd]\n                    airflow-triggerer[triggerer]\n                    airflow-kubernetes-pod-operator[KubernetesPodOperator]\n                    airflow-webserver--\u003eairflow-db\n                    airflow-webserver--\u003eairflow-statsd\n                    airflow-webserver--\u003eairflow-triggerer\n                end\n\n                subgraph NextCloud\n                    nextcloud[NextCloud]\n                    nextcloud-db[(PostgreSQL)]\n                    nextcloud--\u003enextcloud-db\n                end\n            end\n        end\n    end\n    style user fill:#800a0a,color:#fff,stroke:#000\n    style dns fill:#1BDBDB,stroke:#000\n    style github fill:#000,color:#fff,stroke:#000\n    style slack fill:#4A154B,color:#fff,stroke:#000\n    style 0hz-controlplane fill:#f0a0a0,stroke:#800a0a\n    style Kubernetes fill:#82ACF5,stroke:#326CE5\n    style Argo-CD fill:#EF7B4D,stroke:#EF7B4D\n    style Monitoring fill:#F6A26C,stroke:#E6522C\n    style Airflow fill:#71BCFE,stroke:#017CEE\n    style NextCloud fill:#30A2F9,stroke:#0082C9\n```\n\n\u003c/div\u003e\n\n- 모든 서비스는 `https://${SERVICE}.${DDNS}`에 Argo CD로 배포됩니다.\n\n\u003cdiv align=\"center\"\u003e\n  \u003cimg width=\"2515\" alt=\"argo-cd\" src=\"https://github.com/user-attachments/assets/4b4c18cb-96a6-471d-b0dc-f21aeeb6781a\"\u003e\n  \u003cimg width=\"2515\" alt=\"portal\" src=\"https://github.com/user-attachments/assets/c64b57ab-76b7-4382-b76b-172cb3fa34bd\"\u003e\n  \u003cimg width=\"2515\" alt=\"traefik\" src=\"https://github.com/user-attachments/assets/8122765c-6034-4151-a39b-6829bd603ead\"\u003e\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzerohertz%2Fk8s-on-premise","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzerohertz%2Fk8s-on-premise","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzerohertz%2Fk8s-on-premise/lists"}