SDK оператора k8s - как получить актуальное состояние CRD
Я хочу сравнить новую спецификацию с фактическим состоянием, чтобы увидеть, позволю ли я внести некоторые изменения (скажем, в обновление)
Я нашел этот пример от оператора etcd, и мне было интересно, есть ли более распространенные способы получения некоторого ресурса моего CRD (statefulset):
podList, err := c.config.KubeCli.Core().Pods(c.cluster.Namespace).List(k8sutil.ClusterListOpt(c.cluster.Name))
1 ответ
Решение использует функцию Get: https://github.com/operator-framework/operator-sdk/blob/master/pkg/sdk/query.go
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))