diff --git a/charts/microservice/templates/_helpers.tpl b/charts/microservice/templates/_helpers.tpl new file mode 100644 index 00000000..851405d4 --- /dev/null +++ b/charts/microservice/templates/_helpers.tpl @@ -0,0 +1,57 @@ +#{{- define "microservice.fullname" -}} +#{{- printf "%s-%s" (default .Chart.Name .Values.env.microservice.fullname) .Release.Name | trunc 63 | trimSuffix "-" }} +#{{- end -}} + +#{{- define "microservice.labels" -}} +#app.kubernetes.io/name: {{ .Chart.Name | quote }} +#helm.sh/chart: {{ printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | replace ":" "-" | quote }} +#app.kubernetes.io/instance: {{ .Release.Name | quote }} +#app.kubernetes.io/version: {{ .Chart.AppVersion | replace "+" "_" | replace ":" "-" | quote }} +#app.kubernetes.io/managed-by: {{ .Release.Service | quote }} +#{{- end -}} + +#{{- define "microservice.selectorLabels" -}} +#app: {{ default .Values.env.microservice.selectorLabels .Chart.Name | quote }} +#{{- end -}} + +#{{- define "microservice.matchLabels" -}} +#app: {{ default .Values.env.microservice.selectorLabels .Chart.Name | quote }} +#{{- end -}} + +{{/* Define the "microservice.fullname" template */}} +{{- define "microservice.fullname" -}} +{{- printf "%s-%s" .Release.Name .Chart.Name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* Define the "microservice.name" template (if needed) */}} +{{- define "microservice.name" -}} +{{- .Chart.Name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* Define the "microservice.chart" template (if needed) */}} +{{- define "microservice.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* Define other templates as necessary */}} +{{/* Define the "microservice.labels" template */}} +{{- define "microservice.labels" -}} +{{- with .Values.labels }} +{{- toYaml . | nindent 4 }} +{{- end }} +{{- end }} + +{{/* Define the "microservice.matchLabels" template */}} +{{- define "microservice.matchLabels" -}} +{{- with .Values.app.name }} + app: {{ . }} +{{- end }} +{{- end }} + +{{/* Define the "microservice.selectorLabels" template */}} +{{- define "microservice.selectorLabels" -}} +{{- with .Values.app.name }} + app: {{ . }} +{{- end }} +{{- end }} + diff --git a/charts/microservice/templates/config-map.yaml b/charts/microservice/templates/config-map.yaml new file mode 100644 index 00000000..1869cff5 --- /dev/null +++ b/charts/microservice/templates/config-map.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "microservice.fullname" . }} + namespace: {{ .Release.Namespace }} +data: + {{- range $key, $value := .Values.configMap.data }} + {{ $key }}: {{ $value | quote }} + {{- end }} diff --git a/charts/microservice/templates/deployment.yaml b/charts/microservice/templates/deployment.yaml index 13f013f7..7a6f9632 100644 --- a/charts/microservice/templates/deployment.yaml +++ b/charts/microservice/templates/deployment.yaml @@ -1,24 +1,69 @@ -apiVersion: apps/v1 +#apiVersion: apps/v1 +#kind: Deployment +#metadata: + # name: {{ include "microservice.fullname" . }} + #labels: + # {{- include "microservice.labels" . | nindent 4 }} +#spec: + # replicas: {{ .Values.replicaCount }} + #selector: + # matchLabels: + # {{- include "microservice.matchLabels" . | nindent 6 }} + #template: + # metadata: + # labels: + # {{- include "microservice.selectorLabels" . | nindent 8 }} + #spec: + # containers: + # - name: {{ .Chart.Name }} + # image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + # imagePullPolicy: {{ .Values.image.pullPolicy }} + + # ports: + # - name: http + # containerPort: 80 + # protocol: TCP + + apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "microservice.fullname" . }} + namespace: {{ .Release.Namespace }} labels: - {{- include "microservice.labels" . | nindent 4 }} + app: {{ .Values.app.name }} spec: - replicas: {{ .Values.replicaCount }} + replicas: {{ .Values.deployment.replicas }} selector: matchLabels: - {{- include "microservice.selectorLabels" . | nindent 6 }} + app: {{ .Values.app.name }} template: metadata: labels: - {{- include "microservice.selectorLabels" . | nindent 8 }} + app: {{ .Values.app.name }} spec: + serviceAccountName: {{ include "microservice.fullname" . }} containers: - - name: {{ .Chart.Name }} + - name: {{ .Values.app.name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - - name: http - containerPort: 80 - protocol: TCP + - containerPort: {{ .Values.service.targetPort }} + env: + - name: CONFIG_FILE + valueFrom: + configMapKeyRef: + name: {{ include "microservice.fullname" . }} + key: {{ .Values.configMap.key }} + - name: SECRET_KEY + valueFrom: + secretKeyRef: + name: {{ include "microservice.fullname" . }} + key: {{ .Values.secret.key }} + + - name: PASSWORD + valueFrom: + secretKeyRef: + name: {{ .Values.secret.name }} + key: {{ .Values.secret.passwordKey }} + + diff --git a/charts/microservice/templates/secret-manager.yaml b/charts/microservice/templates/secret-manager.yaml new file mode 100644 index 00000000..46d9fa15 --- /dev/null +++ b/charts/microservice/templates/secret-manager.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "microservice.fullname" . }} + name: {{ .Values.secret.name }} + namespace: {{ .Release.Namespace }} +type: Opaque +data: + {{ .Values.secret.key }}: {{ .Values.secret.value | b64enc }} diff --git a/charts/microservice/templates/service-account.yaml b/charts/microservice/templates/service-account.yaml new file mode 100644 index 00000000..89355096 --- /dev/null +++ b/charts/microservice/templates/service-account.yaml @@ -0,0 +1,6 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "microservice.fullname" . }} + labels: + app: {{ include "microservice.name" . }} diff --git a/charts/microservice/templates/service.yaml b/charts/microservice/templates/service.yaml index 1ace41b7..4e511027 100644 --- a/charts/microservice/templates/service.yaml +++ b/charts/microservice/templates/service.yaml @@ -1,15 +1,30 @@ -apiVersion: v1 +#apiVersion: v1 +#kind: Service +#metadata: + # name: {{ include "microservice.fullname" . }} + #labels: + # {{- include "microservice.labels" . | nindent 4 }} +#spec: + # type: {{ .Values.service.type }} + #ports: + # - port: {{ .Values.service.port }} + # targetPort: http + # protocol: TCP + #name: http + #selector: + # {{- include "microservice.selectorLabels" . | nindent 4 }} + + apiVersion: v1 kind: Service metadata: name: {{ include "microservice.fullname" . }} + namespace: {{ .Release.Namespace }} labels: - {{- include "microservice.labels" . | nindent 4 }} + {{ include "microservice.labels" . }} # Include microservice.labels template spec: - type: {{ .Values.service.type }} ports: - port: {{ .Values.service.port }} - targetPort: http - protocol: TCP - name: http + targetPort: {{ .Values.service.targetPort }} selector: - {{- include "microservice.selectorLabels" . | nindent 4 }} + app: {{ .Values.app.name }} + diff --git a/charts/microservice/values.yaml b/charts/microservice/values.yaml index 67e2ed03..2b948abb 100644 --- a/charts/microservice/values.yaml +++ b/charts/microservice/values.yaml @@ -1,10 +1,46 @@ -replicaCount: 1 +#replicaCount: 3 + +#image: + # repository: nginx # Replace with your microservice image name + #pullPolicy: IfNotPresent + #tags: + # - "latest" + #- "stable" + #- "alpine" # Replace with your microservice image tag +#env: + # microservice: + # selectorLabels: "micro" + # fullname: "k8s" + +#service: + #type: ClusterIP + #port: 80 + + + + + app: + name: my-microservice + +deployment: + replicas: 2 # Example number of replicas for your deployment image: - repository: nginx # your microservice image name - pullPolicy: IfNotPresent - tag: "latest" # your microservice image tag + repository: nginx # Replace with your Docker image repository URL/name + tag: latest # Replace with your Docker image tag service: - type: ClusterIP - port: 80 + port: 80 # Example service port + targetPort: 8080 # Example target port + +configMap: + name: my-microservice-config + key: configKey + +secret: + name: new-microservice-secret + key: secretKey + value: my-secret-value + passwordKey: password +password: my-secret-password +