如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做到这一点?
答案 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