From 75f4db112a6f453deb2e4f16aec6a36c1bce824a Mon Sep 17 00:00:00 2001 From: leodotcloud Date: Thu, 14 Sep 2017 15:02:27 -0700 Subject: [PATCH] Adding openfaas (#620) Credits: https://github.com/kenfdev/rancher-cattle-openfaas --- templates/openfaas/0/README.md | 3 + templates/openfaas/0/docker-compose.yml | 56 +++++++++++++++ templates/openfaas/0/rancher-compose.yml | 71 ++++++++++++++++++++ templates/openfaas/catalogIcon-openfaas.png | Bin 0 -> 36430 bytes templates/openfaas/config.yml | 7 ++ 5 files changed, 137 insertions(+) create mode 100644 templates/openfaas/0/README.md create mode 100644 templates/openfaas/0/docker-compose.yml create mode 100644 templates/openfaas/0/rancher-compose.yml create mode 100644 templates/openfaas/catalogIcon-openfaas.png create mode 100644 templates/openfaas/config.yml diff --git a/templates/openfaas/0/README.md b/templates/openfaas/0/README.md new file mode 100644 index 0000000..de94650 --- /dev/null +++ b/templates/openfaas/0/README.md @@ -0,0 +1,3 @@ +This is a catalog that spins up an OpenFaaS(https://github.com/alexellis/faas) stack with Rancher as the backend. The `faas-rancher` container is the proxy that connects OpenFaas and Rancher. + +`faas-rancher` is in an extremely early stage and is meant only to be used in development. \ No newline at end of file diff --git a/templates/openfaas/0/docker-compose.yml b/templates/openfaas/0/docker-compose.yml new file mode 100644 index 0000000..4c891e2 --- /dev/null +++ b/templates/openfaas/0/docker-compose.yml @@ -0,0 +1,56 @@ +version: '2' +services: + lb: + image: rancher/lb-service-haproxy:v0.7.9 + ports: + - 8080:8080/tcp + - 9090:9090/tcp + - 9093:9093/tcp + labels: + io.rancher.container.agent.role: environmentAdmin + io.rancher.container.create_agent: 'true' + prometheus: + image: kenfdev/prometheus:latest-cattle + environment: + no_proxy: gateway + stdin_open: true + tty: true + command: + - -config.file=/etc/prometheus/prometheus.yml + - -storage.local.path=/prometheus + - -storage.local.memory-chunks=10000 + - --alertmanager.url=http://alertmanager:9093 + labels: + io.rancher.container.pull_image: always + faas-rancher: + image: kenfdev/faas-rancher + environment: + FUNCTION_STACK_NAME: ${FUNCTION_STACK_NAME} + CATTLE_URL: ${CATTLE_URL} + CATTLE_ACCESS_KEY: ${CATTLE_ACCESS_KEY} + CATTLE_SECRET_KEY: ${CATTLE_SECRET_KEY} + stdin_open: true + tty: true + labels: + io.rancher.container.pull_image: always + gateway: + image: functions/gateway:0.6.2 + environment: + dnsrr: 'true' + functions_provider_url: http://faas-rancher:8080/ + stdin_open: true + volumes: + - /var/run/docker.sock:/var/run/docker.sock + tty: true + labels: + io.rancher.container.pull_image: always + alertmanager: + image: functions/alertmanager:latest + environment: + no_proxy: gateway + stdin_open: true + tty: true + command: + - -config.file=/alertmanager.yml + labels: + io.rancher.container.pull_image: always diff --git a/templates/openfaas/0/rancher-compose.yml b/templates/openfaas/0/rancher-compose.yml new file mode 100644 index 0000000..667cc8f --- /dev/null +++ b/templates/openfaas/0/rancher-compose.yml @@ -0,0 +1,71 @@ +.catalog: + name: "OpenFaaS" + version: "v0.0.1" + description: "Enable Rancher as a backend for Functions as a Service (OpenFaaS)" + uuid: "openfaas-0" + minimum_rancher_version: v1.5.0 + questions: + - variable: "CATTLE_URL" + description: "The v2-beta Rancher Server Endpoint" + label: "Rancher Server Endpoint URL" + required: true + type: "string" + - variable: "CATTLE_ACCESS_KEY" + description: "The Rancher API Access Key" + label: "API Access Key" + required: true + type: "string" + - variable: "CATTLE_SECRET_KEY" + description: "The Rancher API Secret Key" + label: "API Secret Key" + required: true + type: "string" + - variable: "FUNCTION_STACK_NAME" + description: "The stack name faas functions will be deployed to. Don't forget to create it!" + label: "Functions Stack Name" + required: true + type: "string" + +version: '2' +services: + lb: + scale: 1 + start_on_create: true + lb_config: + certs: [] + port_rules: + - priority: 1 + protocol: http + service: gateway + source_port: 8080 + target_port: 8080 + - priority: 2 + protocol: http + service: prometheus + source_port: 9090 + target_port: 9090 + - priority: 3 + protocol: http + service: alertmanager + source_port: 9093 + target_port: 9093 + health_check: + healthy_threshold: 2 + response_timeout: 2000 + port: 42 + unhealthy_threshold: 3 + initializing_timeout: 60000 + interval: 2000 + reinitializing_timeout: 60000 + prometheus: + scale: 1 + start_on_create: true + faas-rancher: + scale: 1 + start_on_create: true + gateway: + scale: 1 + start_on_create: true + alertmanager: + scale: 1 + start_on_create: true diff --git a/templates/openfaas/catalogIcon-openfaas.png b/templates/openfaas/catalogIcon-openfaas.png new file mode 100644 index 0000000000000000000000000000000000000000..91467b6aeab58cdaa59ddf2656c87b19563ad27d GIT binary patch literal 36430 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 Y0)|_fD839B9epP*A|qTX_|^CS0J_&Cm;e9( literal 0 HcmV?d00001 diff --git a/templates/openfaas/config.yml b/templates/openfaas/config.yml new file mode 100644 index 0000000..8afc950 --- /dev/null +++ b/templates/openfaas/config.yml @@ -0,0 +1,7 @@ +name: OpenFaaS +description: | + Functions as a Service - a serverless framework for Docker +version: v0.0.1 +category: Platform +license: MIT +projectURL: https://github.com/kenfdev/rancher-cattle-openfaas \ No newline at end of file