我正在使用一个自定义的helm图表将grafana部署到kubernetes。自定义grafana.ini文件在构建时被复制到docker镜像,grafana.ini文件包含RDS实例连接配置和各种自定义身份验证设置。当我将多个环境引入其中时,这并不理想,因为每个构建都需要不同的grafana.ini文件,并且我希望使用相同的基础docker映像。它也不安全。
我有三个kubernetes集群,dev、preprod和prod。关键的区别将是RDS配置。
根据环境,将grafana.ini文件绑定到某个grafana版本的最佳方式是什么?我可以使用一些参数化的configMap吗?
我使用helmfile来部署helm图表,因此我熟悉这样的概念:为每个环境单独创建values.yaml文件,并设置一个环境变量来针对正确的环境。
发布于 2020-12-02 02:50:56
您可以将configmap挂载为pod中的卷。
举个例子:
apiVersion: v1
kind: ConfigMap
metadata:
creationTimestamp: null
labels:
env: prod
app: metis
client: ueuropea
name: metis-clients-configmap
data:
clients_db_config.yaml: |
default-tenant:
DB_HOST: dbhost
DB_USERNAME: user
DB_PASSWORD: pass
DB_NAME: dbname
DB_PORT: 3306
部署:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
env: dev
app: metis
name: metis-rules-evaluator-dev
spec:
progressDeadlineSeconds: 3600
replicas: 0
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
template:
metadata:
labels:
env: dev
app: metis
client: ueuropea
mode: rules-evaluator
spec:
containers:
- image: metis
name: metis
imagePullPolicy: Always
resources:
requests:
memory: "1024Mi"
cpu: "3000m"
limits:
memory: "16384Mi"
cpu: "4000m"
volumeMounts:
- name: config-vol
mountPath: /usr/src/metis/config/
volumes:
- name: config-vol
configMap:
name: metis-clients-configmap
terminationGracePeriodSeconds: 150
restartPolicy: Always
在此示例中,配置映射数据将装载在path:/usr/src/metis/config/
上,并将创建文件clients_db_config.yaml
,该文件也可以是.ini
https://stackoverflow.com/questions/65095004
复制相似问题