运行并部署控制器
可选
如果你选择修改了 API 定义,那么在继续之前,请生成 CR/CRD 等清单:
make manifests
为了测试控制器,我们可以在本地连接到集群运行它。但在此之前,需要按照快速开始安装我们的 CRD。必要时,这会使用 controller-tools 自动更新 YAML 清单:
make install
现在 CRD 已安装好,我们可以连接到集群运行控制器了。它会使用我们连接集群所用的凭证,因此暂时不需要担心 RBAC。
在另一个终端中运行:
export ENABLE_WEBHOOKS=false
make run
你应当能看到控制器的启动日志,但此时它还不会做任何事情。
接下来我们需要一个 CronJob 来测试。把示例写到 config/samples/batch_v1_cronjob.yaml,然后使用它:
apiVersion: batch.tutorial.kubebuilder.io/v1
kind: CronJob
metadata:
labels:
app.kubernetes.io/name: project
app.kubernetes.io/managed-by: kustomize
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,我们应该能看到控制器又在正常工作了!
