From ab5f2edf9d617d665ceefc2c7688db1d8b191dee Mon Sep 17 00:00:00 2001 From: Matthew Magaldi Date: Fri, 3 Aug 2018 04:18:31 -0400 Subject: [PATCH] adding argo-events-chart (#9) --- charts/argo-events/.helmignore | 21 +++++++++++ charts/argo-events/Chart.yaml | 15 ++++++++ charts/argo-events/README.md | 13 +++++++ charts/argo-events/templates/_helpers.tpl | 37 +++++++++++++++++++ charts/argo-events/templates/_sensor-crd.tpl | 20 ++++++++++ .../templates/apply-sensor-crd-job.yaml | 18 +++++++++ .../sensor-controller-clusterrole.yaml | 15 ++++++++ .../sensor-controller-configmap.yaml | 16 ++++++++ .../templates/sensor-controller-crb.yaml | 12 ++++++ .../sensor-controller-deployment.yaml | 33 +++++++++++++++++ .../templates/sensor-controller-sa.yaml | 4 ++ .../templates/signals-clusterrole.yaml | 11 ++++++ charts/argo-events/templates/signals-crb.yaml | 12 ++++++ charts/argo-events/templates/signals-sa.yaml | 4 ++ charts/argo-events/values.yaml | 25 +++++++++++++ 15 files changed, 256 insertions(+) create mode 100644 charts/argo-events/.helmignore create mode 100644 charts/argo-events/Chart.yaml create mode 100644 charts/argo-events/README.md create mode 100644 charts/argo-events/templates/_helpers.tpl create mode 100644 charts/argo-events/templates/_sensor-crd.tpl create mode 100644 charts/argo-events/templates/apply-sensor-crd-job.yaml create mode 100644 charts/argo-events/templates/sensor-controller-clusterrole.yaml create mode 100644 charts/argo-events/templates/sensor-controller-configmap.yaml create mode 100644 charts/argo-events/templates/sensor-controller-crb.yaml create mode 100644 charts/argo-events/templates/sensor-controller-deployment.yaml create mode 100644 charts/argo-events/templates/sensor-controller-sa.yaml create mode 100644 charts/argo-events/templates/signals-clusterrole.yaml create mode 100644 charts/argo-events/templates/signals-crb.yaml create mode 100644 charts/argo-events/templates/signals-sa.yaml create mode 100644 charts/argo-events/values.yaml diff --git a/charts/argo-events/.helmignore b/charts/argo-events/.helmignore new file mode 100644 index 00000000..f0c13194 --- /dev/null +++ b/charts/argo-events/.helmignore @@ -0,0 +1,21 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj diff --git a/charts/argo-events/Chart.yaml b/charts/argo-events/Chart.yaml new file mode 100644 index 00000000..de65136c --- /dev/null +++ b/charts/argo-events/Chart.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +description: A Helm chart to install Argo-Events in k8s Cluster +name: argo-events +version: 0.1.0 +keywords: +- argo-events +- sensor-controller +sources: +- https://github.com/argoproj/argo-events +maintainers: +- name: Matt Magaldi + email: mmagaldi@blackrock.com +- name: Vaibhav Page + email: vpage@blackrock.com +appVersion: 0.1.0 diff --git a/charts/argo-events/README.md b/charts/argo-events/README.md new file mode 100644 index 00000000..e08cf4ba --- /dev/null +++ b/charts/argo-events/README.md @@ -0,0 +1,13 @@ +# Argo-Events Helm Chart +This helm chart installs the [argo-events](https://github.com/argoproj/argo-events) application. This application comes packaged with: +- Sensor Custom Resource Definition +- Sensor Controller Deployment +- Sensor Controller ConfigMap +- Sensor Controller Service Account +- Sensor Controller Cluster Roles +- Sensor Controller Cluster Role Bindings + + +Note: the associated `argo-events` cluster role and cluster role bindings can be found in the [roles](https://blade-git.blackrock.com/cloud-native/roles) repository. The purpose that these aren't included in this Helm chart is that we do not have the required permissions to create these resources in the Kubernetes clusters. Reach out to `+Group Kubernetes Support` for help in setting up these roles. + +## Chart Values diff --git a/charts/argo-events/templates/_helpers.tpl b/charts/argo-events/templates/_helpers.tpl new file mode 100644 index 00000000..63a61c45 --- /dev/null +++ b/charts/argo-events/templates/_helpers.tpl @@ -0,0 +1,37 @@ +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +*/}} +{{- define "fullname" -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{- define "sensor-crd-json" }} +{ + "apiVersion": "apiextensions.k8s.io/v1beta1", + "kind": "CustomResourceDefinition", + "metadata": { + "name": "sensors.argoproj.io" + }, + "spec": { + "group": "argoproj.io", + "names": { + "kind": "Sensor", + "listKind": "SensorList", + "plural": "sensors", + "singular": "sensor", + }, + "scope": "Namespaced", + "version": "v1alpha1" + } +} +{{- end}} diff --git a/charts/argo-events/templates/_sensor-crd.tpl b/charts/argo-events/templates/_sensor-crd.tpl new file mode 100644 index 00000000..f087c226 --- /dev/null +++ b/charts/argo-events/templates/_sensor-crd.tpl @@ -0,0 +1,20 @@ +{{- define "sensor-crd-json" }} +{ + "apiVersion": "apiextensions.k8s.io/v1beta1", + "kind": "CustomResourceDefinition", + "metadata": { + "name": "sensors.argoproj.io" + }, + "spec": { + "group": "argoproj.io", + "names": { + "kind": "Sensor", + "listKind": "SensorList", + "plural": "sensors", + "singular": "sensor", + }, + "scope": "Namespaced", + "version": "v1alpha1" + } +} +{{- end}} diff --git a/charts/argo-events/templates/apply-sensor-crd-job.yaml b/charts/argo-events/templates/apply-sensor-crd-job.yaml new file mode 100644 index 00000000..7f542894 --- /dev/null +++ b/charts/argo-events/templates/apply-sensor-crd-job.yaml @@ -0,0 +1,18 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ .Release.Name }}-apply-sensor-crd + annotations: + helm.sh/hook: pre-install + helm.sh/hook-delete-policy: hook-succeeded +spec: + backoffLimit: 5 + activeDeadlineSeconds: 100 + template: + spec: + containers: + - name: kubectl-apply + image: lachlanevenson/k8s-kubectl + command: ["/bin/sh"] + args: ["-c", 'echo ''{{- include "sensor-crd-json" .}}'' | kubectl apply -f -'] + restartPolicy: Never \ No newline at end of file diff --git a/charts/argo-events/templates/sensor-controller-clusterrole.yaml b/charts/argo-events/templates/sensor-controller-clusterrole.yaml new file mode 100644 index 00000000..a1d53e8d --- /dev/null +++ b/charts/argo-events/templates/sensor-controller-clusterrole.yaml @@ -0,0 +1,15 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ .Release.name }}-{{ .Values.controller.name}}-cluster-role +rules: +- apiGroups: ["argoproj.io"] + resources: ["sensors"] + verbs: ["get", "list", "watch", "update", "patch"] +# The following rules define what the triggers can do +- apiGroups: ["argoproj.io"] + resources: ["workflows"] + verbs: ["create", "delete"] +- apiGroups: [""] + resources: ["configmaps", "secrets", "pods"] + verbs: ["get", "watch", "list", "patch"] diff --git a/charts/argo-events/templates/sensor-controller-configmap.yaml b/charts/argo-events/templates/sensor-controller-configmap.yaml new file mode 100644 index 00000000..c3dc4661 --- /dev/null +++ b/charts/argo-events/templates/sensor-controller-configmap.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-{{ .Values.controller.name }}-configmap + labels: + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +data: + config: | + namespace: {{ .Release.Namespace }} + {{- if .Values.useReleaseAsInstanceID }} + instanceID: {{ .Release.Name }} + {{- else }} + instanceID: {{ .Values.instanceID }} + {{- end }} diff --git a/charts/argo-events/templates/sensor-controller-crb.yaml b/charts/argo-events/templates/sensor-controller-crb.yaml new file mode 100644 index 00000000..b7d54544 --- /dev/null +++ b/charts/argo-events/templates/sensor-controller-crb.yaml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ .Release.name }}-{{ .Values.controller.name}}-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ .Release.name }}-{{ .Values.controller.name}}-cluster-role +subjects: +- kind: ServiceAccount + name: {{ .Values.controller.serviceAccount }} + namespace: {{ .Release.Namespace }} diff --git a/charts/argo-events/templates/sensor-controller-deployment.yaml b/charts/argo-events/templates/sensor-controller-deployment.yaml new file mode 100644 index 00000000..a53780f5 --- /dev/null +++ b/charts/argo-events/templates/sensor-controller-deployment.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-{{ .Values.controller.name }} + labels: + app: {{ .Release.Name }}-{{ .Values.controller.name }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.controller.replicaCount }} + selector: + matchLabels: + app: {{ .Release.Name }}-{{ .Values.controller.name }} + release: {{ .Release.Name }} + template: + metadata: + labels: + app: {{ .Release.Name }}-{{ .Values.controller.name }} + release: {{ .Release.Name }} + spec: + serviceAccountName: {{ .Values.controller.serviceAccount }} + containers: + - name: {{ .Values.controller.name }} + image: "{{ .Values.registry }}/{{ .Values.controller.image }}:{{ .Values.controller.tag }}" + imagePullPolicy: {{ .Values.imagePullPolicy }} + env: + - name: SENSOR_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: SENSOR_CONFIG_MAP + value: {{ .Release.Name }}-{{ .Values.controller.name }}-configmap diff --git a/charts/argo-events/templates/sensor-controller-sa.yaml b/charts/argo-events/templates/sensor-controller-sa.yaml new file mode 100644 index 00000000..af3ef519 --- /dev/null +++ b/charts/argo-events/templates/sensor-controller-sa.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.controller.serviceAccount }} diff --git a/charts/argo-events/templates/signals-clusterrole.yaml b/charts/argo-events/templates/signals-clusterrole.yaml new file mode 100644 index 00000000..dfec0e27 --- /dev/null +++ b/charts/argo-events/templates/signals-clusterrole.yaml @@ -0,0 +1,11 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ .Release.name }}-signals-cluster-role +rules: +- apiGroups: [""] + resources: ["pods"] + verbs: ["watch", "list", "patch"] +- apiGroups: {{ .Values.signals.listenRoles.apiGroups }} + resources: {{ .Values.signals.listenRoles.resources }} + verbs: ["get", "list", "watch"] \ No newline at end of file diff --git a/charts/argo-events/templates/signals-crb.yaml b/charts/argo-events/templates/signals-crb.yaml new file mode 100644 index 00000000..3a265e5b --- /dev/null +++ b/charts/argo-events/templates/signals-crb.yaml @@ -0,0 +1,12 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRoleBinding +metadata: + name: {{ .Release.name }}-signals-binding +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: ClusterRole + name: {{ .Release.name }}-signals-cluster-role +subjects: +- kind: ServiceAccount + name: {{ .Values.signals.serviceAccount }} + namespace: {{ .Release.Namespace }} diff --git a/charts/argo-events/templates/signals-sa.yaml b/charts/argo-events/templates/signals-sa.yaml new file mode 100644 index 00000000..9baaa73b --- /dev/null +++ b/charts/argo-events/templates/signals-sa.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.signals.serviceAccount }} diff --git a/charts/argo-events/values.yaml b/charts/argo-events/values.yaml new file mode 100644 index 00000000..ca0510fa --- /dev/null +++ b/charts/argo-events/values.yaml @@ -0,0 +1,25 @@ +registry: argoproj +imagePullPolicy: Always + +# Version of the Sensor CRD +crdVersion: v1alpha1 + +# If set to true then chart set controller instance id to release name +useReleaseAsInstanceID: true +instanceID: 1 + +# controller +controller: + name: sensor-controller + image: sensor-controller + tag: latest + replicaCount: 1 + serviceAccount: argo-events + +# signal microservices +signals: + serviceAccount: argo-signals + # this controls what the resource signal pod can listen to + listenRoles: + apiGroups: ["argoproj.io", ""] + resources: ["sensors", "workflows", "pods"]