干这个kubernetes配置yaml文件的最佳方法是什么?

时间:2019-10-13 21:45:18

标签: kubernetes

我有一个用于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。除了将整个文件复制过来,还有没有更好的方法来将该文件进行干燥,使其可以同时用于开发和生产集群?该文件的不同之处是一些环境变量(我对prod和dev使用了不同的DATALOADER_QUEUE变量以及AWS密钥。可以做什么?

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

图像可以从生产切换为开发吗?我知道这似乎很奇怪...

1 个答案:

答案 0 :(得分:1)

类似这样的方法可以帮助env vars

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

然后可以为dev与prod使用不同的名称空间,因此引用不必更改。要处理标签,请查看Kustomize叠加层并在叠加层级别设置标签。