snippet service_sample_spec apiVersion: v1 kind: Service metadata: {{- if .Values.$1.service.annotations }} annotations: {{ toYaml .Values.$1.service.annotations | indent 4 }} {{- end }} labels: {{- if .Values.$1.service.labels }} {{ toYaml .Values.$1.service.labels | indent 4 }} {{- end }} app: {{ template "$2.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} component: "{{ .Values.$1.name }}" heritage: {{ .Release.Service }} release: {{ .Release.Name }} name: {{ template "$2.$1.fullname" . }} spec: clusterIP: "{{ .Values.$1.service.clusterIP }}" {{- if .Values.$1.service.externalIPs }} externalIPs: {{ toYaml .Values.$1.service.externalIPs | indent 4 }} {{- end }} {{- if .Values.$1.service.loadBalancerIP }} loadBalancerIP: "{{ .Values.$1.service.loadBalancerIP }}" {{- end }} {{- if .Values.$1.service.loadBalancerSourceRanges }} loadBalancerSourceRanges: {{ toYaml .Values.$1.service.loadBalancerSourceRanges | indent 4 }} {{- end }} healthCheckNodePort: {{ .Values.$1.service.healthCheckNodePort }} ports: - name: http port: 80 protocol: TCP targetPort: {{ .Values.$1.service.targetPorts.http }} {{- if (and (eq .Values.$1.service.type "NodePort") (not (empty .Values.$1.service.nodePorts.http))) }} nodePort: {{ .Values.$1.service.nodePorts.http }} {{- end }} - name: https port: 443 protocol: TCP targetPort: {{ .Values.$1.service.targetPorts.https }} {{- if (and (eq .Values.$1.service.type "NodePort") (not (empty .Values.$1.service.nodePorts.https))) }} nodePort: {{ .Values.$1.service.nodePorts.https }} {{- end }} {{- range $key, $value := .Values.tcp }} - name: "{{ $key }}-tcp" port: {{ $key }} protocol: TCP targetPort: "{{ $key }}-tcp" {{- end }} {{- range $key, $value := .Values.udp }} - name: "{{ $key }}-udp" port: {{ $key }} protocol: UDP targetPort: "{{ $key }}-udp" {{- end }} selector: app: {{ template "${2:chartName}.name" . }} component: "{{ .Values.$1.name }}" release: {{ .Release.Name }} type: "{{ .Values.${1:value_key}.service.type }}" snippet service_spec apiVersion: v1 kind: Service metadata: {{- if .Values.$1.service.annotations }} annotations: {{ toYaml .Values.$1.service.annotations | indent 4 }} {{- end }} labels: {{- if .Values.$1.service.labels }} {{ toYaml .Values.$1.service.labels | indent 4 }} {{- end }} app: {{ template "$2.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} component: "{{ .Values.$1.name }}" heritage: {{ .Release.Service }} release: {{ .Release.Name }} name: {{ template "${2:chartName}.${1:value_key}.fullname" . }} # spec ${0} snippet annotations_spec {{- if .Values.$1.service.annotations }} annotations: {{ toYaml .Values.${1:value_key}.service.annotations | indent 4 }} {{- end }} ${0} snippet labels_spec labels: {{- if .Values.$1.service.labels }} {{ toYaml .Values.$1.service.labels | indent 4 }} {{- end }} app: {{ template "$2.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} component: "{{ .Values.$1.name }}" heritage: {{ .Release.Service }} release: {{ .Release.Name }} name: {{ template "${2:chartName}.${1:value_key}.fullname" . }} ${0} snippet service_spec spec: type: "{{ .Values.$1.service.type }}" clusterIP: "{{ .Values.$1.service.clusterIP }}" {{- if .Values.$1.service.externalIPs }} externalIPs: {{ toYaml .Values.$1.service.externalIPs | indent 4 }} {{- end }} {{- if .Values.$1.service.loadBalancerIP }} loadBalancerIP: "{{ .Values.$1.service.loadBalancerIP }}" {{- end }} {{- if .Values.$1.service.loadBalancerSourceRanges }} loadBalancerSourceRanges: {{ toYaml .Values.$1.service.loadBalancerSourceRanges | indent 4 }} {{- end }} {{- if and (semverCompare ">=1.7-0" .Capabilities.KubeVersion.GitVersion) (.Values.$1.service.externalTrafficPolicy) }} externalTrafficPolicy: "{{ .Values.$1.service.externalTrafficPolicy }}" {{- end }} {{- if and (semverCompare ">=1.7-0" .Capabilities.KubeVersion.GitVersion) (.Values.$1.service.healthCheckNodePort) }} healthCheckNodePort: {{ .Values.${1:value_key}.service.healthCheckNodePort }} {{- end }} ${0} snippet ports_spec ports: ${0} snippet portHTTP_spec - name: http port: 80 protocol: TCP targetPort: {{ .Values.$1.service.targetPorts.http }} {{- if (and (eq .Values.$1.service.type "NodePort") (not (empty .Values.$1.service.nodePorts.http))) }} nodePort: {{ .Values.${1:value_key}.service.nodePorts.http }} {{- end }} ${0} snippet portHTTPS_spec - name: https port: 443 protocol: TCP targetPort: {{ .Values.$1.service.targetPorts.https }} {{- if (and (eq .Values.$1.service.type "NodePort") (not (empty .Values.$1.service.nodePorts.https))) }} nodePort: {{ .Values.${1:value_key}.service.nodePorts.https }} {{- end }} ${0} snippet portTCP_spec {{- range $key, $value := .Values.tcp }} - name: "{{ $key }}-tcp" port: {{ $key }} protocol: TCP targetPort: "{{ $key }}-tcp" {{- end }} ${0} snippet portUDP_spec {{- range $key, $value := .Values.udp }} - name: "{{ $key }}-udp" port: {{ $key }} protocol: UDP targetPort: "{{ $key }}-udp" {{- end }} ${0} snippet selector_spec selector: app: {{ template "${2:chartName}.name" . }} component: "{{ .Values.${1:value_key}.name }}" release: {{ .Release.Name }} ${0} snippet deploy_sample_spec {{- if .Values.$1.enabled }} apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: {{ template "$2.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} component: "{{ .Values.$1.name }}" heritage: {{ .Release.Service }} release: {{ .Release.Name }} name: {{ template "$2.$1.fullname" . }} spec: replicas: {{ .Values.$1.replicaCount }} revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} template: metadata: {{- if .Values.$1.podAnnotations }} annotations: {{ toYaml .Values.$1.podAnnotations | indent 8 }} {{- end }} labels: app: {{ template "$2.name" . }} component: "{{ .Values.$1.name }}" release: {{ .Release.Name }} {{- if .Values.$1.podLabels }} {{ toYaml .Values.$1.podLabels | indent 8 }} {{- end }} spec: {{- if .Values.imagePullSecrets }} imagePullSecrets: {{ toYaml .Values.imagePullSecrets | indent 8 }} {{- end }} containers: - name: {{ template "${2:chartName}.name" . }}-{{ .Values.$1.name }} image: "{{ .Values.$1.image.repository }}:{{ .Values.$1.image.tag }}" imagePullPolicy: "{{ .Values.$1.image.pullPolicy }}" args: {{- range $key, $value := .Values.$1.extraArgs }} {{- if $value }} - --{{ $key }}={{ $value }} {{- else }} - --{{ $key }} {{- end }} {{- end }} livenessProbe: httpGet: path: /healthz port: 8080 scheme: HTTP initialDelaySeconds: 30 timeoutSeconds: 5 ports: - name: http containerPort: 8080 protocol: TCP resources: {{ toYaml .Values.$1.resources | indent 12 }} {{- if .Values.$1.nodeSelector }} nodeSelector: {{ toYaml .Values.$1.nodeSelector | indent 8 }} {{- end }} {{- if .Values.$1.tolerations }} tolerations: {{ toYaml .Values.$1.tolerations | indent 8 }} {{- end }} {{- if .Values.$1.affinity }} affinity: {{ toYaml .Values.${1:value_key}.affinity | indent 8 }} {{- end }} terminationGracePeriodSeconds: 60 {{- end }} snippet deploy_spec {{- if .Values.$1.enabled }} apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: app: {{ template "$2.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} component: "{{ .Values.$1.name }}" heritage: {{ .Release.Service }} release: {{ .Release.Name }} name: {{ template "${2:chartName}.${1:value_key}.fullname" . }} # spec # containers_spec # livenessProbe_spec # PersistentVolumeClaim_spec # initContainers_spec # resources_spec # nodeselector_spec # tolerations_spec # affinity_spec ${0} snippet spec_spec spec: replicas: {{ .Values.$1.replicaCount }} revisionHistoryLimit: {{ .Values.revisionHistoryLimit }} template: metadata: {{- if .Values.$1.podAnnotations }} annotations: {{ toYaml .Values.$1.podAnnotations | indent 8 }} {{- end }} labels: app: {{ template "${2:chartName}.name" . }} component: "{{ .Values.$1.name }}" release: {{ .Release.Name }} {{- if .Values.$1.podLabels }} {{ toYaml .Values.${1:value_key}.podLabels | indent 8 }} {{- end }} spec: {{- if .Values.imagePullSecrets }} imagePullSecrets: {{ toYaml .Values.imagePullSecrets | indent 8 }} {{- end }} ${0} snippet imagePullSecrets_spec {{- if .Values.imagePullSecrets }} imagePullSecrets: {{ toYaml .Values.imagePullSecrets | indent 8 }} {{- end }} ${0} snippet imagePullPolicy_spec imagePullPolicy: ${1:imagePullPolicy} ${0} snippet containers_spec containers: - name: {{ template "${2:chartName}.name" . }}-{{ .Values.$1.name }} image: "{{ .Values.$1.image.repository }}:{{ .Values.$1.image.tag }}" imagePullPolicy: "{{ .Values.${1:value_key}.image.pullPolicy }}" ${0} snippet args_spec args: {{- range $key, $value := .Values.${1:value_key}.extraArgs }} {{- if $value }} - --{{ $key }}={{ $value }} {{- else }} - --{{ $key }} {{- end }} {{- end }} ${0} snippet livenessProbe_spec livenessProbe: httpGet: path: /healthz port: 8080 scheme: HTTP initialDelaySeconds: 30 timeoutSeconds: 5 ${0} snippet readinessProbe_spec readinessProbe: httpGet: path: /go/api/v1/health port: 8153 initialDelaySeconds: {{ .Values.$1.healthCheck.initialDelaySeconds }} periodSeconds: {{ .Values.$1.healthCheck.periodSeconds }} failureThreshold: {{ .Values.$1.healthCheck.failureThreshold }} ${0} snippet resources_spec resources: {{ toYaml .Values.${1:value_key}.resources | indent 12 }} ${0} snippet nodeselector_spec {{- if .Values.$1.nodeSelector }} nodeSelector: {{ toYaml .Values.${1:value_key}.nodeSelector | indent 8 }} {{- end }} ${0} snippet tolerations_spec {{- if .Values.$1.tolerations }} tolerations: {{ toYaml .Values.${1:value_key}.tolerations | indent 8 }} {{- end }} ${0} snippet affinity_spec {{- if .Values.$1.affinity }} affinity: {{ toYaml .Values.${1:value_key}.affinity | indent 8 }} {{- end }} terminationGracePeriodSeconds: 60 {{- end }} ${0} snippet PersistentVolumeClaim_spec kind: PersistentVolumeClaim apiVersion: v1 metadata: name: {{ template "${2}.$1.fullname" . }} labels: app: {{ template "${2:chartName}.name" . }} chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" spec: accessModes: - {{ .Values.$1.persistence.accessMode | quote }} resources: requests: storage: {{ .Values.$1.persistence.size | quote }} {{- if .Values.$1.persistence.storageClass }} {{- if (eq "-" .Values.$1.persistence.storageClass) }} storageClassName: "" {{- else }} storageClassName: "{{ .Values.${1:value_key}.persistence.storageClass }}" {{- end }} {{- end }} {{- end }} {{- end }} ${0} snippet configMap_spec {{- if .Values.artifactory.enabled -}} apiVersion: v1 kind: ConfigMap metadata: name: {{ template "${2:chartName}.fullname" . }}-${1:value_key}-config labels: app: {{ template "${2}.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} heritage: {{ .Release.Service }} release: {{ .Release.Name }} data: ${3:nameOfConfigFile}.conf: | # data goes here {{- end -}} ${0} snippet initContainers_spec {{- if .Values.$1.initContainers }} initContainers: - name: wait-workers image: "{{ .Values.$1.image.repository }}:{{ .Values.$1.image.tag }}" imagePullPolicy: {{ .Values.${1:value_key}.image.pullPolicy }} # env command: - sh - -c - | until printf "." && nc -z -w 2 {{ template "${2:chartName}.fullname" . }} {{ .Values.postgresql.service.port }}; do sleep 2; done; echo 'PostgreSQL OK ✓' # args {{- end }} ${0} snippet pvc_spec kind: PersistentVolumeClaim apiVersion: v1 metadata: name: {{ template "$2.fullname" . }} labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" release: "{{ .Release.Name }}" heritage: "{{ .Release.Service }}" app: {{ template "${2:chartName}.fullname" . }} spec: accessModes: - {{ .Values.persistence.accessMode | quote }} resources: requests: storage: {{ .Values.persistence.size | quote }} {{- if .Values.persistence.storageClass }} {{- if (eq "-" .Values.persistence.storageClass) }} storageClassName: "" {{- else }} storageClassName: "{{ .Values.persistence.storageClass }}" {{- end }} {{- end }} {{- end }} ${0} snippet pv_nfs_spec apiVersion: v1 kind: PersistentVolume metadata: name: {{ template "$2.fullname" . }}-data-pv labels: app: {{ template "$2.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} heritage: {{ .Release.Service }} release: {{ .Release.Name }} id: {{ template "${2:chartName}.name" . }}-data-pv type: nfs-volume spec: capacity: storage: {{ .Values.$1.persistence.nfs.capacity }} accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain nfs: server: {{ .Values.$1.persistence.nfs.ip }} path: "{{ .Values.${1:value_key}.persistence.nfs.haDataMount }}" readOnly: false ${0} snippet pvc_hostpath_spec {{- if and .Values.persistence.enabled .Values.persistence.$1.hostPath (not .Values.persistence.$1.existingClaim) -}} apiVersion: v1 kind: PersistentVolume metadata: name: {{ template "${2:chartName}.fullname" . }}-$1 spec: accessModes: - {{ .Values.persistence.$1.accessMode | quote }} capacity: storage: {{ .Values.persistence.$1.size | quote }} hostPath: path: {{ .Values.persistence.${1:value_key}.hostPath | quote }} {{- end -}} ${0} snippet deploy_values $1: name: ${1:value_key} image: repository: tag: pullPolicy: IfNotPresent hostNetwork: false dnsPolicy: ClusterFirst daemonset: useHostPort: false podLabels: {} scope: enabled: false namespace: "" # defaults to .Release.Namespace extraArgs: {} extraEnvs: [] kind: Deployment updateStrategy: {} minReadySeconds: 0 tolerations: [] affinity: {} nodeSelector: {} podAnnotations: {} replicaCount: 1 minAvailable: 1 resources: {} autoscaling: enabled: false extraContainers: {} extraVolumeMounts: {} extraVolumes: {} extraInitContainers: [] lifecycle: {} revisionHistoryLimit: 10 ${0} snippet rbac_values ${1:value_key}: rbac: create: true serviceAccount: create: true name: imagePullSecrets: [] ${0} snippet service_values ${1:value_key}: service: annotations: {} labels: {} clusterIP: "" externalIPs: [] loadBalancerIP: "" loadBalancerSourceRanges: [] externalTrafficPolicy: "" healthCheckNodePort: 0 targetPorts: http: http https: https type: LoadBalancer nodePorts: http: "" https: "" ${0} snippet readinessProbe_values ${1:value_key}: readinessProbe: failureThreshold: 3 initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 port: 10254 ${0} snippet livenessProbe_values ${1:value_key}: livenessProbe: failureThreshold: 3 initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 port: 10254 ${0}