gpt4 book ai didi

kubernetes - 将Secret值/环境var传递给flexvol选项

转载 作者:行者123 更新时间:2023-12-02 12:01:46 25 4
gpt4 key购买 nike

我正在尝试使用k8s secret 或从本地环境获取环境变量来设置flexvol选项值,这可能吗?

我可以看到成功安装了 secret ,但是flexvol无法成功安装。知道除了 secret 以外还有其他解决方案。

Deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: default
labels:
app: my-deployment
spec:
replicas: 1
selector:
matchLabels:
app: my-deployment
template:
metadata:
labels:
app: my-deployment
spec:
containers:
- image: traefik:1.7.7-alpine
name: traefik
livenessProbe:
tcpSocket:
port: 80
failureThreshold: 3
initialDelaySeconds: 10
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 2
volumeMounts:
- name: certs
mountPath: /certs
ports:
- name: http
containerPort: 80
protocol: TCP
env:
- name: KV_NAME
valueFrom:
secretKeyRef:
name: flexvol-var-secret
key: keyvaultname
- name: KV_OBJ_NAME
valueFrom:
secretKeyRef:
name: flexvol-var-secret
key: keyvaultobjectname
- name: TENANT_ID
valueFrom:
secretKeyRef:
name: flexvol-var-secret
key: tenantid
- name: RESOURCE_GROUP
valueFrom:
secretKeyRef:
name: flexvol-var-secret
key: resourcegroup
- name: SUB_ID
valueFrom:
secretKeyRef:
name: flexvol-var-secret
key: subscriptionid
volumes:
- name: certs
flexVolume:
driver: "azure/kv"
secretRef:
name: kvcreds
options:
keyvaultname: ${KV_NAME}
keyvaultobjectname: ${KV_OBJ_NAME}
keyvaultobjecttype: "secret"
tenantid: ${TENANT_ID}
resourcegroup: ${RESOURCE_GROUP}
subscriptionid: ${SUB_ID}

secret.yaml
kind: Secret
apiVersion: v1
metadata:
name: flexvol-var-secret
labels:
name: flexvol-var-secret
annotations:
description: Template for flexVolume variables values
stringData:
keyvaultname: "###"
keyvaultobjectname: "###"
tenantid: ""###"
resourcegroup: "###"
subscriptionid: "###"

最佳答案

我一直在研究同一件事,如果没有外部工具,这实际上是不可能的。

问题在于,flexvolume仅从 secret 中获取凭据,而其余部分则被认为是配置,并且需要传递。在这里您要做的实际上是变量替换,而kubernetes不支持,并且不支持:https://github.com/kubernetes/kubernetes/issues/52787#issuecomment-369645645

从好的方面来说,您可以使用任何工具来用env变量,bash / ps脚本以及适当的kubernetes部署解决方案(例如helm)中的变量替换这些值。

KV flexvolume是开源的,因此也可以进行修改以处理此用例

关于kubernetes - 将Secret值/环境var传递给flexvol选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60568261/

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