正如标题所说,我正在设置 aPOSTGRES_PASSWORD
并且在使用 Skaffold 启动集群之后(--port-forward
打开,以便我可以使用 pgAdmin 访问数据库),我可以使用或不使用正确的密码来访问数据库。POSTGRES_DB
并按POSTGRES_USER
预期工作。
我在 Docker Hub for Postgres 的文档中看到:
注意 1:PostgreSQL 映像在本地设置身份验证,因此您可能会注意到从(在同一容器内)
trust
连接时不需要密码。localhost
但是,如果从不同的主机/容器连接,则需要密码。
我认为这--port-forward
可能是罪魁祸首,因为它注册为localhost
.
无论如何要防止这种行为?
我想问题是有人可以访问我的笔记本电脑并轻松连接到数据库。
这是我的postgres.yaml
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres-deployment
spec:
replicas: 1
selector:
matchLabels:
component: postgres
template:
metadata:
labels:
component: postgres
spec:
containers:
- name: postgres
image:testproject/postgres
ports:
- containerPort: 5432
env:
- name: POSTGRES_DB
value: dev
- name: POSTGRES_USER
value: dev
- name: POSTGRES_PASSWORD
value: qwerty
volumeMounts:
- name: postgres-storage
mountPath: /var/lib/postgresql/data
subPath: postgres
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postgres-storage
---
apiVersion: v1
kind: Service
metadata:
name: postgres-cluster-ip-service
spec:
type: ClusterIP
selector:
component: postgres
ports:
- port: 5432
targetPort: 5432
和skaffold.yaml
:
apiVersion: skaffold/v1beta15
kind: Config
build:
local:
push: false
artifacts:
- image: testproject/postgres
docker:
dockerfile: ./db/Dockerfile.dev
sync:
manual:
- src: "***/*.sql"
dest: .
- image: testproject/server
docker:
dockerfile: ./server/Dockerfile.dev
sync:
manual:
- src: "***/*.py"
dest: .
deploy:
kubectl:
manifests:
- k8s/ingress.yaml
- k8s/postgres.yaml
- k8s/server.yaml
Dockerfile.dev
太:
FROM postgres:11-alpine
EXPOSE 5432
COPY ./db/*.sql /docker-entrypoint-initdb.d/