Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions .github/workflows/create-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,12 +12,12 @@ jobs:
name: Release pushed tag
runs-on: ubuntu-latest
steps:
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref_name }}
run: |
gh release create "$tag" \
--repo="$GITHUB_REPOSITORY" \
--title="${tag}" \
--generate-notes
- name: Create release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tag: ${{ github.ref_name }}
run: |
gh release create "$tag" \
--repo="$GITHUB_REPOSITORY" \
--title="${tag}" \
--generate-notes
94 changes: 56 additions & 38 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,33 +2,40 @@

[![Playground features](docs/images/gitops-playground-features.drawio.svg)](https://cdn.jsdelivr.net/gh/cloudogu/gitops-playground@main/docs/images/gitops-playground-features.drawio.svg "View full size")

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!
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](docs/Applications.md#argo-cd)
* __Monitoring__: [Prometheus and Grafana](docs/Applications.md#monitoring-tools)
* __Secrets__ Management: [Vault and External Secrets Operator](docs/Applications.md#secrets-management-tools)
* __Notifications__/Alerts: Grafana and ArgoCD can be predefined with either an external mailserver.
* __Pipelines__: Example applications using [Jenkins](docs/Applications.md#jenkins) with the [gitops-build-lib](https://github.com/cloudogu/gitops-build-lib) and [SCM-Manager](docs/Applications.md#scm-manager)
* __Pipelines__: Example applications using [Jenkins](docs/Applications.md#jenkins) with
the [gitops-build-lib](https://github.com/cloudogu/gitops-build-lib)
and [SCM-Manager](docs/Applications.md#scm-manager)
* __Ingress__ Controller: [ingress](https://traefik.github.io/charts)
* __Certificate__ Management: [cert-manager](https://cert-manager.io/)
* [Content Loader](docs/content-loader/content-loader.md): Completely customize what is pushed to Git during installation.
* [Content Loader](docs/content-loader/content-loader.md): 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](#tldr)),
* in the public cloud,
* Runs on:
* local cluster (try it [with only one command](#tldr)),
* in the public cloud,
* and even air-gapped environments.

The gitops-playground is derived from our experiences in [consulting](https://platform.cloudogu.com/consulting/kubernetes-und-gitops/?mtm_campaign=gitops-playground&mtm_kwd=consulting&mtm_source=github&mtm_medium=link),
operating our internal developer platform (IDP) at [Cloudogu](https://cloudogu.com/?mtm_campaign=gitops-playground&mtm_kwd=cloudogu&mtm_source=github&mtm_medium=link) and is used in our [GitOps trainings](https://platform.cloudogu.com/en/trainings/gitops-continuous-operations/?mtm_campaign=gitops-playground&mtm_kwd=training&mtm_source=github&mtm_medium=link).
The gitops-playground is derived from our experiences
in [consulting](https://platform.cloudogu.com/consulting/kubernetes-und-gitops/?mtm_campaign=gitops-playground&mtm_kwd=consulting&mtm_source=github&mtm_medium=link),
operating our internal developer platform (IDP)
at [Cloudogu](https://cloudogu.com/?mtm_campaign=gitops-playground&mtm_kwd=cloudogu&mtm_source=github&mtm_medium=link)
and is used in
our [GitOps trainings](https://platform.cloudogu.com/en/trainings/gitops-continuous-operations/?mtm_campaign=gitops-playground&mtm_kwd=training&mtm_source=github&mtm_medium=link).

No need to read lots of books and operator docs, getting familiar with CLIs,
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:
Expand All @@ -42,26 +49,30 @@ bash <(curl -s \
ghcr.io/cloudogu/gitops-playground --profile=full
```

This will install the gop-platform with the profile full to showcase most of the features. To learn more about profiles, see [Profiles](#profiles)
This will install the gop-platform with the profile full to showcase most of the features. To learn more about profiles,
see [Profiles](#profiles)

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](docs/Deploy-Ingress-Controller.md#local-ingresses)).
There you might have to use `--base-url=http://local.gd` (
see [local ingresses](docs/Deploy-Ingress-Controller.md#local-ingresses)).

We recommend running this command as an unprivileged user, that is inside the [docker group](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).
We recommend running this command as an unprivileged user, that is inside
the [docker group](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).

## Installation and Components

A detailed document on how to install GOP in all possible environments can be found [here](docs/Installation.md).
For a deep-dive into all components that GOP can install for you, see [Applications](docs/Applications.md)


## 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](https://raw.githubusercontent.com/cloudogu/gitops-playground/main/docs/configuration.schema.json).
Config file and map have the same format and offer
a [schema file](https://raw.githubusercontent.com/cloudogu/gitops-playground/main/docs/configuration.schema.json).
Please find an overview of all CLI and config options [here](docs/Configuration.md)

**Configuration precedence (highest to lowest):**

1. Command-line parameters
2. Configuration files (`--config-file`)
3. Config maps (`--config-map`)
Expand All @@ -71,65 +82,70 @@ That is, if you pass a param via CLI, for example, it will overwrite the corresp
For a deep-dive into GOPs configuration, see [Configuration.md](docs/Configuration.md)

### Profiles
GOP includes some pre-defined profiles for easy usage, set `--profile=<profile-name>` to start GOP with your desired profile.

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

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

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

- [Deploying an ingress controller](docs/Deploy-Ingress-Controller.md)
- [Running GOP on Windows or Mac](docs/Running-on-Windows-Mac.md)


## Development

See [docs/Developers.md](docs/Developers.md)


## License

Copyright © 2020 - present Cloudogu GmbH
Licensed under AGPL-3, see [LICENSE](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/.
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
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.
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/)
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.
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

Expand All @@ -139,5 +155,7 @@ Garküche 1

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.
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.
12 changes: 9 additions & 3 deletions argocd/cluster-resources/apps/argocd/README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,26 @@
# Argo CD

Repo for managing Argo CD via GitOps. This repository contains the following folders:
* `applications`: Argo applications. One for each team pointing at their own repository and some general applications for managing the three folders of this repository

* `applications`: Argo applications. One for each team pointing at their own repository and some general applications
for managing the three folders of this repository
* `argocd`: Self managing Argo installation and configuration
* `projects`: One Argo project for each team for clean organization and to distribute access rights

## Upgrade Argo CD to newer version
1. Look [here](https://artifacthub.io/packages/helm/argo/argocd#changelog) if there are necessary actions when upgrading to the new version

1. Look [here](https://artifacthub.io/packages/helm/argo/argocd#changelog) if there are necessary actions when upgrading
to the new version
2. Change the version in `Chart.yaml`
3. run `helm dep update argocd` from the root of the repo
4. Push the modified `Chart.yaml`, `Chart.lock` and any changes from step 1, if there are any
5. Argo now upgrades itself

## What to do if argo breaks itself
If you make a commit, which breaks something from argo, and it fails to manage itself back to a healthy state with a

If you make a commit, which breaks something from argo, and it fails to manage itself back to a healthy state with a
new commit, than you have to fix argo with helm from your local computer.

```bash
# first fix the error

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
<properties>
<jenkins.branch.OrganizationChildHealthMetricsProperty>
<templates>
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric plugin="cloudbees-folder@6.942.vb_43318a_156b_2">
<com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric
plugin="cloudbees-folder@6.942.vb_43318a_156b_2">
<nonRecursive>false</nonRecursive>
</com.cloudbees.hudson.plugins.folder.health.WorstChildHealthMetric>
</templates>
Expand All @@ -15,7 +16,8 @@
</jenkins.branch.OrganizationChildOrphanedItemsProperty>
<jenkins.branch.OrganizationChildTriggersProperty>
<templates>
<com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger plugin="cloudbees-folder@6.942.vb_43318a_156b_2">
<com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger
plugin="cloudbees-folder@6.942.vb_43318a_156b_2">
<spec>H H/4 * * *</spec>
<interval>86400000</interval>
</com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger>
Expand All @@ -37,14 +39,16 @@
<icon class="jenkins.branch.MetadataActionFolderIcon">
<owner class="jenkins.branch.OrganizationFolder" reference="../.."/>
</icon>
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy" plugin="cloudbees-folder@6.942.vb_43318a_156b_2">
<orphanedItemStrategy class="com.cloudbees.hudson.plugins.folder.computed.DefaultOrphanedItemStrategy"
plugin="cloudbees-folder@6.942.vb_43318a_156b_2">
<pruneDeadBranches>true</pruneDeadBranches>
<daysToKeep>-1</daysToKeep>
<numToKeep>-1</numToKeep>
<abortBuilds>false</abortBuilds>
</orphanedItemStrategy>
<triggers>
<com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger plugin="cloudbees-folder@6.942.vb_43318a_156b_2">
<com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger
plugin="cloudbees-folder@6.942.vb_43318a_156b_2">
<spec>H H/4 * * *</spec>
<interval>86400000</interval>
</com.cloudbees.hudson.plugins.folder.computed.PeriodicFolderTrigger>
Expand All @@ -68,7 +72,8 @@
</com.cloudogu.scmmanager.scm.ScmManagerNavigator>
</navigators>
<projectFactories>
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProjectFactory plugin="workflow-multibranch@795.ve0cb_1f45ca_9a_">
<org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProjectFactory
plugin="workflow-multibranch@795.ve0cb_1f45ca_9a_">
<scriptPath>Jenkinsfile</scriptPath>
</org.jenkinsci.plugins.workflow.multibranch.WorkflowMultiBranchProjectFactory>
</projectFactories>
Expand Down
Loading