From d48c172c60189dfe722c5185ec0945a318090142 Mon Sep 17 00:00:00 2001 From: Paul Ciolino Date: Fri, 8 May 2026 19:00:20 +0000 Subject: [PATCH] Adding fleet rainbow-cutover This will create a new fleet with the following clusters: - rainbow-cutover-dev - rainbow-cutover-prod Plural Service: mgmt/fleets --- .../fleets/rainbow-cutover/clusters/dev.yaml | 21 ++++++++ .../fleets/rainbow-cutover/clusters/prod.yaml | 21 ++++++++ .../fleets/rainbow-cutover/pipeline.yaml | 52 +++++++++++++++++++ bootstrap/fleets/rainbow-cutover/setup.yaml | 18 +++++++ bootstrap/projects/rainbow-cutover.yaml | 38 ++++++++++++++ .../clusters/rainbow-cutover/dev/drainer.yaml | 19 +++++++ .../dev/rainbow-cutover-dev.yaml.liquid | 44 ++++++++++++++++ .../rainbow-cutover/prod/drainer.yaml | 19 +++++++ .../prod/rainbow-cutover-prod.yaml.liquid | 37 +++++++++++++ fleets/rainbow-cutover/clusters/dev.yaml | 9 ++++ fleets/rainbow-cutover/clusters/prod.yaml | 9 ++++ .../kube-state-metrics/dev.yaml | 30 +++++++++++ .../kube-state-metrics/pipeline.yaml | 30 +++++++++++ .../kube-state-metrics/prod.yaml | 30 +++++++++++ fleets/rainbow-cutover/prautomation.yaml | 24 +++++++++ fleets/rainbow-cutover/vpa/dev.yaml | 33 ++++++++++++ fleets/rainbow-cutover/vpa/pipeline.yaml | 30 +++++++++++ fleets/rainbow-cutover/vpa/prod.yaml | 33 ++++++++++++ 18 files changed, 497 insertions(+) create mode 100644 bootstrap/fleets/rainbow-cutover/clusters/dev.yaml create mode 100644 bootstrap/fleets/rainbow-cutover/clusters/prod.yaml create mode 100644 bootstrap/fleets/rainbow-cutover/pipeline.yaml create mode 100644 bootstrap/fleets/rainbow-cutover/setup.yaml create mode 100644 bootstrap/projects/rainbow-cutover.yaml create mode 100644 fleets/clusters/rainbow-cutover/dev/drainer.yaml create mode 100644 fleets/clusters/rainbow-cutover/dev/rainbow-cutover-dev.yaml.liquid create mode 100644 fleets/clusters/rainbow-cutover/prod/drainer.yaml create mode 100644 fleets/clusters/rainbow-cutover/prod/rainbow-cutover-prod.yaml.liquid create mode 100644 fleets/rainbow-cutover/clusters/dev.yaml create mode 100644 fleets/rainbow-cutover/clusters/prod.yaml create mode 100644 fleets/rainbow-cutover/kube-state-metrics/dev.yaml create mode 100644 fleets/rainbow-cutover/kube-state-metrics/pipeline.yaml create mode 100644 fleets/rainbow-cutover/kube-state-metrics/prod.yaml create mode 100644 fleets/rainbow-cutover/prautomation.yaml create mode 100644 fleets/rainbow-cutover/vpa/dev.yaml create mode 100644 fleets/rainbow-cutover/vpa/pipeline.yaml create mode 100644 fleets/rainbow-cutover/vpa/prod.yaml diff --git a/bootstrap/fleets/rainbow-cutover/clusters/dev.yaml b/bootstrap/fleets/rainbow-cutover/clusters/dev.yaml new file mode 100644 index 00000000..7e818f9d --- /dev/null +++ b/bootstrap/fleets/rainbow-cutover/clusters/dev.yaml @@ -0,0 +1,21 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: ServiceDeployment +metadata: + name: clusters-rainbow-cutover-dev +spec: + + namespace: fleets + git: + folder: fleets/clusters/rainbow-cutover/dev + ref: main + configuration: + kubernetesVersion: "1.32" # version + nextKubernetesVersion: "1.32" # version + repositoryRef: + kind: GitRepository + name: fleet + namespace: fleets + clusterRef: + kind: Cluster + name: mgmt + namespace: infra \ No newline at end of file diff --git a/bootstrap/fleets/rainbow-cutover/clusters/prod.yaml b/bootstrap/fleets/rainbow-cutover/clusters/prod.yaml new file mode 100644 index 00000000..7f2f9f40 --- /dev/null +++ b/bootstrap/fleets/rainbow-cutover/clusters/prod.yaml @@ -0,0 +1,21 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: ServiceDeployment +metadata: + name: clusters-rainbow-cutover-prod +spec: + + namespace: fleets + git: + folder: fleets/clusters/rainbow-cutover/prod + ref: main + configuration: + kubernetesVersion: "1.32" # version + nextKubernetesVersion: "1.32" # version + repositoryRef: + kind: GitRepository + name: fleet + namespace: fleets + clusterRef: + kind: Cluster + name: mgmt + namespace: infra \ No newline at end of file diff --git a/bootstrap/fleets/rainbow-cutover/pipeline.yaml b/bootstrap/fleets/rainbow-cutover/pipeline.yaml new file mode 100644 index 00000000..84bbcca2 --- /dev/null +++ b/bootstrap/fleets/rainbow-cutover/pipeline.yaml @@ -0,0 +1,52 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: Pipeline +metadata: + name: rainbow-cutover-fleet-upgrade +spec: + stages: + - name: dev-taint + services: + - serviceRef: + name: clusters-rainbow-cutover-dev + namespace: fleets + criteria: + prAutomationRef: + name: fleet-taint-pr + namespace: fleets + - name: dev-upgrade + services: + - serviceRef: + name: clusters-rainbow-cutover-dev + namespace: fleets + criteria: + prAutomationRef: + name: fleet-upgrader-pra + namespace: fleets + - name: prod-taint + services: + - serviceRef: + name: clusters-rainbow-cutover-prod + namespace: fleets + criteria: + prAutomationRef: + name: fleet-taint-pr + namespace: fleets + - name: prod-upgrade + services: + - serviceRef: + name: clusters-rainbow-cutover-prod + namespace: fleets + criteria: + prAutomationRef: + name: fleet-upgrader-pra + namespace: fleets + edges: + - from: dev-taint + to: dev-upgrade + - from: dev-upgrade + to: prod-taint + gates: + - name: approval-gate + type: APPROVAL + - from: prod-taint + to: prod-upgrade \ No newline at end of file diff --git a/bootstrap/fleets/rainbow-cutover/setup.yaml b/bootstrap/fleets/rainbow-cutover/setup.yaml new file mode 100644 index 00000000..6c3f7444 --- /dev/null +++ b/bootstrap/fleets/rainbow-cutover/setup.yaml @@ -0,0 +1,18 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: ServiceDeployment +metadata: + name: rainbow-cutover +spec: + + namespace: rainbow-cutover + git: + folder: fleets/rainbow-cutover + ref: main + repositoryRef: + kind: GitRepository + name: fleet + namespace: fleets + clusterRef: + kind: Cluster + name: mgmt + namespace: infra \ No newline at end of file diff --git a/bootstrap/projects/rainbow-cutover.yaml b/bootstrap/projects/rainbow-cutover.yaml new file mode 100644 index 00000000..c09cba69 --- /dev/null +++ b/bootstrap/projects/rainbow-cutover.yaml @@ -0,0 +1,38 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: rainbow-cutover +--- +apiVersion: deployments.plural.sh/v1alpha1 +kind: ServiceAccount +metadata: + name: rainbow-cutover +spec: + email: rainbow-cutover-sa@plural.sh + tokenSecretRef: + name: rainbow-cutover-sa-token + namespace: rainbow-cutover +--- +apiVersion: deployments.plural.sh/v1alpha1 +kind: Project +metadata: + name: rainbow-cutover + # annotations: + # config.kubernetes.io/depends-on: deployments.plural.sh/ServiceAccount/rainbow-cutover +spec: + name: rainbow-cutover + description: Resources for managing the rainbow-cutover fleet + bindings: + write: + - userEmail: rainbow-cutover-sa@plural.sh +--- +apiVersion: deployments.plural.sh/v1alpha1 +kind: NamespaceCredentials +metadata: + name: rainbow-cutover +spec: + namespaces: + - rainbow-cutover + secretRef: + name: rainbow-cutover-sa-token + namespace: rainbow-cutover \ No newline at end of file diff --git a/fleets/clusters/rainbow-cutover/dev/drainer.yaml b/fleets/clusters/rainbow-cutover/dev/drainer.yaml new file mode 100644 index 00000000..049bc241 --- /dev/null +++ b/fleets/clusters/rainbow-cutover/dev/drainer.yaml @@ -0,0 +1,19 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: GlobalService +metadata: + name: rainbow-cutover-dev-drainer +spec: + projectRef: + name: rainbow-cutover + tags: + tier: dev + template: + name: drainer + namespace: plrl-deploy-operator + git: + folder: services/drainer + ref: main + repositoryRef: + kind: GitRepository + name: fleet + namespace: fleets \ No newline at end of file diff --git a/fleets/clusters/rainbow-cutover/dev/rainbow-cutover-dev.yaml.liquid b/fleets/clusters/rainbow-cutover/dev/rainbow-cutover-dev.yaml.liquid new file mode 100644 index 00000000..db0f4405 --- /dev/null +++ b/fleets/clusters/rainbow-cutover/dev/rainbow-cutover-dev.yaml.liquid @@ -0,0 +1,44 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: InfrastructureStack +metadata: + name: rainbow-cutover-cluster-dev +spec: + name: rainbow-cutover-cluster-dev + type: TERRAFORM + approval: true + detach: false + manageState: true + actor: rainbow-cutover-sa@plural.sh + projectRef: + name: rainbow-cutover + configuration: + version: 1.8.2 + aiApproval: + enabled: true + file: stack.md + ignoreCancel: true + git: + ref: main + folder: rules + repositoryRef: + name: fleet + namespace: fleets + clusterRef: + name: mgmt + namespace: infra + git: + ref: main + folder: terraform/eks-cluster + files: + - mountPath: /plural + secretRef: + name: gcp-creds + variables: + kubernetes_version: "{{ configuration.kubernetesVersion }}" + next_kubernetes_version: "{{ configuration.nextKubernetesVersion }}" + cluster: rainbow-cutover-dev + tier: dev + fleet: rainbow-cutover + environment: + - name: GOOGLE_APPLICATION_CREDENTIALS + value: /plural/creds.json \ No newline at end of file diff --git a/fleets/clusters/rainbow-cutover/prod/drainer.yaml b/fleets/clusters/rainbow-cutover/prod/drainer.yaml new file mode 100644 index 00000000..51015942 --- /dev/null +++ b/fleets/clusters/rainbow-cutover/prod/drainer.yaml @@ -0,0 +1,19 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: GlobalService +metadata: + name: rainbow-cutover-prod-drainer +spec: + projectRef: + name: rainbow-cutover + tags: + tier: prod + template: + name: drainer + namespace: plrl-deploy-operator + git: + folder: services/drainer + ref: main + repositoryRef: + kind: GitRepository + name: fleet + namespace: fleets \ No newline at end of file diff --git a/fleets/clusters/rainbow-cutover/prod/rainbow-cutover-prod.yaml.liquid b/fleets/clusters/rainbow-cutover/prod/rainbow-cutover-prod.yaml.liquid new file mode 100644 index 00000000..54952595 --- /dev/null +++ b/fleets/clusters/rainbow-cutover/prod/rainbow-cutover-prod.yaml.liquid @@ -0,0 +1,37 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: InfrastructureStack +metadata: + name: rainbow-cutover-cluster-prod +spec: + name: rainbow-cutover-cluster-prod + type: TERRAFORM + approval: true + detach: false + manageState: true + actor: rainbow-cutover-sa@plural.sh + projectRef: + name: rainbow-cutover + configuration: + version: 1.8.2 + repositoryRef: + name: fleet + namespace: fleets + clusterRef: + name: mgmt + namespace: infra + git: + ref: main + folder: terraform/eks-cluster + files: + - mountPath: /plural + secretRef: + name: gcp-creds + variables: + kubernetes_version: "{{ configuration.kubernetesVersion }}" + next_kubernetes_version: "{{ configuration.nextKubernetesVersion }}" + cluster: rainbow-cutover-prod + tier: prod + fleet: rainbow-cutover + environment: + - name: GOOGLE_APPLICATION_CREDENTIALS + value: /plural/creds.json \ No newline at end of file diff --git a/fleets/rainbow-cutover/clusters/dev.yaml b/fleets/rainbow-cutover/clusters/dev.yaml new file mode 100644 index 00000000..bff623b7 --- /dev/null +++ b/fleets/rainbow-cutover/clusters/dev.yaml @@ -0,0 +1,9 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: Cluster +metadata: + name: rainbow-cutover-dev +spec: + handle: rainbow-cutover-dev + tags: + tier: dev + fleet: rainbow-cutover \ No newline at end of file diff --git a/fleets/rainbow-cutover/clusters/prod.yaml b/fleets/rainbow-cutover/clusters/prod.yaml new file mode 100644 index 00000000..43e7f033 --- /dev/null +++ b/fleets/rainbow-cutover/clusters/prod.yaml @@ -0,0 +1,9 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: Cluster +metadata: + name: rainbow-cutover-prod +spec: + handle: rainbow-cutover-prod + tags: + tier: prod + fleet: rainbow-cutover \ No newline at end of file diff --git a/fleets/rainbow-cutover/kube-state-metrics/dev.yaml b/fleets/rainbow-cutover/kube-state-metrics/dev.yaml new file mode 100644 index 00000000..da0b6c00 --- /dev/null +++ b/fleets/rainbow-cutover/kube-state-metrics/dev.yaml @@ -0,0 +1,30 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: ServiceDeployment +metadata: + name: kube-state-metrics-dev +spec: + name: kube-state-metrics + namespace: kube-state-metrics + helm: + chart: kube-state-metrics + version: 5.19.0 # VERSION + url: https://prometheus-community.github.io/helm-charts + clusterRef: + kind: Cluster + name: rainbow-cutover-dev + namespace: rainbow-cutover +--- +apiVersion: deployments.plural.sh/v1alpha1 +kind: GlobalService +metadata: + name: kube-state-metrics-dev-rainbow-cutover +spec: + cascade: + delete: true + serviceRef: + name: kube-state-metrics-dev + namespace: rainbow-cutover + projectRef: + name: rainbow-cutover + tags: + tier: dev \ No newline at end of file diff --git a/fleets/rainbow-cutover/kube-state-metrics/pipeline.yaml b/fleets/rainbow-cutover/kube-state-metrics/pipeline.yaml new file mode 100644 index 00000000..3fa9b764 --- /dev/null +++ b/fleets/rainbow-cutover/kube-state-metrics/pipeline.yaml @@ -0,0 +1,30 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: Pipeline +metadata: + name: rainbow-cutover-kube-state-metrics +spec: + projectRef: + name: rainbow-cutover + stages: + - name: dev + services: + - serviceRef: + name: kube-state-metrics-dev + namespace: rainbow-cutover + criteria: + prAutomationRef: + name: rainbow-cutover-pra + - name: prod + services: + - serviceRef: + name: kube-state-metrics-prod + namespace: rainbow-cutover + criteria: + prAutomationRef: + name: rainbow-cutover-pra + edges: + - from: dev + to: prod + gates: + - name: approval-gate + type: APPROVAL \ No newline at end of file diff --git a/fleets/rainbow-cutover/kube-state-metrics/prod.yaml b/fleets/rainbow-cutover/kube-state-metrics/prod.yaml new file mode 100644 index 00000000..07189957 --- /dev/null +++ b/fleets/rainbow-cutover/kube-state-metrics/prod.yaml @@ -0,0 +1,30 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: ServiceDeployment +metadata: + name: kube-state-metrics-prod +spec: + name: kube-state-metrics + namespace: kube-state-metrics + helm: + chart: kube-state-metrics + version: 5.19.0 # VERSION + url: https://prometheus-community.github.io/helm-charts + clusterRef: + kind: Cluster + name: rainbow-cutover-prod + namespace: rainbow-cutover +--- +apiVersion: deployments.plural.sh/v1alpha1 +kind: GlobalService +metadata: + name: kube-state-metrics-prod-rainbow-cutover +spec: + cascade: + delete: true + serviceRef: + name: kube-state-metrics-prod + namespace: rainbow-cutover + projectRef: + name: rainbow-cutover + tags: + tier: prod \ No newline at end of file diff --git a/fleets/rainbow-cutover/prautomation.yaml b/fleets/rainbow-cutover/prautomation.yaml new file mode 100644 index 00000000..9f01fd83 --- /dev/null +++ b/fleets/rainbow-cutover/prautomation.yaml @@ -0,0 +1,24 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: PrAutomation +metadata: + name: rainbow-cutover-pra +spec: + name: rainbow-cutover-pra + documentation: Updates the a given component service for the rainbow-cutover fleet to a new chart version for any stage + updates: + regexReplacements: + - regex: "version: (.*) # VERSION" + file: fleets/rainbow-cutover/{{context.component }}/{{ context.pipeline.stage.name }}.yaml + replacement: "version: {{ context.version }} # VERSION" + scmConnectionRef: + name: plural + title: Updating {{ context.component }} {{ context.pipeline.stage.name }} helm version to {{ context.version }} (stage={{ context.pipeline.stage.name }}) + message: Updating {{ context.component }} {{ context.pipeline.stage.name }} helm version to {{ context.version }} (stage={{ context.pipeline.stage.name }}) + identifier: pluralsh/fleet + configuration: + - name: component + type: STRING + documentation: The component to update + - name: version + type: STRING + documentation: The helm chart version to use \ No newline at end of file diff --git a/fleets/rainbow-cutover/vpa/dev.yaml b/fleets/rainbow-cutover/vpa/dev.yaml new file mode 100644 index 00000000..09376821 --- /dev/null +++ b/fleets/rainbow-cutover/vpa/dev.yaml @@ -0,0 +1,33 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: ServiceDeployment +metadata: + name: vpa-dev +spec: + name: vpa + namespace: vpa + helm: + chart: vpa + version: 4.4.5 # VERSION + url: https://charts.fairwinds.com/stable + values: + admissionController: + enabled: false + clusterRef: + kind: Cluster + name: rainbow-cutover-dev + namespace: rainbow-cutover +--- +apiVersion: deployments.plural.sh/v1alpha1 +kind: GlobalService +metadata: + name: vpa-dev-rainbow-cutover +spec: + cascade: + delete: true + serviceRef: + name: vpa-dev + namespace: rainbow-cutover + projectRef: + name: rainbow-cutover + tags: + tier: dev \ No newline at end of file diff --git a/fleets/rainbow-cutover/vpa/pipeline.yaml b/fleets/rainbow-cutover/vpa/pipeline.yaml new file mode 100644 index 00000000..35688686 --- /dev/null +++ b/fleets/rainbow-cutover/vpa/pipeline.yaml @@ -0,0 +1,30 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: Pipeline +metadata: + name: rainbow-cutover-vpa +spec: + projectRef: + name: rainbow-cutover + stages: + - name: dev + services: + - serviceRef: + name: vpa-dev + namespace: rainbow-cutover + criteria: + prAutomationRef: + name: rainbow-cutover-pra + - name: prod + services: + - serviceRef: + name: vpa-prod + namespace: rainbow-cutover + criteria: + prAutomationRef: + name: rainbow-cutover-pra + edges: + - from: dev + to: prod + gates: + - name: approval-gate + type: APPROVAL \ No newline at end of file diff --git a/fleets/rainbow-cutover/vpa/prod.yaml b/fleets/rainbow-cutover/vpa/prod.yaml new file mode 100644 index 00000000..2715f44b --- /dev/null +++ b/fleets/rainbow-cutover/vpa/prod.yaml @@ -0,0 +1,33 @@ +apiVersion: deployments.plural.sh/v1alpha1 +kind: ServiceDeployment +metadata: + name: vpa-prod +spec: + name: vpa + namespace: vpa + helm: + chart: vpa + version: 4.4.5 # VERSION + url: https://charts.fairwinds.com/stable + values: + admissionController: + enabled: false + clusterRef: + kind: Cluster + name: rainbow-cutover-prod + namespace: rainbow-cutover +--- +apiVersion: deployments.plural.sh/v1alpha1 +kind: GlobalService +metadata: + name: vpa-prod-rainbow-cutover +spec: + cascade: + delete: true + serviceRef: + name: vpa-prod + namespace: rainbow-cutover + projectRef: + name: rainbow-cutover + tags: + tier: prod \ No newline at end of file