项目demo
含基础控制器Snapshots 变异控制器,自动注入env,关联annotations创建资源等 SSL双向认证
配置代理
由于很多资源和镜像均在google云或则其他外网资源上,为了方面开发,建议直接配置Docker代理,和build代理
创建一个目录,执行kubebuilder初始化目录kubebuilder init --domain itgod.org --repo itgod.org/dtk
由kubebuilder生成一个GVK的框架kubebuilder create api --group dtkapps --version v1 --kind SnapshotRollback
开始开发
参考 https://book.kubebuilder.io/
,方便快速创建项目
开发一个监听deployment Image变化的控制器示例
1、修改controllers/t1_controller.go中的econcile函数,在// TODO(user): your logic here下添加内容
func (r *T1Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
_ = log.FromContext(ctx)
// TODO(user): your logic here
deployment := &appsv1.Deployment{}
err := r.Get(ctx, req.NamespacedName, deployment)
if err != nil {
if errors.IsNotFound(err) {
return reconcile.Result{}, nil
}
// Error reading the object - requeue the request.
return reconcile.Result{}, err
}
// end
return ctrl.Result{}, nil
}
2、controllers/t1_controller.go中的SetupWitchManager函数修改为监听Deployment核心资源
func (r *T1Reconciler) SetupWithManager(mgr ctrl.Manager) error {
return ctrl.NewControllerManagedBy(mgr).
For(&appsv1.Deployment{}).
Complete(r)
}
3、make run运行 (依赖kubeconfig文件)