Merge pull request #50 from the-technat/master

WIP: feat!(helm): refactor helm chart
This commit is contained in:
Eugenio Marzo
2022-09-11 10:15:06 +02:00
committed by GitHub
10 changed files with 132 additions and 135 deletions
+5 -10
View File
@@ -7,16 +7,11 @@ helm repo add kubeinvaders https://lucky-sideburn.github.io/helm-charts/
kubectl create namespace kubeinvaders
# Install new and full open-source version
helm install kubeinvaders --set-string target_namespace="namespace1\,namespace2" \
-n kubeinvaders kubeinvaders/kubeinvaders --set ingress.hostName=kubeinvaders.io
helm install -n kubeinvaders kubeinvaders kubeinvaders/kubeinvaders \
--set-string config.target_namespace="namespace1\,namespace2" \
--set ingress.enabled=true --set ingress.hostName=kubeinvaders.io
```
## Helm Values
## Values
| Variable | Description |
| ------------------- | -------------------------------------- |
| image.tag | Specify tag of KubeInvaders to deploy |
| ingress.hostName | URL used for ingress |
| target_namespace | namespaces to take under control |
| extraEnv | Extra environment variables for pod |
See the [values.yaml](./values.yaml) for a full list of configuration options.
@@ -1,14 +1,14 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: kubeinvaders
name: {{ include "kubeinvaders.fullname" . }}
labels:
app.kubernetes.io/name: kubeinvaders
helm.sh/chart: {{ include "kubeinvaders.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
replicas: 1
replicas: {{ .Values.deployment.replicaCount }}
selector:
matchLabels:
app.kubernetes.io/name: kubeinvaders
@@ -20,48 +20,58 @@ spec:
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: kubeinvaders
{{- if .Values.securityContext }}
securityContext: {{- toYaml .Values.securityContext | nindent 8 }}
{{- with .Values.deployment.securityContext }}
securityContext:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- env:
{{- if .Values.ingress.enabled }}
- name: ENDPOINT
value: {{ required ".Values.ingress.hostName is required if Ingress are enabled" .Values.ingress.hostName }}
value: {{ required ".Values.ingress.hostName is required if Ingress is enabled" .Values.ingress.hostName }}
{{- else }}
- name: ENDPOINT
value: {{ required ".Values.route_host is required if Ingress are disabled" .Values.route_host }}
value: {{ required ".Values.route_host is required if Ingress is disabled" .Values.route_host }}
{{- end }}
- name: NAMESPACE
value: {{ .Values.target_namespace }}
{{- if .Values.extraEnv }}
{{ toYaml .Values.extraEnv | indent 10 }}
value: {{ .Values.config.target_namespace }}
- name: ALIENPROXIMITY
value: "{{ .Values.config.alienProximity }}"
- name: HITSLIMIT
value: "{{ .Values.config.hitsLimit }}"
- name: UPDATETIME
value: "{{ .Values.config.updateTime }}"
{{- with .Values.deployment.extraEnv }}
{{ toYaml . | nindent 10 }}
{{- end }}
name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
imagePullPolicy: {{ .Values.deployment.image.pullPolicy }}
ports:
- name: http
containerPort: 8080
protocol: TCP
{{- with .Values.resources }}
{{- with .Values.deployment.resources }}
resources:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.extraVolumeMounts }}
{{- with .Values.deployment.extraVolumeMounts }}
volumeMounts:
{{- toYaml . | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
{{- with .Values.deployment.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with.Values.extraVolumes }}
{{- with .Values.deployment.extraVolumes }}
volumes:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
{{- with .Values.deployment.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- end }}
{{- with .Values.deployment.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}
@@ -2,7 +2,7 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kubeinvaders
name: {{ include "kubeinvaders.fullname" . }}
labels:
app.kubernetes.io/name: kubeinvaders
helm.sh/chart: {{ include "kubeinvaders.chart" . }}
@@ -0,0 +1,43 @@
{{- if .Values.rbac.create -}}
{{if .Values.clusterRole.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: {{ template "kubeinvaders.clusterRoleName" . }}
labels:
app: kubeinvaders
chart: {{ template "kubeinvaders.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "watch", "list", "delete"]
- apiGroups: ["batch", "extensions"]
resources: ["jobs"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "watch", "list"]
{{- end -}}
{{- if or .Values.clusterRole.create .Values.clusterRole.name }}
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ template "kubeinvaders.clusterRoleName" . }}
labels:
app: kubeinvaders
chart: {{ template "kubeinvaders.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
subjects:
- kind: ServiceAccount
name: {{ template "kubeinvaders.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: {{ template "kubeinvaders.clusterRoleName" . }}
{{- end -}}
{{- end -}}
@@ -1,33 +0,0 @@
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: kubeinvaders-role
namespace: {{ .Release.Namespace }}
labels:
app: kubeinvaders
chart: {{ template "kubeinvaders.chart" $ }}
release: {{ $.Release.Name }}
heritage: {{ $.Release.Service }}
rules:
- apiGroups: [""]
resources: ["pods", "pods/log", "jobs"]
verbs: ["get", "list", "delete", "create"]
---
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: kubeinvaders-rolebinding
namespace: {{ .Release.Namespace }}
labels:
app: kubeinvaders
chart: {{ template "kubeinvaders.chart" $ }}
release: {{ $.Release.Name }}
heritage: {{ $.Release.Service }}
subjects:
- kind: ServiceAccount
name: {{ template "kubeinvaders.serviceAccountName" $ }}
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: kubeinvaders-role
apiGroup: rbac.authorization.k8s.io
+17 -27
View File
@@ -1,43 +1,33 @@
{{- if .Values.rbac.create -}}
{{if .Values.clusterRole.create -}}
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: kubeinvaders
name: {{ include "kubeinvaders.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
app: kubeinvaders
chart: {{ template "kubeinvaders.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
chart: {{ template "kubeinvaders.chart" $ }}
release: {{ $.Release.Name }}
heritage: {{ $.Release.Service }}
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "watch", "list", "delete"]
- apiGroups: ["batch", "extensions"]
resources: ["jobs"]
verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]
- apiGroups: [""]
resources: ["nodes"]
verbs: ["get", "watch", "list"]
{{- end -}}
{{- if or .Values.clusterRole.create .Values.clusterRole.name }}
resources: ["pods", "pods/log", "jobs"]
verbs: ["get", "list", "delete", "create"]
---
kind: ClusterRoleBinding
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: {{ template "kubeinvaders.clusterRoleName" . }}
name: {{ include "kubeinvaders.fullname" . }}
namespace: {{ .Release.Namespace }}
labels:
app: kubeinvaders
chart: {{ template "kubeinvaders.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
chart: {{ template "kubeinvaders.chart" $ }}
release: {{ $.Release.Name }}
heritage: {{ $.Release.Service }}
subjects:
- kind: ServiceAccount
name: {{ template "kubeinvaders.serviceAccountName" . }}
name: {{ template "kubeinvaders.serviceAccountName" $ }}
namespace: {{ .Release.Namespace }}
roleRef:
kind: Role
name: {{ include "kubeinvaders.fullname" . }}
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: kubeinvaders
{{- end -}}
{{- end -}}
@@ -1,7 +1,7 @@
apiVersion: v1
kind: Service
metadata:
name: kubeinvaders
name: {{ include "kubeinvaders.fullname" . }}
labels:
app.kubernetes.io/name: kubeinvaders
helm.sh/chart: {{ include "kubeinvaders.chart" . }}
@@ -3,7 +3,7 @@ kind: ServiceAccount
metadata:
annotations:
"helm.sh/hook": "pre-install"
name: kubeinvaders
name: {{ template "kubeinvaders.serviceAccountName" $ }}
labels:
app: {{ template "kubeinvaders.name" . }}
chart: {{ template "kubeinvaders.chart" . }}
@@ -2,7 +2,7 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: kubeinvaders-metrics
name: {{ include "kubeinvaders.fullname" . }}
labels:
app.kubernetes.io/name: kubeinvaders
helm.sh/chart: {{ include "kubeinvaders.chart" . }}
@@ -16,4 +16,4 @@ spec:
matchLabels:
app.kubernetes.io/name: kubeinvaders
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{- end }}
+32 -40
View File
@@ -1,9 +1,17 @@
# Default namespace target
target_namespace: "default"
# Default values for kubeinvaders.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
nameOverride: ""
fullnameOverride: ""
config:
# target_namespace where kubeinvaders should be allowed to kill pods
target_namespace: "default"
alienProximity: 10
hitsLimit: 1
updateTime: 0.5
rbac:
# Specifies whether RBAC resources should be created
create: true
@@ -21,22 +29,33 @@ clusterRole:
# true, a name based on fullname is generated
name: kubeinvaders
replicaCount: 1
image:
repository: luckysideburn/kubeinvaders
tag: v1.9
pullPolicy: Always
nameOverride: ""
fullnameOverride: ""
deployment:
replicaCount: 1
image:
repository: luckysideburn/kubeinvaders
tag: v1.9
pullPolicy: Always
extraEnv: []
# - name: FOO
# value: "BAR"
extraVolumes: []
# - name: tmp
# emptyDir: {}
extraVolumeMounts: []
# - name: tmp
# mountPath: /usr/local/openresty
resources: {}
nodeSelector: {}
tolerations: []
securityContext: {}
service:
type: ClusterIP
port: 8080
ingress:
enabled: true
enabled: false
legacyIngress: false
annotations:
nginx.ingress.kubernetes.io/ssl-redirect: "true"
hostName: ""
@@ -45,32 +64,5 @@ ingress:
# Use route_host only if ingress is disabled
route_host: ""
legacyIngress: false
extraEnv: []
# extraEnv:
# - name: ALIENPROXIMITY
# value: "10"
# - name: HITSLIMIT
# value: "1"
# - name: UPDATETIME
# value: "0.5"
extraVolumes: []
# - name: tmp
# emptyDir: {}
extraVolumeMounts: []
# - name: tmp
# mountPath: /usr/local/openresty
resources: {}
nodeSelector: {}
tolerations: []
securityContext: {}
# runAsUser: 999
# runAsGroup: 999
# fsGroup: 999
serviceMonitor:
enabled: false