microk8s使用docker安装配置gogs
- 创建存储卷(本地存储),以便挂载 gogs 数据目录
$ mkdir -p /data/k8s-pv/pv002
$ cat <<EOF | microk8s.kubectl apply -f -
kind: PersistentVolume
apiVersion: v1
metadata:
name: pv002
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 30Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: "/data/k8s-pv/pv002"
EOF
$ cat <<EOF | microk8s.kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-gogs
spec:
storageClassName: local-storage
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 30Gi
EOF
- 创建 gogs 应用
$ cat <<EOF | microk8s.kubectl apply -f -
apiVersion: apps/v1
kind: Deployment
metadata:
name: gogs-deployment
spec:
replicas: 1
selector:
matchLabels:
app: gogs
strategy:
type: Recreate
template:
metadata:
labels:
app: gogs
spec:
containers:
- image: gogs/gogs
name: private-gogs
ports:
- containerPort: 22
- containerPort: 3000
volumeMounts:
- name: gogs-persistent-storage
mountPath: /data
volumes:
- name: gogs-persistent-storage
persistentVolumeClaim:
claimName: pvc-gogs
EOF
- 创建服务暴露 http(3000)端口, 创建完成访问’gogs.example.com’进行页面安装设置
$ cat <<EOF | microk8s.kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: gogs-service
spec:
selector:
app: gogs
ports:
- protocol: TCP
port: 80
targetPort: 3000
EOF
$ cat <<EOF | microk8s.kubectl apply -f -
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: web-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
rules:
- host: gogs.example.com
http:
paths:
- backend:
serviceName: gogs-service
servicePort: 80
path: /
EOF
- 暴露 ssh 端口
-
配置 gogs,暴露 ssh 端口到集群外部
-
对外暴露 ssh 端口(172.16.13.100)
$ cat <<EOF | microk8s.kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: gogs-ssh-service
spec:
externalIPs:
- 172.16.13.100
type: NodePort
ports:
- port: 22
targetPort: 22
protocol: TCP
selector:
app: gogs
EOF
- 配置/data/k8s-pv/pv002/gogs/conf/app.ini文件中 server 部分
DISABLE_SSH = false SSH_DOMAIN = 172.16.13.100 SSH_PORT = 22 SSH_LISTEN_PORT = 22
- 配置 gogs,暴露 ssh 端口到集群内部(使用 headless 和 dns)
$ cat <<EOF | microk8s.kubectl apply -f -
apiVersion: v1
kind: Service
metadata:
name: gogs-ssh
spec:
clusterIP: None
ports:
- port: 22
targetPort: 22
protocol: TCP
selector:
app: gogs
EOF
- 配置/data/k8s-pv/pv002/gogs/conf/app.ini文件中 server 部分
DISABLE_SSH = false SSH_DOMAIN = gogs-ssh.default.svc.cluster.local SSH_PORT = 22 SSH_LISTEN_PORT = 22
参考资料
https://gogs.io/docs/installation https://gogs.io/docs/advanced/configuration_cheat_sheet https://github.com/gogs/gogs/blob/master/conf/app.ini https://kubernetes.io/docs/concepts/services-networking/service/#headless-services https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/