gpt4 book ai didi

go - 如何读取Volumesnapshot对象(或任何K8s对象)

转载 作者:行者123 更新时间:2023-12-01 20:22:12 26 4
gpt4 key购买 nike

我想在阅读和解析Volumesnapshot对象(或任何K8s对象)。我试图从https://github.com/kubernetes/client-go引用。
我正在尝试在VolumeSnapshot CRD元数据中添加自定义注释

apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshot
metadata:
name: new-snapshot-test
**annotation:**
**test:Tushar**
spec:
volumeSnapshotClassName: csi-hostpath-snapclass
source:
persistentVolumeClaimName: pvc-test
我也有一个自定义的CSI驱动程序。我需要CSI驱动程序在K8s api服务器中查找volumneSnapshot并解析此自定义注释,然后进行相应处理。

最佳答案

您可以按照Github repo here中的任何示例进行操作。例如,使用动态/非结构化方式(基于this的代码段):

func main() {
var kubeconfig *string
if home := homedir.HomeDir(); home != "" {
kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file")
} else {
kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file")
}
flag.Parse()

namespace := "default"

config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig)
if err != nil {
panic(err)
}
client, err := dynamic.NewForConfig(config)
if err != nil {
panic(err)
}

volumesnapshotRes := schema.GroupVersionResource{Group: "snapshot.storage.k8s.io", Version: "v1beta1", Resource: "volumesnapshots"}

// List VolumeSnapshots
prompt()
fmt.Printf("Listing volume snapshots in namespace %q:\n", apiv1.NamespaceDefault)
list, err := client.Resource(volumesnapshotRes).Namespace(namespace).List(context.TODO(), metav1.ListOptions{})
if err != nil {
panic(err)
}
for _, d := range list.Items {
...
// do whatever with the items (print, etc)
}
// Finish up
...

关于go - 如何读取Volumesnapshot对象(或任何K8s对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62780682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com