要将 Pod 中的路径 /opt/kubesphere/console/dist/assets/logo.svg
替换为外部的某个图片,可以通过以下几种方法处理。推荐使用 挂载 ConfigMap 或 Secret 的方式,因为它是 Kubernetes 原生的、可持续的解决方案。
方法 :使用 ConfigMap 挂载文件
将外部图片存储为 Kubernetes 的 ConfigMap,并挂载到 Pod 的目标路径。
1.1 创建 ConfigMap
首先,将图片转换为 Base64 编码(如果图片文件较大,可以直接通过文件路径创建 ConfigMap):
kubectl create configmap custom-logo --from-file=/data/kubesphere/logo/logo.svg --namespace=kubesphere-system
查看生成的 ConfigMap:
kubectl get configmap custom-logo -o yaml -n kubesphere-system
1.2 修改 Deployment 配置
编辑 ks-console
的 Deployment,挂载 ConfigMap 中的文件到 Pod 的路径 /opt/kubesphere/console/dist/assets/logo.svg
:
kubectl edit deployment ks-console -n kubesphere-system
在 Deployment 的 spec.template.spec.volumes
中添加:
volumes:
- name: logo-volume
configMap:
name: custom-logo
在 spec.template.spec.containers.volumeMounts
中添加:
volumeMounts:
- name: logo-volume
mountPath: /opt/kubesphere/console/dist/assets/logo.svg
subPath: logo.svg
1.3 应用更改
保存修改后,Kubernetes 会自动更新 Pod。验证挂载是否成功:
kubectl exec -it <pod-name> -n <namespace> -- ls -l /opt/kubesphere/console/dist/assets/logo.svg