{"id":26115605,"url":"https://github.com/andreistefanciprian/flux-demo","last_synced_at":"2026-03-07T09:32:10.758Z","repository":{"id":167038635,"uuid":"598460104","full_name":"andreistefanciprian/flux-demo","owner":"andreistefanciprian","description":"Explore deploying k8s resources to GKE with flux","archived":false,"fork":false,"pushed_at":"2025-12-26T09:08:53.000Z","size":397,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-27T14:51:55.238Z","etag":null,"topics":["gitops","kubernetes"],"latest_commit_sha":null,"homepage":"","language":null,"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/andreistefanciprian.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-02-07T06:36:50.000Z","updated_at":"2025-12-26T09:08:54.000Z","dependencies_parsed_at":"2023-12-09T02:28:55.800Z","dependency_job_id":"93e89e00-2385-4183-95c4-c363b77bc68b","html_url":"https://github.com/andreistefanciprian/flux-demo","commit_stats":null,"previous_names":["andreistefanciprian/flux-demo"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/andreistefanciprian/flux-demo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreistefanciprian%2Fflux-demo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreistefanciprian%2Fflux-demo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreistefanciprian%2Fflux-demo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreistefanciprian%2Fflux-demo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/andreistefanciprian","download_url":"https://codeload.github.com/andreistefanciprian/flux-demo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/andreistefanciprian%2Fflux-demo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30210841,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-07T09:02:10.694Z","status":"ssl_error","status_checked_at":"2026-03-07T09:02:08.429Z","response_time":53,"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":["gitops","kubernetes"],"created_at":"2025-03-10T07:56:00.604Z","updated_at":"2026-03-07T09:32:10.746Z","avatar_url":"https://github.com/andreistefanciprian.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# GitOps Kubernetes Deployments with FluxCD\n\nThis repository contains Kubernetes manifests managed by [FluxCD](https://fluxcd.io/) for automated GitOps deployments to a [private GKE cluster](https://github.com/andreistefanciprian/terraform-kubernetes-gke-cluster).\n\n## 📦 Deployed Components\n\n- **[FluxCD](https://fluxcd.io/flux/)** - GitOps toolkit for Kubernetes\n- **[Istio](https://github.com/istio/istio/tree/master/manifests/charts)** - Service mesh\n- **[Kube-Prometheus-Stack](https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack)** - Monitoring and alerting\n- **[Cert-Manager](https://cert-manager.io/docs/installation/helm/)** - Automatic TLS certificate management\n- **[Gateway API](https://gateway-api.sigs.k8s.io/)** - Kubernetes Gateway API CRDs\n- **[Secrets Store CSI Driver](https://secrets-store-csi-driver.sigs.k8s.io/introduction)** - Secret management integration\n- **[Go Demo App](https://github.com/andreistefanciprian/go-demo-app)** - Demo application\n- **[Pod Restarter](https://github.com/andreistefanciprian/pod-restarter-go)** - Automated pod restart utility\n\n## 🚀 Initial Setup\n\n### Prerequisites\n\n- GitHub App for Flux authentication ([setup guide](https://fluxcd.io/blog/2025/04/flux-operator-github-app-bootstrap/#github-app-docs))\n- GKE cluster provisioned via [terraform](https://github.com/andreistefanciprian/terraform-kubernetes-gke-cluster)\n- `kubectl` configured to access your cluster\n- `helmfile` installed locally\n\n### Installation Steps\n\n#### 1. Create GitHub App Secret\n\nFollow the [Flux Operator GitHub App docs](https://fluxcd.io/blog/2025/04/flux-operator-github-app-bootstrap/#github-app-docs) to create a GitHub App, then create the Kubernetes secret:\n\n```bash\nflux create secret githubapp flux-system \\\n  --app-id=\u003capp_id\u003e \\\n  --app-installation-id=\u003capp_install_id\u003e \\\n  --app-private-key=\u003cprivate_key.pem\u003e\n```\n\n#### 2. Update Configuration\n\nUpdate the `GCP_PROJECT` variable in:\n- `clusters/home/flux-system/cluster-vars.yaml`\n- `clusters/home/flux-system/values-flux-instance.yaml`\n\n\u003e **Note:** Variables in the ConfigMap are propagated across all manifests in the `./infra` folder.\n\n#### 3. Deploy Flux Operator\n\n```bash\n# Preview changes\nhelmfile -f clusters/home/flux-system/helmfile.yaml diff -l name=flux-operator\n\n# Deploy operator\nhelmfile -f clusters/home/flux-system/helmfile.yaml apply -l name=flux-operator\n```\n\n#### 4. Deploy Flux Instance\n\n```bash\n# Preview changes\nhelmfile -f clusters/home/flux-system/helmfile.yaml diff -l name=flux-instance\n\n# Deploy instance\nhelmfile -f clusters/home/flux-system/helmfile.yaml apply -l name=flux-instance\n```\n\n#### 5. Access Flux Operator UI\n\n```bash\n# Forward port to access the operator UI\nkubectl port-forward svc/flux-operator -n flux-system 9080:9080\n\n# Open in browser: http://localhost:9080\n```\n\n\n## 🔍 Monitoring \u0026 Debugging\n\n```bash\n# View all Flux resources\nkubectl get kustomizations -A\nkubectl get helmrepositories -A\nkubectl get helmreleases -A\nkubectl get gitrepositories -A\nkubectl get imagerepositories -A\nkubectl get imageupdateautomations -A\n\n# Check Helm releases\nhelm list -A\nhelm get manifest \u003crelease-name\u003e\n\n# Force reconciliation of a specific app\nflux reconcile kustomization \u003capp-name\u003e --with-source\n\n# Flux controller logs\nkubectl -n flux-system logs -l app=helm-controller -f\n\n# Delete application\nkubectl delete kustomization \u003capp-name\u003e -n flux-system\n\n# If your GitHub token expires, update the Flux secret\n# Generate base64 encoded token\necho -n 'ghp_yourNewTokenHere' | base64\n\n# Edit the secret and replace data.password with the new base64 value\nkubectl edit secret flux-system -n flux-system\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreistefanciprian%2Fflux-demo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandreistefanciprian%2Fflux-demo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandreistefanciprian%2Fflux-demo/lists"}