cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit 64faf259714bcdb76a6fbec7eff8eb765c4ec179
parent 1000cb8c88bd81739da04a1dae59fde32015c6eb
Author: MTRNord <MTRNord@users.noreply.github.com>
Date:   Tue, 18 Nov 2025 20:34:57 +0100

always use prod LE

Signed-off-by: MTRNord <MTRNord@users.noreply.github.com>

Diffstat:
MREADME.md | 141+------------------------------------------------------------------------------
Mclusters/talos_cluster/infrastructure.yaml | 8--------
Minfrastructure_talos/configs/cluster-issuers.yaml | 3+--
3 files changed, 2 insertions(+), 150 deletions(-)

diff --git a/README.md b/README.md @@ -1,140 +1 @@ -# Cluster Configs for Midnightthoughts and Nordgedanken - -These are the current running setups at Midnightthoughts and Nordegedanken. - -This is based on <https://github.com/fluxcd/flux2-kustomize-helm-example/tree/d54e250182ead1f4a00e9fd78b05dc9e0186246d> - -## Prerequisites - -You will need a Kubernetes cluster version 1.21 or newer. -For a quick local test, you can use [Kubernetes kind](https://kind.sigs.k8s.io/docs/user/quick-start/). -Any other Kubernetes setup will work as well though. - -Install the Flux CLI on MacOS or Linux using Homebrew: - -```sh -brew install fluxcd/tap/flux -``` - -Or install the CLI by downloading precompiled binaries using a Bash script: - -```sh -curl -s https://fluxcd.io/install.sh | sudo bash -``` - -## Repository structure - -The Git repository contains the following top directories: - -- **apps** dir contains Helm releases with a custom configuration per cluster -- **infrastructure** dir contains common infra tools such as ingress-nginx and cert-manager -- **clusters** dir contains the Flux configuration per cluster (Note that staging isn't deployed anywhere at this time) - -``` -├── apps -│ ├── base -│ ├── production -│ └── staging -├── infrastructure -│ ├── configs -│ └── controllers -└── clusters - ├── production - └── staging -``` - -### Applications - -The apps configuration is structured into: - -- **apps/base/** dir contains namespaces and Helm release definitions -- **apps/production/** dir contains the production Helm release values -- **apps/staging/** dir contains the staging values - -``` -./apps/ -├── base -│ └── podinfo -│ ├── kustomization.yaml -│ ├── namespace.yaml -│ ├── release.yaml -│ └── repository.yaml -├── production -│ ├── kustomization.yaml -│ └── podinfo-patch.yaml -└── staging - ├── kustomization.yaml - └── podinfo-patch.yaml -``` - -### Infrastructure - -The infrastructure is structured into: - -- **infrastructure/controllers/** dir contains namespaces and Helm release definitions for Kubernetes controllers -- **infrastructure/configs/** dir contains Kubernetes custom resources such as cert issuers and networks policies - -``` -./infrastructure/ -├── configs -│ ├── cluster-issuers.yaml -│ ├── network-policies.yaml -│ └── kustomization.yaml -└── controllers - ├── cert-manager.yaml - ├── ingress-nginx.yaml - ├── weave-gitops.yaml - └── kustomization.yaml -``` - -In **clusters/production/infrastructure.yaml** we replace the Let's Encrypt server value to point to the production API: - -```yaml -apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 -kind: Kustomization -metadata: - name: infra-configs - namespace: flux-system -spec: - # ...omitted for brevity - dependsOn: - - name: infra-controllers - patches: - - patch: | - - op: replace - path: /spec/acme/server - value: https://acme-v02.api.letsencrypt.org/directory - target: - kind: ClusterIssuer - name: letsencrypt -``` - -Note that with `dependsOn` we tell Flux to first install or upgrade the controllers and only then the configs. -This ensures that the Kubernetes CRDs are registered on the cluster, before Flux applies any custom resources. - -<!-- TODO setup bootstrap docs --> - -## Useful things - -Watch for the Helm releases being installed: - -```console -$ watch flux get helmreleases --all-namespaces - -NAMESPACE NAME REVISION SUSPENDED READY MESSAGE -flux-system weave-gitops 4.0.12 False True Release reconciliation succeeded -``` - -Watch kustomizations getting deployed: - -```console -$ flux get kustomizations -w - -NAME REVISION SUSPENDED READY MESSAGE -flux-system main@sha1:21ebd912 False True Applied revision: main@sha1:21ebd912 -infra-controllers main@sha1:21ebd912 False True Applied revision: main@sha1:21ebd912 -``` - -## Kube linter - -`kube-linter lint . > audit.txt` +TODO: Rewrite this file diff --git a/clusters/talos_cluster/infrastructure.yaml b/clusters/talos_cluster/infrastructure.yaml @@ -55,14 +55,6 @@ spec: name: flux-system path: ./infrastructure_talos/configs prune: true - patches: - - patch: | - - op: replace - path: /spec/acme/server - value: https://acme-v02.api.letsencrypt.org/directory - target: - kind: ClusterIssuer - name: letsencrypt-dns decryption: provider: sops secretRef: diff --git a/infrastructure_talos/configs/cluster-issuers.yaml b/infrastructure_talos/configs/cluster-issuers.yaml @@ -5,8 +5,7 @@ metadata: spec: acme: email: mtrnord@nordgedanken.dev - # The server is replaced in /clusters/production/infrastructure.yaml - server: https://acme-staging-v02.api.letsencrypt.org/directory + server: https://acme-v02.api.letsencrypt.org/directory privateKeySecretRef: name: letsencrypt-dns-account-key profile: tlsserver