设置Postgres环境变量运行图像

时间:2019-12-05 05:26:57

标签: postgresql docker kubernetes skaffold

the documentation所示,您在执行docker run时应设置环境变量,如下所示:

docker run --name some-postgres -e POSTGRES_PASSWORD='foo' POSTGRES_USER='bar'

这将设置超级用户和密码来访问数据库,而不是默认的POSTGRES_PASSWORD=''POSTGRES_USER='postgres'

但是,我正在使用Skaffold来旋转k8s集群,并且试图弄清楚如何做类似的事情。如何为Kubernetes和Skaffold做到这一点?

2 个答案:

答案 0 :(得分:1)

使用下面的YAML

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: postgres
spec:
  serviceName: postgres
  replicas: 1
  template:
    metadata:
      labels:
       name: postgres
    spec:
      containers:
        - name: postgres
          image: postgres:11.2
          ports:
            - containerPort: 5432
          env:
            - name: POSTGRES_DB
              value: "sampledb"
            - name: POSTGRES_USER
              value: "postgres"
            - name: POSTGRES_PASSWORD
              value: "secret"
          volumeMounts:
            - name: data
              mountPath: /var/lib/postgresql
      volumes:
        - name: data
          emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
  name: postgres
spec:
  type: ClusterIP
  ports:
    - port: 5432
  selector:
    name: postgres

答案 1 :(得分:1)

@P Ekambaram是正确的,但我想进一步探讨该主题并解释“为什么和如何做”。

在Kubernetes上传递密码时,强烈建议使用加密,您可以通过使用密码来做到这一点。

创建自己的秘密Doc

要能够使用@P Ekambaram所述的机密,您需要在kubernetes集群中拥有一个机密。

要轻松创建密钥,您还可以从生成器创建密钥,然后将其应用到Apiserver上以创建对象。生成器应在目录内的<span class="firstname">John</span>中指定。

例如,要从文字<firstname>John</firstname>kustomization.yaml生成密钥,可以在username=admin中将密钥生成器指定为

password=secret

应用kustomization目录创建Secret对象。

kustomization.yaml

将机密用作环境变量Doc

这是使用环境变量秘密的pod的示例:

# Create a kustomization.yaml file with SecretGenerator
$ cat <<EOF >./kustomization.yaml
secretGenerator:
- name: db-user-pass
  literals:
  - username=admin
  - password=secret
EOF

来源:herehere

相关问题