Client-go -- dynamicClient 操作CRD 资源

本文档介绍了如何使用client-go库中的dynamicClient来操作Kubernetes自定义资源定义(CRD)。通过示例代码展示动态客户端的部署过程。
摘要由CSDN通过智能技术生成

操作CRD资源

package main

import (
	"flag"
	"fmt"
	"log"
	"path/filepath"

	"k8s.io/apimachinery/pkg/api/meta"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
	"k8s.io/apimachinery/pkg/runtime/schema"
	"k8s.io/apimachinery/pkg/runtime/serializer/yaml"
	"k8s.io/client-go/discovery"
	"k8s.io/client-go/discovery/cached/memory"
	"k8s.io/client-go/dynamic"
	"k8s.io/client-go/rest"
	"k8s.io/client-go/restmapper"
	"k8s.io/client-go/tools/clientcmd"
	"k8s.io/client-go/util/homedir"
	"k8s.io/client-go/util/retry"
)
 // 自定义数据
const metaCRD = `
apiVersion: "cs.handpay.cn/v1"
kind: Redis
metadata:
  name: test
  namespace: default
spec:
  replicas: 20
  name: laoshu
`


func GetK8sConfig() (config *rest.Config, err error) {
   
	// 获取k8s rest config
	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()

	config, err = clientcmd.BuildConfigFromFlags("", *kubeconfig)
	if err != nil {
   
		panic(err)
	}
	return
}

func GetGVRdyClient(gvk *schema.GroupVersionKind,namespace string) (dr dynamic.ResourceInterface,err error)  {
   

	config,err := GetK8sConfig()
	if err 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值