Я хочу сравнить новую спецификацию с фактическим состоянием, чтобы увидеть, разрешу ли я некоторые изменения (скажем, обновление)
Я нашел этот пример у оператора etcd, и мне было интересно, есть ли более распространенные способы получения какого-либо ресурса моего CRD (statefulset):
podList, err := c.config.KubeCli.Core().Pods(c.cluster.Namespace).List(k8sutil.ClusterListOpt(c.cluster.Name))
Пример из: https://github.com/coreos/etcd-operator/blob/534a00a970975a66b15e2ea3cd90eb6d5104c71b/pkg/cluster/cluster.go#L285
решение использует функцию Get: https://github.com/operator-framework/operator-sdk/blob/master/pkg/sdk/query.go
пример (https://github.com/operator-framework/operator-sdk/blob/master/doc/design/milestone-0.0.2/query-api.md):
d := &apps_v1.Deployment{ TypeMeta: meta_v1.TypeMeta{ Kind: "Deployment", APIVersion: "apps/v1", } ObjectMeta: metav_1.ObjectMeta{ Name: "example", Namespace: "default", } } // Get with default options err := sdk.Get(d) // Get with custom options o := &meta_v1.GetOptions{ResourceVersion: "0"} err := sdk.Get(d, sdk.WithGetOptions(o))