You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+25-13Lines changed: 25 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
-
# Plural Bootstrap
1
+
# Plural Bootstrap Repository
2
2
3
-
This repo defines the core terraform code needed to bootstrap a Plural management cluster. It is intended to be cloned in a users infra repo and then owned by their DevOps team from there. We do our best to adhere to the standard terraform setup for k8s within the respective cloud, while also installing necessary add-ons as needed (eg load balancer controller and autoscaler for AWS).
3
+
This repo defines the core terraform code needed to bootstrap a Plural management cluster and set up your GitOps environment using Plural. It is intended to be cloned in a users infra repo and then owned by their DevOps team from there. We do our best to adhere to the standard terraform setup for k8s within the respective cloud, while also installing necessary add-ons as needed (eg load balancer controller and autoscaler for AWS).
4
4
5
5
> [!TIP]
6
6
> If you want a guided walkthrough of how to use your new repo and get started with a Plural-based GitOps workflow, our [how-to guide](https://docs.plural.sh/how-to) is an amazing place to start!
@@ -22,16 +22,20 @@ Our defaults are meant to be tweaked, feel free to reference the documentation o
22
22
A plural installation repo will have a folder structure like this:
23
23
24
24
```
25
-
helm-values/ # gitcrypted helm values to be used for app installs
25
+
helm-values/ # git-crypted helm values to be used to bootstrap your setup. Avoid editing unless necessary
26
26
- ${app}.yaml # value overrides
27
27
- ${app}-defaults.yaml # default values we generate on install
28
28
29
+
helm/ # helm values files that are meant to be user-editable, used for setup of many common components
30
+
- *.yaml{.liquid} # `.liquid` extension signifies the helm values file can be templated
31
+
29
32
bootstrap/ # setup for apps within your cluster fleet, this is the root service-of-services that bootstraps everything recursively
30
33
31
-
resources/ # additional third party setup manifests for common k8s add-on concerns like observability and policy enforcement.
34
+
resources/ # additional third party setup manifests for common k8s add-on concerns like observability and policy enforcement. Can be useful learning resources, but no default setup uses thse
32
35
33
36
terraform/
34
37
- mgmt # module for setting up your management cluster
38
+
- core-infra # Sets up base networking and dns. Can also be used for similar cross-cutting infra concerns
35
39
- modules
36
40
- - clusters
37
41
- - - {cloud} # we've crafted some reusable modules for setting up clusters on most major clouds, feel free to use these in stacks or wherever
@@ -40,6 +44,20 @@ terraform/
40
44
41
45
You're free to extend this as you'd like, although if you use the plural marketplace that structure will be expected. You can also deploy services w/ manifests in other repos, this is meant to serve as a base to define the core infrastructure and get you started in a sane way.
42
46
47
+
## Using the Plural Catalog
48
+
49
+
Many of the common operations you'll need to do to manage your kubernetes infrastructure have all been operationalized as part of the service catalog that's synced via `bootstrap/catalogs.yaml`. A decent example here would be setting up a new kubernetes fleet, which you can do with the following:
50
+
51
+
1. Go to {your-console-url}/self-service/catalogs, and click the `infra` catalog
52
+
2. Chose the `cluster-fleet-creator` pr automation, and fill out the needed values
53
+
3. Click create pr after filling out a decent branch name, the generated pr once merged should set up a dev and prod cluster in the networks defined by the core-infra stack we provision by default.
54
+
55
+
There are also other useful self-service setups in our catalog including:
56
+
57
+
* data infrastructure - sets up dagster, airbyte, mlflow
* devops tools - elasticsearch log aggregation, victoriametrics based scale-out prometheus, grafana, etc.
60
+
43
61
## Add a workload cluster to your fleet
44
62
45
63
There are many ways to set up a workload cluster. We've given you some baseline terraform to work from in the `terraform/modules/clusters` folders. You can easily deploy these using stacks documented [here](https://docs.plural.sh/stacks/overview).
@@ -55,6 +73,8 @@ If you chose to create a cluster using your own automation, adding a cluster can
55
73
plural cd clusters boottrap --name {name}
56
74
```
57
75
76
+
or with our terraform provider, which can easily be duplicated by looking at `terraform/modules/clusters/aws/plural.tf`
77
+
58
78
To reference it in other GitOps resources, add a `Cluster` CRD like:
59
79
60
80
```yaml
@@ -104,12 +124,4 @@ spec:
104
124
name: externaldns
105
125
```
106
126
107
-
## Fleet Setup
108
-
109
-
There's a few common things you'll often need to solve when managing kubernetes. We've collected a lot of tested setups that you can adapt into your own environments. In particular, we've provided resources for setting up:
110
-
111
-
* monitoring - full victoria metrics cluster + agent setup and how to connect them both to your instance of the console
112
-
* OPA policy management - example yaml setup for OPA Gatekeeper and various constraints to meet common important benchmarks.
113
-
* pipelines - a full PR Automation pipeline setup inclusive of using global services as well that should help testdrive some of the more advanced change management capabilities of the platform.
114
-
115
-
Most of these live in the generated `resources` folder and the most mature will have a pre-built Pr Automation already created for you to install them.
127
+
To see a number of working examples, look at your `bootstrap/o11y` or `bootstrap/network` folders, where we should install a few global services for common runtime-level kubernetes concerns. If you want to reverse our default setup, simply delete them from the repo and push.
0 commit comments