A newdeploy backend which uses new deployment to serve requests. This is the second phase of #193 and builds on top of changes in #384 . * Executor layer added on top of pool manager * Removed the external server for executor * Minor changes to keep existing semantics as much possible * Separating the executor vs. poolmgr backend functionality and associated data members * Executor logic separated from Poolmgr backend completely, placeholder for new backend * Changed references to poolmgr in tests * Moved poolmgr to it's package, as a side effect moved Cache to its's package (was causing cyclical dependency) and had to make some data structures exposed outside package * Rebased from master and changed references to tpr -> crd * Executor layer added on top of pool manager * Executor logic separated from Poolmgr backend completely, placeholder for new backend * Changed podName to a generic objectReference in fscache (#391) Changed podName to a generic objectReference in function service cache implementation. * Moved poolmgr to it's package, as a side effect moved Cache to its's package (was causing cyclical dependency) and had to make some data structures exposed outside package * Rebased from master and changed references to tpr -> crd * Merged from master with latest changes * Executor layer added on top of pool manager * Removed the external server for executor * Minor changes to keep existing semantics as much possible * Separating the executor vs. poolmgr backend functionality and associated data members * Executor logic separated from Poolmgr backend completely, placeholder for new backend * Changed references to poolmgr in tests * update compiling.md to use helm * Compile instructions: changed pullPolicy to IfNotPresent (#378) Containers will get stuck in ErrImagePull/ImagePullBackOff state otherwise * Moved poolmgr to it's package, as a side effect moved Cache to its's package (was causing cyclical dependency) and had to make some data structures exposed outside package * Fetcher called when pod is created for newDeploy backend but also supports older way, this is WIP and still needs pod specialization and creating & exposing a service so the URL can be hit by end user * WIP Specializing the POD as part of startup along with fetching * Working specialization of a new deployment. Needs some work on caching, cleanup etc. * Switched to service based address instead of POD address * Minor formating issue fixed * Added logging to pods and a readiness check, the readiness check is flaky though ATM * Fixed some rebase issues that were failing build * Better names for K8S objects and methods * Switched usage of FuncSvc in backends from pod to api.ObjectReference * Adding retry to fetcher request, for now just using default retry client which might need tweaking in future * Switching to plain old retry, some issue in getting retryablehttp with glide import * Removed stale executor service & deployment from previous merge * Addressed review comments, still testing some areas * Added types in FunctionSpec * Resolved conflicts due to merge from executor_abstraction branch * Added backend type on EnvironmentSpec along with operations for create/list/update, the pools are created/destroyed based on change in backend type * Backend from types and a minor err return issue fixed * Draft version of CPU and memory parameters added to environment * Added resourceReq to newDeploy, though it has some issues * Issue with resourceName fixed, now newdeploy pods also pick up resources from the environment config * Adding scale params, removing validation on CPU params for now * Fixed a formatting issue * Checking if slight more delay helps in the test which is currently failing for internal routes * The resourceList newly added in Env can not be compared by compiler, hence must use breakdown comparison instead * Added strategy selection on client side * Added caching, informers, delete operations for newdeploy backend functions * Deleted a stale directory * A simple HPA based on scale parameters, testing still WIP * Fixed a small issue in delete function, added HPA delete too when deleting a function * Previous merge missed the pkg flag for update fn command somehow, fixed that * Fixed comments from review * Changed poolmgr cleanup to be generic cleanup and moved to executor, added instanceID labels to newdeploy so that cleanup works * Moved instanceIdLabel to types to avoid cyclic dependency * More review fixes * Tweaking sleep to see results * If user does not provide poolsize, then it should not default to zero * Switched to naming convention for now, fixed default poolsize if not provided * Changed error return behaviour in delete fn, also changed cleanup to look based on obj type though support for additional type will need more work * Changed check location so avoid false logging * Test for newdeploy backend * Adding tests for poolmgr backend * Fixed an issue with glide dependency version, already fixed in master * Added instanceId for NewDeploy, Initial cleanup now cleans older objects of newdeploy backend, removed eagercreate flag and instead using minScale to drive eager creation * Moved cleanup to executor layer with cleanup for newDeploy backend, changes to use the new Cache impl * Cleaning up pod & rs along with deployment for newdeploy backend * Enhanced fn and env listing to show min/maxscale and resuorces respectively * Added conditional heapster deployment and fixed a small issue with resources for fetcher container in function pod * Addressed review comments from previous change * Addressed some more review comments - majorly create only on NotFoundError * Added TargetCPU as an input for scaling * Bumped target CPU to be greater than 0 and added a default value * Min replicas should be 1 even if the minScale is 0 when creating deployment * Changed name from 'backend' to executorType, added additional test for minscale 0 case, changed TargetCPU to TargetCPUPercent
531 lines
12 KiB
YAML
531 lines
12 KiB
YAML
---
|
|
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: {{ .Values.functionNamespace }}
|
|
labels:
|
|
name: fission-function
|
|
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: Namespace
|
|
metadata:
|
|
name: {{ .Values.builderNamespace }}
|
|
labels:
|
|
name: fission-builder
|
|
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
|
|
|
---
|
|
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: RoleBinding
|
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
metadata:
|
|
name: fission-function-admin
|
|
namespace: {{ .Values.functionNamespace }}
|
|
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 }}
|
|
|
|
---
|
|
kind: ClusterRoleBinding
|
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
metadata:
|
|
name: fission-fetcher-crd
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: fission-fetcher
|
|
namespace: {{ .Values.functionNamespace }}
|
|
roleRef:
|
|
kind: ClusterRole
|
|
name: cluster-admin
|
|
apiGroup: rbac.authorization.k8s.io
|
|
|
|
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: fission-builder
|
|
namespace: {{ .Values.builderNamespace }}
|
|
|
|
---
|
|
kind: ClusterRoleBinding
|
|
apiVersion: rbac.authorization.k8s.io/v1beta1
|
|
metadata:
|
|
name: fission-builder-crd
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: fission-builder
|
|
namespace: {{ .Values.builderNamespace }}
|
|
roleRef:
|
|
kind: ClusterRole
|
|
name: cluster-admin
|
|
apiGroup: rbac.authorization.k8s.io
|
|
|
|
---
|
|
apiVersion: extensions/v1beta1
|
|
kind: Deployment
|
|
metadata:
|
|
name: controller
|
|
labels:
|
|
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
|
spec:
|
|
replicas: 1
|
|
template:
|
|
metadata:
|
|
labels:
|
|
svc: controller
|
|
spec:
|
|
containers:
|
|
- name: controller
|
|
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
command: ["/fission-bundle"]
|
|
args: ["--controllerPort", "8888"]
|
|
serviceAccount: fission-svc
|
|
|
|
---
|
|
apiVersion: extensions/v1beta1
|
|
kind: Deployment
|
|
metadata:
|
|
name: router
|
|
labels:
|
|
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
|
spec:
|
|
replicas: 1
|
|
template:
|
|
metadata:
|
|
labels:
|
|
svc: router
|
|
spec:
|
|
containers:
|
|
- name: router
|
|
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
command: ["/fission-bundle"]
|
|
args: ["--routerPort", "8888", "--executorUrl", "http://executor.{{ .Release.Namespace }}"]
|
|
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
|
|
spec:
|
|
containers:
|
|
- name: executor
|
|
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
command: ["/fission-bundle"]
|
|
args: ["--executorPort", "8888", "--namespace", "{{ .Values.functionNamespace }}", "--fission-namespace", "{{ .Release.Namespace }}"]
|
|
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 }}"
|
|
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.image }}:{{ .Values.imageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
command: ["/fission-bundle"]
|
|
args: ["--builderMgr", "--storageSvcUrl", "http://storagesvc.{{ .Release.Namespace }}", "--envbuilder-namespace", "{{ .Values.builderNamespace }}"]
|
|
env:
|
|
- name: FETCHER_IMAGE
|
|
value: "{{ .Values.fetcherImage }}:{{ .Values.fetcherImageTag }}"
|
|
- name: FETCHER_IMAGE_PULL_POLICY
|
|
value: "{{ .Values.pullPolicy }}"
|
|
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.image }}:{{ .Values.imageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
command: ["/fission-bundle"]
|
|
args: ["--kubewatcher"]
|
|
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: tutum/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: DaemonSet
|
|
metadata:
|
|
name: logger
|
|
labels:
|
|
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
|
spec:
|
|
template:
|
|
metadata:
|
|
labels:
|
|
svc: logger
|
|
spec:
|
|
containers:
|
|
- name: fluentd
|
|
image: "{{ .Values.logger.fluentdImage }}:{{ .Values.logger.fluentdImageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
env:
|
|
- name: INFLUXDB_ADDRESS
|
|
value: influxdb
|
|
- name: INFLUXDB_PORT
|
|
value: "8086"
|
|
- name: INFLUXDB_DBNAME
|
|
value: "fissionFunctionLog"
|
|
- name: INFLUXDB_USERNAME
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: influxdb
|
|
key: username
|
|
- name: INFLUXDB_PASSWD
|
|
valueFrom:
|
|
secretKeyRef:
|
|
name: influxdb
|
|
key: password
|
|
- name: FLUENTD_PATH
|
|
value: /var/log/containers/*{{.Values.functionNamespace}}*.log
|
|
volumeMounts:
|
|
- name: container-log
|
|
mountPath: /var/log/
|
|
readOnly: true
|
|
- name: docker-log
|
|
mountPath: /var/lib/docker/containers
|
|
readOnly: true
|
|
- name: fission-log
|
|
mountPath: /var/log/fission
|
|
readOnly: false
|
|
serviceAccount: fission-svc
|
|
volumes:
|
|
- name: container-log
|
|
hostPath:
|
|
path: /var/log/
|
|
- name: docker-log
|
|
hostPath:
|
|
path: /var/lib/docker/containers
|
|
- name: fission-log
|
|
hostPath:
|
|
path: /var/log/fission
|
|
|
|
---
|
|
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.image }}:{{ .Values.imageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
command: ["/fission-bundle"]
|
|
args: ["--timer"]
|
|
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.fissionUiImage }}
|
|
# - name: kubectl-proxy
|
|
# image: lachlanevenson/k8s-kubectl
|
|
# args: ["proxy", "--port", "8001", "--address", "127.0.0.1"]
|
|
# serviceAccount: fission-svc
|
|
|
|
---
|
|
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 }}"]
|
|
ports:
|
|
- containerPort: 4222
|
|
hostPort: 4222
|
|
protocol: TCP
|
|
|
|
---
|
|
apiVersion: extensions/v1beta1
|
|
kind: Deployment
|
|
metadata:
|
|
name: mqtrigger
|
|
labels:
|
|
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
|
spec:
|
|
replicas: 1
|
|
template:
|
|
metadata:
|
|
labels:
|
|
svc: mqtrigger
|
|
spec:
|
|
containers:
|
|
- name: mqtrigger
|
|
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
command: ["/fission-bundle"]
|
|
args: ["--mqt"]
|
|
env:
|
|
- name: MESSAGE_QUEUE_TYPE
|
|
value: nats-streaming
|
|
- name: MESSAGE_QUEUE_URL
|
|
value: nats://{{ .Values.nats.authToken }}@nats-streaming:4222
|
|
serviceAccount: fission-svc
|
|
|
|
---
|
|
apiVersion: extensions/v1beta1
|
|
kind: Deployment
|
|
metadata:
|
|
name: storagesvc
|
|
labels:
|
|
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
|
|
spec:
|
|
replicas: 1
|
|
template:
|
|
metadata:
|
|
labels:
|
|
svc: storagesvc
|
|
spec:
|
|
containers:
|
|
- name: storagesvc
|
|
image: "{{ .Values.image }}:{{ .Values.imageTag }}"
|
|
imagePullPolicy: {{ .Values.pullPolicy }}
|
|
command: ["/fission-bundle"]
|
|
args: ["--storageServicePort", "8000", "--filePath", "/fission"]
|
|
env:
|
|
- name: PRUNE_INTERVAL
|
|
value: "{{.Values.pruneInterval}}"
|
|
volumeMounts:
|
|
- name: fission-storage
|
|
mountPath: /fission
|
|
serviceAccount: fission-svc
|
|
volumes:
|
|
- name: fission-storage
|
|
{{- if .Values.persistence.enabled }}
|
|
persistentVolumeClaim:
|
|
claimName: {{ .Values.persistence.existingClaim | default "fission-storage-pvc" }}
|
|
{{- else }}
|
|
emptyDir: {}
|
|
{{- end -}}
|