在 go 中列出服务

List service in go

我正在尝试列出 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"

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

如果你想列出 knative 服务,那么你想使用 API here

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

os.GetEnv("TARGET")

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

基于 this gist adapted for the post-1.18 client-go, and the Serving clientset godoc:

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)
  }
}