前提条件是已经部署了k8s环境,采用k8s部署gitlab作为devops的测试环境,更加简洁和方便。
1. 准备工作
1.1 创建nfs共享目录
在nfs服务器创建共享目录,部署的gitlib使用共享目录来进行持久化,这样不管在哪个节点运行gitlib都没有关系。
# mkdir -p /home/k8s-nfs/gitlab/config
# mkdir -p /home/k8s-nfs/gitlab/logs
# mkdir -p /home/k8s-nfs/gitlab/data
1.2 添加到共享
/home/k8s-nfs/gitlab/config 192.168.17.0/8(rw,no_root_squash)
/home/k8s-nfs/gitlab/logs 192.168.17.0/8(rw,no_root_squash)
/home/k8s-nfs/gitlab/data 192.168.17.0/8(rw,no_root_squash)
1.3 执行更新
# service nfs restart
或者
# exportfs -r
2. 部署gitlib
2.1 准备部署文件(gitlib-deploy.yaml)
apiVersion: v1
kind: Service
metadata:
name: gitlab
spec:
type: NodePort
ports:
# Port上的映射端口
- port: 443
targetPort: 443
name: gitlab443
- port: 80
targetPort: 80
name: gitlab80
- port: 22
targetPort: 22
name: gitlab22
selector:
app: gitlab
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: gitlab
spec:
selector:
matchLabels:
app: gitlab
revisionHistoryLimit: 2
template:
metadata:
labels:
app: gitlab
spec:
containers:
# 应用的镜像
- image: gitlab/gitlab-ce
name: gitlab
imagePullPolicy: IfNotPresent
# 应用的内部端口
ports:
- containerPort: 443
name: gitlab443
- containerPort: 80
name: gitlab80
- containerPort: 22
name: gitlab22
volumeMounts:
# gitlab持久化
- name: gitlab-persistent-config
mountPath: /etc/gitlab
- name: gitlab-persistent-logs
mountPath: /var/log/gitlab
- name: gitlab-persistent-data
mountPath: /var/opt/gitlab
imagePullSecrets:
- name: devops-repo
volumes:
# 使用nfs互联网存储
- name: gitlab-persistent-config
nfs:
server: 192.168.17.81
path: /home/k8s-nfs/gitlab/config
- name: gitlab-persistent-logs
nfs:
server: 192.168.17.81
path: /home/k8s-nfs/gitlab/logs
- name: gitlab-persistent-data
nfs:
server: 192.168.17.81
path: /home/k8s-nfs/gitlab/data
2.2 执行部署
# kubectl apply -f gitlib-deploy.yaml
2.3 查看部署结果
# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
gitlab 1/1 1 1 134m
以上说明部署完成。
3. gitlib初始化
3.1 访问登录页面
通过查看service映射的端口:
# kubectl get svc -o wide
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE SELECTOR
gitlab NodePort 10.10.129.28 <none> 443:31326/TCP,80:31320/TCP,22:31515/TCP 137m app=gitlab
可以看到映射80端口的节点端口为:31320
通过制定端口访问登录页:
3.2 初始用户名和密码
初始用户名为root,初始密码gitlib自动创建,在如下文件中:
/etc/gitlab/initial_root_password
由于是容器部署,所以,需要进入到容器中,找到对应文件,拷贝密码进行登录。文件内容类似:
# WARNING: This value is valid only in the following conditions
# 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_passwo
# 2. Password hasn't been changed manually, either via UI or via command line.
#
# If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/
Password: HCsr5VFAp28N*****************=
# NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
3.3 登录以后的主界面