运行和部署 controller
要测试 controller,我们可以在集群本地运行它。不过,在开始之前,我们需要按照 快速入门 安装 CRD。如果需要,将使用 controller-tools 自动更新 YAML 清单:
make install
现在我们已经安装了 CRD,在集群上运行 controller 了。这将使用与集群连接所用的任何凭据,因此我们现在不必担心 RBAC。
在单独的终端中运行
make run ENABLE_WEBHOOKS=false
您应该会看到 controller 关于启动的日志,但它还没有做任何事情。
此时,我们需要一个 CronJob 进行测试。让我们写一个样例到 config/samples/batch_v1_cronjob.yaml
,并使用:
apiVersion: batch.tutorial.kubebuilder.io/v1
kind: CronJob
metadata:
name: cronjob-sample
spec:
schedule: "*/1 * * * *"
startingDeadlineSeconds: 60
concurrencyPolicy: Allow # explicitly specify, but Allow is also default.
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: busybox
args:
- /bin/sh
- -c
- date; echo Hello from the Kubernetes cluster
restartPolicy: OnFailure
kubectl create -f config/samples/batch_v1_cronjob.yaml
此时,您应该看到一系列的活动。如果看到变更,则应该看到您的 cronjob 正在运行,并且正在更新状态:
kubectl get cronjob.batch.tutorial.kubebuilder.io -o yaml
kubectl get job
现在我们知道它正在工作,我们可以在集群中运行它。停止 make run
调用,然后运行
make docker-build docker-push IMG=<some-registry>/<project-name>:tag
make deploy IMG=<some-registry>/<project-name>:tag
如果像以前一样再次列出 cronjobs,我们应该会看到控制器再次运行!