小编FL3*_*3SH的帖子

如何使用假客户端为 client-go 编写简单的测试?

问题

我正在寻找正确的方法来测试下面的代码,我找不到任何示例如何做到这一点。只有main_test.go但缺少 main.go,对我来说,如何使用它并不明显。我也浏览了 Github issues,但找不到任何有用的东西。

功能:

import (
  "fmt"
  "k8s.io/api/core/v1"
  metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
  fake "k8s.io/client-go/kubernetes/fake"
  "time"
)

func GetNamespaceCreationTime(namespace string) int64 {
    config, err := rest.InClusterConfig()
    if err != nil {
        panic(err.Error())
    }
    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
        panic(err.Error())
    }

    ns, err := clientset.CoreV1().Namespaces().Get(namespace, metav1.GetOptions{})
    if err != nil {
        panic(err.Error())
    }
    fmt.Printf("%v \n", ns.CreationTimestamp)
    return (ns.GetCreationTimestamp().Unix())
}
Run Code Online (Sandbox Code Playgroud)

测试:

我认为我的测试应该如下所示,但是我该如何使用config := fake.NewSimpleClientset(),我应该将它传递到GetNamespaceCreationTime函数中吗?

func TestGetNamespaceCreationTime(t *testing.T) {
  config := fake.NewSimpleClientset()
  got …
Run Code Online (Sandbox Code Playgroud)

go client-go

4
推荐指数
1
解决办法
9862
查看次数

MongoDB 在 Go 中列出具有给定前缀的数据库

如何仅列出具有给定前缀 ( prefix_) 的数据库?

例子:

package main

import (
  "context"
  "fmt"
  "go.mongodb.org/mongo-driver/bson"
  "go.mongodb.org/mongo-driver/mongo"
  "go.mongodb.org/mongo-driver/mongo/options"
  "log"
)

type foo struct {
  Value string
}

func main() {
  clientOptions := options.Client().ApplyURI("mongodb://10.0.12.76:27018")
  client, err := mongo.Connect(context.TODO(), clientOptions)
  if err != nil {
    log.Fatal(err)
  }
  db := [3]string{"prefix_foo", "prefix_bar", "bar"}

  for _, element := range db {
    _, err := client.Database(element).Collection("placeholder").InsertOne(context.TODO(), foo{"sth"})
    if err != nil {
      log.Fatal(err)
    }
  }

  filter := bson.D{{}}

  dbs, err := client.ListDatabaseNames(context.TODO(), filter)
  if err != nil …
Run Code Online (Sandbox Code Playgroud)

go mongodb mongo-go

2
推荐指数
1
解决办法
1512
查看次数

来自服务器的错误 (NotFound):未找到 pods“\nmongo-client-79667cc85d-tsg72”

我正在尝试使用此脚本从 Mongo / K8S 进行备份

export POD=$(kubectl get pods -l app=mongo-client -o custom-columns=:metadata.name -n espace-client)
kubectl exec "$POD" sh -c 'mongodump --archive' > ~/backup/mongo/$(date +%F).db.dump
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Error from server (NotFound): pods "\nmongo-client-79667cc85d-tsg72" not found
Run Code Online (Sandbox Code Playgroud)

当我检查豆荚时,我可以看到 mongo-client-79667cc85d-tsg72

当我将名称放在没有变量的情况下时,效果很好,所以可能是因为初始\n. 我怎样才能避免它?如何从名称中删除它?

bash kubernetes kubectl

2
推荐指数
1
解决办法
7213
查看次数

错误:无法下载“stable/mssql-linux”(提示:运行`helm repo update` 可能会有所帮助)

请看下面的命令:

helm install --name mymssql stable/mssql-linux --set acceptEula.value=Y --set edition.value=Developer
Run Code Online (Sandbox Code Playgroud)

我从这里得到的:https : //github.com/helm/charts/tree/master/stable/mssql-linux

仅仅一个月后,似乎不再需要 --name ,所以我现在有了(请参阅此处:Helm install unknown flag --name):

helm install mymssql stable/mssql-linux --set acceptEula.value=Y --set edition.value=Developer
Run Code Online (Sandbox Code Playgroud)

我现在看到的错误是:

Error: failed to download "stable/mssql-linux" (hint: running `helm repo update` may help)
Run Code Online (Sandbox Code Playgroud)

问题是什么?

更新

从答案开始;上面的命令现在可以工作,但是我无法从本地 PC 使用 SQL Studio Manager 连接到数据库。我遵循的其他步骤是:

1) kubectl expose deploymentmymssql-mssql-linux --type=NodePort --name=mymssql-mssql-linux-service

2) kubectl get service- 下面的服务是相关的 mymssql-mssql-linux-service NodePort 10.107.98.68 1433:32489/TCP 7s

3)然后尝试使用SQL Studio Manager 2019连接数据库:Server Name: localhost,32489 Authentication: SQL Server …

kubernetes kubernetes-helm

0
推荐指数
1
解决办法
2812
查看次数

标签 统计

go ×2

kubernetes ×2

bash ×1

client-go ×1

kubectl ×1

kubernetes-helm ×1

mongo-go ×1

mongodb ×1