Create a complete GitOps-based operational stack with all the tools you need for an internal developer platform, on your machine, in your datacenter or in the cloud!
- Deployment: GitOps via Argo CD with a ready-to-use repo structure
- Monitoring: Prometheus and Grafana
- Secrets Management: Vault and External Secrets Operator
- Notifications/Alerts: Grafana and ArgoCD can be predefined with either an external mailserver or MailHog for demo purposes.
- Pipelines: Example applications using Jenkins with the gitops-build-lib and SCM-Manager
- Ingress Controller: ingress
- Certificate Management: cert-manager
- Content Loader: Completely customize what is pushed to Git during installation. This allows for adding your own end-user or IDP apps, creating repos, adding Argo CD tenants, etc.
- Runs on:
- local cluster (try it with only one command),
- in the public cloud,
- and even air-gapped environments.
The gitops-playground is derived from our experiences in consulting, operating our internal developer platform (IDP) at Cloudogu and is used in our GitOps trainings.
No need to read lots of books and operator docs, getting familiar with CLIs, ponder about GitOps Repository folder structures and promotion to different environments, etc. The GitOps Playground is a pre-configured environment to see GitOps in motion, including more advanced use cases like notifications, monitoring and secret management.
We aim to be compatible with various environments, we even run in an air-gapped networks.
You can try the GitOps Playground on a local Kubernetes cluster by running a single command:
bash <(curl -s \
https://raw.githubusercontent.com/cloudogu/gitops-playground/main/scripts/init-cluster.sh) \
&& docker run --rm -t --pull=always -u $(id -u) \
-v ~/.config/k3d/kubeconfig-gitops-playground.yaml:/home/.kube/config \
--net=host \
ghcr.io/cloudogu/gitops-playground --yes --argocd --ingress --base-url=http://localhost
# More IDP-features: --mail --monitoring --vault=dev --cert-manager
# More features for developers: --jenkins --registry --content-examplesNote that on some linux distros like debian do not support subdomains of localhost.
There you might have to use --base-url=http://local.gd (see local ingresses).
We recommend running this command as an unprivileged user, that is inside the docker group.
A detailed document on how to install GOP in all possible environments can be found here. For a deep-dive into all components that GOP can install for you, see Applications
You can configure GOP using CLI params, config file and/or config map. Config file and map have the same format and offer a schema file. Please find an overview of all CLI and config options here
Configuration precedence (highest to lowest):
- Command-line parameters
- Configuration files (
--config-file) - Config maps (
--config-map)
That is, if you pass a param via CLI, for example, it will overwrite the corresponding value in the configuration.
For a deep-dive into GOPs configuration, see Configuration.md
GOP includes some pre-defined profiles for easy usage, set --profile=<profile-name> to start GOP with your desired profile.
Current existing profiles for argocd in non-operator mode:
| Profile | Features | Use-Case |
|---|---|---|
| minimal | Argo-cd, SCM-Manager | quick start to get going with gitops |
| content-examples | Argo-cd, SCM-Manager, Jenkins, Petclinic | demo a complete developer workflow |
| full | all available features | showcase a full-fledged IDP |
Follow profils for ArgoCD in Operator mode which has to be installed first:
| Profile | Features | Use-Case |
|---|---|---|
| operator-minimal | Argo-cd, SCM-Manager | minimal example for an operator based gitops-stack |
| operator-content-examples | Argo-cd, Jenkins, SCM-Manager, Petclinic | demo a complete developer workflow in an operator based gitops-stack |
| operator-full | all available features | showcase a full-fledged cloud-native IDP with an operator |
| operator-mandant | special multi-tenant setup | see what a multi-tenant, operator based deployment could look like |
For k3d, you can just k3d cluster delete gitops-playground. This will delete the whole cluster.
If you want to delete k3d use rm .local/bin/k3d.
We compiled a few helpful documents for the most common use-cases/scenarios:
Copyright © 2020 - present Cloudogu GmbH Licensed under AGPL-3, see LICENSE for details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.
GitOps Playground© for use with Argo™, Git™, Jenkins®, Kubernetes®, Grafana®, Prometheus®, Vault® and SCM-Manager
Argo™ is an unregistered trademark of The Linux Foundation®
Git™ is an unregistered trademark of Software Freedom Conservancy Inc.
Jenkins® is a registered trademark of LF Charities Inc.
Kubernetes® and the Kubernetes logo® are registered trademarks of The Linux Foundation®
K8s® is a registered trademark of The Linux Foundation®
The Grafana Labs Marks are trademarks of Grafana Labs, and are used with Grafana Labs’ permission. We are not affiliated with, endorsed or sponsored by Grafana Labs or its affiliates.
Prometheus® is a registered trademark of The Linux Foundation®
Vault® and the Vault logo® are registered trademarks of HashiCorp® (http://www.hashicorp.com/)
Written Offer for Source Code:
Information on the license conditions and - if required by the license - on the source code is available free of charge on request.
However, some licenses require providing physical copies of the source or object code. If this is the case, you can request a copy of the source code. A small fee is charged for these services to cover the cost of physical distribution.
To receive a copy of the source code, you can either submit a written request to
Cloudogu GmbH
Garküche 1
38100 Braunschweig
or you may email hello@cloudogu.com.
Your request must be sent within three years from the date you received the software from Cloudogu that is the subject of your request or, in the case of source code licensed under the AGPL/GPL/LGPL v3, for as long as Cloudogu offers spare parts or customer support for the product, including the components or binaries that are the subject of your request.