前提条件是已经部署了k8s环境,采用k8s部署gitlab作为devops的测试环境,更加简洁和方便。
一、 准备工作
安装NFS
服务端:
1、安装服务
yum -y install nfs-utils rpcbind
2、配置exports
#创建共享存储文件夹
mkdir -p /home/k8s-nfs/gitlab/config
mkdir -p /home/k8s-nfs/gitlab/logs
mkdir -p /home/k8s-nfs/gitlab/data
3、配置exports
vim /etc/exports
在/etc/exports写入以下内容
/home/k8s-nfs/gitlab/config *(insecure,rw,async,no_root_squash)
/home/k8s-nfs/gitlab/logs *(insecure,rw,async,no_root_squash)
/home/k8s-nfs/gitlab/data *(insecure,rw,async,no_root_squash)
4、 设置服务开机启动与启动服务
systemctl enable rpcbind && systemctl start rpcbind
systemctl enable nfs && systemctl start nfs
5、测试nfs和rpcbind运行状态
systemctl status rpcbind
systemctl status nfs
6、查看是否成功和可用的nfs地址
showmount -e localhost
正确状态的输出:
[root@k8s-node-1 gitlab]# showmount -e localhost
Export list for localhost:
/home/k8s-nfs/gitlab/data *
/home/k8s-nfs/gitlab/logs *
/home/k8s-nfs/gitlab/config *
二、 部署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.x.x #nfs服务端的ip地址
path: /home/k8s-nfs/gitlab/config
- name: gitlab-persistent-logs
nfs:
server: 192.168.x.x #nfs服务端的ip地址
path: /home/k8s-nfs/gitlab/logs
- name: gitlab-persistent-data
nfs:
server: 192.168.x.x #nfs服务端的ip地址
path: /home/k8s-nfs/gitlab/data
2.2 执行部署
kubectl apply -f gitlib-deploy.yaml
2.3 查看部署结果
kubectl get deploy
# kubectl get deploy
NAME READY UP-TO-DATE AVAILABLE AGE
gitlab 1/1 1 1 134m
以上说明部署完成。
- gitlib初始化
3.1 访问登录页面
通过查看service映射的端口:
kubectl get svc -o wide
# 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
由于是容器部署,所以,需要进入到容器中
- 查看容器名称
[root@k8s-master-1 k8s]# kubectl get pods
NAME READY STATUS RESTARTS AGE
gitlab-58d7f866c6-hmw2c 1/1 Running 0 58m
- 执行命令
因为只有一个容器,所以执行以下命令就行:
kubectl exec -it gitlab-58d7f866c6-hmw2c -- /bin/bash
- 找到对应文件,拷贝密码进行登录。
cat /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.
-
登录信息
用户名 root
密码 HCsr5VFAp28N*****************= -
登录以后的主界面
如果不习惯英文界面
1.点击用户头像
2.preference
3.找到language下拉选择中文