Skip to content

cloudogu/gitops-playground

Repository files navigation

GitOps Playground

Playground features

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!

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.

TL;DR

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-examples

Note 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.

Installation and Components

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

Configuration

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):

  1. Command-line parameters
  2. Configuration files (--config-file)
  3. 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

Profiles

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

Remove playground

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.

Additional Ressources

We compiled a few helpful documents for the most common use-cases/scenarios:

Development

See docs/Developers.md

License

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

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.