diff --git a/charts/meep-sss/.helmignore b/charts/meep-sss/.helmignore new file mode 100644 index 0000000000000000000000000000000000000000..f0c13194444163d1cba5c67d9e79231a62bc8f44 --- /dev/null +++ b/charts/meep-sss/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/meep-sss/Chart.yaml b/charts/meep-sss/Chart.yaml new file mode 100644 index 0000000000000000000000000000000000000000..54a9341820dd54cf80f30eb84ef2f82dacfbe3d1 --- /dev/null +++ b/charts/meep-sss/Chart.yaml @@ -0,0 +1,5 @@ +apiVersion: v1 +appVersion: '1.0.0' +description: MEEP Sensor-Sharing Service Information Service Helm chart for Kubernetes +name: meep-sss +version: 1.0.0 diff --git a/charts/meep-sss/templates/_helpers.tpl b/charts/meep-sss/templates/_helpers.tpl new file mode 100644 index 0000000000000000000000000000000000000000..ff0697846a8a48f83a9a0b16f0fc00809fa7a0ab --- /dev/null +++ b/charts/meep-sss/templates/_helpers.tpl @@ -0,0 +1,32 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "meep-sss.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "meep-sss.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "meep-sss.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} +{{- end -}} diff --git a/charts/meep-sss/templates/clusterrolebinding.yaml b/charts/meep-sss/templates/clusterrolebinding.yaml new file mode 100644 index 0000000000000000000000000000000000000000..c369d8b63df68810a749bbe323dc8182108a0c3a --- /dev/null +++ b/charts/meep-sss/templates/clusterrolebinding.yaml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: "{{ .Release.Namespace }}:{{ template "meep-sss.fullname" . }}" +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: cluster-admin +subjects: +- kind: ServiceAccount + name: {{ template "meep-sss.fullname" . }} + namespace: {{ .Release.Namespace }} diff --git a/charts/meep-sss/templates/codecov-pv.yaml b/charts/meep-sss/templates/codecov-pv.yaml new file mode 100644 index 0000000000000000000000000000000000000000..a7bfc205111a419d5af7110a947e1fb3b5dc5fc2 --- /dev/null +++ b/charts/meep-sss/templates/codecov-pv.yaml @@ -0,0 +1,35 @@ +{{- if .Values.codecov.enabled}} +kind: PersistentVolume +apiVersion: v1 +metadata: + name: meep-sss-codecov-pv +spec: + storageClassName: meep-sss-codecov-sc + capacity: + storage: 100Mi + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Retain + hostPath: + path: {{ .Values.codecov.location }} + +--- +kind: StorageClass +apiVersion: storage.k8s.io/v1 +metadata: + name: meep-sss-codecov-sc +proiotioner: kubernetes.io/no-proiotioner +volumeBindingMode: WaitForFirstConsumer +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: meep-sss-codecov-pvc +spec: + storageClassName: meep-sss-codecov-sc + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 100Mi +{{- end}} diff --git a/charts/meep-sss/templates/deployment.yaml b/charts/meep-sss/templates/deployment.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fde4fdef8abcb5d5c893347130438e3906cdf823 --- /dev/null +++ b/charts/meep-sss/templates/deployment.yaml @@ -0,0 +1,61 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ template "meep-sss.fullname" . }} + labels: + app: {{ template "meep-sss.name" . }} + chart: {{ template "meep-sss.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + meepOrigin: {{ .Values.meepOrigin }} +spec: + replicas: {{ .Values.deployment.replicas }} + selector: + matchLabels: + app: {{ template "meep-sss.name" . }} + release: {{ .Release.Name }} + template: + metadata: + labels: + app: {{ template "meep-sss.name" . }} + release: {{ .Release.Name }} + meepOrigin: {{ .Values.meepOrigin }} + spec: + serviceAccountName: {{ .Values.serviceAccount }} + {{- if .Values.codecov.enabled}} + volumes: + - name: codecov-storage + persistentVolumeClaim: + claimName: meep-sss-codecov-pvc + {{- end}} + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - containerPort: {{ .Values.deployment.port }} + protocol: {{ .Values.deployment.protocol }} + env: + {{- range $key, $value := .Values.image.env }} + - name: {{ $key }} + value: {{ $value | quote }} + {{- end }} + {{- if .Values.codecov.enabled}} + volumeMounts: + - name: codecov-storage + mountPath: /codecov + {{- end}} + terminationGracePeriodSeconds: 5 + initContainers: + {{- range $value := .Values.deployment.dependencies.system }} + - name: init-system-{{ $value }} + image: busybox:1.28 + imagePullPolicy: IfNotPresent + command: ['sh', '-c', 'until nslookup {{ $value }}.kube-system ; do echo waiting for {{ $value }}; sleep 0.25; done;'] + {{- end}} + {{- range $value := .Values.deployment.dependencies.namespace }} + - name: init-{{ $value }} + image: busybox:1.28 + imagePullPolicy: IfNotPresent + command: ['sh', '-c', 'until nslookup {{ $value }} ; do echo waiting for {{ $value }}; sleep 0.25; done;'] + {{- end}} diff --git a/charts/meep-sss/templates/ingress.yaml b/charts/meep-sss/templates/ingress.yaml new file mode 100644 index 0000000000000000000000000000000000000000..4ece43dad8df2fc6acf57545be7b92302a5b8031 --- /dev/null +++ b/charts/meep-sss/templates/ingress.yaml @@ -0,0 +1,42 @@ +{{- if .Values.ingress.enabled -}} +{{- $serviceName := .Values.service.name -}} +{{- $servicePort := .Values.service.port -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ $serviceName }} + labels: + app: {{ template "meep-sss.name" . }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +{{- if .Values.ingress.labels }} +{{ toYaml .Values.ingress.labels | indent 4 }} +{{- end }} + annotations: + {{- range $key, $value := .Values.ingress.annotations }} + {{ $key }}: {{ $value | quote }} + {{- end }} +spec: + rules: + {{- range .Values.ingress.hosts }} + - http: + paths: + {{- range $path := .paths }} + - path: {{ $path }} + pathType: ImplementationSpecific + backend: + service: + name: {{ $serviceName }} + port: + number: {{ $servicePort }} + {{- end -}} + {{- if .name }} + host: {{ .name }} + {{- end }} + {{- end -}} + {{- if .Values.ingress.tls }} + tls: +{{ toYaml .Values.ingress.tls | indent 4 }} + {{- end -}} +{{- end -}} diff --git a/charts/meep-sss/templates/monitor.yaml b/charts/meep-sss/templates/monitor.yaml new file mode 100644 index 0000000000000000000000000000000000000000..fdfec7d1f81e0513752486c1252e7863bc51bf4f --- /dev/null +++ b/charts/meep-sss/templates/monitor.yaml @@ -0,0 +1,33 @@ +{{- if .Values.prometheus.monitor.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ template "meep-sss.fullname" . }} + namespace: {{ .Release.Namespace }} + labels: + app: {{ template "meep-sss.name" . }} + chart: {{ template "meep-sss.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + meepOrigin: {{ .Values.meepOrigin }} + {{- if .Values.prometheus.monitor.additionalLabels }} +{{ toYaml .Values.prometheus.monitor.additionalLabels | indent 4 }} + {{- end }} +spec: + selector: + matchLabels: + app: {{ template "meep-sss.name" . }} + release: {{ .Release.Name }} + endpoints: + - port: metrics + {{- if .Values.prometheus.monitor.interval }} + interval: {{ .Values.prometheus.monitor.interval }} + {{- end }} + {{- if .Values.prometheus.monitor.scrapeTimeout }} + scrapeTimeout: {{ .Values.prometheus.monitor.scrapeTimeout }} + {{- end }} +{{- if .Values.prometheus.monitor.relabelings }} + relabelings: +{{ toYaml .Values.prometheus.monitor.relabelings | indent 6 }} +{{- end }} +{{- end }} diff --git a/charts/meep-sss/templates/service.yaml b/charts/meep-sss/templates/service.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2092d1d0ed8a3e8974f5f448cc428fa1fb0e4b8c --- /dev/null +++ b/charts/meep-sss/templates/service.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ .Values.service.name }} + labels: + app: {{ template "meep-sss.name" . }} + chart: {{ template "meep-sss.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + meepOrigin: {{ .Values.meepOrigin }} +spec: + type: {{ .Values.service.type }} + selector: + app: {{ template "meep-sss.name" . }} + release: {{ .Release.Name }} + ports: + - name: iot + port: {{ .Values.service.port }} + targetPort: {{ .Values.deployment.port }} + {{- if .Values.service.nodePort }} + nodePort: {{ .Values.service.nodePort }} + {{- end }} + {{- if .Values.prometheus.monitor.enabled}} + - name: metrics + port: {{ .Values.prometheus.monitor.port }} + targetPort: {{ .Values.prometheus.monitor.port }} + protocol: TCP + {{- end}} diff --git a/charts/meep-sss/templates/serviceaccount.yaml b/charts/meep-sss/templates/serviceaccount.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f8274b8a89917e921940e8852656af56ba8df692 --- /dev/null +++ b/charts/meep-sss/templates/serviceaccount.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ template "meep-sss.fullname" . }} diff --git a/charts/meep-sss/values-template.yaml b/charts/meep-sss/values-template.yaml new file mode 100644 index 0000000000000000000000000000000000000000..b5018bb0450c6605a235842611c5f96db5b03982 --- /dev/null +++ b/charts/meep-sss/values-template.yaml @@ -0,0 +1,85 @@ +# Default values for meep-sss. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +deployment: + replicas: 1 + port: 80 + protocol: TCP + dependencies: + system: + {{- if not .IsMepService }} + - kube-dns + {{- end }} + namespace: + +image: + repository: meep-docker-registry:30001/meep-sss + tag: latest + pullPolicy: Always + env: + MEEP_INSTANCE_ID: {{.InstanceId}} + MEEP_SANDBOX_NAME: {{.SandboxName}} + MEEP_SVC_PATH: /sens/v1 + MEEP_HOST_URL: {{.HostUrl}} + {{- if .IsMepService }} + MEEP_MEP_NAME: {{.MepName}} + {{- end }} + {{- if eq .AppEnablement "local" }} + MEEP_APP_ENABLEMENT: {{.MepName}}-meep-app-enablement + {{- else if eq .AppEnablement "global" }} + MEEP_APP_ENABLEMENT: meep-app-enablement + {{- end }} + {{- range .Env}} + {{.}} + {{- end}} + +service: + {{- if .IsMepService }} + name: {{.MepName}}-meep-sss + {{- else }} + name: meep-sss + {{- end }} + type: ClusterIP + port: 80 + +ingress: + enabled: true + hosts: + - name: '' + paths: + {{- if .IsMepService }} + - /{{.SandboxName}}/{{.MepName}}/sens + {{- else }} + - /{{.SandboxName}}/sens + {{- end }} + annotations: + kubernetes.io/ingress.class: nginx + nginx.ingress.kubernetes.io/force-ssl-redirect: {{ .HttpsOnly }} + {{- if .IsMepService }} + nginx.ingress.kubernetes.io/configuration-snippet: | + rewrite ^/{{.SandboxName}}/{{.MepName}}/sens(/|$)(.*)$ /sens/$2 break; + {{- else }} + nginx.ingress.kubernetes.io/configuration-snippet: | + rewrite ^/{{.SandboxName}}/sens(/|$)(.*)$ /sens/$2 break; + {{- end }} + {{- if .AuthEnabled }} + nginx.ingress.kubernetes.io/auth-url: https://$http_host/auth/v1/authenticate?svc=meep-sss&sbox={{.SandboxName}}&mep={{.MepName}} + {{- end }} + labels: {} + tls: + +prometheus: + monitor: + enabled: true + port: 9000 + interval: 10s + additionalLabels: {} + relabelings: [] + scrapeTimeout: 5s + +codecov: + enabled: false + location: "/codecov/meep-sss" + +meepOrigin: core