agones.dev/agones@v1.53.0/install/helm/agones/templates/extensions-deployment.yaml (about) 1 # Copyright 2022 Google LLC All Rights Reserved. 2 # 3 # Licensed under the Apache License, Version 2.0 (the "License"); 4 # you may not use this file except in compliance with the License. 5 # You may obtain a copy of the License at 6 # 7 # http://www.apache.org/licenses/LICENSE-2.0 8 # 9 # Unless required by applicable law or agreed to in writing, software 10 # distributed under the License is distributed on an "AS IS" BASIS, 11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 # See the License for the specific language governing permissions and 13 # limitations under the License. 14 15 apiVersion: apps/v1 16 kind: Deployment 17 metadata: 18 name: agones-extensions 19 namespace: {{ .Release.Namespace }} 20 labels: 21 component: extensions 22 app: {{ template "agones.name" . }} 23 chart: {{ template "agones.chart" . }} 24 release: {{ .Release.Name }} 25 heritage: {{ .Release.Service }} 26 spec: 27 selector: 28 matchLabels: 29 agones.dev/role: extensions 30 app: {{ template "agones.name" . }} 31 release: {{ .Release.Name }} 32 heritage: {{ .Release.Service }} 33 replicas: {{ .Values.agones.extensions.replicas }} 34 strategy: 35 {{- if .Values.agones.extensions.updateStrategy }} 36 {{ toYaml .Values.agones.extensions.updateStrategy | indent 4 }} 37 {{- else }} 38 type: Recreate 39 {{- end }} 40 template: 41 metadata: 42 annotations: 43 {{- if .Values.agones.extensions.generateTLS }} 44 revision/tls-cert: {{ .Release.Revision | quote }} 45 {{- end }} 46 {{- if and (.Values.agones.metrics.prometheusServiceDiscovery) (.Values.agones.metrics.prometheusEnabled) }} 47 prometheus.io/scrape: "true" 48 prometheus.io/port: {{ .Values.agones.extensions.http.port | quote }} 49 prometheus.io/path: "/metrics" 50 {{- end }} 51 {{- if .Values.agones.extensions.annotations }} 52 {{- toYaml .Values.agones.extensions.annotations | nindent 8 }} 53 {{- end }} 54 labels: 55 agones.dev/role: extensions 56 app: {{ template "agones.name" . }} 57 release: {{ .Release.Name }} 58 heritage: {{ .Release.Service }} 59 {{- if .Values.agones.extensions.labels }} 60 {{- toYaml .Values.agones.extensions.labels | nindent 8 }} 61 {{- end }} 62 spec: 63 {{- if .Values.agones.extensions.topologySpreadConstraints }} 64 topologySpreadConstraints: 65 {{- toYaml .Values.agones.extensions.topologySpreadConstraints | nindent 8 }} 66 {{- end }} 67 affinity: 68 {{- if .Values.agones.extensions.affinity }} 69 {{- if .Values.agones.requireDedicatedNodes }} 70 {{- fail "agones.extensions.affinity and agones.requireDedicatedNodes cannot be set at the same time!" }} 71 {{- end}} 72 {{- end}} 73 {{- if .Values.agones.extensions.affinity }} 74 {{ toYaml .Values.agones.extensions.affinity | indent 8 }} 75 {{- else}} 76 nodeAffinity: 77 {{- if .Values.agones.requireDedicatedNodes }} 78 requiredDuringSchedulingIgnoredDuringExecution: 79 nodeSelectorTerms: 80 - matchExpressions: 81 {{- else}} 82 preferredDuringSchedulingIgnoredDuringExecution: 83 - weight: 1 84 preference: 85 matchExpressions: 86 {{- end }} 87 - key: agones.dev/agones-system 88 operator: Exists 89 {{- end }} 90 {{- if .Values.agones.extensions.nodeSelector }} 91 nodeSelector: 92 {{ toYaml .Values.agones.extensions.nodeSelector | indent 8 }} 93 {{- end }} 94 {{- if .Values.agones.extensions.tolerations }} 95 tolerations: 96 {{ toYaml .Values.agones.extensions.tolerations | indent 8 }} 97 {{- end }} 98 {{- if .Values.agones.createPriorityClass }} 99 priorityClassName: {{ .Values.agones.priorityClassName }} 100 {{- end }} 101 serviceAccountName: {{ .Values.agones.serviceaccount.controller.name }} 102 terminationGracePeriodSeconds: {{ mul .Values.agones.extensions.readiness.periodSeconds .Values.agones.extensions.readiness.failureThreshold 3 }} 103 {{- if .Values.agones.extensions.hostNetwork }} 104 hostNetwork: true 105 dnsPolicy: ClusterFirstWithHostNet 106 {{- end }} 107 containers: 108 - name: agones-extensions 109 image: "{{ .Values.agones.image.registry }}/{{ .Values.agones.image.extensions.name}}:{{ default .Values.agones.image.tag .Values.agones.image.extensions.tag }}" 110 imagePullPolicy: {{ .Values.agones.image.extensions.pullPolicy }} 111 securityContext: 112 runAsNonRoot: true 113 runAsUser: 1000 114 allowPrivilegeEscalation: false 115 env: 116 - name: PROMETHEUS_EXPORTER 117 value: {{ .Values.agones.metrics.prometheusEnabled | quote }} 118 - name: STACKDRIVER_EXPORTER 119 value: {{ .Values.agones.metrics.stackdriverEnabled | quote }} 120 - name: STACKDRIVER_LABELS 121 value: {{ .Values.agones.metrics.stackdriverLabels | quote }} 122 - name: GCP_PROJECT_ID 123 value: {{ .Values.agones.metrics.stackdriverProjectID | quote }} 124 - name: NUM_WORKERS 125 value: {{ .Values.agones.extensions.numWorkers | quote }} 126 - name: API_SERVER_QPS 127 value: {{ .Values.agones.extensions.apiServerQPS | quote }} 128 - name: API_SERVER_QPS_BURST 129 value: {{ .Values.agones.extensions.apiServerQPSBurst | quote }} 130 - name: LOG_LEVEL 131 value: {{ .Values.agones.extensions.logLevel | quote }} 132 - name: FEATURE_GATES 133 value: {{ .Values.agones.featureGates | quote }} 134 - name: ALLOCATION_BATCH_WAIT_TIME 135 value: {{ .Values.agones.extensions.allocationBatchWaitTime | quote }} 136 - name: CLOUD_PRODUCT 137 value: {{ .Values.agones.cloudProduct | quote }} 138 {{- if .Values.agones.extensions.persistentLogs }} 139 - name: LOG_DIR 140 value: "/logs" 141 - name: LOG_SIZE_LIMIT_MB 142 value: {{ .Values.agones.extensions.persistentLogsSizeLimitMB | quote }} 143 {{- end }} 144 - name: POD_NAME 145 valueFrom: 146 fieldRef: 147 fieldPath: metadata.name 148 - name: POD_NAMESPACE 149 valueFrom: 150 fieldRef: 151 fieldPath: metadata.namespace 152 - name: CONTAINER_NAME 153 value: "agones-extensions" 154 - name: READINESS_SHUTDOWN_DURATION 155 value: {{ mul .Values.agones.extensions.readiness.periodSeconds .Values.agones.extensions.readiness.failureThreshold 2 }}s 156 - name: WEBHOOK_PORT 157 value: {{ .Values.agones.extensions.webhooks.port | quote }} 158 - name: HTTP_PORT 159 value: {{ .Values.agones.extensions.http.port | quote }} 160 ports: 161 - name: webhooks 162 containerPort: {{ .Values.agones.extensions.webhooks.port }} 163 - name: http 164 containerPort: {{ .Values.agones.extensions.http.port }} 165 livenessProbe: 166 httpGet: 167 path: /live 168 port: http 169 initialDelaySeconds: {{ .Values.agones.extensions.healthCheck.initialDelaySeconds }} 170 periodSeconds: {{ .Values.agones.extensions.healthCheck.periodSeconds }} 171 failureThreshold: {{ .Values.agones.extensions.healthCheck.failureThreshold }} 172 timeoutSeconds: {{ .Values.agones.extensions.healthCheck.timeoutSeconds }} 173 readinessProbe: 174 httpGet: 175 path: /ready 176 port: {{ .Values.agones.extensions.http.port }} 177 initialDelaySeconds: {{ .Values.agones.extensions.readiness.initialDelaySeconds }} 178 periodSeconds: {{ .Values.agones.extensions.readiness.periodSeconds }} 179 failureThreshold: {{ .Values.agones.extensions.readiness.failureThreshold }} 180 resources: 181 {{- if .Values.agones.extensions.resources }} 182 {{ toYaml .Values.agones.extensions.resources | indent 10 }} 183 {{- else}} 184 limits: 185 ephemeral-storage: {{ add .Values.agones.controller.persistentLogsSizeLimitMB 100 | printf "%dMi" }} 186 requests: 187 ephemeral-storage: {{ add .Values.agones.controller.persistentLogsSizeLimitMB 100 | printf "%dMi" }} 188 {{- end }} 189 volumeMounts: 190 - name: certs 191 mountPath: /certs 192 readOnly: true 193 {{- if .Values.agones.extensions.persistentLogs }} 194 - name: logs 195 mountPath: /logs 196 readOnly: false 197 {{- end }} 198 volumes: 199 - name: certs 200 secret: 201 secretName: {{ template "agones.fullname" . }}-cert 202 {{- if .Values.agones.extensions.customCertSecretPath }} 203 items: 204 {{- toYaml .Values.agones.extensions.customCertSecretPath | nindent 10 }} 205 {{- end }} 206 {{- if .Values.agones.extensions.persistentLogs }} 207 - name: logs 208 emptyDir: {} 209 {{- end }} 210 {{- if .Values.agones.image.extensions.pullSecret }} 211 imagePullSecrets: 212 - name: {{.Values.agones.image.extensions.pullSecret}} 213 {{- end }} 214 --- 215 apiVersion: policy/v1 216 kind: PodDisruptionBudget 217 metadata: 218 name: agones-extensions-pdb 219 spec: 220 {{- if .Values.agones.extensions.pdb.minAvailable }} 221 {{- if .Values.agones.extensions.pdb.maxUnavailable }} 222 {{- fail "minAvailable and maxUnavailable are mutually exclusive!" }} 223 {{- end}} 224 {{- end}} 225 minAvailable: {{ .Values.agones.extensions.pdb.minAvailable }} 226 maxUnavailable: {{ .Values.agones.extensions.pdb.maxUnavailable }} 227 selector: 228 matchLabels: 229 agones.dev/role: extensions 230 app: {{ template "agones.name" . }} 231 release: {{ .Release.Name }} 232 heritage: {{ .Release.Service }}