Skip to content

Commit

Permalink
Merge pull request #226 from wahabmk/state-management
Browse files Browse the repository at this point in the history
Use CAPI capability of Flux's HelmRelease to install apps into target cluster
  • Loading branch information
wahabmk authored Aug 29, 2024
2 parents 0992386 + a5de0c3 commit e9bbdf8
Show file tree
Hide file tree
Showing 4 changed files with 93 additions and 0 deletions.
11 changes: 11 additions & 0 deletions templates/aws-standalone-cp/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## Install applications into Target Cluster

To install applications into the target cluster created using Cluster API (CAPI) upon creation, a Flux `HelmRelease` object is to be made such that its `.spec.KubeConfig` references the kubeconfig of the target cluster.

**Reference:** https://fluxcd.io/flux/components/helm/helmreleases/#remote-clusters--cluster-api

This chart/template already defines the following applications under `templates/beachheadservices` which can be be installed into the target cluster by setting `.Values.installBeachHeadServices=true`:
1. cert-manager
2. nginx-ingress

**Important:** The Flux objects added to `templates/beachheadservices` to install custom applications must have the `hmc.mirantis.com/managed: "true"` label to be reconciled by HMC.
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
{{- if .Values.installBeachHeadServices }}
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: cert-manager
labels:
hmc.mirantis.com/managed: "true"
spec:
interval: 24h
url: https://charts.jetstack.io
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: {{ include "cluster.name" . }}-cert-manager
labels:
hmc.mirantis.com/managed: "true"
spec:
chart:
metadata:
labels:
hmc.mirantis.com/managed: "true"
spec:
chart: cert-manager
version: "v1.12.3"
sourceRef:
kind: HelmRepository
name: cert-manager
install:
createNamespace: true
remediation:
retries: -1
interval: 10m
kubeConfig:
secretRef:
name: {{ include "cluster.name" . }}-kubeconfig
releaseName: cert-manager
targetNamespace: cert-manager
storageNamespace: cert-manager
values:
installCRDs: true
{{- end }}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{{- if .Values.installBeachHeadServices }}
apiVersion: source.toolkit.fluxcd.io/v1beta2
kind: OCIRepository
metadata:
name: nginx-ingress
labels:
hmc.mirantis.com/managed: "true"
spec:
interval: 24h
url: oci://ghcr.io/nginxinc/charts/nginx-ingress
ref:
semver: "1.3.2"
---
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: {{ include "cluster.name" . }}-nginx-ingress
labels:
hmc.mirantis.com/managed: "true"
spec:
targetNamespace: nginx-ingress
storageNamespace: nginx-ingress
kubeConfig:
secretRef:
name: {{ include "cluster.name" . }}-kubeconfig
interval: 10m
chartRef:
kind: OCIRepository
name: nginx-ingress
install:
createNamespace: true
remediation:
retries: -1
values:
fullnameOverride: nginx-ingress
{{- end }}
4 changes: 4 additions & 0 deletions templates/aws-standalone-cp/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,3 +44,7 @@ worker:
# K0s parameters
k0s:
version: v1.30.2+k0s.0

# Optionally install applications defined under
# templates/beachheadservices into target cluster
installBeachHeadServices: true

0 comments on commit e9bbdf8

Please sign in to comment.