Skip to content

Commit bb660ef

Browse files
authored
docs: cut-down readme
1 parent 5864699 commit bb660ef

File tree

1 file changed

+2
-75
lines changed

1 file changed

+2
-75
lines changed

README.md

Lines changed: 2 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,81 +1,8 @@
11
# Control Plane
22

3-
Control Plane repository defines the desired state of shared infrastructure components and enables self-service onboarding process for the application
4-
developer teams.
3+
Control Plane repository defines the desired state of shared infrastructure components and enables self-service onboarding process for the application developer teams.
54

65
Repository contains the following directories:
76

87
* **argocd** - directory contains Argo CD instance configuration. The configuration includes RBAC settings and infrastructure application definitions.
9-
* **clusters** - directory contains adminstrator level cluster configurations.
10-
11-
## GitOps Process
12-
13-
The idea is to leverage the GitOps approach and pull requests to allow application developer teams to self-onboard by proposing infrastructure changes via pull requests.
14-
To enable the GitOps process we just need to create an Argo CD application that manages Argo CD configuration and propogate repository changes to the Argo CD Kubernetes namespace.
15-
16-
## Multi-Tenancy
17-
18-
Argo CD leverages Projects to separate teams from each other and to where the team can deploy their applications. This task is naturally done by the Argo CD administrator
19-
who is responsible for running the shared Argo CD. However, it does not mean application developers should create tickets to self-onboard. With GitOps, they can send a pull request
20-
that introduces requires Argo CD Projects.
21-
22-
To create project:
23-
24-
* Copy the `argocd/team-projects/USERNAME-project.yaml` file and replace `USERNAME` with your GitHub username.
25-
* Commit changes and create a pull request to the `main` branch.
26-
27-
## Cluster Infrastructure
28-
29-
Before starting to manage anything, application developer teams need a Kubernetes namespace. To be precise, a set of namespaces, one for each environment. Kubernetes namespaces
30-
are used to isolate application resources from each other and separate teams' permissions, so namespaces must be managed by administrators.
31-
32-
To create namespace:
33-
34-
* Copy the `clusters/argocon/USERNAME-namespaces.yaml` file and replace `USERNAME` with your GitHub username.
35-
* Commit changes and create a pull request to the `main` branch.
36-
37-
## Let's Deploy Something
38-
39-
Once we are done with configuring infrastructure it's time to use it and deploy something. Jump to
40-
[https://github.com/argocon2022-workshop/demo-app](https://github.com/argocon2022-workshop/demo-app) repository to continue!
41-
42-
## Automating Cluster Management
43-
44-
If you've noticed we've manually created two applications to install kyverno and external-secrets onto the managed cluster.
45-
Both kyverno and external-secrets are infrastructure components that are typically installed into all managed clusters. We might
46-
continue to manually create applications for each managed cluster, but this is error-prone and tedious. The process can be automated
47-
using config management tools and some scripting on top but there is a better way. Argo CD provides a first class support
48-
to cluster administrator use cases - ApplicationSet CRD. ApplicationSet automates application management and provide
49-
featutes to automatically create an app for each managed cluster:
50-
51-
```yaml
52-
apiVersion: argoproj.io/v1alpha1
53-
kind: ApplicationSet
54-
metadata:
55-
name: addons
56-
spec:
57-
generators:
58-
- matrix:
59-
generators:
60-
- git:
61-
repoURL: https://github.com/akuity-adv-gitops-workshop/control-plane-template
62-
revision: HEAD
63-
directories:
64-
- path: clusters/addons/*
65-
- clusters:
66-
selector:
67-
matchExpressions:
68-
- {key: 'akuity.io/argo-cd-cluster-name', operator: NotIn, values: [in-cluster]}
69-
template:
70-
metadata:
71-
name: '{{path.basename}}-{{name}}'
72-
spec:
73-
project: default
74-
source:
75-
repoURL: https://github.com/akuity-adv-gitops-workshop/control-plane-template
76-
targetRevision: HEAD
77-
path: '{{path}}'
78-
destination:
79-
server: '{{server}}'
80-
namespace: '{{path.basename}}'
81-
```
8+
* **clusters** - directory contains adminstrator level cluster configurations.

0 commit comments

Comments
 (0)