我正在 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 用户不存在。
给您带来的问题是 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_HOME。如果错误的用户被设置为所有者,请对 $BITBUCKET_HOME 或 $BITBUCKET_INST 路径下的 atlbitbucket 运行 chown -R。在示例中,正确的用户是 altbitbucket,如果您以其他用户身份运行,只需在 chown 命令上更改它即可。