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 }}