如何在kubernetes自定义主题中持久化Keyclope

如何在kubernetes自定义主题中持久化Keyclope,kubernetes,google-cloud-platform,keycloak,Kubernetes,Google Cloud Platform,Keycloak,我试图通过gcepersistentdisk持久化自定义主题,但当我进入管理控制台时,它没有加载任何内容,并且检查文件夹/opt/jboss/keydape/themes为空 还可以尝试通过添加以下行来复制自定义主题来创建自定义docker映像(Dockerfile) COPY/source folder/login/opt/jboss/keydrope/themes/login 虽然在文件夹/opt/jboss/keydape/themes中,我可以看到新的登录文件夹,但当我访问管理控制台时,

我试图通过
gcepersistentdisk
持久化自定义主题,但当我进入管理控制台时,它没有加载任何内容,并且检查文件夹
/opt/jboss/keydape/themes
为空

还可以尝试通过添加以下行来复制自定义主题来创建自定义docker映像(Dockerfile)

COPY/source folder/login/opt/jboss/keydrope/themes/login

虽然在文件夹
/opt/jboss/keydape/themes
中,我可以看到新的登录文件夹,但当我访问管理控制台时,我看不到自定义主题登录

我只能使用以下kubernet命令查看自定义主题:

  • kubectl exec POD——名称空间keydrope-mkdir/opt/jboss/keydrope/themes/login

  • kubectl cp keydove/login keydove/POD:/opt/jboss/keydove/themes/login

  • 如果可以在管理控制台中看到自定义主题登录,请使用前面的命令

    我尝试使用
    gcePersistentDisk
    如下:

    spec:
      containers:
        - name: keycloak
       ...
       volumeMounts:
         - mountPath: /opt/jboss/keycloak/themes
           name: test-volume
    
      volumes:
        - name: test-volume
          gcePersistentDisk:
            pdName: pd-name
            fsType: ext4
    

    pod重新启动时,我可以以何种方式保留自定义主题?

    创建一个StorageClass和一个PersistentVolumeClaim

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nfs-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: ssd-sc  # specify the storage class created below
      resources:
        requests:
          storage: 10Gi
    
    ---
    
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ssd-sc 
    provisioner: kubernetes.io/gce-pd
    reclaimPolicy: Retain # Retain storage even if we delete PVC
    parameters:
      type: pd-ssd # ssd
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: task-pv-pod
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: nfs-pvc
      containers:
        - name: task-pv-container
          image: nginx
          ports:
            - containerPort: 80
              name: "http-server"
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: task-pv-storage
    
    创建一个Pod以使用PersistentVolumeClaim

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nfs-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: ssd-sc  # specify the storage class created below
      resources:
        requests:
          storage: 10Gi
    
    ---
    
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ssd-sc 
    provisioner: kubernetes.io/gce-pd
    reclaimPolicy: Retain # Retain storage even if we delete PVC
    parameters:
      type: pd-ssd # ssd
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: task-pv-pod
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: nfs-pvc
      containers:
        - name: task-pv-container
          image: nginx
          ports:
            - containerPort: 80
              name: "http-server"
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: task-pv-storage
    

    创建StorageClass和PersistentVolumeClaim

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nfs-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: ssd-sc  # specify the storage class created below
      resources:
        requests:
          storage: 10Gi
    
    ---
    
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ssd-sc 
    provisioner: kubernetes.io/gce-pd
    reclaimPolicy: Retain # Retain storage even if we delete PVC
    parameters:
      type: pd-ssd # ssd
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: task-pv-pod
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: nfs-pvc
      containers:
        - name: task-pv-container
          image: nginx
          ports:
            - containerPort: 80
              name: "http-server"
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: task-pv-storage
    
    创建一个Pod以使用PersistentVolumeClaim

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: nfs-pvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: ssd-sc  # specify the storage class created below
      resources:
        requests:
          storage: 10Gi
    
    ---
    
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ssd-sc 
    provisioner: kubernetes.io/gce-pd
    reclaimPolicy: Retain # Retain storage even if we delete PVC
    parameters:
      type: pd-ssd # ssd
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: task-pv-pod
    spec:
      volumes:
        - name: task-pv-storage
          persistentVolumeClaim:
            claimName: nfs-pvc
      containers:
        - name: task-pv-container
          image: nginx
          ports:
            - containerPort: 80
              name: "http-server"
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: task-pv-storage
    

    据我所知,每个主题都应该有自己的文件夹。它应该是
    themes/mytheme/login
    ,而不是
    themes/login
    。例如,您的本地结构可能如下所示:

    Dockerfile
    themes
    |-mytheme
      |-account
      |-admin
      |-login
        |-resources 
          |-css
          |-img
        |-theme.properties
      |-welcome
    
    FROM jboss/keycloak:8.0.1
    ADD ./themes /opt/jboss/keycloak/themes/
    
    Docker文件可能如下所示:

    Dockerfile
    themes
    |-mytheme
      |-account
      |-admin
      |-login
        |-resources 
          |-css
          |-img
        |-theme.properties
      |-welcome
    
    FROM jboss/keycloak:8.0.1
    ADD ./themes /opt/jboss/keycloak/themes/
    

    构建一个docker映像,运行,然后转到
    领域设置->主题
    并选择您的主题

    据我所知,每个主题都应该有自己的文件夹。它应该是
    themes/mytheme/login
    ,而不是
    themes/login
    。例如,您的本地结构可能如下所示:

    Dockerfile
    themes
    |-mytheme
      |-account
      |-admin
      |-login
        |-resources 
          |-css
          |-img
        |-theme.properties
      |-welcome
    
    FROM jboss/keycloak:8.0.1
    ADD ./themes /opt/jboss/keycloak/themes/
    
    Docker文件可能如下所示:

    Dockerfile
    themes
    |-mytheme
      |-account
      |-admin
      |-login
        |-resources 
          |-css
          |-img
        |-theme.properties
      |-welcome
    
    FROM jboss/keycloak:8.0.1
    ADD ./themes /opt/jboss/keycloak/themes/
    

    构建一个docker映像,运行,然后转到
    领域设置->主题
    并选择您的主题

    当我尝试进入KeyClope管理控制台时,它对我无效。它不加载。您是否使用正确的路径装入了卷?
    kubectl get pv,pvc
    显示了什么?当我尝试进入Keyclope管理控制台时,它对我不起作用。它没有加载。您是否使用正确的路径安装了卷?kubectl获得的pv、pvc显示了什么?