0

文档所示,您应该在执行docker run以下操作时设置环境变量:

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

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

但是,我正在使用 Skaffold 来启动一个 k8s 集群,并且我正在尝试弄清楚如何做类似的事情。如何为 Kubernetes 和 Skaffold 做这件事?

4

2 回答 2

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
于 2019-12-05T06:26:44.853 回答
1

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

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

创建你自己的秘密( Doc )

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

要轻松创建秘密,您还可以从生成器创建秘密,然后将其应用于 Apiserver 上创建对象。生成器应在kustomization.yaml目录中指定。

例如,要从文字 username=admin 和 生成秘密password=secret,您可以将秘密生成器指定 kustomization.yaml

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

应用 kustomization 目录来创建 Secret 对象。

$ kubectl apply -k .
secret/db-user-pass-dddghtt9b5 created

使用 Secrets 作为环境变量( Doc )

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

apiVersion: v1
kind: Pod
metadata:
  name: secret-env-pod
spec:
  containers:
  - name: mycontainer
    image: redis
    env:
      - name: SECRET_USERNAME
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: username
      - name: SECRET_PASSWORD
        valueFrom:
          secretKeyRef:
            name: mysecret
            key: password
  restartPolicy: Never

来源:这里这里

于 2019-12-05T12:19:19.560 回答