小编Dav*_*aze的帖子

Helm - 使用覆盖文件覆盖列表值

我想覆盖生产和开发部署之间的值。

默认值如下所示:

apps:
  myapp:
    replicaCount: 2
    containers:
      - name: foo
        env:
          MODE: "dev"
Run Code Online (Sandbox Code Playgroud)

我可以在命令行中使用以下命令覆盖它:

--set apps.myapp.containers[0].env.mode="prod"
Run Code Online (Sandbox Code Playgroud)

不过,我想将所有覆盖保留在一个文件中,并运行 helm update 并传入覆盖文件。在文件中添加覆盖,例如:

apps:
  myapp:
    containers[0]:
      env:
        MODE: "prod"
Run Code Online (Sandbox Code Playgroud)

不起作用。如何覆盖列表中的值?

go-templates kubernetes-helm

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

无法在目录名中有空格的 Dockerfile 中执行 RUN mkdir

我想在构建 docker 映像并使用如下命令时在 C 盘中创建一个文件

RUN mkdir "C:\Program Files\Microsoft Passport RPS"
Run Code Online (Sandbox Code Playgroud)

但它会抛出错误:

Step 6/6 : RUN mkdir "C:\Program Files\Microsoft Passport RPS"
 ---> Running in ab58c6f2948d
