【问题标题】:k6 - create custom resource using go clientk6 - 使用 go 客户端创建自定义资源
【发布时间】:2022-09-27 19:54:02
【问题描述】:

任何人都知道如何使用 go-client 创建自定义资源。基本上相当于 kubectl apply -f \'yaml path\'

apiVersion: k6.io/v1alpha1
kind: K6
metadata:
  name: k6-sample
spec:
  parallelism: 1
  #arguments: --out statsd
  #cleanup: post
  script:
    configMap:
      name: \"staging-stress-test\"
      file: \"staging.js\"

有一个 go-client 代码来生成下面的自定义资源

func createk6CR(clientset *kubernetes.Clientset) (string, error) {

    k6plugin := &v1alpha1.K6{
        TypeMeta: metav1.TypeMeta{
            APIVersion: \"k6.io/v1alpha1\",
            Kind:       \"K6\",
        },
        ObjectMeta: metav1.ObjectMeta{
            Name:      \"k6-sample-1\",
            Namespace: \"default\",
        },
        Spec: v1alpha1.K6Spec{
            Parallelism: 3,
            Script: v1alpha1.K6Script{
                ConfigMap: v1alpha1.K6Configmap{
                    Name: \"staging-stress-test\",
                    File: \"staging.js\",
                },
            },
        },
        // Status: v1alpha1.K6Status{
        //  Stage: \"started\",
        // },
    }

    body, err := json.Marshal(k6plugin)

    if err != nil {
        fmt.Printf(\"error getting Kubernetes config: %v\\n\", err)
        os.Exit(1)
    }

    data, err := clientset.RESTClient().
        Post().
        AbsPath(\"/apis/k6.io/v1alpha1/namespaces/default/k6\").
        Body(body).
        DoRaw(context.TODO())

    if data != nil {
        str := string(data[:])

        fmt.Printf(\"return data: %v\\n\", str)
        //os.Exit(1)
    }

    return \"success\", err
}

但是我在 AbsPath(\"/apis/k6.io/v1alpha1/namespaces/default/k6\") 上找不到第 404 页。

    标签: go k6 kubernetes-go-client kubernetes-custom-resources


    【解决方案1】:

    发现它有什么问题,当你做kubectl apply-v 8 传递它以查看 POST 的 Abspath 检查

    kubectl apply -f 'resource path'

    I0816 09:20:56.239402   15535 round_trippers.go:463] POST https://0.0.0.0:43117/apis/k6.io/v1alpha1/namespaces/default/k6s?fieldManager=kubectl-client-side-apply&fieldValidation=Strict
    I0816 09:20:56.239428   15535 round_trippers.go:469] Request Headers: 
    

    所以带有更正 AbsPath 的代码应该在下面,

    data, err := clientset.RESTClient().
            Post().
            AbsPath("/apis/k6.io/v1alpha1/namespaces/default/k6s").
            Body(body).
            DoRaw(context.TODO()) 
    

    【讨论】:

      【解决方案2】:

      您能否给我一些指导以了解如何使用 K6 kubernetes 扩展部署自定义资源? 提前致谢, 下巴

      【讨论】:

      猜你喜欢
      • 2021-09-04
      • 1970-01-01
      • 2020-03-12
      • 1970-01-01
      • 2022-10-24
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多