Postgresql 在kubernetes的多容器pod环境中,第一个容器postgres数据库启动后,如何将Key斗篷作为第二个容器运行?
在多容器吊舱中: 步骤1:部署第一个容器Postgres数据库并创建模式 第二步:等到Postgres吊舱出现 步骤3:然后开始部署第二个容器keydepeat 我已编写了以下要运行的部署文件:Postgresql 在kubernetes的多容器pod环境中,第一个容器postgres数据库启动后,如何将Key斗篷作为第二个容器运行?,postgresql,kubernetes,keycloak,Postgresql,Kubernetes,Keycloak,在多容器吊舱中: 步骤1:部署第一个容器Postgres数据库并创建模式 第二步:等到Postgres吊舱出现 步骤3:然后开始部署第二个容器keydepeat 我已编写了以下要运行的部署文件: apiVersion: apps/v1 kind: Deployment metadata: name: idms namespace: default labels: app: idms spec: replicas: 1 selector: matchLabels
apiVersion: apps/v1
kind: Deployment
metadata:
name: idms
namespace: default
labels:
app: idms
spec:
replicas: 1
selector:
matchLabels:
app: idms
template:
metadata:
labels:
app: idms
spec:
containers:
- name: postgres
image: registry.prod.srv.da.nsn-rdnet.net/edge/postgres:12.3-alpine
imagePullPolicy: "IfNotPresent"
ports:
- containerPort: 5432
lifecycle:
postStart:
exec:
command: ["/bin/bash","-c","sleep 5 && PGPASSWORD=$POSTGRES_PASSWORD psql $POSTGRES_DB -U $POSTGRES_USER -c \'CREATE SCHEMA IF NOT EXISTS keycloak;\'"]
envFrom:
- configMapRef:
name: postgres-config
- name: keycloak
image: quay.io/keycloak/keycloak:10.0.1
env:
- name: KEYCLOAK_USER
value: "admin"
- name: KEYCLOAK_PASSWORD
value: "admin"
- name: REALM
value: "ntc"
- name: PROXY_ADDRESS_FORWARDING
value: "true"
- name: DB_ADDR
value: "localhost"
- name: DB_PORT
value: "5432"
- name: DB_DATABASE
value: "postgresdb"
- name: DB_USER
value: "xxxxxxxxx"
- name: DB_PASSWORD
value: "xxxxxxxxx"
- name: DB_SCHEMA
value: "keycloak"
- name: KEYCLOAK_IMPORT
value: "/opt/jboss/keycloak/startup/elements/realm.json"
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgredb
- mountPath: /opt/jboss/keycloak/startup/elements
name: elements
ports:
- name: http
containerPort: 8080
- name: https
containerPort: 8443
readinessProbe:
httpGet:
path: /auth/realms/master
port: 8080
volumes:
- name: elements
configMap:
name: keycloak-elements
- name: postgredb
persistentVolumeClaim:
claimName: postgres-pv-claim
但是keydepot是从H2嵌入式数据库开始的,而不是Postgres。如果我在部署文件的Postgres上使用init容器来nslookup
,如下所示:
initContainers:
- name: init-postgres
image: busybox
command: ['sh', '-c', 'until nslookup postgres; do echo waiting for postgres; sleep 2; done;']
pod被困在“平台初始化”中您忘了添加
- name: DB_VENDOR
value: POSTGRES
在部署YAML文件中,由于默认情况下使用H2数据库模式使用该密钥斗篷
YAML ref文件:您忘记添加
- name: DB_VENDOR
value: POSTGRES
在部署YAML文件中,由于默认情况下使用H2数据库模式使用该密钥斗篷
YAML ref文件:似乎您希望在单独的pod中运行这两个东西。在KeyClope部署中,您将连接到单独PostgreSQL部署前面的服务名称。(如果您需要升级或重新配置keydmaze,您不需要同时重新启动数据库。)@DavidMaze同意。最初,我们仅在单独的pod上运行这两个部署。目前,我们在Kubernetes集群中达到了每个节点100个吊舱的限制。因此,我们正在尽可能减少pod,直到我们部署更多的基础设施。似乎您希望在单独的pod中运行这两个东西。在KeyClope部署中,您将连接到单独PostgreSQL部署前面的服务名称。(如果您需要升级或重新配置keydmaze,您不需要同时重新启动数据库。)@DavidMaze同意。最初,我们仅在单独的pod上运行这两个部署。目前,我们在Kubernetes集群中达到了每个节点100个吊舱的限制。因此,我们正在尽可能减少pod,直到我们有更多的基础设施可以部署,就像一个魅力!!谢谢:)很高兴听到这个消息@Siddhantarath工作得很有魅力!!谢谢:)很高兴听到这个消息@悉达兰塔斯