mirror of
https://github.com/funkypenguin/geek-cookbook/
synced 2025-12-14 02:06:32 +00:00
New repo layout (#217)
* Updated instructions to match new repo layout * Updating file paths to match the new repo organization * Updated one reference from /flux-system to /bootstrap * Changed one more reference to /flux-system to /bootstrap * Typo * Added requested formatting and missing backslash in bootstrap command. Co-authored-by: David Young <davidy@funkypenguin.co.nz>
This commit is contained in:
@@ -38,7 +38,7 @@ Consider this entity relationship diagram:
|
||||
And here's what it all means, starting from the top...
|
||||
|
||||
1. The flux-system **Kustomization** tells flux to look in the repo in `/flux-system`, and apply any YAMLs it finds (*with optional kustomize templating, if you're an uber-ninja!*).
|
||||
2. Within `/flux-system`, we've defined (for convenience), 3 subfolders, containing YAML for:
|
||||
2. Within `/bootstrap`, we've defined (for convenience), 3 subfolders, containing YAML for:
|
||||
1. `namespaces` : Any other **Namespaces** we want to deploy for our apps
|
||||
2. `helmrepositories` : Any **HelmRepositories** we later want to pull helm charts from
|
||||
3. `kustomizations` : An **Kustomizations** we need to tell flux to import YAMLs from **elsewhere** in the repository
|
||||
|
||||
@@ -65,7 +65,7 @@ Create a GitHub [personal access token](https://github.com/settings/tokens) that
|
||||
|
||||
### Create GitHub Repo
|
||||
|
||||
Now we'll create a repo for flux - it can (*and probably should!*) be private. I've created a [template repo to get you started](https://github.com/geek-cookbook/template-flux/generate), but you could simply start with a blank repo too.[^1]
|
||||
Now we'll create a repo for flux - it can (*and probably should!*) be private. I've created a [template repo to get you started](https://github.com/geek-cookbook/template-flux/generate), but you could simply start with a blank repo too (*although you'll need at least a `bootstrap` directory included or the command below will fail*).[^1]
|
||||
|
||||
### Bootstrap Flux
|
||||
|
||||
@@ -86,7 +86,8 @@ GITHUB_TOKEN=<your-token>
|
||||
flux bootstrap github \
|
||||
--owner=my-github-username \
|
||||
--repository=my-github-username/my-repository \
|
||||
--personal
|
||||
--personal \
|
||||
--path bootstrap
|
||||
```
|
||||
|
||||
Once the flux bootstrap is completed without errors, list the pods in the cluster again, with `kubectl get pods -A`. This time, you see something like this:
|
||||
@@ -115,12 +116,12 @@ Flux installed its controllers into the `flux-system` namespace, and created two
|
||||
|
||||
If you used my template repo, some extra things also happened..
|
||||
|
||||
1. I'd pre-populated the `flux-system` directory in the template repo with 3 folders:
|
||||
1. [helmrepositories](https://github.com/geek-cookbook/template-flux/tree/main/flux-system/helmrepositories), for storing repositories used for deploying helm charts
|
||||
2. [kustomizations](https://github.com/geek-cookbook/template-flux/tree/main/flux-system/kustomizations), for storing additional kustomizations *(which in turn can reference other paths in the repo*)
|
||||
3. [namespaces](https://github.com/geek-cookbook/template-flux/tree/main/flux-system/namespaces), for storing namespace manifests (*since these need to exist before we can deploy helmreleases into them*)
|
||||
2. Because the `flux-system` Kustomization includes everything **recursively** under `flux-system` path in the repo, all of the above were **also** applied to the cluster
|
||||
3. I'd pre-prepared a [Namespace](https://github.com/geek-cookbook/template-flux/blob/main/flux-system/namespaces/namespace-podinfo.yaml), [HelmRepository](https://github.com/geek-cookbook/template-flux/blob/main/flux-system/helmrepositories/helmrepository-podinfo.yaml), and [Kustomization](https://github.com/geek-cookbook/template-flux/blob/main/flux-system/kustomizations/kustomization-podinfo.yaml) for "podinfo", a simple example application, so these were applied to the cluster
|
||||
1. I'd pre-populated the `bootstrap` directory in the template repo with 3 folders:
|
||||
1. [helmrepositories](https://github.com/geek-cookbook/template-flux/tree/main/bootstrap/helmrepositories), for storing repositories used for deploying helm charts
|
||||
2. [kustomizations](https://github.com/geek-cookbook/template-flux/tree/main/bootstrap/kustomizations), for storing additional kustomizations *(which in turn can reference other paths in the repo*)
|
||||
3. [namespaces](https://github.com/geek-cookbook/template-flux/tree/main/bootstrap/namespaces), for storing namespace manifests (*since these need to exist before we can deploy helmreleases into them*)
|
||||
2. Because the `bootstrap` Kustomization includes everything **recursively** under `bootstrap` path in the repo, all of the above were **also** applied to the cluster
|
||||
3. I'd pre-prepared a [Namespace](https://github.com/geek-cookbook/template-flux/blob/main/bootstrap/namespaces/namespace-podinfo.yaml), [HelmRepository](https://github.com/geek-cookbook/template-flux/blob/main/bootstrap/helmrepositories/helmrepository-podinfo.yaml), and [Kustomization](https://github.com/geek-cookbook/template-flux/blob/main/bootstrap/kustomizations/kustomization-podinfo.yaml) for "podinfo", a simple example application, so these were applied to the cluster
|
||||
4. The kustomization we added for podinfo refers to the `/podinfo` path in the repo, so everything in **this** folder was **also** applied to the cluster
|
||||
5. In the `/podinfo` path of the repo is a [HelmRelease](https://github.com/geek-cookbook/template-flux/blob/main/podinfo/helmrelease-podinfo.yaml) (*an object describing how to deploy a helm chart*), and a [ConfigMap](https://github.com/geek-cookbook/template-flux/blob/main/podinfo/configmap-pofinfo-helm-chart-value-overrides-configmap.yaml) (*which ontain the `values.yaml` for the podinfo helm chart*)
|
||||
6. Flux recognized the podinfo **HelmRelease**, applied it along with the values in the **ConfigMap**, and consequently we have podinfo deployed from the latest helm chart, into the cluster, and managed by Flux! 💪
|
||||
|
||||
@@ -12,7 +12,8 @@ We'll need 5 files per-app, to deploy and manage our apps using flux. The exampl
|
||||
|
||||
```hl_lines="4 6 8 10 11"
|
||||
├── README.md
|
||||
├── flux-system
|
||||
├── bootstrap
|
||||
│ ├── flux-system
|
||||
│ ├── helmrepositories
|
||||
│ │ └── helmrepository-podinfo.yaml
|
||||
│ ├── kustomizations
|
||||
@@ -40,7 +41,7 @@ Identify your target helm chart. Let's take podinfo as an example. Here's the [o
|
||||
### Create HelmRepository
|
||||
|
||||
The README instructs users to add the repo "podinfo" with the URL `ttps://stefanprodan.github.io/podinfo`, so
|
||||
create a suitable HelmRepository YAML in `flux-system/helmrepositories/helmrepository-podinfo.yaml`. Here's [my example](https://github.com/geek-cookbook/template-flux/blob/main/flux-system/helmrepositories/helmrepository-podinfo.yaml).
|
||||
create a suitable HelmRepository YAML in `bootstrap/helmrepositories/helmrepository-podinfo.yaml`. Here's [my example](https://github.com/geek-cookbook/template-flux/blob/main/bootstrap/helmrepositories/helmrepository-podinfo.yaml).
|
||||
|
||||
!!! question "Why such obtuse file names?"
|
||||
> Why not just call the HelmRepository YAML `podinfo.yaml`? Why prefix the filename with the API object `helmrepository-`?
|
||||
@@ -49,7 +50,7 @@ create a suitable HelmRepository YAML in `flux-system/helmrepositories/helmrepos
|
||||
|
||||
### Create Namespace
|
||||
|
||||
Create a namespace for the chart. Typically you'd name this the same as your chart name. Here's [my namespace-podinfo.yaml](https://github.com/geek-cookbook/template-flux/blob/main/flux-system/namespaces/namespace-podinfo.yaml).
|
||||
Create a namespace for the chart. Typically you'd name this the same as your chart name. Here's [my namespace-podinfo.yaml](https://github.com/geek-cookbook/template-flux/blob/main/bootstrap/namespaces/namespace-podinfo.yaml).
|
||||
|
||||
??? example "Here's an example Namespace..."
|
||||
|
||||
@@ -62,7 +63,7 @@ Create a namespace for the chart. Typically you'd name this the same as your cha
|
||||
|
||||
### Create Kustomization
|
||||
|
||||
Create a kustomization for the chart, pointing flux to a path in the repo where the chart-specific YAMLs will be found. Here's my [kustomization-podinfo.yaml](https://github.com/geek-cookbook/template-flux/blob/main/flux-system/kustomizations/kustomization-podinfo.yaml).
|
||||
Create a kustomization for the chart, pointing flux to a path in the repo where the chart-specific YAMLs will be found. Here's my [kustomization-podinfo.yaml](https://github.com/geek-cookbook/template-flux/blob/main/bootstrap/kustomizations/kustomization-podinfo.yaml).
|
||||
|
||||
??? example "Here's an example Kustomization..."
|
||||
|
||||
|
||||
Reference in New Issue
Block a user