apiVersion: v1 kind: Namespace metadata: name: kubeless labels: kiamol: ch21 --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRole metadata: name: kubeless-controller-deployer rules: - apiGroups: - "" resources: - services - configmaps verbs: - create - get - delete - list - update - patch - apiGroups: - apps - extensions resources: - deployments verbs: - create - get - delete - list - update - patch - apiGroups: - "" resources: - pods verbs: - list - delete - apiGroups: - "" resourceNames: - kubeless-registry-credentials resources: - secrets verbs: - get - apiGroups: - kubeless.io resources: - functions - httptriggers - cronjobtriggers verbs: - get - list - watch - update - delete - apiGroups: - batch resources: - cronjobs - jobs verbs: - create - get - delete - deletecollection - list - update - patch - apiGroups: - autoscaling resources: - horizontalpodautoscalers verbs: - create - get - delete - list - update - patch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - apiGroups: - monitoring.coreos.com resources: - alertmanagers - prometheuses - servicemonitors verbs: - '*' - apiGroups: - extensions resources: - ingresses verbs: - create - get - list - update - delete --- apiVersion: rbac.authorization.k8s.io/v1beta1 kind: ClusterRoleBinding metadata: name: kubeless-controller-deployer roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: kubeless-controller-deployer subjects: - kind: ServiceAccount name: controller-acct namespace: kubeless --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: functions.kubeless.io spec: group: kubeless.io names: kind: Function plural: functions singular: function scope: Namespaced version: v1beta1 --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: httptriggers.kubeless.io spec: group: kubeless.io names: kind: HTTPTrigger plural: httptriggers singular: httptrigger scope: Namespaced version: v1beta1 --- apiVersion: apiextensions.k8s.io/v1beta1 kind: CustomResourceDefinition metadata: name: cronjobtriggers.kubeless.io spec: group: kubeless.io names: kind: CronJobTrigger plural: cronjobtriggers singular: cronjobtrigger scope: Namespaced version: v1beta1 --- apiVersion: v1 data: builder-image: kubeless/function-image-builder:v1.0.7 builder-image-secret: "" deployment: '{}' enable-build-step: "false" function-registry-tls-verify: "true" ingress-enabled: "false" provision-image: kubeless/unzip@sha256:4863100364496255de9bf8722a220dad7143ab277ac72435876eb8c93936e9d7 provision-image-secret: "" runtime-images: '[{"ID": "ballerina", "depName": "", "fileNameSuffix": ".bal", "versions": [{"images": [{"command": "/compile-function.sh $KUBELESS_FUNC_NAME", "image": "ballerina/kubeless-ballerina-init@sha256:a04ca9d289c62397d0b493876f6a9ff4cc425563a47aa7e037c3b850b8ceb3e8", "phase": "compilation"}, {"image": "ballerina/kubeless-ballerina@sha256:a025841010cfdf8136396efef31d4155283770d331ded6a9003e6e55f02db2e5", "phase": "runtime"}], "name": "ballerina0.981.0", "version": "0.981.0"}]}, {"ID": "dotnetcore", "depName": "project.csproj", "fileNameSuffix": ".cs", "versions": [{"images": [{"command": "/app/compile-function.sh $KUBELESS_INSTALL_VOLUME", "image": "allantargino/aspnetcore-build@sha256:0d60f845ff6c9c019362a68b87b3920f3eb2d32f847f2d75e4d190cc0ce1d81c", "phase": "compilation"}, {"env": {"DOTNETCORE_HOME": "$(KUBELESS_INSTALL_VOLUME)/packages"}, "image": "allantargino/kubeless-dotnetcore@sha256:1699b07d9fc0276ddfecc2f823f272d96fd58bbab82d7e67f2fd4982a95aeadc", "phase": "runtime"}], "name": "dotnetcore2.0", "version": "2.0"}, {"images": [{"command": "/app/compile-function.sh $KUBELESS_INSTALL_VOLUME", "image": "allantargino/aspnetcore-build@sha256:36123cf0279b87c5d27d69558062678a5353cc6db238af46bd5c0e508109f659", "phase": "compilation"}, {"env": {"DOTNETCORE_HOME": "$(KUBELESS_INSTALL_VOLUME)/packages"}, "image": "allantargino/kubeless-dotnetcore@sha256:6d6c659807881e9dac7adde305867163ced5711ef77a3a76e50112bca1ba14cf", "phase": "runtime"}], "name": "dotnetcore2.1", "version": "2.1"}, {"images": [{"command": "/app/compile-function.sh $KUBELESS_INSTALL_VOLUME", "image": "lennartquerter/kubless_compile_dotnetcore22:4761f204190ad59807b9231e096cbcb3901226cd", "phase": "compilation"}, {"env": {"DOTNETCORE_HOME": "$(KUBELESS_INSTALL_VOLUME)/packages"}, "image": "lennartquerter/kubless_runtime_dotnetcore22:4761f204190ad59807b9231e096cbcb3901226cd", "phase": "runtime"}], "name": "dotnetcore2.2", "version": "2.2"}, {"images": [{"command": "/app/compile-function.sh $KUBELESS_INSTALL_VOLUME", "image": "lorenzoangelini3/kubeless-compile-dotnetcore31@sha256:4e6adfe873f7c4cd5e0d582bb5122f94c6d6ea73baa03b486dd93b8406deb8ca", "phase": "compilation"}, {"env": {"DOTNETCORE_HOME": "$(KUBELESS_INSTALL_VOLUME)/packages"}, "image": "lorenzoangelini3/kubeless-runtime-dotnetcore31@sha256:4a2d94bd6da4aee612a2009d863beb554c43e61199d8d3fc4bf2d28b5673940b", "phase": "runtime"}], "name": "dotnetcore3.1", "version": "3.1"}]}, {"ID": "go", "depName": "go.mod", "fileNameSuffix": ".go", "versions": [{"images": [{"command": "/compile-function.sh", "env": {"GOCACHE": "$(KUBELESS_INSTALL_VOLUME)/.cache"}, "image": "kubeless/go-init:1.13@sha256:7cdebecd772639c2238e6414101195cb8634c8eee73a6b473b7e39f3e094eb7c", "phase": "compilation"}, {"image": "kubeless/go@sha256:55759228714d7080b3dd858e56530d4e1f539d071906e88d88b454ee3b3c9b16", "phase": "runtime"}], "name": "go1.13", "version": "1.13"}, {"images": [{"command": "/compile-function.sh", "env": {"GOCACHE": "$(KUBELESS_INSTALL_VOLUME)/.cache"}, "image": "kubeless/go-init:1.14@sha256:403164254efabf735e98e73b7f6f65f14333ed792798c7c3d3d9a33ca91acf7a", "phase": "compilation"}, {"image": "kubeless/go@sha256:55759228714d7080b3dd858e56530d4e1f539d071906e88d88b454ee3b3c9b16", "phase": "runtime"}], "name": "go1.14", "version": "1.14"}]}, {"ID": "java", "depName": "pom.xml", "fileNameSuffix": ".java", "versions": [{"images": [{"command": "/compile-function.sh", "image": "kubeless/java-init@sha256:e8e7b55b79240f315f104604ec0685dbb1b584664772e1f0fe78c7b6369159fe", "phase": "compilation"}, {"image": "kubeless/java@sha256:f8f2c72b0c6218f25eef762aa9e8957ea2b8f448bd4b54fbb7acbb0ab64c1b0f", "phase": "runtime"}], "name": "java1.8", "version": "1.8"}, {"images": [{"command": "/compile-function.sh", "image": "kubeless/java-init@sha256:971cb482b47d644e28d3d9ceaa3a20bb0f914f2efaee0348f189840466cce663", "phase": "compilation"}, {"image": "kubeless/java@sha256:b983f701e1796f3d9a3455f8f08c057bae493835364b08b5cdfac582a2b91d70", "phase": "runtime"}], "name": "java11", "version": "11"}]}, {"ID": "nodejs", "depName": "package.json", "fileNameSuffix": ".js", "versions": [{"images": [{"command": "/kubeless-npm-install.sh", "image": "kubeless/nodejs@sha256:d36e13e876d0d92cbf4b9a62e181b27bfdaed5b9ec0b7c46759f9e11fce68c6e", "phase": "installation"}, {"env": {"NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules"}, "image": "kubeless/nodejs@sha256:d36e13e876d0d92cbf4b9a62e181b27bfdaed5b9ec0b7c46759f9e11fce68c6e", "phase": "runtime"}], "name": "node6", "version": "6"}, {"images": [{"command": "/kubeless-npm-install.sh", "image": "kubeless/nodejs@sha256:40df41562637802e34129f31e66f6e0ab388da6d8a33c9849bb9ea652d44dc3d", "phase": "installation"}, {"env": {"NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules"}, "image": "kubeless/nodejs@sha256:40df41562637802e34129f31e66f6e0ab388da6d8a33c9849bb9ea652d44dc3d", "phase": "runtime"}], "name": "node8", "version": "8"}, {"images": [{"command": "/kubeless-npm-install.sh", "image": "kubeless/nodejs@sha256:74f8428ba9e98b6849ab34d2d1b5c38381b1de471090f7cc3dc9f72322f8c921", "phase": "installation"}, {"env": {"NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules"}, "image": "kubeless/nodejs@sha256:74f8428ba9e98b6849ab34d2d1b5c38381b1de471090f7cc3dc9f72322f8c921", "phase": "runtime"}], "name": "node10", "version": "10"}, {"images": [{"command": "/kubeless-npm-install.sh", "image": "kubeless/nodejs@sha256:2a0824cba4486dcc0508b6424b29878ccf57057023c391c1a30ddb09fa9b8503", "phase": "installation"}, {"env": {"NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules"}, "image": "kubeless/nodejs@sha256:2a0824cba4486dcc0508b6424b29878ccf57057023c391c1a30ddb09fa9b8503", "phase": "runtime"}], "name": "node12", "version": "12"}]}, {"ID": "php", "depName": "composer.json", "fileNameSuffix": ".php", "versions": [{"images": [{"command": "composer install -d $KUBELESS_INSTALL_VOLUME", "image": "composer:1.6", "phase": "installation"}, {"image": "kubeless/php@sha256:a22a88fc7e0f46d185224a0179451187d6ab44b89c070807bf92a305ce416e4a", "phase": "runtime"}], "name": "php72", "version": "7.2"}, {"images": [{"command": "composer install -d $KUBELESS_INSTALL_VOLUME", "image": "composer:1.6", "phase": "installation"}, {"image": "kubeless/php@sha256:eec60c68440ca2e09dbac63718916ffbaa68e2d123a3faaca1bca2d7646f250f", "phase": "runtime"}], "name": "php73", "version": "7.3"}]}, {"ID": "python", "depName": "requirements.txt", "fileNameSuffix": ".py", "versions": [{"images": [{"command": "pip install --prefix=$KUBELESS_INSTALL_VOLUME -r $KUBELESS_DEPS_FILE", "image": "python:2.7", "phase": "installation"}, {"env": {"PYTHONPATH": "$(KUBELESS_INSTALL_VOLUME)/lib/python2.7/site-packages:$(KUBELESS_INSTALL_VOLUME)"}, "image": "kubeless/python@sha256:ce8181c88ea093659d79e0f33b2be5dd3b8c75d25c0f465fdedf7dfc3a6a1e5a", "phase": "runtime"}], "name": "python27", "version": "2.7"}, {"images": [{"command": "pip install --prefix=$KUBELESS_INSTALL_VOLUME -r $KUBELESS_DEPS_FILE", "image": "python:3.4", "phase": "installation"}, {"env": {"PYTHONPATH": "$(KUBELESS_INSTALL_VOLUME)/lib/python3.4/site-packages:$(KUBELESS_INSTALL_VOLUME)"}, "image": "kubeless/python@sha256:55e1169c69df25960dd4434566c72a4c6da8e43a7abd8e3d3f5638a6c186e9fe", "phase": "runtime"}], "name": "python34", "version": "3.4"}, {"images": [{"command": "pip install --prefix=$KUBELESS_INSTALL_VOLUME -r $KUBELESS_DEPS_FILE", "image": "python:3.6", "phase": "installation"}, {"env": {"PYTHONPATH": "$(KUBELESS_INSTALL_VOLUME)/lib/python3.6/site-packages:$(KUBELESS_INSTALL_VOLUME)"}, "image": "kubeless/python@sha256:63dc8e71d6e6f39561121763c23640373ee00eecfa630db1c01edf247c2204d9", "phase": "runtime"}], "name": "python36", "version": "3.6"}, {"images": [{"command": "pip install --prefix=$KUBELESS_INSTALL_VOLUME -r $KUBELESS_DEPS_FILE", "image": "python:3.7", "phase": "installation"}, {"env": {"PYTHONPATH": "$(KUBELESS_INSTALL_VOLUME)/lib/python3.7/site-packages:$(KUBELESS_INSTALL_VOLUME)"}, "image": "kubeless/python@sha256:76a32b0f4e11f02cd9e51147f4c3fed870c1ee2c9463167e9ef0e6856de99794", "phase": "runtime"}], "name": "python37", "version": "3.7"}]}, {"ID": "ruby", "depName": "Gemfile", "fileNameSuffix": ".rb", "versions": [{"images": [{"command": "bundle install --gemfile=$KUBELESS_DEPS_FILE --path=$KUBELESS_INSTALL_VOLUME", "image": "bitnami/ruby:2.3", "phase": "installation"}, {"env": {"GEM_HOME": "$(KUBELESS_INSTALL_VOLUME)/ruby/2.3.0"}, "image": "kubeless/ruby@sha256:67870b57adebc4dc749a8a19795da801da2d05fc6e8324168ac1b227bb7c77f7", "phase": "runtime"}], "name": "ruby23", "version": "2.3"}, {"images": [{"command": "bundle install --gemfile=$KUBELESS_DEPS_FILE --path=$KUBELESS_INSTALL_VOLUME", "image": "bitnami/ruby:2.4", "phase": "installation"}, {"env": {"GEM_HOME": "$(KUBELESS_INSTALL_VOLUME)/ruby/2.4.0"}, "image": "kubeless/ruby@sha256:f56ec50fafee09ae0ced9c8393b6874dc5072e4786c62d52b62b3f395643b423", "phase": "runtime"}], "name": "ruby24", "version": "2.4"}, {"images": [{"command": "bundle install --gemfile=$KUBELESS_DEPS_FILE --path=$KUBELESS_INSTALL_VOLUME", "image": "bitnami/ruby:2.5", "phase": "installation"}, {"env": {"GEM_HOME": "$(KUBELESS_INSTALL_VOLUME)/ruby/2.5.0"}, "image": "kubeless/ruby@sha256:9a1b51da87617024ef33fc131fe673d35fe2600f06137e40301d7a4552669c7b", "phase": "runtime"}], "name": "ruby25", "version": "2.5"}, {"images": [{"command": "bundle install --gemfile=$KUBELESS_DEPS_FILE --path=$KUBELESS_INSTALL_VOLUME", "image": "bitnami/ruby:2.6", "phase": "installation"}, {"env": {"GEM_HOME": "$(KUBELESS_INSTALL_VOLUME)/ruby/2.6.0"}, "image": "kubeless/ruby@sha256:e93ec41f43392cc1aaf6763f484aa66850b852c4a8d6841afbe8cb72aab7d810", "phase": "runtime"}], "name": "ruby26", "version": "2.6"}]}, {"ID": "jvm", "depName": "", "fileNameSuffix": ".jar", "versions": [{"images": [{"command": "mv /kubeless/* /kubeless/payload.jar && cp /opt/*.jar /kubeless/ > /dev/termination-log 2>&1", "image": "caraboides/jvm-init@sha256:e57dbf3f56570a196d68bce1c0695102b2dbe3ae2ca6d1c704476a7a11542f1d", "phase": "compilation"}, {"image": "caraboides/jvm@sha256:2870c4f48df4feb2ee7478a152b44840d781d4b1380ad3fa44b3c7ff314faded", "phase": "runtime"}], "name": "jvm1.8", "version": "1.8"}]}, {"ID": "nodejs_distroless", "depName": "package.json", "fileNameSuffix": ".js", "versions": [{"images": [{"command": "/kubeless-npm-install.sh", "image": "kubeless/nodejs@sha256:424add88dc2a7fdc45012593159794d59a6ea4aafadfffb632d21ae53b1d262b", "phase": "installation"}, {"env": {"NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules"}, "image": "kubeless/nodejs-distroless@sha256:1fa0469c5520f4e08d89b1fafd2cacf03f098b96ea04997fa52bb9ef2a180fb3", "phase": "runtime"}], "name": "node8", "version": "8"}]}, {"ID": "nodejsCE", "depName": "package.json", "fileNameSuffix": ".js", "versions": [{"images": [{"command": "/kubeless-npm-install.sh", "image": "kubeless/nodejs@sha256:456d98f6f15588b21f5110facf1cc203065840d4c227afa61d17c6c1fa98b3b6", "phase": "installation"}, {"env": {"NODE_PATH": "$(KUBELESS_INSTALL_VOLUME)/node_modules"}, "image": "andresmgot/nodejs-ce@sha256:708c265d22a8a1599e05da844d26bc63e2f66f859ffecd2fcb541ecac9c66780", "phase": "runtime"}], "name": "node8", "version": "8"}]}, {"ID": "vertx", "depName": "pom.xml", "fileNameSuffix": ".java", "versions": [{"images": [{"command": "/compile-function.sh", "image": "oscardovao/vertx-init@sha256:6665629b3239eb1d81654381b02c3dd4b87ddb0a1b0b49acc165f0ff53264e0b", "phase": "compilation"}, {"image": "oscardovao/vertx@sha256:96243e5937a875422d6165e59f1fdb350f1a6d5befbd89f26968abea4345ade1", "phase": "runtime"}], "name": "vertx1.8", "version": "1.8"}]}]' service-type: ClusterIP kind: ConfigMap metadata: name: kubeless-config namespace: kubeless --- apiVersion: apps/v1 kind: Deployment metadata: labels: kubeless: controller name: kubeless-controller-manager namespace: kubeless spec: selector: matchLabels: kubeless: controller template: metadata: labels: kubeless: controller spec: containers: - env: - name: KUBELESS_INGRESS_ENABLED valueFrom: configMapKeyRef: key: ingress-enabled name: kubeless-config - name: KUBELESS_SERVICE_TYPE valueFrom: configMapKeyRef: key: service-type name: kubeless-config - name: KUBELESS_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: KUBELESS_CONFIG value: kubeless-config image: kubeless/function-controller:v1.0.7 imagePullPolicy: IfNotPresent name: kubeless-function-controller - env: - name: KUBELESS_INGRESS_ENABLED valueFrom: configMapKeyRef: key: ingress-enabled name: kubeless-config - name: KUBELESS_SERVICE_TYPE valueFrom: configMapKeyRef: key: service-type name: kubeless-config - name: KUBELESS_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: KUBELESS_CONFIG value: kubeless-config image: kubeless/http-trigger-controller:v1.0.1 imagePullPolicy: IfNotPresent name: http-trigger-controller - env: - name: KUBELESS_INGRESS_ENABLED valueFrom: configMapKeyRef: key: ingress-enabled name: kubeless-config - name: KUBELESS_SERVICE_TYPE valueFrom: configMapKeyRef: key: service-type name: kubeless-config - name: KUBELESS_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: KUBELESS_CONFIG value: kubeless-config image: kubeless/cronjob-trigger-controller:v1.0.1 imagePullPolicy: IfNotPresent name: cronjob-trigger-controller serviceAccountName: controller-acct --- apiVersion: v1 kind: ServiceAccount metadata: name: controller-acct namespace: kubeless