{{- if .Values.createNamespace }} apiVersion: v1 kind: Namespace metadata: name: {{ .Values.functionNamespace }} labels: name: fission-function chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" {{- if .Values.enableIstio }} istio-injection: enabled {{- end }} --- apiVersion: v1 kind: Namespace metadata: name: {{ .Values.builderNamespace }} labels: name: fission-builder chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" {{- if .Values.enableIstio }} istio-injection: enabled {{- end }} {{- end }} --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: secret-configmap-getter rules: - apiGroups: - '*' resources: - secrets - configmaps verbs: - get - watch - list --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: package-getter rules: - apiGroups: - '*' resources: - packages verbs: - get - watch - list --- apiVersion: v1 kind: ServiceAccount metadata: name: fission-svc namespace: {{ .Release.Namespace }} --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: fission-admin namespace: {{ .Release.Namespace }} subjects: - kind: ServiceAccount name: fission-svc namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole name: admin apiGroup: rbac.authorization.k8s.io --- kind: ClusterRoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: name: fission-crd subjects: - kind: ServiceAccount name: fission-svc namespace: {{ .Release.Namespace }} roleRef: kind: ClusterRole name: cluster-admin apiGroup: rbac.authorization.k8s.io --- apiVersion: v1 kind: ServiceAccount metadata: name: fission-fetcher namespace: {{ .Values.functionNamespace }} --- apiVersion: v1 kind: ServiceAccount metadata: name: fission-builder namespace: {{ .Values.builderNamespace }} --- apiVersion: v1 kind: ConfigMap metadata: name: feature-config namespace: {{ .Release.Namespace }} data: "config.yaml": {{ include "config" . | b64enc }} --- apiVersion: apps/v1 kind: Deployment metadata: name: controller labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: controller application: fission-api spec: replicas: 1 selector: matchLabels: svc: controller application: fission-api template: metadata: labels: svc: controller application: fission-api spec: containers: - name: controller image: {{ include "fission-bundleImage" . | quote }} imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--controllerPort", "8888"] env: - name: FISSION_FUNCTION_NAMESPACE value: "{{ .Values.functionNamespace }}" - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace readinessProbe: httpGet: path: "/healthz" port: 8888 initialDelaySeconds: 1 periodSeconds: 1 failureThreshold: 30 livenessProbe: httpGet: path: "/healthz" port: 8888 initialDelaySeconds: 35 periodSeconds: 5 volumeMounts: - name: config-volume mountPath: /etc/config/config.yaml subPath: config.yaml ports: - containerPort: 8888 name: http serviceAccountName: fission-svc volumes: - name: config-volume configMap: name: feature-config {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} --- apiVersion: apps/v1 kind: Deployment metadata: name: executor labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: executor spec: replicas: 1 selector: matchLabels: svc: executor template: metadata: labels: svc: executor annotations: prometheus.io/scrape: "true" prometheus.io/path: "/metrics" prometheus.io/port: "8080" spec: containers: - name: executor image: {{ include "fission-bundleImage" . | quote }} imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--executorPort", "8888", "--namespace", "{{ .Values.functionNamespace }}"] env: - name: FETCHER_IMAGE value: "{{ .Values.fetcher.image }}:{{ .Values.fetcher.imageTag }}" - name: FETCHER_IMAGE_PULL_POLICY value: "{{ .Values.pullPolicy }}" - name: RUNTIME_IMAGE_PULL_POLICY value: "{{ .Values.pullPolicy }}" - name: ADOPT_EXISTING_RESOURCES value: {{ .Values.executor.adoptExistingResources | default false | quote }} - name: ENABLE_ISTIO value: "{{ .Values.enableIstio }}" - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: FETCHER_MINCPU value: {{ .Values.fetcher.resource.cpu.requests | quote }} - name: FETCHER_MINMEM value: {{ .Values.fetcher.resource.mem.requests | quote }} - name: FETCHER_MAXCPU value: {{ .Values.fetcher.resource.cpu.limits | quote }} - name: FETCHER_MAXMEM value: {{ .Values.fetcher.resource.mem.limits | quote }} - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} readinessProbe: httpGet: path: "/healthz" port: 8888 initialDelaySeconds: 1 periodSeconds: 1 failureThreshold: 30 livenessProbe: httpGet: path: "/healthz" port: 8888 initialDelaySeconds: 35 periodSeconds: 5 ports: - containerPort: 8080 name: metrics - containerPort: 8888 name: http serviceAccountName: fission-svc {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} --- apiVersion: apps/v1 kind: Deployment metadata: name: buildermgr labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: buildermgr spec: replicas: 1 selector: matchLabels: svc: buildermgr template: metadata: labels: svc: buildermgr spec: containers: - name: buildermgr image: {{ include "fission-bundleImage" . | quote }} imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--builderMgr", "--storageSvcUrl", "http://storagesvc.{{ .Release.Namespace }}", "--envbuilder-namespace", "{{ .Values.builderNamespace }}"] env: - name: FETCHER_IMAGE value: "{{ .Values.fetcher.image }}:{{ .Values.fetcher.imageTag }}" - name: FETCHER_IMAGE_PULL_POLICY value: "{{ .Values.pullPolicy }}" - name: BUILDER_IMAGE_PULL_POLICY value: "{{ .Values.pullPolicy }}" - name: ENABLE_ISTIO value: "{{ .Values.enableIstio }}" - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: FETCHER_MINCPU value: {{ .Values.fetcher.resource.cpu.requests | quote }} - name: FETCHER_MINMEM value: {{ .Values.fetcher.resource.mem.requests | quote }} - name: FETCHER_MAXCPU value: {{ .Values.fetcher.resource.cpu.limits | quote }} - name: FETCHER_MAXMEM value: {{ .Values.fetcher.resource.mem.limits | quote }} - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} serviceAccountName: fission-svc {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} --- apiVersion: apps/v1 kind: Deployment metadata: name: kubewatcher labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: kubewatcher spec: replicas: 1 selector: matchLabels: svc: kubewatcher template: metadata: labels: svc: kubewatcher spec: containers: - name: kubewatcher image: {{ include "fission-bundleImage" . | quote }} imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--kubewatcher", "--routerUrl", "http://router.{{ .Release.Namespace }}"] env: - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} serviceAccountName: fission-svc {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} --- apiVersion: v1 kind: Service metadata: name: influxdb labels: svc: influxdb chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: type: ClusterIP ports: - port: 8086 targetPort: 8086 selector: svc: influxdb --- apiVersion: apps/v1 kind: Deployment metadata: name: influxdb labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: influxdb spec: replicas: 1 selector: matchLabels: svc: influxdb template: metadata: labels: svc: influxdb spec: containers: - name: influxdb image: fission/influxdb imagePullPolicy: {{ .Values.pullPolicy }} env: - name: PRE_CREATE_DB value: fissionFunctionLog - name: ADMIN_USER valueFrom: secretKeyRef: name: influxdb key: username - name: INFLUXDB_INIT_PWD valueFrom: secretKeyRef: name: influxdb key: password {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} {{- if .Values.heapster }} --- apiVersion: v1 kind: Service metadata: name: heapster namespace: kube-system labels: svc: heapster chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" kubernetes.io/cluster-service: 'true' kubernetes.io/name: heapster spec: type: ClusterIP ports: - port: 80 targetPort: 8082 selector: svc: heapster --- apiVersion: apps/v1 kind: Deployment metadata: name: heapster namespace: kube-system labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: heapster spec: replicas: 1 selector: matchLabels: svc: heapster template: metadata: labels: svc: heapster spec: containers: - name: heapster image: gcr.io/google_containers/heapster-amd64:v1.5.0 imagePullPolicy: {{ .Values.pullPolicy }} command: - /heapster - --source=kubernetes:https://kubernetes.default serviceAccountName: {{ .Release.Namespace }}/fission-svc {{- end }} --- apiVersion: apps/v1 kind: Deployment metadata: name: timer labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: timer spec: replicas: 1 selector: matchLabels: svc: timer template: metadata: labels: svc: timer spec: containers: - name: timer image: {{ include "fission-bundleImage" . | quote }} imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--timer", "--routerUrl", "http://router.{{ .Release.Namespace }}"] env: - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} serviceAccountName: fission-svc {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} # # This is commented out until fission-ui allows configuring the # namespace. Right now it just crashes if Release.Namespace != # "fission". # #--- #apiVersion: apps/v1 #kind: Deployment #metadata: # name: fission-ui # labels: # chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" #spec: # replicas: 1 # template: # metadata: # labels: # svc: fission-ui # spec: # containers: # - name: nginx # image: {{ .Values.repository }}/{{ .Values.fissionUiImage }} # imagePullPolicy: {{ .Values.pullPolicy }} # - name: kubectl-proxy # image: {{ .Values.repository }}/lachlanevenson/k8s-kubectl # args: ["proxy", "--port", "8001", "--address", "127.0.0.1"] # serviceAccountName: fission-svc {{- if .Values.nats.enabled }} --- apiVersion: apps/v1 kind: Deployment metadata: labels: svc: nats-streaming name: nats-streaming spec: replicas: 1 selector: matchLabels: svc: nats-streaming template: metadata: labels: svc: nats-streaming spec: containers: - name: nats-streaming image: nats-streaming imagePullPolicy: {{ .Values.pullPolicy }} args: [ "--cluster_id", "{{ .Values.nats.clusterID }}", "--auth", "{{ .Values.nats.authToken }}", "--max_channels", "0", "--http_port", "4223" ] ports: - containerPort: 4222 protocol: TCP - containerPort: 4223 protocol: TCP readinessProbe: httpGet: path: "/streaming/serverz" port: 4223 initialDelaySeconds: 30 periodSeconds: 1 failureThreshold: 30 livenessProbe: httpGet: path: "/streaming/serverz" port: 4223 initialDelaySeconds: 30 periodSeconds: 5 {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} --- apiVersion: apps/v1 kind: Deployment metadata: name: mqtrigger-nats-streaming labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: mqtrigger messagequeue: nats-streaming spec: replicas: 1 selector: matchLabels: svc: mqtrigger messagequeue: nats-streaming template: metadata: labels: svc: mqtrigger messagequeue: nats-streaming spec: containers: - name: mqtrigger image: {{ include "fission-bundleImage" . | quote }} imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"] env: - name: MESSAGE_QUEUE_TYPE value: nats-streaming - name: MESSAGE_QUEUE_URL value: nats://{{ .Values.nats.authToken }}@nats-streaming:4222 - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} serviceAccountName: fission-svc {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} {{- end }} {{- if .Values.kafka.enabled }} --- apiVersion: apps/v1 kind: Deployment metadata: name: mqtrigger-kafka labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: mqtrigger messagequeue: kafka spec: replicas: 1 selector: matchLabels: svc: mqtrigger messagequeue: kafka template: metadata: labels: svc: mqtrigger messagequeue: kafka spec: containers: - name: mqtrigger image: "{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"] env: - name: MESSAGE_QUEUE_TYPE value: kafka - name: MESSAGE_QUEUE_URL value: "{{.Values.kafka.brokers}}" - name: MESSAGE_QUEUE_KAFKA_VERSION value: "{{.Values.kafka.version}}" - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} # TLS authentication is TLS with authentication (2 way) # More info: https://docs.confluent.io/current/kafka/authentication_ssl.html#ssl-overview {{- if .Values.kafka.authentication.tls.enabled }} - name: TLS_ENABLED value: "true" - name: MESSAGE_QUEUE_SECRETS value: /etc/fission/secrets volumeMounts: - name: kafka-secrets mountPath: /etc/fission/secrets {{- end }} serviceAccountName: fission-svc {{- if .Values.kafka.authentication.tls.enabled }} volumes: - name: kafka-secrets secret: secretName: mqtrigger-kafka-secrets {{- end }} --- {{- if .Values.kafka.authentication.tls.enabled }} apiVersion: v1 kind: Secret metadata: name: mqtrigger-kafka-secrets labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" data: {{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.caCert) }} caCert: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.caCert) | b64enc }} {{- else }} {{ fail "Invalid chart. CA Certificate not found." }} {{- end }} {{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.userCert) }} userCert: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.userCert) | b64enc }} {{- else }} {{ fail "Invalid chart. User Certificate not found." }} {{- end }} {{- if .Files.Get (printf "%s" .Values.kafka.authentication.tls.userKey) }} userKey: {{ .Files.Get (printf "%s" .Values.kafka.authentication.tls.userKey) | b64enc }} {{- else }} {{ fail "Invalid chart. User Key not found." }} {{- end }} {{- end }} {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} {{- end }} {{- if .Values.azureStorageQueue.enabled }} --- apiVersion: apps/v1 kind: Deployment metadata: name: mqtrigger-azure-storage-queue labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: mqtrigger messagequeue: azure-storage-queue spec: replicas: 1 selector: matchLabels: svc: mqtrigger messagequeue: azure-storage-queue template: metadata: labels: svc: mqtrigger messagequeue: azure-storage-queue spec: containers: - name: mqtrigger image: "{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}"] env: - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: MESSAGE_QUEUE_TYPE value: azure-storage-queue - name: AZURE_STORAGE_ACCOUNT_NAME value: {{ required "An Azure storage account name is required." .Values.azureStorageQueue.accountName }} - name: AZURE_STORAGE_ACCOUNT_KEY valueFrom: secretKeyRef: name: azure-storage-account-key key: key - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} serviceAccountName: fission-svc {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }} {{- end }} --- apiVersion: apps/v1 kind: Deployment metadata: name: storagesvc labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" svc: storagesvc application: fission-storage spec: replicas: 1 selector: matchLabels: svc: storagesvc application: fission-storage template: metadata: labels: svc: storagesvc application: fission-storage spec: containers: - name: storagesvc image: {{ include "fission-bundleImage" . | quote }} imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--storageServicePort", "8000", "--filePath", "/fission"] env: - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: PRUNE_INTERVAL value: "{{.Values.pruneInterval}}" - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} volumeMounts: - name: fission-storage mountPath: /fission readinessProbe: httpGet: path: "/healthz" port: 8000 initialDelaySeconds: 1 periodSeconds: 1 failureThreshold: 30 livenessProbe: httpGet: path: "/healthz" port: 8000 initialDelaySeconds: 35 periodSeconds: 5 ports: - containerPort: 8000 name: http serviceAccountName: fission-svc volumes: - name: fission-storage {{- if .Values.persistence.enabled }} persistentVolumeClaim: claimName: {{ .Values.persistence.existingClaim | default "fission-storage-pvc" }} {{- else }} emptyDir: {} {{- end }} {{- if .Values.extraCoreComponentPodConfig }} {{ toYaml .Values.extraCoreComponentPodConfig | indent 6 -}} {{- end }}