[91mmkdir : A positional parameter cannot be found that accepts argument 'Files\Microsoft'.
At line:1 char:76
+ ... e = 'SilentlyContinue'; mkdir C:\Program Files\Microsoft Passport RPS
[0m[91m+                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[0m[91m    + CategoryInfo          : InvalidArgument: (:) [mkdir], ParentContainsErro 
[0m[91m   rRecordException
+ FullyQualifiedErrorId : PositionalParameterNotFound,mkdir
Run Code Online (Sandbox Code Playgroud)

尝试使用正斜杠和反斜杠来执行上述命令。

我尝试了多个其他命令,如下所示:

ENV PATH_WITH_SPACE "C:/Program Files/Microsoft Passport RPS"
RUN mkdir $[PATH_WITH_SPACE]

RUN mkdir ["C:\Program …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

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

在 GitLab-ci Docker 构建中执行外部 bash 脚本

我想从 gitlab-ci.yml 执行外部(在本地计算机上)bash 脚本,该脚本使用 docker:stable 映像。我想执行位于 gitlab docker 映像外部的startup.sh。这是可能的还是有更好的选择?

gitlab-ci.yaml

image: docker:stable

#Build script

variables:
  CI_DEBUG_TRACE: "true"
  DOCKER_DRIVER: overlay

before_script:
  - docker --version

build:
  services:
  - docker:dind
  script:
    - docker build --no-cache -t <tag> .
    - docker login -u root -p <pass> <registry>
    - docker tag ...
    - docker push ...
    - echo "build completed"
  stage: build
  tags:
    - <tag>

deploy_staging:
  stage: deploy
  script:
    - ./sh startup.sh

Run Code Online (Sandbox Code Playgroud)

bash脚本

#!/bin/bash

docker login -u root -p <pass>
docker pull <image>
docker-compose up …
Run Code Online (Sandbox Code Playgroud)

gitlab docker gitlab-ci-runner docker-in-docker

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

如何在 statefulset 中设置 kubernetes pod 的主机名

我正在使用 Statefulset,并且启动了多个 Pod,但它们不是彼此的复制品。我想设置 pod 的主机名,并将这些主机名作为环境变量传递给所有 pod,以便它们可以相互通信。

我尝试在 pod 规范下使用主机名,但主机名永远不会设置为指定的主机名。但是,它的主机名设置为 podname-0。

# Source: testrep/templates/statefulset.yaml
apiVersion: apps/v1
kind: StatefulSet 
metadata:
  name: orbiting-butterfly-testrep
  labels:
    app.kubernetes.io/name: testrep
    helm.sh/chart: testrep-0.1.0
    app.kubernetes.io/instance: orbiting-butterfly
    app.kubernetes.io/managed-by: Tiller
spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/name: testrep
      app.kubernetes.io/instance: orbiting-butterfly
  strategy:
    type: Recreate
  template:
    metadata:
      labels:
        app.kubernetes.io/name: testrep
        app.kubernetes.io/instance: orbiting-butterfly
    spec:
      nodeSelector:
          testol: ad3
       hostname: test1
       containers:
        - name: testrep
          image: "test/database:v1"
          imagePullPolicy: IfNotPresent
          env:
           - name: DB_HOSTS
             value: test1,test2,test3
Run Code Online (Sandbox Code Playgroud)

kubernetes

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

分子因“审查”而失败:“由于为此结果指定了‘no_log: true’,因此输出已被隐藏”

我正在将 Ansible 与 Molecule 结合使用。我刚刚遇到了我的角色融合失败的情况:

fatal: [instance]: FAILED! => {"censored": "the output has been hidden due to the fact that 'no_log: true' was specified for this result"}
Run Code Online (Sandbox Code Playgroud)

如何缓解?稍等一下,我来回答...

ansible-2.x molecule

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

如何在 helm 安装/升级中将 --set key 值持久化到 value.yaml

如何在使用命令行设置values.helm install 时将参数键值保存到values.yaml 文件中。--name test --set image.tag=2020 --set image.version=20 如何将此image.tag和image.version值更新为values.yaml?试运行会给出结果,但不会更新values.yaml

kubernetes kubernetes-helm

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

Kubernetes 中特定命名空间的 Pod 亲和性

我想将我的 Pod 部署在特定的命名空间中。我考虑了 Pod Affinity,但找不到如何选择特定命名空间的解决方案。有人做吗?

kubernetes google-kubernetes-engine

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

有没有办法验证/解析包含 go-template 变量的 YAML 文件?

我有一个“YAML”文件。我想在渲染其中的 go-template 变量之前验证它。例如:

apiVersion: v1
kind: ConfigMap
metadata:
  name: {{ .Release.Name }}-configmap
data:
  myvalue: "Hello World"
  drink: {{ .Values.favorite.drink | default "tea" | quote }}
  food: {{ .Values.favorite.food | upper | quote }}
Run Code Online (Sandbox Code Playgroud)

典型的 YAML 解析器在这里不起作用,因为它将解析{为映射的开头。

err := yaml.Unmarshal(data, &Content)
// Failed to parse the provided YAML: yaml: line 4: did not find expected key
Run Code Online (Sandbox Code Playgroud)

我想知道是否有任何软件包可以帮助我做到这一点?我在网上搜索了一段时间但没有运气。谢谢你的帮助!

yaml go unmarshalling go-templates kubernetes-helm

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

按时间轮换 kubernetes 上的 pod 日志

我的团队有一个特殊要求,即每隔 X 小时删除所有 pod 日志。这是因为日志包含一些敏感信息 - 我们使用 Fluentbit 读取并处理它们,但问题是之后日志仍然存在。我找不到任何正常的方法来按时间轮换它们,只有关于按文件大小轮换的 docker 守护进程日志记录驱动程序的建议。是否可以创建一个 k8s cronjob 来为每个 pod/容器执行“echo ''> /path/to/logfile”之类的操作?如果是,怎么办?

如果有任何帮助,我将不胜感激。谢谢!

logrotate kubernetes

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

无法在 labs.play-with-kubernetes 免费实例中复制或粘贴命令

我正在尝试在 kubernetes 提供的 labs.play-with-k8s 免费实例中复制并粘贴一些命令。Ctrl+c 和 Ctrl+v 这两个命令都不起作用。

我发现很少有像 ctrl + shift +insert 这样的选项来复制,但这似乎也不适合我。

任何建议请。

kubernetes

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