A Kubernetes Operator for Zuul
Go to file
Michael Kelly d2b2393d52
Only listen for updates to known secrets
@kopf.on.update('secrets') will cause us to attempt to listen to
updates to every secret in the Kubernetes cluster in which we are
running.  This is negative because:

* kopf annotates every object it is watching to track last known
  state, which will be *every secret in the cluster* if with the
  current approach.  This is a somewhat obnoxious behaviour.

* if the operator is not running with elevated priviledges, this may
  not work correctly anyway, although the current deployment does
  provide the operator user with cluster-admin priviledges

Instead, we should only track the secrets that we've expressed
interest in, which is effectively what we're doing anyway, but this
will save us from annotating every secret in the cluster.

Change-Id: I540841ee8b053ae05ca7943aca3f1646b509cfd9
2022-10-14 08:39:51 -07:00
build Use kopf operator framework 2021-07-20 13:16:07 -07:00
deploy Update CRD apiVersion to v1 (from v1beta) 2022-06-30 18:45:23 +00:00
doc Update CRD apiVersion to v1 (from v1beta) 2022-06-30 18:45:23 +00:00
playbooks/zuul-operator-functional Pin pykube-ng and fix the CI 2022-06-27 22:04:14 +00:00
tools Add static node to functional test 2021-08-05 07:34:49 -07:00
zuul_operator Only listen for updates to known secrets 2022-10-14 08:39:51 -07:00
.git-blame-ignore-revs Add reformat changes to the blame ignore list 2020-07-08 13:20:57 -04:00
.gitignore Use kopf operator framework 2021-07-20 13:16:07 -07:00
.gitreview Add .gitreview and .zuul.yaml 2019-06-27 07:41:10 -07:00
.zuul.yaml Fix functional test job 2021-09-09 07:29:00 -07:00
LICENSE Initial commit 2019-04-02 10:01:37 +00:00
Makefile Add docs 2021-07-23 10:27:04 -07:00
README.md Bump API version to v1alpha2 2021-07-20 13:16:58 -07:00
requirements.txt kopf: Upgrade kopf to at least 1.35.0 2022-10-14 08:38:56 -07:00
setup.cfg Use kopf operator framework 2021-07-20 13:16:07 -07:00
setup.py Use kopf operator framework 2021-07-20 13:16:07 -07:00
tox.ini Switch docs theme to versioned RTD 2021-12-16 11:22:21 -08:00

Zuul Operator

Build the image

$ make image

Install the operator

$ make install
kubectl apply -f deploy/crds/zuul-ci_v1alpha2_zuul_crd.yaml -f deploy/rbac.yaml -f deploy/operator.yaml

Look for operator pod and check it's output

$ kubectl get pods
NAME                            READY     STATUS    RESTARTS   AGE
zuul-operator-c64756f66-rbdmg   2/2       Running   0          3s
$ kubectl logs zuul-operator-c64756f66-rbdmg
[...]
{"level":"info","ts":1554197305.5853095,"logger":"cmd","msg":"Go Version: go1.10.3"}
{"level":"info","ts":1554197305.5854425,"logger":"cmd","msg":"Go OS/Arch: linux/amd64"}
{"level":"info","ts":1554197305.5854564,"logger":"cmd","msg":"Version of operator-sdk: v0.6.0"}
{"level":"info","ts":1554197305.5855,"logger":"cmd","msg":"Watching namespace.","Namespace":"default"}
[...]

Usage

$ kubectl apply -f - <<EOF
apiVersion: operator.zuul-ci.org/v1alpha2
kind: Zuul
metadata:
  name: example-zuul
spec:

EOF
zuul.zuul-ci.org/example-zuul created