From 03e2d54d7c92e9839e2c78f7d2860b9a608f2e13 Mon Sep 17 00:00:00 2001 From: Luiz Felipe Kina Date: Wed, 18 May 2022 12:55:47 -0400 Subject: [PATCH] Add FluxCD version of metrics-server Add new manifest files for the FluxCD version of metrics-server This will create 2 rpms, one for armada and one for FluxCD. Ubuntu integration already implemented. TEST PLAN PASS Install new .deb and install FluxCD nginx PASS Verify created resources PASS Install .rpm and test on CentOS PASS Verify created resources PASS Install .rpm and test on Debian Story: 2009138 Task: 45412 Signed-off-by: Luiz Felipe Kina Change-Id: I40a3feb61360eebafa9253495e1c487b56e4f75f --- centos_iso_image.inc | 2 + centos_tarball-dl.lst | 2 +- metrics-server-helm/debian/meta_data.yaml | 2 +- .../centos/stx-metrics-server-helm.spec | 30 +++++--- .../debian/deb_folder/rules | 68 +++++++++++++++---- .../stx-metrics-server-helm/files/Makefile | 41 +++++++++++ .../fluxcd-manifests/base/helmrepository.yaml | 12 ++++ .../fluxcd-manifests/base/kustomization.yaml | 7 ++ .../fluxcd-manifests/base/namespace.yaml | 9 +++ .../fluxcd-manifests/kustomization.yaml | 12 ++++ .../metrics-server/helmrelease.yaml | 60 ++++++++++++++++ .../metrics-server/kustomization.yaml | 17 +++++ .../metrics-server-static-overrides.yaml | 18 +++++ .../metrics-server-system-overrides.yaml | 5 ++ .../manifests/metrics-server_manifest.yaml | 2 +- 15 files changed, 262 insertions(+), 25 deletions(-) create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/files/Makefile create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/helmrepository.yaml create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/kustomization.yaml create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/namespace.yaml create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/kustomization.yaml create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/helmrelease.yaml create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/kustomization.yaml create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/metrics-server-static-overrides.yaml create mode 100644 stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/metrics-server-system-overrides.yaml diff --git a/centos_iso_image.inc b/centos_iso_image.inc index 4aa6b80..bcd4c50 100644 --- a/centos_iso_image.inc +++ b/centos_iso_image.inc @@ -1 +1,3 @@ stx-metrics-server-helm +stx-metrics-server-helm-fluxcd + diff --git a/centos_tarball-dl.lst b/centos_tarball-dl.lst index 6e00cfa..1a63c29 100644 --- a/centos_tarball-dl.lst +++ b/centos_tarball-dl.lst @@ -1 +1 @@ -metrics-server-e67ee73cfc51e27eaf46b2af0ae8debd16c86d26.tgz#metrics-server#https://github.com/kubernetes-sigs/metrics-server/releases/download/metrics-server-helm-chart-3.8.2/metrics-server-3.8.2.tgz#http## +metrics-server-e67ee73cfc51e27eaf46b2af0ae8debd16c86d26.tgz#metrics-server#https://github.com/kubernetes-sigs/metrics-server/releases/tag/metrics-server-helm-chart-3.8.2/metrics-server-3.8.2.tgz#http## diff --git a/metrics-server-helm/debian/meta_data.yaml b/metrics-server-helm/debian/meta_data.yaml index 0d68dc8..4e27bb9 100644 --- a/metrics-server-helm/debian/meta_data.yaml +++ b/metrics-server-helm/debian/meta_data.yaml @@ -5,7 +5,7 @@ src_path: files dl_files: metrics-server-3.8.2.tgz: topdir: null - url: https://github.com/kubernetes-sigs/metrics-server/releases/download/metrics-server-helm-chart-3.8.2/metrics-server-3.8.2.tgz + url: https://github.com/kubernetes-sigs/metrics-server/releases/tag/metrics-server-helm-chart-3.8.2/metrics-server-3.8.2.tgz md5sum: 93f38ed20dd55618b4bf67584908b56c revision: dist: $STX_DIST diff --git a/stx-metrics-server-helm/centos/stx-metrics-server-helm.spec b/stx-metrics-server-helm/centos/stx-metrics-server-helm.spec index 3c1adf8..0bd5b5e 100644 --- a/stx-metrics-server-helm/centos/stx-metrics-server-helm.spec +++ b/stx-metrics-server-helm/centos/stx-metrics-server-helm.spec @@ -4,8 +4,6 @@ %global helm_folder /usr/lib/helm %global armada_folder /usr/lib/armada %global app_folder /usr/local/share/applications/helm -%global helmchart_version 0.1.0 - Summary: StarlingX Metrics Server Armada Helm Charts Name: stx-metrics-server-helm @@ -27,6 +25,14 @@ BuildRequires: metrics-server-helm %description StarlingX Metrics Server Armada Helm Charts +%package fluxcd +Summary: StarlingX Metrics Server Controller Application FluxCD Helm Charts +Group: base +License: Apache-2.0 + +%description fluxcd +StarlingX Metrics Server Controller Application FluxCD Helm Charts + %prep %setup @@ -46,7 +52,8 @@ kill %1 # Create a chart tarball compliant with sysinv kube-app.py %define app_staging %{_builddir}/staging -%define app_tarball %{app_name}-%{version}-%{tis_patch_ver}.tgz +%define app_tarball_armada %{app_name}-%{version}-%{tis_patch_ver}.tgz +%define app_tarball_fluxcd %{app_name}-fluxcd-%{version}-%{tis_patch_ver}.tgz # Setup staging mkdir -p %{app_staging} @@ -62,17 +69,24 @@ sed -i 's/@APP_NAME@/%{app_name}/g' %{app_staging}/metadata.yaml sed -i 's/@APP_VERSION@/%{version}-%{tis_patch_ver}/g' %{app_staging}/metadata.yaml sed -i 's/@HELM_REPO@/%{helm_repo}/g' %{app_staging}/metadata.yaml -# package it up +# package armada find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5 -tar -zcf %{_builddir}/%{app_tarball} -C %{app_staging}/ . +tar -zcf %{_builddir}/%{app_tarball_armada} -C %{app_staging}/ . + +#package fluxcd +cd %{_builddir}/%{name}-%{version} +cp -Rv fluxcd-manifests %{app_staging}/ + +find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5 +tar -zcf %{_builddir}/%{app_tarball_fluxcd} -C %{app_staging}/ . # Cleanup staging rm -fr %{app_staging} %install install -d -m 755 %{buildroot}/%{app_folder} -install -p -D -m 755 %{_builddir}/%{app_tarball} %{buildroot}/%{app_folder} +install -p -D -m 755 %{_builddir}/%{app_tarball_fluxcd} %{buildroot}/%{app_folder} -%files +%files fluxcd %defattr(-,root,root,-) -%{app_folder}/* +%{app_folder}/%{app_tarball_fluxcd} diff --git a/stx-metrics-server-helm/debian/deb_folder/rules b/stx-metrics-server-helm/debian/deb_folder/rules index f4f7ac9..06a217f 100644 --- a/stx-metrics-server-helm/debian/deb_folder/rules +++ b/stx-metrics-server-helm/debian/deb_folder/rules @@ -10,14 +10,20 @@ export MINOR_PATCH = $(shell echo $(DEB_VERSION) | cut -f 2 -d '.') export APP_NAME = metrics-server export APP_VERSION = $(MAJOR).$(MINOR_PATCH) -export APP_TARBALL = $(APP_NAME)-$(APP_VERSION).tgz +export APP_TARBALL_ARMADA = $(APP_NAME)-$(APP_VERSION).tgz +export APP_TARBALL_FLUXCD = $(APP_NAME)-fluxcd-$(APP_VERSION).tgz export HELM_REPO = stx-platform -export STAGING = staging +export STAGING_ARMADA = staging-armada +export STAGING_FLUXCD = staging-fluxcd %: dh $@ override_dh_auto_build: + + ############ + # COMMON # + ############ # Host a server for the helm charts. chartmuseum --debug --port=8879 --context-path='/charts' --storage="local" --storage-local-rootdir="." & sleep 2 @@ -26,27 +32,61 @@ override_dh_auto_build: cd helm-charts && make # Terminate the helm chart server. pkill chartmuseum + + ############ + # ARMADA # + ############ # Setup the staging directory. - mkdir -p $(STAGING) - cp files/metadata.yaml $(STAGING) - cp manifests/*.yaml $(STAGING) - mkdir -p $(STAGING)/charts - cp helm-charts/*.tgz $(STAGING)/charts + mkdir -p $(STAGING_ARMADA) + cp files/metadata.yaml $(STAGING_ARMADA) + cp manifests/metrics-server_manifest.yaml $(STAGING_ARMADA) + mkdir -p $(STAGING_ARMADA)/charts + cp helm-charts/*.tgz $(STAGING_ARMADA)/charts + # Populate metadata. - sed -i 's/@APP_NAME@/$(APP_NAME)/g' $(STAGING)/metadata.yaml - sed -i 's/@APP_VERSION@/$(APP_VERSION)/g' $(STAGING)/metadata.yaml - sed -i 's/@HELM_REPO@/$(HELM_REPO)/g' $(STAGING)/metadata.yaml + sed -i 's/@APP_NAME@/$(APP_NAME)/g' $(STAGING_ARMADA)/metadata.yaml + sed -i 's/@APP_VERSION@/$(APP_VERSION)/g' $(STAGING_ARMADA)/metadata.yaml + sed -i 's/@HELM_REPO@/$(HELM_REPO)/g' $(STAGING_ARMADA)/metadata.yaml + # Create the app package. - cd $(STAGING) && find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5 - tar cfz $(APP_TARBALL) -C $(STAGING)/ . + cd $(STAGING_ARMADA) && find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5 + tar cfz $(APP_TARBALL_ARMADA) -C $(STAGING_ARMADA)/ . + # Cleanup staging - rm -rf $(STAGING) + rm -rf $(STAGING_ARMADA) + + ############ + # FLUXCD # + ############ + # Setup the staging directory. + mkdir -p $(STAGING_FLUXCD) + cp files/metadata.yaml $(STAGING_FLUXCD) + cp -Rv fluxcd-manifests $(STAGING_FLUXCD) + mkdir -p $(STAGING_FLUXCD)/charts + cp helm-charts/*.tgz $(STAGING_FLUXCD)/charts + + # Populate metadata. + sed -i 's/@APP_NAME@/$(APP_NAME)/g' $(STAGING_FLUXCD)/metadata.yaml + sed -i 's/@APP_VERSION@/$(APP_VERSION)/g' $(STAGING_FLUXCD)/metadata.yaml + sed -i 's/@HELM_REPO@/$(HELM_REPO)/g' $(STAGING_FLUXCD)/metadata.yaml + + # Package fluxcd + cp -R fluxcd-manifests $(STAGING_FLUXCD)/ + + # calculate checksum of all files in app_staging + cd $(STAGING_FLUXCD) && find . -type f ! -name '*.md5' -print0 | xargs -0 md5sum > checksum.md5 + tar cfz $(APP_TARBALL_FLUXCD) -C $(STAGING_FLUXCD)/ . + + # Cleanup staging + rm -rf $(STAGING_FLUXCD) override_dh_auto_install: # Install the app tar file. install -d -m 755 $(APP_FOLDER) - install -p -D -m 755 $(APP_TARBALL) $(APP_FOLDER) + install -p -D -m 755 $(APP_TARBALL_ARMADA) $(APP_FOLDER) + install -p -D -m 755 $(APP_TARBALL_FLUXCD) $(APP_FOLDER) override_dh_auto_test: override_dh_usrlocal: + diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/files/Makefile b/stx-metrics-server-helm/stx-metrics-server-helm/files/Makefile new file mode 100644 index 0000000..0f838e0 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/files/Makefile @@ -0,0 +1,41 @@ +# Copyright (c) 2022 Wind River Systems, Inc. +# # +# # SPDX-License-Identifier: Apache-2.0 +# # +# # It's necessary to set this because some environments don't link sh -> bash. +SHELL := /bin/bash +TASK := build + +EXCLUDES := helm-toolkit doc tests tools logs tmp +CHARTS := helm-toolkit $(filter-out $(EXCLUDES), $(patsubst %/.,%,$(wildcard */.))) + +.PHONY: $(EXCLUDES) $(CHARTS) + +all: $(CHARTS) + +$(CHARTS): + @if [ -d $@ ]; then \ + echo; \ + echo "===== Processing [$@] chart ====="; \ + make $(TASK)-$@; \ + fi + +init-%: + if [ -f $*/Makefile ]; then make -C $*; fi + if [ -f $*/requirements.yaml ]; then helm dep up $*; fi + +lint-%: init-% + if [ -d $* ]; then helm lint $*; fi + +build-%: lint-% + if [ -d $* ]; then helm package $*; fi + +clean: + @echo "Clean all build artifacts" + rm -f */templates/_partials.tpl */templates/_globals.tpl + rm -f *tgz */charts/*tgz */requirements.lock + rm -rf */charts */tmpcharts + +%: + @: + diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/helmrepository.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/helmrepository.yaml new file mode 100644 index 0000000..7006957 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/helmrepository.yaml @@ -0,0 +1,12 @@ +# +# Copyright (c) 2022 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +apiVersion: source.toolkit.fluxcd.io/v1beta1 +kind: HelmRepository +metadata: + name: stx-platform +spec: + url: http://192.168.206.1:8080/helm_charts/stx-platform + interval: 60m \ No newline at end of file diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/kustomization.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/kustomization.yaml new file mode 100644 index 0000000..92a58b3 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/kustomization.yaml @@ -0,0 +1,7 @@ +# +# Copyright (c) 2022 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +resources: + - helmrepository.yaml diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/namespace.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/namespace.yaml new file mode 100644 index 0000000..715f7c7 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/base/namespace.yaml @@ -0,0 +1,9 @@ +# +# Copyright (c) 2022 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +apiVersion: v1 +kind: Namespace +metadata: + name: metrics-server diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/kustomization.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/kustomization.yaml new file mode 100644 index 0000000..2a56dc0 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/kustomization.yaml @@ -0,0 +1,12 @@ +# +# Copyright (c) 2022 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# + +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: metrics-server +resources: + - base + - metrics-server diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/helmrelease.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/helmrelease.yaml new file mode 100644 index 0000000..62bbd13 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/helmrelease.yaml @@ -0,0 +1,60 @@ +# +# Copyright (c) 2022 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +apiVersion: "helm.toolkit.fluxcd.io/v2beta1" +kind: HelmRelease +metadata: + name: metrics-server + labels: + chart_group: metrics-server +spec: + releaseName: ms-metrics-server + chart: + spec: + chart: metrics-server + version: 3.8.2 + sourceRef: + kind: HelmRepository + name: stx-platform + interval: 5m + timeout: 30m + test: + enable: false + install: + disableHooks: false + upgrade: + disableHooks: false + force: true + valuesFrom: + - kind: Secret + name: metrics-server-static-overrides + valuesKey: metrics-server-static-overrides.yaml + - kind: Secret + name: metrics-server-system-overrides + valuesKey: metrics-server-system-overrides.yaml +--- +apiVersion: "helm.toolkit.fluxcd.io/v2beta1" +kind: HelmRelease +metadata: + name: metrics-server-psp-rolebinding + labels: + chart_group: metrics-server-psp-rolebinding +spec: + releaseName: ms-metrics-server-psp-rolebinding + chart: + spec: + chart: psp-rolebinding + version: 0.1.0 + sourceRef: + kind: HelmRepository + name: stx-platform + interval: 5m + timeout: 30m + test: + enable: false + install: + disableHooks: false + upgrade: + force: true diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/kustomization.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/kustomization.yaml new file mode 100644 index 0000000..5a6aa71 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/kustomization.yaml @@ -0,0 +1,17 @@ +# +# Copyright (c) 2022 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +namespace: metrics-server +resources: + - helmrelease.yaml +secretGenerator: + - name: metrics-server-static-overrides + files: + - metrics-server-static-overrides.yaml + - name: metrics-server-system-overrides + files: + - metrics-server-system-overrides.yaml +generatorOptions: + disableNameSuffixHash: true diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/metrics-server-static-overrides.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/metrics-server-static-overrides.yaml new file mode 100644 index 0000000..29e2dc7 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/metrics-server-static-overrides.yaml @@ -0,0 +1,18 @@ +# +# Copyright (c) 2022 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# +imagePullSecrets: [{"name": "default-registry-key"}] +args: + - --kubelet-insecure-tls +replicas: 1 +image: + repository: k8s.gcr.io/metrics-server/metrics-server + tag: "v0.6.1" +tolerations: + - key: "node-role.kubernetes.io/master" + operator: "Exists" + effect: "NoSchedule" +nodeSelector: + node-role.kubernetes.io/master: "" diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/metrics-server-system-overrides.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/metrics-server-system-overrides.yaml new file mode 100644 index 0000000..ead5143 --- /dev/null +++ b/stx-metrics-server-helm/stx-metrics-server-helm/fluxcd-manifests/metrics-server/metrics-server-system-overrides.yaml @@ -0,0 +1,5 @@ +# +# Copyright (c) 2022 Wind River Systems, Inc. +# +# SPDX-License-Identifier: Apache-2.0 +# \ No newline at end of file diff --git a/stx-metrics-server-helm/stx-metrics-server-helm/manifests/metrics-server_manifest.yaml b/stx-metrics-server-helm/stx-metrics-server-helm/manifests/metrics-server_manifest.yaml index 94fbc2c..9c1dc58 100644 --- a/stx-metrics-server-helm/stx-metrics-server-helm/manifests/metrics-server_manifest.yaml +++ b/stx-metrics-server-helm/stx-metrics-server-helm/manifests/metrics-server_manifest.yaml @@ -52,7 +52,7 @@ data: app: metrics-server values: imagePullSecrets: [{"name": "default-registry-key"}] - args: + args: - --kubelet-insecure-tls replicas: 1 image: