Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在kubernetes的多容器pod环境中,第一个容器postgres数据库启动后,如何将Key斗篷作为第二个容器运行?_Postgresql_Kubernetes_Keycloak - Fatal编程技术网

Postgresql 在kubernetes的多容器pod环境中,第一个容器postgres数据库启动后,如何将Key斗篷作为第二个容器运行?

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

在多容器吊舱中:

步骤1:部署第一个容器Postgres数据库并创建模式

第二步:等到Postgres吊舱出现

步骤3:然后开始部署第二个容器keydepeat

我已编写了以下要运行的部署文件:

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工作得很有魅力!!谢谢:)很高兴听到这个消息@悉达兰塔斯