{"id":14929588,"url":"https://github.com/stefanprodan/gitops-linkerd","last_synced_at":"2025-07-04T11:36:28.041Z","repository":{"id":39597355,"uuid":"305618632","full_name":"stefanprodan/gitops-linkerd","owner":"stefanprodan","description":"Progressive Delivery workshop with Linkerd, Flagger and Flux","archived":false,"fork":false,"pushed_at":"2023-05-25T16:52:39.000Z","size":883,"stargazers_count":72,"open_issues_count":0,"forks_count":49,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-06-01T15:02:18.704Z","etag":null,"topics":["fluxcd","gitops","kubernetes","linkerd","progressive-delivery"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stefanprodan.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}},"created_at":"2020-10-20T07:01:05.000Z","updated_at":"2025-04-08T10:52:05.000Z","dependencies_parsed_at":"2024-11-02T04:01:24.418Z","dependency_job_id":"cdf51ac2-c8dc-496a-abea-6937d98254e8","html_url":"https://github.com/stefanprodan/gitops-linkerd","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/stefanprodan/gitops-linkerd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanprodan%2Fgitops-linkerd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanprodan%2Fgitops-linkerd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanprodan%2Fgitops-linkerd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanprodan%2Fgitops-linkerd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stefanprodan","download_url":"https://codeload.github.com/stefanprodan/gitops-linkerd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stefanprodan%2Fgitops-linkerd/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263502545,"owners_count":23476618,"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":["fluxcd","gitops","kubernetes","linkerd","progressive-delivery"],"created_at":"2024-09-23T15:00:44.206Z","updated_at":"2025-07-04T11:36:27.981Z","avatar_url":"https://github.com/stefanprodan.png","language":"Shell","funding_links":[],"categories":["Shell"],"sub_categories":[],"readme":"# gitops-linkerd\n\n[![test](https://github.com/stefanprodan/gitops-linkerd/workflows/test/badge.svg)](https://github.com/stefanprodan/gitops-linkerd/actions)\n[![license](https://img.shields.io/github/license/stefanprodan/gitops-linkerd.svg)](https://github.com/stefanprodan/gitops-linkerd/blob/main/LICENSE)\n\nProgressive Delivery workshop with [Linkerd](https://github.com/linkerd/linkerd2),\n[Flagger](https://github.com/fluxcd/flagger), [Flux](https://github.com/fluxcd/flux)\nand [Weave GitOps](https://github.com/weaveworks/weave-gitops).\n\n![flux-ui](docs/screens/wego-apps.png)\n\n## Introduction\n\n### What is GitOps?\n\nGitOps is a way to do Continuous Delivery, it works by using Git as a source of truth\nfor declarative infrastructure and workloads.\nFor Kubernetes this means using `git push` instead of `kubectl apply/delete` or `helm install/upgrade`.\n\nIn this workshop you'll be using GitHub to host the config repository and [Flux](https://fluxcd.io)\nas the GitOps delivery solution.\n\n### What is Progressive Delivery?\n\nProgressive delivery is an umbrella term for advanced deployment patterns like canaries, feature flags and A/B testing.\nProgressive delivery techniques are used to reduce the risk of introducing a new software version in production\nby giving app developers and SRE teams a fine-grained control over the blast radius.\n\nIn this workshop you'll be using [Flagger](https://flagger.app), [Linkerd](https://github.com/linkerd/linkerd2) and\nPrometheus to automate Canary Releases and A/B Testing for your applications.\n\n## Prerequisites\n\nFor this workshop you will need a GitHub account and a Kubernetes cluster version 1.21\nor newer with **Load Balancer** support.\n\nIn order to follow the guide you'll need a GitHub account and a\n[personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)\nthat can create repositories (check all permissions under `repo`).\n\n### Fork the repository\n\nStart by forking the [gitops-linkerd](https://github.com/stefanprodan/gitops-linkerd)\nrepository on your own GitHub account.\nThen generate a GitHub\n[personal access token](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)\nthat can create repositories (check all permissions under `repo`),\nand export your GitHub token, username and repo name as environment variables:\n\n```sh\nexport GITHUB_TOKEN=\u003cyour-token\u003e\nexport GITHUB_USER=\u003cyour-username\u003e\nexport GITHUB_REPO=\"gitops-linkerd\"\n```\n\nNext clone your repository locally with:\n\n```shell\ngit clone https://github.com/${GITHUB_USER}/${GITHUB_REPO}.git\ncd ${GITHUB_REPO}\n```\n\n### Install CLI tools\n\nInstall flux, kubectl, linkerd, step and other CLI tools with Homebrew:\n\n```shell\nbrew bundle\n```\n\nThe complete list of tools can be found in the `Brewfile`.\n\n## Cluster bootstrap\n\nWith the `flux bootstrap` command you can install Flux on a Kubernetes cluster and configure\nit to manage itself from a Git repository. If the Flux components are present on the cluster,\nthe bootstrap command will perform an upgrade if needed.\n\n```shell\nflux bootstrap github \\\n  --owner=${GITHUB_USER} \\\n  --repository=${GITHUB_REPO} \\\n  --branch=main \\\n  --path=./clusters/my-cluster \\\n  --personal\n```\n\nWhen Flux has access to your repository it will do the following:\n\n* installs the Flux UI (Weave GitOps OSS)\n* installs cert-manager and generates the Linkerd trust anchor certificate\n* installs Linkerd  using the `linkerd-crds`, `linkerd-control-plane`, `linkerd-viz` and `linkerd-smi` Helm charts\n* waits for the Linkerd control plane to be ready\n* installs the Kubernetes NGINX ingress in the `ingress-nginx` namespace\n* installs Flagger and configures its load testing service inside the `flagger-system` namespace\n* waits for NGINX and Flagger to be ready\n* creates the frontend deployment and configures it for A/B testing\n* creates the backend deployment and configures it for progressive traffic shifting\n\n![flux-ui](docs/screens/wego-deps.png)\n\nWatch Flux installing Linkerd first, then the demo apps:\n\n```bash\nflux get kustomizations --watch\n```\n\nWhen bootstrapping a cluster with Linkerd, it is important to control the installation order.\nFor the applications pods to be injected with Linkerd proxy,\nthe Linkerd control plane must be up and running before the apps.\nFor the ingress controller to forward traffic to the apps, NGINX must be injected with the Linker sidecar.\n\n## Access the dashboards\n\nTo access the Flux dashboard, start port forwarding with:\n\n```sh\nkubectl -n flux-system port-forward svc/weave-gitops 9001:9001 \u0026\n```\n\nNavigate to `http://localhost:9001` and login using the username `admin` and the password `flux`.\n\n![flux-ui](docs/screens/wego-linkerd.png)\n\nTo access the Linkerd dashboard, start port forwarding with:\n\n```sh\nkubectl -n linkerd-viz port-forward svc/web 8084:8084 \u0026\n```\n\nNavigate to `http://localhost:8084` to access the dashboard.\n\n![linkerd-ui](docs/screens/linkerd-metrics.png)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanprodan%2Fgitops-linkerd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstefanprodan%2Fgitops-linkerd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstefanprodan%2Fgitops-linkerd/lists"}