小编jax*_*orm的帖子

kubectl:使用带有地图的自定义列输出

我想将注释的特定值放入 kubectl 自定义列字段中。我可以像这样获取资源上的所有当前注释:

kubectl get pvc -o custom-columns=NAME:.metadata.name,"ANNOTATIONS":.metadata.annotations -n monitoring
Run Code Online (Sandbox Code Playgroud)

这将返回一个地图:

NAME                                 ANNOTATIONS
prometheus-k8s-db-prometheus-k8s-0   map[pv.kubernetes.io/bind-completed:yes pv.kubernetes.io/bound-by-controller:yes volume.beta.kubernetes.io/storage-provisioner:kubernetes.io/aws-ebs]
prometheus-k8s-db-prometheus-k8s-1   map[pv.kubernetes.io/bind-completed:yes pv.kubernetes.io/bound-by-controller:yes volume.beta.kubernetes.io/storage-provisioner:kubernetes.io/aws-ebs]
Run Code Online (Sandbox Code Playgroud)

kubectl -o custom-columns据我所知,考虑使用 JSONpath,我想我可以这样做:

kubectl get pvc -o custom-columns=NAME:.metadata.name,"ANNOTATIONS":".metadata.annotations['pv.kubernetes.io/bind-completed']" -n monitoring
Run Code Online (Sandbox Code Playgroud)

但似乎不是。有没有办法做到这一点?

jsonpath kubernetes kubectl

10
推荐指数
1
解决办法
4325
查看次数

无法访问 nginx-ingress 和 nlb 后面的 grpc 应用程序

我在 AWS EKS 中安装了 grpc 应用程序。grpc 端点与端口转发成功配合:

grpcurl -plaintext -protoset-out=reflection.protoset localhost:8080 list 
                                 
grpc.health.v1.Health
grpc.reflection.v1alpha.ServerReflection
Run Code Online (Sandbox Code Playgroud)

我已经通过 Helm Chart 安装了 nginx-ingress,并设置了以下配置:

USER-SUPPLIED VALUES:
controller:
  service:
    annotations:
      service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
      service.beta.kubernetes.io/aws-load-balancer-ssl-cert: <cert-arn>
      service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443"
      service.beta.kubernetes.io/aws-load-balancer-type: nlb
    targetPorts:
      https: 443
Run Code Online (Sandbox Code Playgroud)

这已成功创建一个带有侦听器的 NLB,一个用于 HTTP,一个用于 TLS,并附加了证书。

然后我创建了一个像这样的入口:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/backend-protocol: GRPC
    nginx.ingress.kubernetes.io/ssl-redirect: "true"
  generation: 7
  labels:
    name: <app>
  name: <svc-name>
  namespace: <ns>
spec:
  ingressClassName: nginx
  rules:
  - host: <app>.development.<domain>
    http:
      paths:
      - backend:
          service:
            name: <svc>
            port:
              number: 80
        path: / …
Run Code Online (Sandbox Code Playgroud)

http2 kubernetes grpc amazon-eks nginx-ingress

7
推荐指数
0
解决办法
700
查看次数

CSS/HTML流程图

我需要一个非常简单,直接的CSS/HTML流程图,格式如下:

Node1
  |
Node2
  |
Node3
  |
Node4
  |
Node5
  |
Node6
Run Code Online (Sandbox Code Playgroud)

我对CSS几乎一无所知,但试图修改下面链接中详述的那个.问题是我只想要一个线性的垂直图表,它最终到处都是!

http://www.htmlforums.com/css/t-flowchart-using-css-85999.html

有人可以帮忙吗?

html css

5
推荐指数
1
解决办法
1万
查看次数

使用Viper语言处理界面

我正在使用ViperCobra构建一个小应用程序。目前,我有一个yaml文件,如下所示:

hosts:
  - name: host1
    port: 90
    key: my_key
  - name: host2
    port: 90
    key: prompt
Run Code Online (Sandbox Code Playgroud)

而且我已经使用Viper读取了配置文件。

