1

我正在尝试列出 knative (v0.17.0) services,我有一个clientset但我不知道从哪里开始。这是我为测试启动的服务:

apiVersion: serving.knative.dev/v1alpha1
kind: Service
metadata:
  name: "helloworld"
spec:
  runLatest:
    configuration:
      revisionTemplate:
        spec:
          container:
            image: "gcr.io/knative-samples/helloworld-go"
            env:
              - name: "TARGET"
                value: "world"

如果您有任何建议、教程或示例,那就太好了

4

2 回答 2

2

基于此适用于 1.18 后客户端和服务godoc的要点clientset

import (
  "context"
  "fmt"
  metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  "k8s.io/client-go/tools/clientcmd"
  servingv1 "knative.dev/serving/pkg/client/clientset/versioned/typed/serving/v1"
}

func doIt() error {
  config, err := clientcmd.BuildConfigFromFLags("", "") // Uses defaults
  if err != nil {
    return err
  }

  serving, err := servingv1.NewForConfig(config)
  if err != nil {
    return err
  }

  // Get services in the default namespace
  list, err := serving.Services("default").List(context.Background(), metav1.ListOptions{})
  if err != nil {
    return err
  }
  // How to print them out.
  fmt.Printf("There are %d services in the default namespace", len(list.Items))
  for _, i := range list.Items {
    fmt.Printf("  > Service %q", i.Name)
  }
}
于 2021-02-15T06:51:24.700 回答
0

如果你想列出 knative 服务,那么你想在这里使用 API 。

为了从这个 yaml 中获取配置,您可以将它们设置为env 列表中的环境变量,然后在您的代码调用中:

os.GetEnv("TARGET")

现在使用来自 env 的密钥和 API,您可以列出服务。

于 2021-02-15T01:01:45.017 回答