gpt4 book ai didi

docker - 在 Openshift 中,我如何使用 CLI 创建具有值为 secret 的环境变量的新构建?

转载 作者:行者123 更新时间:2023-12-02 11:42:16 31 4
gpt4 key购买 nike

我有以下命令。

oc new-build gen-dev/genbuilder:latest~ssh://git@mycompany.net:7999/gen/pfs-converter.git#DEV1 \
--source-secret='privatekey' \
--name='testbuild' \
--env=KEY=VALUE
我想将环境变量设置为具有一些 secret 值,因为没有它们,构建将失败,我需要在执行此命令之前执行此操作,因为新构建会立即构建一个新容器。

最佳答案

从 Pod 定义中添加
您可以通过引用环境定义中的 secret 来创建环境变量,如下所示:

apiVersion: v1
kind: Pod
metadata:
name: secret-example-pod
spec:
containers:
- name: secret-test-container
image: busybox
command: [ "/bin/sh", "-c", "export" ]
env:
- name: TEST_SECRET_USERNAME_ENV_VAR
valueFrom:
secretKeyRef:
name: test-secret
key: username
restartPolicy: Never
这是 documentation .

从命令行添加 secret
如果您需要从命令行执行所有操作,则可以使用 JSONPath 从您想要的 key 中获取值,如下所示:
oc new-build gen-dev/genbuilder:latest~ssh://git@mycompany.net:7999/gen/pfs-converter.git#DEV1 \
--source-secret='privatekey' \
--name='testbuild' \
-e PRIVATE_KEY=$(oc get secret <your secret> -o jsonpath='{<path to field>}')
解释
这将在容器构建时将 PRIVATE_KEY 添加到容器的环境中,并且在启动时可供应用程序使用。
OC 命令周围用于获取 secret 的 $() 将评估内部命令,然后将其输出放在那里。 -o flag 告诉 OC CLI 如何提供输出,因此如果您只想要构建的名称,例如,您将运行:
oc get builds -o name
Here是支持的输出选项。
例子
您需要将 JSONPath 提供给要从 key 中提取的字段。例如,要从此 secret 中获取密码字段:
apiVersion: v1
kind: Secret
metadata:
name: test-secret
namespace: my-namespace
type: Opaque
data:
username: dmFsdWUtMQ0K
password: dmFsdWUtMg0KDQo=
stringData:
hostname: myapp.mydomain.com
你会运行:
oc new-build gen-dev/genbuilder:latest~ssh://git@mycompany.net:7999/gen/pfs-converter.git#DEV1 \
--source-secret='privatekey' \
--name='testbuild' \
-e PASSWORD=$(oc get secret test-secret -o jsonpath='{.data.password}')
这与添加 -e PASSWORD='dmFsdWUtMg0KDQo=' 相同。到您的命令,容器中的应用程序将能够从容器环境访问该变量。
这是 documentation用于使用 JSONPath 和 evaluator如果您在正确的道路上遇到困难。
添加构建 key
您还可以使用 --build-secret 将 key 添加到构建环境而不将其暴露给环境。旗帜。
命令:
oc new-build \
openshift/nodejs-010-centos7~https://github.com/sclorg/nodejs-ex.git \
--build-secret “secret-npmrc:/etc”
这会将 key 添加到构建环境中的目录中,在这种情况下,.npmrc 文件将添加到/etc。
我认为向环境中添加 secret 通常不是一个好习惯,您可能需要考虑更改设置以避免这种情况。过去,我总是在模板定义中添加 secret ,但看起来您让 Openshift 为您创建模板。

关于docker - 在 Openshift 中,我如何使用 CLI 创建具有值为 secret 的环境变量的新构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63038515/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com