当我运行viper.Get("hosts")它时,它返回一个接口(或接口的一部分?)。这是我最终得到的数据结构:

([]interface {}) (len=2 cap=2) {
 (map[interface {}]interface {}) (len=3) {
  (string) (len=4) "name": (string) (len=20) "host1",
  (string) (len=4) "port": (int) 90,
  (string) (len=3) "key": (string) (len=6) "my_key"
 },
 (map[interface {}]interface {}) (len=3) {
  (string) (len=3) "key": (string) (len=6) "prompt",
  (string) (len=4) "name": (string) (len=20) "host2",
  (string) (len=4) "port": (int) 90
 }
}
Run Code Online (Sandbox Code Playgroud)

我想在这里做的是遍历每个数组元素,并使用name,port和key的值执行操作。

我是Golang接口的新手,所以这还不是很清楚,关于此的文献非常令人困惑:(

任何帮助表示赞赏。

go viper-go

5
推荐指数
1
解决办法
2353
查看次数

使用 jsonnet 更新现有数组元素

我正在使用 jsonnet 读取由数组组成的值。我想修改该数组中的第一个元素以添加一个值。数据结构如下所示:

{
   "my_value": [
      {
         "env": "something"
      },
      {
         "var": "bar"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我想为my_value[0]. 我如何在 jsonnet 中引用它?

jsonnet

5
推荐指数
2
解决办法
4515
查看次数

使用 isomorphic-git 创建行差异

我正在尝试从isomorphic-git获取类似于git diffGitHub 操作的输出。

我在这里查看了isomorphic-git 中实现的map函数,但我在使用它时遇到了问题。git.walk

我可以使用以下代码成功地遍历树:

async function main() {
  const ref = 'HEAD'
  const trees = [git.TREE({ref}), git.WORKDIR()]
  const walk = await git.walk({
    fs,
    dir: '.github',
    trees,
    map: (filepath, [workdir, tree]) => [filepath, !!workdir, !!tree]
  })

  console.log(walk)
}

main()
Run Code Online (Sandbox Code Playgroud)

如何改进map这里的功能并使用jsdiffHEAD将当前工作树和stdout之间的文件更改输出?

javascript git isomorphic-javascript

5
推荐指数
1
解决办法
372
查看次数

在golang中合并两个JSON字符串

我有一个结构,我以老式的方式转换为JSON:

type Output struct {
    Name     string   `json:"name"`
    Command  string   `json:"command"`
    Status   int      `json:"status"`
    Output   string   `json:"output"`
    Ttl      int      `json:"ttl,omitempty"`
    Source   string   `json:"source,omitempty"`
    Handlers []string `json:"handlers,omitempty"`
  }

sensu_values := &Output{
      Name:     name,
      Command:  command,
      Status:   status,
      Output:   output,
      Ttl:      ttl,
      Source:   source,
      Handlers: [handlers],
    }
Run Code Online (Sandbox Code Playgroud)

我想从文件系统中读取任意JSON文件,该文件可以由用户定义为任何内容,然后将其添加到现有的JSON字符串中,从原始文件中获取重复项.

我怎样才能做到这一点?

json go

3
推荐指数
1
解决办法
7566
查看次数

使用Vault API包的身份验证方法

我正在尝试使用Vault Golang包来使用API​​进行身份验证.

我创建了一个新客户端,然后可以设置我的令牌:

client, err := api.NewClient(&api.Config{Address: vaultAddr, HttpClient: httpClient})

 if err != nil {
   return nil, errors.Wrap(err, "could not create vault client")
 }

client.SetToken(token)
Run Code Online (Sandbox Code Playgroud)

这很好,但我想使用其他一个auth方法(LDAP,Userpass等)对API进行身份验证

这甚至可能吗?如何使用API​​检索令牌?

我想我可以使用net/http来使用API​​调用来检索令牌,但有没有任何方法可以用另一种方式实际验证?

go hashicorp-vault

3
推荐指数
1
解决办法
2029
查看次数

使用Golang Viper读取地图片段

我正在从这里使用出色的毒蛇库:https : //github.com/spf13/viper

我正在尝试读取hcl中的配置文件(尽管它也可能是JSOn或YAML文件),如下所示:

interval = 10
statsd_prefix = "pinger"



group "dns" {
  target_prefix = "ping"
  target "dns" {
    hosts = [
      "dnsserver1",
      "dnsserver2"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,我的代码如下所示:

viper.SetConfigName("config")
viper.AddConfigPath(".")

err := viper.ReadInConfig()

if err != nil {
  panic(fmt.Errorf("Fatal error config file: %s \n", err))
}

interval := viper.GetInt("interval")
prefix := viper.GetString("statsd_prefix")

groups := viper.GetStringMap("group")

fmt.Println(interval)
fmt.Println(prefix)
Run Code Online (Sandbox Code Playgroud)

我遇到的最大问题是使用group选项。这可以是多个不同的组。

当我在使用中阅读它时viper.GetStringMap,它似乎不起作用,因此我使用了标准viper.Get函数。转储时,结果结构如下所示:

([]map[string]interface {}) (len=1 cap=1) {
 (map[string]interface {}) (len=1) {
  (string) (len=3) "dns": ([]map[string]interface {}) (len=1 cap=2) …
Run Code Online (Sandbox Code Playgroud)

go

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

golang 中的可选超时

我有一个运行超时命令的函数。它看起来像这样:

func run_command(cmdName string, cmdArgs []string, timeout int) (int, string) {

  // the command we're going to run
  cmd := exec.Command(cmdName, cmdArgs...)

  // assign vars for output and stderr
  var output bytes.Buffer
  var stderr bytes.Buffer

  // get the stdout and stderr and assign to pointers
  cmd.Stderr = &stderr
  cmd.Stdout = &output

  // Start the command
  if err := cmd.Start(); err != nil {
    log.Fatalf("Command not found: %s", cmdName)
  }

  timer := time.AfterFunc(time.Second*time.Duration(timeout), func() {
    err := cmd.Process.Kill()
    if err != …
Run Code Online (Sandbox Code Playgroud)

timer go

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

更改 Pulumi 部署 Kubernetes 资源时的超时时间

当我使用 Pulumi 将资源部署到 Kubernetes 时,如果我犯了错误,Pulumi 会等待 Kubernetes 资源健康。

\n
     Type                                                                               Name                               Status                  Info\n +   pulumi:pulumi:Stack                                                                aws-load-balancer-controller-dev   **creating failed**     1 error\n +   \xe2\x94\x9c\xe2\x94\x80 jaxxstorm:aws:loadbalancercontroller                                            foo                                created\n +   \xe2\x94\x9c\xe2\x94\x80 kubernetes:yaml:ConfigFile                                                      foo-crd                            created\n +   \xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80 kubernetes:apiextensions.k8s.io/v1beta1:CustomResourceDefinition             targetgroupbindings.elbv2.k8s.aws  created                 1 warning\n +   \xe2\x94\x9c\xe2\x94\x80 kubernetes:core/v1:Namespace                                                    foo-namespace                      created\n +   \xe2\x94\x9c\xe2\x94\x80 kubernetes:core/v1:Service                                                      foo-webhook-service                **creating failed**     1 error\n +   \xe2\x94\x9c\xe2\x94\x80 kubernetes:rbac.authorization.k8s.io/v1:Role                                    foo-role                           created\n +   \xe2\x94\x9c\xe2\x94\x80 pulumi:providers:kubernetes                                                     k8s                                created\n +   \xe2\x94\x9c\xe2\x94\x80 aws:iam:Role                                                                    foo-role                           created\n +   \xe2\x94\x82  \xe2\x94\x94\xe2\x94\x80 aws:iam:Policy                                                               foo-policy                         created\n +   \xe2\x94\x9c\xe2\x94\x80 kubernetes:core/v1:Secret                                                       foo-tls-secret                     created\n +   \xe2\x94\x9c\xe2\x94\x80 kubernetes:rbac.authorization.k8s.io/v1:ClusterRole …
Run Code Online (Sandbox Code Playgroud)

kubernetes pulumi

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