helm-charts/azure-api-management-gateway/templates/deployment.yaml (192 lines of code) (raw):

{{- $authenticationType := .Values.gateway.auth.type | required ".Values.gateway.auth.type is required." -}} apiVersion: apps/v1 kind: Deployment metadata: name: {{ include "azure-api-management-gateway.fullname" . }} namespace: {{ .Release.Namespace | quote }} labels: {{- include "azure-api-management-gateway.labels" . | nindent 4 }} spec: {{- if not (quote .Values.replicaCount | empty) }} replicas: {{ .Values.replicaCount }} {{- end }} selector: matchLabels: {{- include "azure-api-management-gateway.selectorLabels" . | nindent 6 }} {{- with .Values.gateway.deployment.strategy }} strategy: {{- toYaml . | nindent 4 }} {{- end }} template: metadata: labels: {{- include "azure-api-management-gateway.labels" . | nindent 8 }} {{- if or .Values.dapr.enabled .Values.gateway.deployment.annotations }} annotations: {{- if .Values.gateway.deployment.annotations -}} {{- toYaml .Values.gateway.deployment.annotations | nindent 8 }} {{- end }} {{- if .Values.dapr.enabled }} dapr.io/enabled: "true" {{ if .Values.dapr.app.id -}} dapr.io/app-id: {{ .Values.dapr.app.id | quote }} {{- end }} dapr.io/config: {{ .Values.dapr.config | quote }} dapr.io/log-as-json: {{ .Values.dapr.logging.useJsonOutput | quote }} dapr.io/log-level: {{ .Values.dapr.logging.level | quote }} {{- end }} {{- end }} spec: {{- with .Values.gateway.deployment.dns.hostAliases }} hostAliases: {{- toYaml . | nindent 8 }} {{- end }} {{- if .Values.gateway.deployment.terminationGracePeriodSeconds }} terminationGracePeriodSeconds: {{ .Values.gateway.deployment.terminationGracePeriodSeconds }} {{- end }} {{- with .Values.imagePullSecrets }} imagePullSecrets: {{- toYaml . | nindent 8 }} {{- end }} {{- if .Values.serviceAccountName }} serviceAccountName: {{ .Values.serviceAccountName }} {{- end }} containers: - name: {{ .Chart.Name }} image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" imagePullPolicy: {{ .Values.image.pullPolicy }} env: {{- if eq (lower $authenticationType) "gatewaytoken" }} - name: config.service.auth valueFrom: secretKeyRef: {{- if .Values.secret.createSecret }} name: {{ include "azure-api-management-gateway.fullname" . }} {{- else }} name: {{ .Values.secret.existingSecretName }} {{- end }} key: gateway-key {{- end }} {{- if eq (lower $authenticationType) "azureadapp" }} - name: config.service.auth value: azureAdApp - name: config.service.auth.azureAd.clientSecret valueFrom: secretKeyRef: {{- if .Values.secret.createSecret }} name: {{ include "azure-api-management-gateway.fullname" . }} {{- else }} name: {{ .Values.secret.existingSecretName }} {{- end }} key: azure-ad-app-secret {{- end }} - name: runtime.deployment.mechanism value: "Helm" - name: runtime.deployment.artifact.version value: {{ .Chart.Version | quote }} - name: runtime.deployment.artifact.source value: "Official" - name: runtime.deployment.orchestrator.type value: "Kubernetes" - name: runtime.deployment.highAvailability.enabled value: {{ .Values.highAvailability.enabled | quote }} - name: runtime.deployment.dapr.enabled value: {{ .Values.dapr.enabled | quote }} - name: neighborhood.host value: {{ include "azure-api-management-gateway.instanceDiscoveryService" . }} {{- if .Values.gateway.deployment.network.proxy.http }} - name: HTTP_PROXY value: {{ .Values.gateway.deployment.network.proxy.http | quote }} {{- end }} {{- if .Values.gateway.deployment.network.proxy.https }} - name: HTTPS_PROXY value: {{ .Values.gateway.deployment.network.proxy.https | quote }} {{- end }} {{- if .Values.gateway.deployment.network.proxy.bypass }} - name: NO_PROXY value: {{ .Values.gateway.deployment.network.proxy.bypass | quote }} {{- end }} envFrom: - configMapRef: name: {{ include "azure-api-management-gateway.fullname" . }} ports: - name: http containerPort: 8080 - name: https containerPort: 8081 # Container port used for rate limiting to discover instances - name: rate-limit-dc protocol: UDP containerPort: {{ .Values.service.ports.instance.synchronization }} # Container port used for instances to send heartbeats to each other - name: dc-heartbeat protocol: UDP containerPort: {{ .Values.service.ports.instance.heartbeat }} readinessProbe: {{- toYaml .Values.probes.readiness | nindent 12 }} livenessProbe: {{- toYaml .Values.probes.liveness | nindent 12 }} startupProbe: {{- toYaml .Values.probes.startup | nindent 12 }} resources: {{- toYaml .Values.resources | nindent 12 }} {{- with .Values.securityContext }} securityContext: {{- toYaml . | nindent 12 }} {{- end }} {{- if or (.Values.gateway.configuration.backup.enabled) (eq (lower .Values.observability.logs.local.type) "localsyslog") }} volumeMounts: {{- if .Values.gateway.configuration.backup.enabled }} - mountPath: /apim/config name: {{ include "azure-api-management-gateway.fullname" . }} {{- end }} {{- if eq (lower .Values.observability.logs.local.type) "localsyslog" }} {{- $localsyslogEndpoint := .Values.observability.logs.local.localsyslog.endpoint | required "No endpoint for localsyslog was specified in observability.logs.local.localsyslog.endpoint." }} - mountPath: {{ $localsyslogEndpoint }} name: logs {{- end }} {{- end }} {{- with .Values.podSecurityContext }} securityContext: {{- toYaml . | nindent 8 }} {{- end }} {{- if .Values.priorityClassName }} priorityClassName: {{ .Values.priorityClassName }} {{- end }} {{- if .Values.highAvailability.enabled }} topologySpreadConstraints: - maxSkew: 1 topologyKey: topology.kubernetes.io/zone whenUnsatisfiable: {{ .Values.highAvailability.podTopologySpread.whenUnsatisfiable }} labelSelector: matchLabels: {{- include "azure-api-management-gateway.selectorLabels" . | nindent 12 }} {{- end }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.affinity }} affinity: {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.tolerations }} tolerations: {{- toYaml . | nindent 8 }} {{- end }} {{- if or (eq (lower .Values.observability.logs.local.type) "localsyslog") (.Values.gateway.configuration.backup.enabled) }} volumes: {{- if .Values.gateway.configuration.backup.enabled }} - name: {{ include "azure-api-management-gateway.fullname" . }} persistentVolumeClaim: {{ if .Values.gateway.configuration.backup.persistentVolumeClaim.create -}} claimName: {{ include "azure-api-management-gateway.fullname" . }} {{ else -}} claimName: {{ .Values.gateway.configuration.backup.persistentVolumeClaim.existingName }} {{- end }} {{- end }} {{- if eq (lower .Values.observability.logs.local.type) "localsyslog" }} - hostPath: path: /dev/log type: Socket name: logs {{- end }} {{- end }}