Kubernetes部署OwnCloud网盘服务
目录
1.创建PV和PVC
2. 配置ConfigMap
3.创建Secret
4.部署owncloud Deployment应用
5.创建Service
ownCloud 是一个开源免费专业的私有云存储项目,它能帮你快速在个人电脑或服务器上架设一套专属的私有云文件同步网盘,可以像 百度云那样实现文件跨平台同步、共享、版本控制、团队协作等。
1.创建PV和PVC
编写yaml文件(文件名自定义)创建PV和PVC来提供持久化存储,以便保存 ownCloud 服务中的文件和数据。
要求:PV(访问模式为读写,只能被单个节点挂载;存储为5Gi;存储类型为hostPath,存储路径自定义);PVC(访问模式为读写,只能被单个节点挂载;申请存储空间大小为5Gi)。
[root@master ~]# cat pv-pvc.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: owncloud-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /owncloud/
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: owncloud-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
[root@master ~]# mkdir /owncloud
[root@master ~]# kubectl apply -f pv-pvc.yaml
2. 配置ConfigMap
编写yaml文件(文件名自定义)创建一个configMap对象,指定OwnCloud的环境变量。登录账号对应的环境变量为OWNCLOUD_ADMIN_USERNAME,密码对应的环境变量为OWNCLOUD_ADMIN_PASSWORD。(变量值自定义)
[root@master ~]# cat configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: owncloud-config
data:
OWNCLOUD_ADMIN_USERNAME: "admin"
OWNCLOUD_ADMIN_PASSWORD: "abc123"
[root@master ~]# kubectl apply -f configmap.yaml
configmap/owncloud-config created
3.创建Secret
编写yaml文件(文件名自定义)创建一个Secret对象,以保存OwnCloud数据库的密码。对原始密码采用base64编码格式进行加密。
[root@master ~]# echo "aaa111" | base64
YWFhMTExCg==
[root@master ~]# vi secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: owncloud-db-password
type: Opaque
data:
OWN_CLOUD_DB_PASSWORD: YWFhMTExCg==
4.部署owncloud Deployment应用
编写yaml文件(文件名自定义) 创建Deployment对象, 指定OwnCloud的容器和相关的环境变量。(Deployment资源命名为owncloud-deployment,镜像为Harbor仓库中的owncloud:latest,存储的挂载路径为/var/www/html,其它根据具体情况进行配置)
[root@master ~]# cat deployments.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: owncloud-deployment
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: owncloud
template:
metadata:
labels:
app: owncloud
spec:
containers:
- name: owncloud
image: 192.168.100.30/library/owncloud:latest
ports:
- containerPort: 80
env:
- name: OWNCLOUD_ADMIN_USERNAME
valueFrom:
configMapKeyRef:
name: owncloud-config
key: OWNCLOUD_ADMIN_USERNAME
- name: OWNCLOUD_ADMIN_PASSWORD
valueFrom:
configMapKeyRef:
name: owncloud-config
key: OWNCLOUD_ADMIN_PASSWORD
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: owncloud-db-password
key: OWN_CLOUD_DB_PASSWORD
volumeMounts:
- name: owncloud-storage
mountPath: /var/www/html
volumes:
- name: owncloud-storage
persistentVolumeClaim:
claimName: owncloud-pvc
5.创建Service
编写yaml文件(文件名自定义)创建一个Service对象将OwnCloud公开到集群外部。通过http://IP:端口号可查看owncloud。
[root@master ~]# cat service.yaml
apiVersion: v1
kind: Service
metadata:
name: owncloud-service
spec:
selector:
app: owncloud
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
nodePort: 30080