gpt4 book ai didi

kubernetes - 如何访问 3rd-party 自定义资源定义?

转载 作者:行者123 更新时间:2023-12-02 11:38:33 26 4
gpt4 key购买 nike

我正在研究 Operator-SDK。在我的运算符(operator) Controller 中,我尝试创建一个 Istio 自定义资源——虚拟服务。虚拟服务的定义如下:

kind: CustomResourceDefinition
apiVersion: apiextensions.k8s.io/v1beta1
metadata:
name: virtualservices.networking.istio.io
在这里,我认为首先需要做一些事情:
  • 获取 Istio API 模块
  • 在我的 Controller 代码中,导入 istio 虚拟服务包
  • 如何创建/更新虚拟服务资源

  • 我的问题是怎么做?因为我以前从来没有这样做过,所以不得不寻求帮助如何做到这一点。

    最佳答案

    这是使用 istio client-go 创建 istio 虚拟服务的示例.这里我们使用istio.io/api/networking/v1alpha3istio.io/client-go/pkg/apis/networking/v1alpha3创建 VirtualService自定义资源规范。之后使用 istio.io/client-go/pkg/clientset/versioned实际将此规范发送到 kubernetes API 服务器。

    package main

    import (
    "context"
    "log"
    "os"

    v1alpha3Spec "istio.io/api/networking/v1alpha3"
    "istio.io/client-go/pkg/apis/networking/v1alpha3"
    versionedclient "istio.io/client-go/pkg/clientset/versioned"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/tools/clientcmd"
    )

    func main() {

    kubeconfig := os.Getenv("KUBECONFIG")
    namespace := os.Getenv("NAMESPACE")

    if len(kubeconfig) == 0 || len(namespace) == 0 {
    log.Fatalf("Environment variables KUBECONFIG and NAMESPACE need to be set")
    }

    restConfig, err := clientcmd.BuildConfigFromFlags("", kubeconfig)
    if err != nil {
    log.Fatalf("Failed to create k8s rest client: %s", err)
    }

    ic, err := versionedclient.NewForConfig(restConfig)
    if err != nil {
    log.Fatalf("Failed to create istio client: %s", err)
    }
    var host []string
    host[0] = "abc.com"
    virtualServiceCrd := &v1alpha3.VirtualService{
    TypeMeta: metav1.TypeMeta{
    APIVersion: "networking.istio.io/v1alpha3",
    Kind: "Virtualservice",
    },
    ObjectMeta: metav1.ObjectMeta{
    Name: "default",
    },
    Spec: v1alpha3Spec.VirtualService{
    Hosts: host,
    },
    }

    ic.NetworkingV1alpha3().VirtualServices(namespace).Create(context.TODO(), virtualServiceCrd, metav1.CreateOptions{})
    }

    关于kubernetes - 如何访问 3rd-party 自定义资源定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63885161/

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