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 <LuizFelipe.EiskeKina@windriver.com>
Change-Id: I40a3feb61360eebafa9253495e1c487b56e4f75f
This commit is contained in:
Luiz Felipe Kina 2022-05-18 12:55:47 -04:00
parent 512747aec4
commit 03e2d54d7c
15 changed files with 262 additions and 25 deletions

View File

@ -1 +1,3 @@
stx-metrics-server-helm
stx-metrics-server-helm-fluxcd

View File

@ -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##

View File

@ -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

View File

@ -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}

View File

@ -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:

View File

@ -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
%:
@:

View File

@ -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

View File

@ -0,0 +1,7 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#
resources:
- helmrepository.yaml

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: ""

View File

@ -0,0 +1,5 @@
#
# Copyright (c) 2022 Wind River Systems, Inc.
#
# SPDX-License-Identifier: Apache-2.0
#

View File

@ -52,7 +52,7 @@ data:
app: metrics-server
values:
imagePullSecrets: [{"name": "default-registry-key"}]
args:
args:
- --kubelet-insecure-tls
replicas: 1
image: