# Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You under the Apache License, Version 2.0 # (the "License"); you may not use this file except in compliance with # the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. apiVersion: apps/v1 kind: Deployment metadata: labels: app: {{ template "skywalking.name" . }} chart: {{ .Chart.Name }}-{{ .Chart.Version }} component: "{{ .Values.oap.name }}" heritage: {{ .Release.Service }} release: {{ .Release.Name }} name: {{ template "skywalking.oap.fullname" . }} spec: replicas: {{ .Values.oap.replicas }} selector: matchLabels: app: {{ template "skywalking.name" . }} component: "{{ .Values.oap.name }}" release: {{ .Release.Name }} template: metadata: labels: app: {{ template "skywalking.name" . }} component: "{{ .Values.oap.name }}" release: {{ .Release.Name }} {{- if .Values.oap.podAnnotations }} annotations: {{ toYaml .Values.oap.podAnnotations | indent 8 }} {{- end }} spec: serviceAccountName: {{ template "skywalking.serviceAccountName.oap" . }} affinity: {{- if eq .Values.oap.antiAffinity "hard" }} podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - topologyKey: "kubernetes.io/hostname" labelSelector: matchLabels: app: "{{ template "skywalking.name" . }}" release: "{{ .Release.Name }}" component: "{{ .Values.oap.name }}" {{- else if eq .Values.oap.antiAffinity "soft" }} podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: topologyKey: kubernetes.io/hostname labelSelector: matchLabels: app: "{{ template "skywalking.name" . }}" release: "{{ .Release.Name }}" component: "{{ .Values.oap.name }}" {{- end }} {{- with .Values.oap.nodeAffinity }} nodeAffinity: {{ toYaml . | indent 10 }} {{- end }} {{- if .Values.oap.nodeSelector }} nodeSelector: {{ toYaml .Values.oap.nodeSelector | indent 8 }} {{- end }} {{- if .Values.oap.tolerations }} tolerations: {{ toYaml .Values.oap.tolerations | indent 8 }} {{- end }} initContainers: {{- include "skywalking.containers.wait-for-es" . | nindent 6 }} containers: - name: {{ .Values.oap.name }} image: "{{ .Values.oap.image.repository }}:{{ .Values.oap.image.tag }}" imagePullPolicy: {{ .Values.oap.image.pullPolicy }} livenessProbe: tcpSocket: port: 12800 initialDelaySeconds: 15 periodSeconds: 20 readinessProbe: tcpSocket: port: 12800 initialDelaySeconds: 15 periodSeconds: 20 ports: - containerPort: 11800 name: grpc - containerPort: 12800 name: rest {{- if .Values.oap.resources }} resources: {{ toYaml .Values.oap.resources | indent 10 }} {{- end }} env: - name: JAVA_OPTS value: "{{ .Values.oap.javaOpts }} -Dmode=no-init" - name: SW_CLUSTER value: kubernetes - name: SW_CLUSTER_K8S_NAMESPACE value: "{{ .Release.Namespace }}" {{- if .Values.oap.dynamicConfigEnabled }} - name: SW_CONFIGURATION value: k8s-configmap - name: SW_CONFIG_CONFIGMAP_PERIOD value: "60" {{- end }} - name: SW_CLUSTER_K8S_LABEL value: "app={{ template "skywalking.name" . }},release={{ .Release.Name }},component={{ .Values.oap.name }}" - name: SKYWALKING_COLLECTOR_UID valueFrom: fieldRef: fieldPath: metadata.uid - name: SW_STORAGE value: {{ .Values.oap.storageType }} - name: SW_STORAGE_ES_CLUSTER_NODES {{- if .Values.elasticsearch.enabled }} value: "{{ .Values.elasticsearch.clusterName }}-{{ .Values.elasticsearch.nodeGroup }}:{{ .Values.elasticsearch.httpPort }}" {{- else }} value: "{{ .Values.elasticsearch.config.host }}:{{ .Values.elasticsearch.config.port.http }}" {{- end }} {{- if not .Values.elasticsearch.enabled }} {{- if .Values.elasticsearch.config.user }} - name: SW_ES_USER value: "{{ .Values.elasticsearch.config.user }}" {{- end }} {{- if .Values.elasticsearch.config.password }} - name: SW_ES_PASSWORD value: "{{ .Values.elasticsearch.config.password }}" {{- end }} {{- end }} {{- range $key, $value := .Values.oap.env }} - name: {{ $key }} value: {{ $value | quote }} {{- end }}