{{- 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/v1beta1 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/v1beta1 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: extensions/v1beta1 kind: Deployment metadata: name: controller labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: controller application: fission-api spec: containers: - name: controller image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--controllerPort", "8888", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] env: - name: FISSION_FUNCTION_NAMESPACE value: "{{ .Values.functionNamespace }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | 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 serviceAccount: fission-svc volumes: - name: config-volume configMap: name: feature-config --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: router labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: application: fission-router svc: router annotations: prometheus.io/scrape: "true" prometheus.io/path: "/metrics" prometheus.io/port: "8080" spec: containers: - name: router image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--routerPort", "8888", "--executorUrl", "http://executor.{{ .Release.Namespace }}", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] env: - name: POD_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: ROUTER_ROUND_TRIP_TIMEOUT value: {{ .Values.routerRoundTripTimeout | default "50ms" | quote }} - name: ROUTER_ROUNDTRIP_TIMEOUT_EXPONENT value: {{ .Values.routerRoundTripTimeoutExponent | default 2 | quote }} - name: ROUTER_ROUND_TRIP_KEEP_ALIVE_TIME value: {{ .Values.routerRoundTripKeepAliveTime | default "30s" | quote }} - name: ROUTER_ROUND_TRIP_MAX_RETRIES value: {{ .Values.routerRoundTripMaxRetries | default 10 | quote }} - name: ROUTER_ROUND_TRIP_SVC_ADDRESS_MAX_RETRIES value: {{ .Values.routerRoundTripSvcAddressMaxRetries | default 5 | quote }} - name: ROUTER_ROUND_TRIP_SVC_ADDRESS_UPDATE_TIMEOUT value: {{ .Values.routerRoundTripSvcAddressUpdateTimeout | default 30 | quote }} - name: DEBUG_ENV value: {{ .Values.debugEnv | quote }} - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} readinessProbe: httpGet: path: "/router-healthz" port: 8888 initialDelaySeconds: 1 periodSeconds: 1 failureThreshold: 30 livenessProbe: httpGet: path: "/router-healthz" port: 8888 initialDelaySeconds: 35 periodSeconds: 5 ports: - containerPort: 8080 name: metrics - containerPort: 8888 name: http serviceAccount: fission-svc --- apiVersion: v1 kind: Service metadata: name: executor labels: svc: executor chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: type: ClusterIP ports: - port: 80 targetPort: 8888 selector: svc: executor --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: executor labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: executor annotations: prometheus.io/scrape: "true" prometheus.io/path: "/metrics" prometheus.io/port: "8080" spec: containers: - name: executor image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--executorPort", "8888", "--namespace", "{{ .Values.functionNamespace }}", "--fission-namespace", "{{ .Release.Namespace }}", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] env: - name: FETCHER_IMAGE value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}" - name: FETCHER_IMAGE_PULL_POLICY value: "{{ .Values.pullPolicy }}" - name: RUNTIME_IMAGE_PULL_POLICY value: "{{ .Values.pullPolicy }}" - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: ENABLE_ISTIO value: "{{ .Values.enableIstio }}" - name: FETCHER_MINCPU value: {{ .Values.fetcherMinCpu | default "10m" | quote }} - name: FETCHER_MINMEM value: {{ .Values.fetcherMinMem | default "16Mi" | quote }} - name: FETCHER_MAXCPU value: {{ .Values.fetcherMaxCpu | default "1000m" | quote }} - name: FETCHER_MAXMEM value: {{ .Values.fetcherMaxMem | default "128Mi" | quote }} - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | 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 serviceAccount: fission-svc --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: buildermgr labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: buildermgr spec: containers: - name: buildermgr image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--builderMgr", "--storageSvcUrl", "http://storagesvc.{{ .Release.Namespace }}", "--envbuilder-namespace", "{{ .Values.builderNamespace }}", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] env: - name: FETCHER_IMAGE value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}" - name: FETCHER_IMAGE_PULL_POLICY value: "{{ .Values.pullPolicy }}" - name: BUILDER_IMAGE_PULL_POLICY value: "{{ .Values.pullPolicy }}" - name: TRACE_JAEGER_COLLECTOR_ENDPOINT value: "{{ .Values.traceCollectorEndpoint }}" - name: ENABLE_ISTIO value: "{{ .Values.enableIstio }}" - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} serviceAccount: fission-svc --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: kubewatcher labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: kubewatcher spec: containers: - name: kubewatcher image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--kubewatcher", "--routerUrl", "http://router.{{ .Release.Namespace }}", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] env: - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} serviceAccount: fission-svc --- 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: extensions/v1beta1 kind: Deployment metadata: name: influxdb labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: influxdb spec: containers: - name: influxdb image: fission/influxdb 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.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: extensions/v1beta1 kind: Deployment metadata: name: heapster namespace: kube-system labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: heapster spec: containers: - name: heapster image: gcr.io/google_containers/heapster-amd64:v1.5.0 command: - /heapster - --source=kubernetes:https://kubernetes.default serviceAccount: {{ .Release.Namespace }}/fission-svc {{- end }} --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: timer labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: timer spec: containers: - name: timer image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--timer", "--routerUrl", "http://router.{{ .Release.Namespace }}"] serviceAccount: fission-svc # # This is commented out until fission-ui allows configuring the # namespace. Right now it just crashes if Release.Namespace != # "fission". # #--- #apiVersion: extensions/v1beta1 #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 }} # - name: kubectl-proxy # image: {{ .Values.repository }}/lachlanevenson/k8s-kubectl # args: ["proxy", "--port", "8001", "--address", "127.0.0.1"] # serviceAccount: fission-svc {{- if .Values.nats.enabled }} --- apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: svc: nats-streaming name: nats-streaming spec: replicas: 1 template: metadata: labels: svc: nats-streaming spec: containers: - name: nats-streaming image: nats-streaming args: [ "--cluster_id", "{{ .Values.nats.clusterID }}", "--auth", "{{ .Values.nats.authToken }}", "--max_channels", "0" ] ports: - containerPort: 4222 hostPort: 4222 protocol: TCP --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: mqtrigger-nats-streaming labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: mqtrigger messagequeue: nats-streaming spec: containers: - name: mqtrigger image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--mqt", "--routerUrl", "http://router.{{ .Release.Namespace }}", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] env: - name: MESSAGE_QUEUE_TYPE value: nats-streaming - name: MESSAGE_QUEUE_URL value: nats://{{ .Values.nats.authToken }}@nats-streaming:4222 - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} serviceAccount: fission-svc {{- end }} {{- if .Values.kafka.enabled }} --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: mqtrigger-kafka labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 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 }}", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] 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: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} serviceAccount: fission-svc {{- end }} {{- if .Values.azureStorageQueue.enabled }} --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: mqtrigger-azure-storage-queue labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 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 }}", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] env: - 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 serviceAccount: fission-svc {{- end }} --- apiVersion: extensions/v1beta1 kind: Deployment metadata: name: storagesvc labels: chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" spec: replicas: 1 template: metadata: labels: svc: storagesvc application: fission-storage spec: containers: - name: storagesvc image: "{{ .Values.repository }}/{{ .Values.image }}:{{ .Values.imageTag }}" imagePullPolicy: {{ .Values.pullPolicy }} command: ["/fission-bundle"] args: ["--storageServicePort", "8000", "--filePath", "/fission", "--collectorEndpoint", "{{ .Values.traceCollectorEndpoint }}"] env: - name: TRACING_SAMPLING_RATE value: {{ .Values.traceSamplingRate | default "0.5" | quote }} - name: PRUNE_INTERVAL value: "{{.Values.pruneInterval}}" 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 serviceAccount: fission-svc volumes: - name: fission-storage {{- if .Values.persistence.enabled }} persistentVolumeClaim: claimName: {{ .Values.persistence.existingClaim | default "fission-storage-pvc" }} {{- else }} emptyDir: {} {{- end -}}