02 Simplest Redis Crd
在 /api/v1/redis_types.go 中, 增加 Replicas 和 Port 字段。
type RedisSpec struct {
	// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
	// Important: Run "make" to regenerate code after modifying this file
	// Foo is an example field of Redis. Edit redis_types.go to remove/update
	// Foo string `json:"foo,omitempty"`
	Replicas int   `json:"replicas,omitempty"`
	Port     int32 `json:"port,omitempty"`
}
这个 RedisSpec 对应 /deploy/my-op-redis.yml 中的 spec
apiVersion: myapp.tangx.in/v1
kind: Redis
metadata:
  name: my-op-redis
spec:
  replicas: 1
  port: 3333
在 /controllers/redis_controller.go 中编码 Reconcile(调谐) 逻辑。
func (r *RedisReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
	_ = log.FromContext(ctx)
	// TODO(user): your logic here
	redis := v1.Redis{}
	err := r.Get(ctx, req.NamespacedName, &redis)
	if err != nil {
		return ctrl.Result{}, err
	}
	fmt.Println("得到crd redis 对象: ", redis)
	return ctrl.Result{}, nil
}
make uninstall
make install
make run
新开窗口
ka -f deploy/
在 make run 窗口可以看到 调谐 中的输出结果。
得到crd redis 对象:  { {Redis myapp.tangx.in/v1} {my-op-redis  default  c0e85341-edf3-4261-92da-6a337d473f0c 775203 1 2021-11-19 15:26:53 +0800 CST <nil> <nil> map[] map[kubectl.kubernetes.io/last-applied-configuration:{"apiVersion":"myapp.tangx.in/v1","kind":"Redis","metadata":{"annotations":{},"name":"my-op-redis","namespace":"default"},"spec":{"port":3333,"replicas":1}}
] [] []  [{kubectl-client-side-apply Update myapp.tangx.in/v1 2021-11-19 15:26:53 +0800 CST FieldsV1 {"f:metadata":{"f:annotations":{".":{},"f:kubectl.kubernetes.io/last-applied-configuration":{}}},"f:spec":{".":{},"f:port":{},"f:replicas":{}}} }]} {1 3333} {} }
