回答问题

我是 GitLab cicd 的新手。我创建了简单的 nginx 部署,包括命名空间、配置映射、svc,部署配置映射包含带有 cicd 变量的简单自定义 index.html:

apiVersion: v1
kind: ConfigMap
metadata:
  name: index-html-configmap
  namespace: lazzio
data:
  index.html: |
    <html>
    <h1>Welcomee</h1>
    </br>
    <h1>Hi! This is a configmap Index file for test-tepl+ingress </h1>
    <h2> and this ---> $PW_TEST  <--- is a password from gitlab cicd variable</h2>
    </html>

自定义变量 PW_TEST 在 UI 的 cicd/variables 部分下设置,没有受保护的分支

#pipeline :
stages:
    - build
variables:
  ENV_NAME:
    value: "int"
1st-build:
  environment: 
    name: ${ENV_NAME}
  variables:
    PW_TEST: $PW_TEST
  image: alpine
  stage: build
  before_script:
    - apk add bash
    - apk add curl
  script:
    - echo $PW_TEST
    - curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
    - install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
    - kubectl --kubeconfig $CONF_INT_JK --insecure-skip-tls-verify apply -f nm.yml
    - kubectl --kubeconfig $CONF_INT_JK --insecure-skip-tls-verify apply -f index.yml
    - kubectl --kubeconfig $CONF_INT_JK --insecure-skip-tls-verify apply -f depl.yml
    - kubectl --kubeconfig $CONF_INT_JK --insecure-skip-tls-verify apply -f svc.yml
    - kubectl --kubeconfig $CONF_INT_JK --insecure-skip-tls-verify apply -f test_ingress_int.yml

但是当我登录集群并进行卷曲时,我得到了与 index.yml 中定义的相同的索引文件。

我知道它在索引中是一个愚蠢的无用变量,但我只是在测试变量是否将存储为 cicd 中的自定义变量传递到 k3s 上的部署中。在另一个正在安装的管道中,例如。通过 ansible 需要密码或其他机密的任何数据库或 k3s 集群,因此我想在 GitLab 存储库中的文件中使用 cicd 变量而不是明文机密。

感谢您的任何提示。

Answers

实际上,您几乎没有办法做到这一点。

  1. 个人喜欢envsubst,实现简单,分量有点重。但是您必须安装它(例如在 gitlab runner 中)以避免每次管道运行时下载它。

  2. 还有一个很好/简单的解决方案,使用 shell 脚本基本上只是用 var 的值替换字符串。这里的缺点是您必须自己编写健全性检查。

sed "s/\${PY_VERSION}/${PY_VERSION}/g; s/\${JQ_VERSION}/${JQ_VERSION}/g" "${FILE}yaml.in" > "${FILE}.yaml"
  1. 在复杂的动态部署中(如果你有大量的变量)你可以使用 helm 通过选项 debug 提取变量。这里的缺点是你基本上所有清单的声明最终都在一个文件中。
helm --values ci-variables/api-variables.yaml
--debug 模板 ./deployment/api-name > apply_file.yaml
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