diff --git a/charts/argo-events/Chart.yaml b/charts/argo-events/Chart.yaml index d32cb2be..69e525e3 100644 --- a/charts/argo-events/Chart.yaml +++ b/charts/argo-events/Chart.yaml @@ -1,9 +1,11 @@ apiVersion: v1 description: A Helm chart to install Argo-Events in k8s Cluster name: argo-events -version: 0.2.0 +appVersion: 0.5.0 +version: 0.3.0 keywords: - argo-events +- gateway-controller - sensor-controller sources: - https://github.com/argoproj/argo-events diff --git a/charts/argo-events/README.md b/charts/argo-events/README.md index e08cf4ba..68a6e97c 100644 --- a/charts/argo-events/README.md +++ b/charts/argo-events/README.md @@ -1,12 +1,19 @@ # 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 +- Sensor Controller Cluster Role Binding +- Gateway Custom Resource Definition +- Gateway Controller Deployment +- Gateway Controller ConfigMap +- Gateway Controller Service Account +- Gateway Controller Cluster Roles +- Gateway Controller Cluster Role Binding 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. diff --git a/charts/argo-events/templates/_gateway-crd.tpl b/charts/argo-events/templates/_gateway-crd.tpl new file mode 100644 index 00000000..d2665b09 --- /dev/null +++ b/charts/argo-events/templates/_gateway-crd.tpl @@ -0,0 +1,20 @@ +{{- define "gateway-crd-json" }} +{ + "apiVersion": "apiextensions.k8s.io/{{ .Values.crd.version }}", + "kind": "CustomResourceDefinition", + "metadata": { + "name": "gateways.argoproj.io" + }, + "spec": { + "group": "argoproj.io", + "names": { + "kind": "Gateway", + "listKind": "GatewayList", + "plural": "gateways", + "singular": "gateway" + }, + "scope": "Namespaced", + "version": "v1alpha1" + } +} +{{- end}} diff --git a/charts/argo-events/templates/apply-gateway-crd-job.yaml b/charts/argo-events/templates/apply-gateway-crd-job.yaml new file mode 100644 index 00000000..1aca28ec --- /dev/null +++ b/charts/argo-events/templates/apply-gateway-crd-job.yaml @@ -0,0 +1,19 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ .Release.Name }}-apply-gateway-crd + annotations: + helm.sh/hook: pre-install + helm.sh/hook-delete-policy: hook-succeeded +spec: + backoffLimit: 5 + activeDeadlineSeconds: 100 + template: + spec: + serviceAccountName: {{ .Values.crd.jobServiceAccount }} + containers: + - name: kubectl-apply + image: lachlanevenson/k8s-kubectl + command: ["/bin/sh"] + args: ["-c", 'echo ''{{- include "gateway-crd-json" .}}'' | kubectl apply -f -'] + restartPolicy: Never diff --git a/charts/argo-events/templates/gateway-controller-clusterrole.yaml b/charts/argo-events/templates/gateway-controller-clusterrole.yaml new file mode 100644 index 00000000..61502bc9 --- /dev/null +++ b/charts/argo-events/templates/gateway-controller-clusterrole.yaml @@ -0,0 +1,8 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + name: {{ .Release.name }}-{{ .Values.gatewayController.name}}-cluster-role +rules: +- apiGroups: ["*"] + resources: ["*"] + verbs: ["*"] diff --git a/charts/argo-events/templates/signals-crb.yaml b/charts/argo-events/templates/gateway-controller-clusterrrolebinding.yaml similarity index 51% rename from charts/argo-events/templates/signals-crb.yaml rename to charts/argo-events/templates/gateway-controller-clusterrrolebinding.yaml index 3a265e5b..431fa6ad 100644 --- a/charts/argo-events/templates/signals-crb.yaml +++ b/charts/argo-events/templates/gateway-controller-clusterrrolebinding.yaml @@ -1,12 +1,12 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: {{ .Release.name }}-signals-binding + name: {{ .Release.name }}-{{ .Values.gatewayController.name}}-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: {{ .Release.name }}-signals-cluster-role + name: {{ .Release.name }}-{{ .Values.gatewayController.name}}-cluster-role subjects: - kind: ServiceAccount - name: {{ .Values.signals.serviceAccount }} + name: {{ .Values.gatewayController.serviceAccount }} namespace: {{ .Release.Namespace }} diff --git a/charts/argo-events/templates/gateway-controller-configmap.yaml b/charts/argo-events/templates/gateway-controller-configmap.yaml new file mode 100644 index 00000000..56fb0b7e --- /dev/null +++ b/charts/argo-events/templates/gateway-controller-configmap.yaml @@ -0,0 +1,16 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ .Release.Name }}-{{ .Values.gatewayController.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/gateway-controller-deployment.yaml b/charts/argo-events/templates/gateway-controller-deployment.yaml new file mode 100644 index 00000000..8d5b8294 --- /dev/null +++ b/charts/argo-events/templates/gateway-controller-deployment.yaml @@ -0,0 +1,33 @@ +apiVersion: apps/v1beta1 +kind: Deployment +metadata: + name: {{ .Release.Name }}-{{ .Values.gatewayController.name }} + labels: + app: {{ .Release.Name }}-{{ .Values.gatewayController.name }} + chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} +spec: + replicas: {{ .Values.gatewayController.replicaCount }} + selector: + matchLabels: + app: {{ .Release.Name }}-{{ .Values.gatewayController.name }} + release: {{ .Release.Name }} + template: + metadata: + labels: + app: {{ .Release.Name }}-{{ .Values.gatewayController.name }} + release: {{ .Release.Name }} + spec: + serviceAccountName: {{ .Values.gatewayController.serviceAccount }} + containers: + - name: {{ .Values.gatewayController.name }} + image: "{{ .Values.registry }}/{{ .Values.gatewayController.image }}:{{ .Values.gatewayController.tag }}" + imagePullPolicy: {{ .Values.imagePullPolicy }} + env: + - name: GATEWAY_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: GATEWAY_CONTROLLER_CONFIG_MAP + value: {{ .Release.Name }}-{{ .Values.gatewayController.name }}-configmap diff --git a/charts/argo-events/templates/gateway-controller-sa.yaml b/charts/argo-events/templates/gateway-controller-sa.yaml new file mode 100644 index 00000000..b678de38 --- /dev/null +++ b/charts/argo-events/templates/gateway-controller-sa.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ .Values.gatewayController.serviceAccount }} diff --git a/charts/argo-events/templates/sensor-controller-clusterrole.yaml b/charts/argo-events/templates/sensor-controller-clusterrole.yaml index a1d53e8d..13230e1f 100644 --- a/charts/argo-events/templates/sensor-controller-clusterrole.yaml +++ b/charts/argo-events/templates/sensor-controller-clusterrole.yaml @@ -1,15 +1,8 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: - name: {{ .Release.name }}-{{ .Values.controller.name}}-cluster-role + name: {{ .Release.name }}-{{ .Values.sensorController.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"] +- apiGroups: ["*"] + resources: ["*"] + verbs: ["*"] diff --git a/charts/argo-events/templates/sensor-controller-crb.yaml b/charts/argo-events/templates/sensor-controller-clusterrolebinding.yaml similarity index 51% rename from charts/argo-events/templates/sensor-controller-crb.yaml rename to charts/argo-events/templates/sensor-controller-clusterrolebinding.yaml index b7d54544..fa886420 100644 --- a/charts/argo-events/templates/sensor-controller-crb.yaml +++ b/charts/argo-events/templates/sensor-controller-clusterrolebinding.yaml @@ -1,12 +1,12 @@ apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: - name: {{ .Release.name }}-{{ .Values.controller.name}}-binding + name: {{ .Release.name }}-{{ .Values.sensorController.name}}-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole - name: {{ .Release.name }}-{{ .Values.controller.name}}-cluster-role + name: {{ .Release.name }}-{{ .Values.sensorController.name}}-cluster-role subjects: - kind: ServiceAccount - name: {{ .Values.controller.serviceAccount }} + name: {{ .Values.sensorController.serviceAccount }} namespace: {{ .Release.Namespace }} diff --git a/charts/argo-events/templates/sensor-controller-configmap.yaml b/charts/argo-events/templates/sensor-controller-configmap.yaml index c3dc4661..cfcebdaa 100644 --- a/charts/argo-events/templates/sensor-controller-configmap.yaml +++ b/charts/argo-events/templates/sensor-controller-configmap.yaml @@ -1,7 +1,7 @@ apiVersion: v1 kind: ConfigMap metadata: - name: {{ .Release.Name }}-{{ .Values.controller.name }}-configmap + name: {{ .Release.Name }}-{{ .Values.sensorController.name }}-configmap labels: chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} release: {{ .Release.Name }} diff --git a/charts/argo-events/templates/sensor-controller-deployment.yaml b/charts/argo-events/templates/sensor-controller-deployment.yaml index a53780f5..966a6afa 100644 --- a/charts/argo-events/templates/sensor-controller-deployment.yaml +++ b/charts/argo-events/templates/sensor-controller-deployment.yaml @@ -1,28 +1,28 @@ apiVersion: apps/v1beta1 kind: Deployment metadata: - name: {{ .Release.Name }}-{{ .Values.controller.name }} + name: {{ .Release.Name }}-{{ .Values.sensorController.name }} labels: - app: {{ .Release.Name }}-{{ .Values.controller.name }} + app: {{ .Release.Name }}-{{ .Values.sensorController.name }} chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} spec: - replicas: {{ .Values.controller.replicaCount }} + replicas: {{ .Values.sensorController.replicaCount }} selector: matchLabels: - app: {{ .Release.Name }}-{{ .Values.controller.name }} + app: {{ .Release.Name }}-{{ .Values.sensorController.name }} release: {{ .Release.Name }} template: metadata: labels: - app: {{ .Release.Name }}-{{ .Values.controller.name }} + app: {{ .Release.Name }}-{{ .Values.sensorController.name }} release: {{ .Release.Name }} spec: - serviceAccountName: {{ .Values.controller.serviceAccount }} + serviceAccountName: {{ .Values.sensorController.serviceAccount }} containers: - - name: {{ .Values.controller.name }} - image: "{{ .Values.registry }}/{{ .Values.controller.image }}:{{ .Values.controller.tag }}" + - name: {{ .Values.sensorController.name }} + image: "{{ .Values.registry }}/{{ .Values.sensorController.image }}:{{ .Values.sensorController.tag }}" imagePullPolicy: {{ .Values.imagePullPolicy }} env: - name: SENSOR_NAMESPACE @@ -30,4 +30,4 @@ spec: fieldRef: fieldPath: metadata.namespace - name: SENSOR_CONFIG_MAP - value: {{ .Release.Name }}-{{ .Values.controller.name }}-configmap + value: {{ .Release.Name }}-{{ .Values.sensorController.name }}-configmap diff --git a/charts/argo-events/templates/sensor-controller-sa.yaml b/charts/argo-events/templates/sensor-controller-sa.yaml index af3ef519..611a5664 100644 --- a/charts/argo-events/templates/sensor-controller-sa.yaml +++ b/charts/argo-events/templates/sensor-controller-sa.yaml @@ -1,4 +1,4 @@ apiVersion: v1 kind: ServiceAccount metadata: - name: {{ .Values.controller.serviceAccount }} + name: {{ .Values.sensorController.serviceAccount }} diff --git a/charts/argo-events/templates/signals-clusterrole.yaml b/charts/argo-events/templates/signals-clusterrole.yaml deleted file mode 100644 index dfec0e27..00000000 --- a/charts/argo-events/templates/signals-clusterrole.yaml +++ /dev/null @@ -1,11 +0,0 @@ -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-sa.yaml b/charts/argo-events/templates/signals-sa.yaml deleted file mode 100644 index 9baaa73b..00000000 --- a/charts/argo-events/templates/signals-sa.yaml +++ /dev/null @@ -1,4 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ .Values.signals.serviceAccount }} diff --git a/charts/argo-events/values.yaml b/charts/argo-events/values.yaml index c68ca7cc..e21a1aee 100644 --- a/charts/argo-events/values.yaml +++ b/charts/argo-events/values.yaml @@ -1,4 +1,4 @@ -registry: argoproj +registry: metalgearsolid imagePullPolicy: Always # Version of the Sensor CRD @@ -11,17 +11,16 @@ useReleaseAsInstanceID: true instanceID: 1 # controller -controller: +sensorController: name: sensor-controller image: sensor-controller tag: latest replicaCount: 1 - serviceAccount: argo-events + serviceAccount: sensor-controller -# signal microservices -signals: - serviceAccount: argo-signals - # this controls what the resource signal pod can listen to - listenRoles: - apiGroups: ["argoproj.io", ""] - resources: ["sensors", "workflows", "pods"] +gatewayController: + name: gateway-controller + image: gateway-controller + tag: latest + replicaCount: 1 + serviceAccount: gateway-controller