Skip to content

Commit

Permalink
feat: implement argo-events (JIRA:PUC-193)
Browse files Browse the repository at this point in the history
  • Loading branch information
andrrax committed Mar 15, 2024
1 parent eb0e5f4 commit befab55
Show file tree
Hide file tree
Showing 9 changed files with 403 additions and 0 deletions.
135 changes: 135 additions & 0 deletions components/12-argo-events/argo-role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
## bind this argo role in the _argo-events_ namespace with the argo service account in the _argo_ namespace

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
annotations:
name: argo-role
namespace: argo-events
rules:
- apiGroups:
- coordination.k8s.io
resources:
- leases
verbs:
- create
- get
- update
- apiGroups:
- ""
resources:
- pods
- pods/exec
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- watch
- list
- apiGroups:
- ""
resources:
- persistentvolumeclaims
- persistentvolumeclaims/finalizers
verbs:
- create
- update
- delete
- get
- apiGroups:
- argoproj.io
resources:
- workflows
- workflows/finalizers
- workflowtasksets
- workflowtasksets/finalizers
- workflowartifactgctasks
verbs:
- get
- list
- watch
- update
- patch
- delete
- create
- apiGroups:
- argoproj.io
resources:
- workflowtemplates
- workflowtemplates/finalizers
verbs:
- get
- list
- watch
- apiGroups:
- argoproj.io
resources:
- workflowtaskresults
verbs:
- list
- watch
- deletecollection
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- get
- list
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- apiGroups:
- argoproj.io
resources:
- cronworkflows
- cronworkflows/finalizers
verbs:
- get
- list
- watch
- update
- patch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
- apiGroups:
- policy
resources:
- poddisruptionbudgets
verbs:
- create
- get
- delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: argo-role-binding
namespace: argo-events
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: argo-role
subjects:
- kind: ServiceAccount
name: argo
namespace: argo
83 changes: 83 additions & 0 deletions components/12-argo-events/argo-server-role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
## bind this argo-server role in the _argo-events_ namespace with the argo-server service account in the _argo_ namespace

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
annotations:
name: argo-server-role
namespace: argo-events
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- get
- watch
- list
- apiGroups:
- ""
resources:
- secrets
verbs:
- get
- create
- apiGroups:
- ""
resources:
- pods
- pods/exec
- pods/log
verbs:
- get
- list
- watch
- delete
- apiGroups:
- ""
resources:
- events
verbs:
- watch
- create
- patch
- apiGroups:
- ""
resources:
- serviceaccounts
verbs:
- get
- list
- watch
- apiGroups:
- argoproj.io
resources:
- eventsources
- sensors
- workflows
- workfloweventbindings
- workflowtemplates
- cronworkflows
- cronworkflows/finalizers
verbs:
- create
- get
- list
- watch
- update
- patch
- delete
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: argo-server-role-binding
namespace: argo-events
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: argo-server-role
subjects:
- kind: ServiceAccount
name: argo-server
namespace: argo
25 changes: 25 additions & 0 deletions components/12-argo-events/default-role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: default-role
namespace: argo-events
rules:
- apiGroups:
- ""
resources:
- pods
verbs:
- patch
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: default-binding
namespace: argo-events
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: default-role
subjects:
- kind: ServiceAccount
name: default
12 changes: 12 additions & 0 deletions components/12-argo-events/kustomization.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,15 @@ resources:
- namespace.yaml
- https://github.com/argoproj/argo-events/releases/download/v1.9.1/namespace-install.yaml
- https://github.com/argoproj/argo-events/releases/download/v1.9.1/install-validating-webhook.yaml

Check failure on line 9 in components/12-argo-events/kustomization.yaml

View workflow job for this annotation

GitHub Actions / lint-yaml

9:1 [trailing-spaces] trailing spaces

Check failure on line 9 in components/12-argo-events/kustomization.yaml

View workflow job for this annotation

GitHub Actions / lint-yaml

9:1 [trailing-spaces] trailing spaces
## configure rbac to integrate with argo-workflow
- default-role.yaml
- argo-server-role.yaml
- argo-role.yaml
- operate-workflow-sa.yaml
- workflow-rbac.yaml # https://raw.githubusercontent.com/argoproj/argo-events/master/examples/rbac/workflow-rbac.yaml # enables a Workflow Pod to be able to read and patch WorkflowTaskResults. Should not run in production

## deploy argo-event components
- native-eventbus.yaml # from https://raw.githubusercontent.com/argoproj/argo-events/stable/examples/eventbus/native.yaml
- webhook-event-source.yaml
- webhook-sensor.yaml
24 changes: 24 additions & 0 deletions components/12-argo-events/native-eventbus.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
apiVersion: argoproj.io/v1alpha1
kind: EventBus
metadata:
name: default
spec:
nats:
native:
# Optional, defaults to 3. If it is < 3, set it to 3, that is the minimal requirement.
replicas: 3
# Optional, authen strategy, "none" or "token", defaults to "none"
auth: token
# containerTemplate:
# resources:
# requests:
# cpu: "10m"
# metricsContainerTemplate:
# resources:
# requests:
# cpu: "10m"
# antiAffinity: false
# persistence:
# storageClassName: standard
# accessMode: ReadWriteOnce
# volumeSize: 10Gi
35 changes: 35 additions & 0 deletions components/12-argo-events/operate-workflow-sa.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
apiVersion: v1
kind: ServiceAccount
metadata:
# namespace: argo-events
name: operate-workflow-sa
---
# Similarly you can use a ClusterRole and ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: operate-workflow-role
# namespace: argo-events
rules:
- apiGroups:
- argoproj.io
verbs:
- "*"
resources:
- workflows
- workflowtemplates
- cronworkflows
- clusterworkflowtemplates
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: operate-workflow-role-binding
# namespace: argo-events
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: operate-workflow-role
subjects:
- kind: ServiceAccount
name: operate-workflow-sa
16 changes: 16 additions & 0 deletions components/12-argo-events/webhook-event-source.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
apiVersion: argoproj.io/v1alpha1
kind: EventSource
metadata:
name: nautobot-webhook
spec:
service:
ports:
- name: insecure
port: 12000
targetPort: 12000
webhook:
nautobot:
endpoint: /nautobot
method: POST
port: "12000"
44 changes: 44 additions & 0 deletions components/12-argo-events/webhook-sensor.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
---
apiVersion: argoproj.io/v1alpha1
kind: Sensor
metadata:
name: nautobot-webhook
spec:
template:
serviceAccountName: operate-workflow-sa
dependencies:
- name: nautobot-dep
eventSourceName: nautobot-webhook # must match EventSource name
eventName: nautobot # must match event name defined in EventSource
triggers:
- template:
name: nautobot-workflow-trigger
k8s:
operation: create
source:
resource:
apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: nautobot-webhook-
spec:
entrypoint: whalesay
arguments:
parameters:
- name: message
# the value will get overridden by event payload from test-dep
value: hello world
templates:
- name: whalesay
inputs:
parameters:
- name: message
container:
image: docker/whalesay:latest
command: [cowsay]
args: ["{{inputs.parameters.message}}"]
parameters:
- src:
dependencyName: nautobot-dep
dataKey: body
dest: spec.arguments.parameters.0.value
Loading

0 comments on commit befab55

Please sign in to comment.