【问题标题】:What is the best way to dry up this kubernetes config yaml file?干掉这个 kubernetes 配置 yaml 文件的最佳方法是什么?
【发布时间】:2019-10-13 21:45:18
【问题描述】:

我有一个用于 Kubernetes 部署的配置 yaml 文件,如下所示:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: <some_app>
  name: <some_app>
  namespace: dataengineering
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: <some_app>
    spec:
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      containers:
        - image: 127579856528.dkr.ecr.us-west-2.amazonaws.com/dataengineering/<some_app>:latest
          imagePullPolicy: Always
          name: <some_app>
          env:
          - name: ES_HOST
            value: "vpc-some-name-dev-wrfkk5v7kidaro67ozjrv4wdeq.us-west-2.es.amazonaws.com"
          - name: ES_PORT
            value: "443"
          - name: DATALOADER_QUEUE
            valueFrom:
              configMapKeyRef:
                name: <some_name>
                key: DATALOADER_QUEUE
          - name: AWS_DEFAULT_REGION
            value: "us-west-2"
          - name: AWS_ACCESS_KEY_ID
            valueFrom:
              secretKeyRef:
                name: <some_name>
                key: AWS_ACCESS_KEY_ID
          - name: AWS_SECRET_ACCESS_KEY
            valueFrom:
              secretKeyRef:
                name: <some_name>
                key: AWS_SECRET_ACCESS_KEY
 ...

目前,此文件位于dev/deployment.yaml,但我还想要一个prod/deployment.yaml。除了复制整个文件之外,有没有更好的方法来干燥这个文件,以便它可以用于 dev 和 prod 集群?该文件的不同部分是一些环境变量(我为 prod 和 dev 使用了不同的 DATALOADER_QUEUE 变量,以及 AWS 密钥。可以做什么?

我研究了一些选项,例如 configmap。如何做到这一点?什么是挂载卷?我正在阅读:https://kubernetes.io/docs/tasks/configure-pod-container/configure-pod-configmap/#add-configmap-data-to-a-volume 但我不确定它是什么……什么是音量?如何访问存储在此“卷”中的数据?

图像可以从 prod 切换到 dev 吗?我知道这看起来很奇怪......

【问题讨论】:

  • 是的,configMapsSecrets 不同,部署相同。顺便说一句,有很多关于此的文档。

标签: kubernetes


【解决方案1】:

这样的事情会帮助环境变量:

  envFrom:
  - configMapRef:
      name: myapp-config
  - secretRef:
      name: myapp-secrets

然后,您可以为 dev 和 prod 使用不同的命名空间,这样引用就不必改变。要处理标签,请查看 Kustomize 叠加层并在叠加层级别设置标签。

【讨论】:

  • 那去哪儿了?有任何文件吗?
  • 它不是 env 部分,您可以告诉 K8s 使用 CM 或 Secret 中的每个密钥作为 env var。减少打字:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 2020-08-22
  • 2017-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
相关资源
最近更新 更多