144 lines
4.9 KiB
YAML
144 lines
4.9 KiB
YAML
{{- $gateway := index .Values "gateways" "istio-ingressgateway" }}
|
|
{{- if ne $gateway.injectionTemplate "" }}
|
|
{{/* This provides a minimal gateway, ready to be injected.
|
|
Any settings from values.gateways should be here - these are options specific to the gateway.
|
|
Global settings, like the image, various env vars and volumes, etc will be injected.
|
|
The normal Deployment is not suitable for this, as the original pod spec will override the injection template. */}}
|
|
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: {{ $gateway.name | default "istio-ingressgateway" }}
|
|
namespace: {{ .Release.Namespace }}
|
|
labels:
|
|
{{ $gateway.labels | toYaml | indent 4 }}
|
|
release: {{ .Release.Name }}
|
|
istio.io/rev: {{ .Values.revision | default "default" }}
|
|
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }}
|
|
operator.istio.io/component: "IngressGateways"
|
|
spec:
|
|
{{- if not $gateway.autoscaleEnabled }}
|
|
{{- if $gateway.replicaCount }}
|
|
replicas: {{ $gateway.replicaCount }}
|
|
{{- end }}
|
|
{{- end }}
|
|
selector:
|
|
matchLabels:
|
|
{{ $gateway.labels | toYaml | indent 6 }}
|
|
strategy:
|
|
rollingUpdate:
|
|
maxSurge: {{ $gateway.rollingMaxSurge }}
|
|
maxUnavailable: {{ $gateway.rollingMaxUnavailable }}
|
|
template:
|
|
metadata:
|
|
labels:
|
|
{{ $gateway.labels | toYaml | indent 8 }}
|
|
{{- if eq .Release.Namespace "istio-system"}}
|
|
heritage: Tiller
|
|
release: istio
|
|
chart: gateways
|
|
{{- end }}
|
|
install.operator.istio.io/owning-resource: {{ .Values.ownerName | default "unknown" }}
|
|
operator.istio.io/component: "IngressGateways"
|
|
sidecar.istio.io/inject: "true"
|
|
{{- with .Values.revision }}
|
|
istio.io/rev: {{ . }}
|
|
{{- end }}
|
|
annotations:
|
|
{{- if .Values.meshConfig.enablePrometheusMerge }}
|
|
prometheus.io/port: "15020"
|
|
prometheus.io/scrape: "true"
|
|
prometheus.io/path: "/stats/prometheus"
|
|
{{- end }}
|
|
sidecar.istio.io/inject: "true"
|
|
inject.istio.io/templates: "{{ $gateway.injectionTemplate }}"
|
|
{{- if $gateway.podAnnotations }}
|
|
{{ toYaml $gateway.podAnnotations | indent 8 }}
|
|
{{ end }}
|
|
spec:
|
|
{{- if not $gateway.runAsRoot }}
|
|
securityContext:
|
|
runAsUser: 1337
|
|
runAsGroup: 1337
|
|
runAsNonRoot: true
|
|
fsGroup: 1337
|
|
{{- end }}
|
|
serviceAccountName: {{ $gateway.name | default "istio-ingressgateway" }}-service-account
|
|
{{- if .Values.global.priorityClassName }}
|
|
priorityClassName: "{{ .Values.global.priorityClassName }}"
|
|
{{- end }}
|
|
containers:
|
|
- name: istio-proxy
|
|
image: auto
|
|
ports:
|
|
{{- range $key, $val := $gateway.ports }}
|
|
- containerPort: {{ $val.targetPort | default $val.port }}
|
|
protocol: {{ $val.protocol | default "TCP" }}
|
|
{{- end }}
|
|
- containerPort: 15090
|
|
protocol: TCP
|
|
name: http-envoy-prom
|
|
{{- if not $gateway.runAsRoot }}
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
capabilities:
|
|
drop:
|
|
- ALL
|
|
privileged: false
|
|
readOnlyRootFilesystem: true
|
|
{{- end }}
|
|
resources:
|
|
{{- if $gateway.resources }}
|
|
{{ toYaml $gateway.resources | indent 12 }}
|
|
{{- else }}
|
|
{{ toYaml .Values.global.defaultResources | indent 12 }}
|
|
{{- end }}
|
|
env:
|
|
{{- if not $gateway.runAsRoot }}
|
|
- name: ISTIO_META_UNPRIVILEGED_POD
|
|
value: "true"
|
|
{{- end }}
|
|
{{- range $key, $val := $gateway.env }}
|
|
- name: {{ $key }}
|
|
value: {{ $val }}
|
|
{{- end }}
|
|
volumeMounts:
|
|
{{- range $gateway.secretVolumes }}
|
|
- name: {{ .name }}
|
|
mountPath: {{ .mountPath | quote }}
|
|
readOnly: true
|
|
{{- end }}
|
|
{{- range $gateway.configVolumes }}
|
|
{{- if .mountPath }}
|
|
- name: {{ .name }}
|
|
mountPath: {{ .mountPath | quote }}
|
|
readOnly: true
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- if $gateway.additionalContainers }}
|
|
{{ toYaml $gateway.additionalContainers | indent 8 }}
|
|
{{- end }}
|
|
volumes:
|
|
{{- range $gateway.secretVolumes }}
|
|
- name: {{ .name }}
|
|
secret:
|
|
secretName: {{ .secretName | quote }}
|
|
optional: true
|
|
{{- end }}
|
|
{{- range $gateway.configVolumes }}
|
|
- name: {{ .name }}
|
|
configMap:
|
|
name: {{ .configMapName | quote }}
|
|
optional: true
|
|
{{- end }}
|
|
affinity:
|
|
{{ include "nodeaffinity" (dict "global" .Values.global "nodeSelector" $gateway.nodeSelector) | trim | indent 8 }}
|
|
{{- include "podAntiAffinity" $gateway | indent 6 }}
|
|
{{- if $gateway.tolerations }}
|
|
tolerations:
|
|
{{ toYaml $gateway.tolerations | indent 6 }}
|
|
{{- else if .Values.global.defaultTolerations }}
|
|
tolerations:
|
|
{{ toYaml .Values.global.defaultTolerations | indent 6 }}
|
|
{{- end }}
|
|
{{- end }}
|