Kubernetes 中的 Bitbucket 数据中心 - 共享主目录不可写,安装的卷所有者是 root

问题描述 投票:0回答:1

我正在 minikube 上设置 Bitbucket 数据中心,在安装卷时遇到以下问题:

The following problems occurred, which prevents Atlassian Bitbucket from starting:      Bitbucket Shared Home [/var/atlassian/application-data/bitbucket/shared] exists but is not writable by Bitbucket     SpringMVC dispatcher [springMvc] could not be started 

我检查了一下,虽然 /var/atlassian/application-data/bitbucket 由 bitbucket 所有,但 /var/atlassian/application-data/bitbucket/shared 由 root 所有。

当我检查日志时 - bitbucket 尝试在创建 pod 后创建此目录,然后它开始设置和创建外部数据库,然后由于无法访问此目录而失败。

这是我的部署 .yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bitb
spec:
  replicas: 1
  selector:
    matchLabels:
      app: bitb
  template:
    metadata:
      labels:
        app: bitb
    spec:
     containers:
        - name: bitb
          image: atlassian/bitbucket:8.16.4
          volumeMounts:
            - name: bitb-storage
              mountPath: "/var/atlassian/application-data/bitbucket"
          volumeMounts:
            - name: bitb-properties
              mountPath: "/var/atlassian/application-data/bitbucket/shared/bitbucket.properties"
              subPath: "bitbucket.properties"
          env:
            - name: BITBUCKET_HOME
              value: "/var/atlassian/application-data/bitbucket"
     volumes:
      - name: bitb-storage
        persistentVolumeClaim:
          claimName: bitb
      - name: bitb-properties
        configMap:
          name: properties

bitbucket.properties 需要作为卷安装,因为我想确保部署能够自行修复,因此使用 kubectl exec 手动更改 /shared 目录所有者不是一个选项。

我尝试使用 init 容器来更改所有者,但是当 init 容器正在工作时,bitbucket 用户不存在。

kubernetes bitbucket
1个回答
0
投票

给您带来的问题是 Bitbucket 共享主目录 /var/atlassian/application-data/bitbucket/shared 归 root 所有。因此,Bitbucket 数据中心无法在您的 Minikube 部署中启动,因为 Bitbucket 用户无法写入其中。

检查下面如何修复并确保目录的所有权已更正:

这正是您对 init 容器所做的事情。但是,并非所有配置都允许 Bitbucket 用户在初始化容器阶段使用。

相反,在 init 容器内通过其所需的 UID(例如 1000)描述用户,然后相应地更改目录所有者。

更改 bitb-storage 持久卷声明规范以对此文件夹具有任何特定权限。将 fsGroup 字段设置为与 init 容器内使用的值相同的值。这将确保即使在重新启动 Pod 后,该目录也将拥有来自 init 容器初始化的所有权。

您自己的 Bitbucket 用户配置可能需要相应调整 UID 和 GID 值。

重新检查bitbucket.properties ConfigMap权限,确认Bitbucket用户是否可以访问。

doc1 和 doc2 解释了 Bucket 服务器主目录适当权限的重要性。虽然它专注于非 k8s 部署,但用户和组所有权的概念仍然相关

注意:

更正为 配置的目录的权限,以便运行 Bitbucket Server 的操作系统用户具有访问权限,并且可以读取和写入。有关设置的说明,请参阅 Bitbucket 主目录

使用运行 Bitbucket Server 的操作系统用户有权访问且可以读取和写入的不同 BITBUCKET_HOME。如果错误的用户被设置为所有者,请对 $BITBUCKET_HOME 或 $BITBUCKET_INST 路径下的 atlbitbucket 运行 chown -R。在示例中,正确的用户是 altbitbucket,如果您以其他用户身份运行,只需在 chown 命令上更改它即可。

© www.soinside.com 2019 - 2024. All rights reserved.