Implement support for Azure storage message queue triggers (#371)

These commits implement support for consuming messages from an Azure storage queue to trigger Fission functions.

* Add stubbed Azure message queue implementation and modify Helm charts.

This commit stubs an implementation for an Azure storage message queue trigger
that will be completed by future commits.

It also modifies the Helm chart to add support for deploying Fission with an
mqtrigger configured for Azure storage queue triggers.

* Add Azure Go SDK to glide.

This commit adds the Azure Go SDK to glide for the upcoming work to support
Azure storage queue triggers.

* Implement Azure message queue trigger.

This commit implements a message queue trigger based on Azure storage queues.

Required message queue trigger manager environment variables:

* AZURE_STORAGE_ACCOUNT_NAME - the Azure storage account to use.
* AZURE_STORAGE_ACCOUNT_KEY - the Azure storage account key.

When creating a message queue trigger, the topic will be the Azure storage
queue to receive messages from.

* Add CA certificates to fission-bundle.

This commit adds the root CA certificates to the fission-bundle image. This
allows Fission to contact third-party APIs that use HTTPS with root CA
signed certificates.

* Add Makefile to build and test.

This commit adds a simple Makefile for building the client and bundle, running
tests, creating the Docker image, and pushing the Docker image.
This commit is contained in:
Peter Huene
2018-02-09 10:38:06 -08:00
committed by Soam Vasani
parent 46895b03c8
commit 4d0e6af5de
15 changed files with 982 additions and 32 deletions
+11 -11
View File
@@ -39,7 +39,7 @@ The following table lists the configurable parameters of the Fission chart and t
| Parameter | Description | Default |
| ------------------- | ------------------------------------------ | ------------------------ |
| `serviceType` | Type of service to use | `LoadBalancer`. |
| `serviceType` | Type of service to use | `LoadBalancer` |
| `image` | Fission image | `fission/fission-bundle` |
| `imageTag` | Fission image tag | `alpha20170124` |
| `fetcherImage` | Fission fetcher image | `fission/fetcher` |
@@ -49,18 +49,18 @@ The following table lists the configurable parameters of the Fission chart and t
| `functionNamespace` | Namespace for Fission functions | `fission-function` |
| `builderNamespace` | Namespace for Fission environment builders | `fission-builder` |
* Extra configuration for `fission-all`
| Parameter | Description | Default |
| ---------------------- | --------------------------- | -------------------------- |
| `logger.influxdbAdmin` | Log database admin username | `admin`. |
| `logger.fluentdImage` | Logger fluentd image | `fission/fluentd` |
| `fissionUiImage` | Fission ui image | `fission/fission-ui:0.1.0` |
| `nats.authToken` | Nats streaming auth token | `defaultFissionAuthToken` |
| `nats.clusterID` | Nats streaming clusterID | `fissionMQTrigger` |
| Parameter | Description | Default |
| ------------------------------- | --------------------------- | ---------------------------------------------------------- |
| `logger.influxdbAdmin` | Log database admin username | `admin` |
| `logger.fluentdImage` | Logger fluentd image | `fission/fluentd` |
| `fissionUiImage` | Fission ui image | `fission/fission-ui:0.1.0` |
| `messageQueue` | Message queue type | `nats-streaming` |
| `nats.authToken` | Nats streaming auth token | `defaultFissionAuthToken` |
| `nats.clusterID` | Nats streaming clusterID | `fissionMQTrigger` |
| `azureStorageQueue.accountName` | Azure storage account name | None (required if `messageQueue` is `azure-storage-queue`) |
| `azureStorageQueue.key` | Azure storage access key | None (required if `messageQueue` is `azure-storage-queue`) |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
+13 -1
View File
@@ -444,6 +444,7 @@ spec:
# serviceAccount: fission-svc
---
{{- if eq .Values.messageQueue.type "nats-streaming" }}
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
@@ -469,6 +470,7 @@ spec:
- containerPort: 4222
hostPort: 4222
protocol: TCP
{{- end }}
---
apiVersion: extensions/v1beta1
@@ -492,9 +494,19 @@ spec:
args: ["--mqt"]
env:
- name: MESSAGE_QUEUE_TYPE
value: nats-streaming
value: {{ .Values.messageQueue.type }}
{{- if eq .Values.messageQueue.type "nats-streaming" }}
- name: MESSAGE_QUEUE_URL
value: nats://{{ .Values.nats.authToken }}@nats-streaming:4222
{{- else if eq .Values.messageQueue.type "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
{{- end }}
serviceAccount: fission-svc
---
+14 -1
View File
@@ -7,4 +7,17 @@ metadata:
type: Opaque
data:
username: {{ .Values.logger.influxdbAdmin | b64enc | quote }}
password: {{ randAlphaNum 20 | b64enc | quote }}
password: {{ randAlphaNum 20 | b64enc | quote }}
---
{{- if eq .Values.messageQueue.type "azure-storage-queue" }}
apiVersion: v1
kind: Secret
metadata:
name: azure-storage-account-key
labels:
chart: "{{ .Chart.Name }}-{{ .Chart.Version }}"
type: Opaque
data:
key: {{ required "An Azure storage access key is required." .Values.azureStorageQueue.key | b64enc | quote }}
{{- end }}
+2
View File
@@ -36,6 +36,7 @@ spec:
svc: controller
---
{{- if eq .Values.messageQueue.type "nats-streaming" }}
apiVersion: v1
kind: Service
metadata:
@@ -53,6 +54,7 @@ spec:
{{ end }}
selector:
svc: nats-streaming
{{- end }}
---
apiVersion: v1
+9
View File
@@ -44,12 +44,21 @@ logger:
fluentdImage: fission/fluentd
fluentdImageTag: 0.5.0
## Type of Queue you would like to use
## currently supports nats-streaming, azure-storage-queue
messageQueue:
type: nats-streaming
## Message queue trigger config
### NATS Streaming
nats:
authToken: "defaultFissionAuthToken"
clusterID: "fissionMQTrigger"
## Required if messageQueue type is azure-storage-queue
azureStorageQueue:
key: ""
accountName: ""
## Persist data to a persistent volume.
persistence: