zuul-operator/README.md

2.9 KiB

A Zuul Operator PoC

Requirements:

Prepare cluster

sudo -i oc cluster up
sudo chown root:fedora /var/run/docker.sock

oc login -u developer -p dev
docker login -u developer -p $(oc whoami -t) $(oc registry info)

# Log as admin to install crd
sudo cat /root/.kube/config > ~/.kube/config
oc login -u system:admin
oc project default

Install Zookeeper Operator

Perhaps this should be part of the zuul operator

oc create -f https://raw.githubusercontent.com/pravega/zookeeper-operator/master/deploy/crds/zookeeper_v1beta1_zookeepercluster_crd.yaml
oc create -f https://raw.githubusercontent.com/pravega/zookeeper-operator/master/deploy/default_ns/rbac.yaml
oc create -f https://raw.githubusercontent.com/pravega/zookeeper-operator/master/deploy/default_ns/operator.yaml

Install Zuul Operator

operator-sdk build 172.30.1.1:5000/myproject/zuul-operator:latest
docker push 172.30.1.1:5000/myproject/zuul-operator:latest

oc create -f deploy/crds/zuul-ci_v1alpha1_zuul_crd.yaml
oc create -f deploy/rbac.yaml
oc create -f deploy/operator.yaml

Look for operator pod and check it's output

$ oc get pods
NAME                            READY     STATUS    RESTARTS   AGE
zuul-operator-c64756f66-rbdmg   2/2       Running   0          3s
$ oc logs zuul-operator-c64756f66-rbdmg -c operator
...
{"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

$ oc apply -f - <<EOF
apiVersion: zuul-ci.org/v1alpha1
kind: ZuulService
metadata:
  name: example-zuul
spec:
  merger:
    instances: 0
  executor:
    instances: 1
  web:
    instances: 1
  connections: []
  tenants: []
EOF
zuul.zuul-ci.org/example-zuul created

$ oc get zuulservice
NAME           AGE
example-zuul   10s

$ oc get pods
example-zuul-executor-696f969c4-6cpjv     1/1       Running     0          8s
example-zuul-scheduler-77b6cf7967-ksh64   1/1       Running     0          11s
example-zuul-web-5f744f89c9-qjp9l         1/1       Running     0          6s
example-zuul-zk-0                         1/1       Running     0          22s

$ oc get svc
example-zuul-web           ClusterIP      172.30.209.181   <none>                          80/TCP                    41s

$ curl 172.30.209.181/api/info
{"info": {"capabilities": {"job_history": false}, "websocket_url": null, "stats": {"prefix": null, "type": "graphite", "url": null}}}