From 7db71adaf139e54f2186cfd19d468f5a1123835d Mon Sep 17 00:00:00 2001 From: Michal Jagiello Date: Fri, 16 Jul 2021 20:38:55 +0000 Subject: Refactor cds-mockserver helm chart I did some changes to run that helm chart in integration tests using multicloud-k8s. * I renamed helm/ directory into cds-mockserver/ based on "helm lint" * I changed Deployment apiVersion to "apps/v1" due to "extensions/v1beta1" deprecation [1] * I added "selector" into Deployment because it's required for "apps/v1" version [2] Add missing .coafile, .yamllint and tox.ini files [1] https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/ [2] https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#label-selector-updates Signed-off-by: Michal Jagiello Issue-ID: TEST-291 Change-Id: Ibe1fc564f3db9933071a9374d0c583724fbcf08d --- cds-mockserver/Chart.yaml | 4 ++ cds-mockserver/templates/_templates.tpl | 107 +++++++++++++++++++++++++++++++ cds-mockserver/templates/deployment.yaml | 46 +++++++++++++ cds-mockserver/templates/service.yaml | 39 +++++++++++ cds-mockserver/values.yaml | 29 +++++++++ 5 files changed, 225 insertions(+) create mode 100644 cds-mockserver/Chart.yaml create mode 100644 cds-mockserver/templates/_templates.tpl create mode 100644 cds-mockserver/templates/deployment.yaml create mode 100644 cds-mockserver/templates/service.yaml create mode 100644 cds-mockserver/values.yaml (limited to 'cds-mockserver') diff --git a/cds-mockserver/Chart.yaml b/cds-mockserver/Chart.yaml new file mode 100644 index 0000000..299359e --- /dev/null +++ b/cds-mockserver/Chart.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +description: Mockserver for testing CDS REST capabilities +name: cds-mockserver +version: 1.0.0 diff --git a/cds-mockserver/templates/_templates.tpl b/cds-mockserver/templates/_templates.tpl new file mode 100644 index 0000000..3e92baf --- /dev/null +++ b/cds-mockserver/templates/_templates.tpl @@ -0,0 +1,107 @@ +{{/* +# Copyright (c) 2020 Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +*/}} + +{{- define "common.namespace" -}} + {{- default .Release.Namespace .Values.nsPrefix -}} +{{- end -}} + + +{{/* + Expand the name of a chart. + The function takes from one to two arguments (inside a dictionary): + - .dot : environment (.) + - .suffix : add a suffix to the name +*/}} +{{- define "common.name" -}} + {{- $dot := default . .dot -}} + {{- $suffix := .suffix -}} + {{- default $dot.Chart.Name $dot.Values.nameOverride | trunc 63 | trimSuffix "-" -}}{{ if $suffix }}{{ print "-" $suffix }}{{ end }} +{{- end -}} + +{{/* + The same as common.full name but based on passed dictionary instead of trying to figure + out chart name on its own. +*/}} +{{- define "common.fullnameExplicit" -}} + {{- $dot := .dot }} + {{- $name := .chartName }} + {{- $suffix := default "" .suffix -}} + {{- printf "%s-%s-%s" (include "common.release" $dot) $name $suffix | trunc 63 | trimSuffix "-" | trimSuffix "-" -}} +{{- end -}} + +{{/* + Create a default fully qualified application name. + Truncated at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). + Usage: + include "common.fullname" . + include "common.fullname" (dict "suffix" "mySuffix" "dot" .) + The function takes from one to two arguments: + - .dot : environment (.) + - .suffix : add a suffix to the fullname +*/}} +{{- define "common.fullname" -}} +{{- $dot := default . .dot -}} +{{- $suffix := default "" .suffix -}} + {{- $name := default $dot.Chart.Name $dot.Values.nameOverride -}} + {{- include "common.fullnameExplicit" (dict "dot" $dot "chartName" $name "suffix" $suffix) }} +{{- end -}} + +{{/* + Retrieve the "original" release from the component release: + if ONAP is deploy with "helm deploy --name toto", then cassandra components + will have "toto-cassandra" as release name. + this function would answer back "toto". +*/}} +{{- define "common.release" -}} + {{- first (regexSplit "-" .Release.Name -1) }} +{{- end -}} + +{{- define "common.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* + Resolve the name of the common image repository. + The value for .Values.repository is used by default, + unless either override mechanism is used. + + - .Values.global.repository : override default image repository for all images + - .Values.repositoryOverride : override global and default image repository on a per image basis +*/}} +{{- define "common.repository" -}} + {{if .Values.repositoryOverride }} + {{- printf "%s" .Values.repositoryOverride -}} + {{else}} + {{- default .Values.repository .Values.global.repository -}} + {{end}} +{{- end -}} + +{{/* + Resolve the name of a chart's service. + + The default will be the chart name (or .Values.nameOverride if set). + And the use of .Values.service.name overrides all. + + - .Values.service.name: override default service (ie. chart) name +*/}} +{{/* + Expand the service name for a chart. +*/}} +{{- define "common.servicename" -}} + {{- $name := default .Chart.Name .Values.nameOverride -}} + {{- default $name .Values.service.name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + diff --git a/cds-mockserver/templates/deployment.yaml b/cds-mockserver/templates/deployment.yaml new file mode 100644 index 0000000..11b9947 --- /dev/null +++ b/cds-mockserver/templates/deployment.yaml @@ -0,0 +1,46 @@ +# Copyright (c) 2020 Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "common.fullname" . }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ include "common.release" . }} + heritage: {{ .Release.Service }} +spec: + selector: + matchLabels: + app: {{ include "common.name" . }} + replicas: {{ .Values.replicaCount }} + strategy: + type: RollingUpdate + rollingUpdate: + maxUnavailable: 0 + template: + metadata: + labels: + app: {{ include "common.name" . }} + release: {{ include "common.release" . }} + spec: + containers: + - name: {{ include "common.name" . }} + terminationGracePeriodSeconds: {{ .Values.terminationGracePeriodSeconds | default 10 }} + image: "{{ include "common.repository" . }}/{{ .Values.image }}" + imagePullPolicy: {{ .Values.global.pullPolicy | default .Values.pullPolicy }} + ports: + - containerPort: {{ .Values.service.mockserver.internalPort }} diff --git a/cds-mockserver/templates/service.yaml b/cds-mockserver/templates/service.yaml new file mode 100644 index 0000000..5701aca --- /dev/null +++ b/cds-mockserver/templates/service.yaml @@ -0,0 +1,39 @@ +# Copyright (c) 2020 Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.mockserver.portName }} + namespace: {{ include "common.namespace" . }} + labels: + app: {{ include "common.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ include "common.release" . }} + heritage: {{ .Release.Service }} + annotations: +spec: + type: {{ .Values.service.mockserver.type }} + ports: + - port: {{ .Values.service.mockserver.port }} + protocol: TCP + targetPort: {{ .Values.service.mockserver.internalPort }} + {{- if eq .Values.service.mockserver.type "NodePort"}} + nodePort: {{ .Values.global.nodePortPrefix | default .Values.nodePortPrefix }}{{ .Values.service.nodePort }} + {{- end}} + name: {{ .Values.service.mockserver.portName | default "mockserver" }} + selector: + app: {{ include "common.name" . }} + release: {{ include "common.release" . }} + diff --git a/cds-mockserver/values.yaml b/cds-mockserver/values.yaml new file mode 100644 index 0000000..8418963 --- /dev/null +++ b/cds-mockserver/values.yaml @@ -0,0 +1,29 @@ +# Copyright (c) 2020 Bell Canada +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +image: mockserver/mockserver + +global: + name: cds-regression-mockserver + repository: nexus3.onap.org:10001 + pullPolicy: Always + replicas: 1 + terminationGracePeriodSeconds: 10 + +service: + mockserver: + type: ClusterIP + portName: cds-regression-mockserver + port: 80 + internalPort: 1080 -- cgit 1.2.3-korg