小编zde*_*bra的帖子

terraform kubernetes 提供程序的多行字符串注释

我想使用 terraform 将大使设置为 kubernetes 的 API 网关。配置大使的方法有多种。根据文档,推荐的方法是对在集群外部路由和公开的每个服务使用 kubernetes 注释。使用 kubernetes yaml 配置可以轻松完成此操作:

kind: Service
apiVersion: v1
metadata:
  name: my-service
  annotations:
    getambassador.io/config: |
      ---
        apiVersion: ambassador/v0
        kind:  Mapping
        name:  my_service_mapping
        prefix: /my-service/
        service: my-service
spec:
  selector:
    app: MyApp
  ports:
  - protocol: TCP
    port: 80
    targetPort: 9376
Run Code Online (Sandbox Code Playgroud)

getambassador.io/config字段的值以|suggest 开头,它是一个多行字符串值。如何使用 terraform HCL 实现同样的效果?

yaml terraform terraform-provider-kubernetes

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

CircleCI作业批准不执行作业

我在CircleCI配置中具有以下工作流程设置:

// <<< definition of unit_tests, integration_tests and deploy jobs >>>

workflows:
  version: 2
  build-test-and-deploy:
    jobs:
      - unit_tests
      - integration_tests:
          requires:
            - unit_tests
      - build_images:
          requires:
            - integration_tests
          filters:
            branches:
              only:
                - production
      - deploy:
          type: approval
          requires:
            - build_images
          filters:
            branches:
              only:
                - production
Run Code Online (Sandbox Code Playgroud)

目标是停止工作流程执行,直到手动批准部署到生产。触发工作流程执行后,它会在部署作业之前正确停止,但是在UI中单击“批准”后,不会触发部署作业,并且工作流程成功结束。

你知道出什么事了吗

continuous-integration circleci

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

Google App Engine 模块主机名:不是 App Engine 上下文

我正在尝试在 App Engine 上发现其他已部署的服务。像这篇文章这样的建议。

这是我的代码的样子:

import (
    "fmt"
    "net/http"

    "google.golang.org/appengine"
)

func ServiceHostname(serviceName string, r *http.Request) (string, error) {
    ctx := appengine.NewContext(r)
    hostname, err := appengine.ModuleHostname(ctx, serviceName, "", "")
    if err != nil {
        return "", fmt.Errorf("unable to find service %s: %v", serviceName, err)
    }
    return hostname, nil
}
Run Code Online (Sandbox Code Playgroud)

我在常规 http 处理程序中调用此函数。我得到的错误是:not an App Engine context

我的代码和引用的文章之间的唯一区别在于 app engine go 版本。我go111在他使用go1运行时的地方使用新的。

你知道如何克服这个问题吗?

google-app-engine go google-cloud-platform

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

sync.Waitgroup不会阻止执行

请考虑此代码段

package main

import (
    "fmt"
    "sync"
    "time"
)

func main() {
    wg := new(sync.WaitGroup)
    nap := func() {
        wg.Add(1)
        time.Sleep(2 * time.Second)
        fmt.Println("nap done")
        wg.Done()
    }

    go nap()
    go nap()
    go nap()

    fmt.Println("nap time")
    wg.Wait()
    fmt.Println("all done")
}
Run Code Online (Sandbox Code Playgroud)

运行此类代码可获得预期输出:

nap time
nap done
nap done
nap done
all done
Run Code Online (Sandbox Code Playgroud)

现在让我们先省略第一个标准输出打印wg.Wait():

// fmt.Println("nap time")
wg.Wait()
fmt.Println("all done")
Run Code Online (Sandbox Code Playgroud)

输出现在变为意外:

all done
Run Code Online (Sandbox Code Playgroud)

预期的地方是:

nap done
nap done
nap done
all done
Run Code Online (Sandbox Code Playgroud)

操场上的相同代码确实提供了此输出,而无需省略stdout打印.

你能解释一下,我在那里失踪了吗?

go

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