关注公众号「Linux 容器运维」,回复【对应关键词】(如 docker/k8s/linux/ 面试),即可获取完整版干货,复制到生产环境直接使用~ 更多内容已同步至【公众号官方合集】,点击公众号主页「合集」→「kubernetes」,即可查看全部最新内容,持续更新中~
介绍
本次所有操作都是在K8S 1.26.14 上面操作。gitlab 安装包全部采用官方安装教程,需要用到的组件安装方法如下。
- ingress 控制器安装方法点击跳转
- ceph 存储安装方法点击跳转
- Helm 包管理工具安装方法点击跳转,这个估计是有最先版本,看自己需要就行。
- gitlab 官网点击跳转
- Gitlab 安装的是当前的最新版本 17.3.1
安装说明
- 默认 Helm 图表配置不适用于生产(我是学习环境部署的)。
- 建议K8S集群总共至少有 8 个虚拟 CPU 和 10 GB RAM(官网写的30G以上的RAM,其实学习环境用不到)。
- 有部分docker镜像可能需要科学上网才可以下载(有需要可以私信我)。
准备工作
设置ceph存储为默认存储
[root@master01 ~]# kubectl get sc rook-ceph-rbd
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
rook-ceph-rbd (default) rook-ceph.rbd.csi.ceph.com Retain Immediate true 104d
修改为集群默认存储
kubectl edit sc rook-ceph-rb
这里仅展示部分代码
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations: ## 主要添加下面这个注解,添加完保存退出即可。
storageclass.kubernetes.io/is-default-class: "true"
name: rook-ceph-rbd
parameters:
clusterID: rook-ceph
将 GitLab Helm 存储库添加到helm的配置中:
helm repo add gitlab https://charts.gitlab.io/
下载gitlab安装包
helm pull gitlab/gitlab
下载好以后解压安装包
修改配置
如需要更详细配置请参考官网
vim ./gitlab/values.yaml
## 修改 51 行为 edition: ce ,默认是 ee 也就是企业版。
## 修改 63 行为 domain: example.com 修改为自己需要的域名。
## 修改 79 行为 configureCertmanager: false 默认是true,也就是自动生成域名证书,因为我自己有证书所以设置为false。
## 修改 85 86 87 行注意缩紧。
tls:
enabled: true
secretName: gitlab.example.cn ## 这个是集群的的默认证书名字,也可根据需要自己创建证书。
## 923和927行 全部修改为 false ,管理证书用的,我是用自己的证书用不到这个。
## 1134 行修改为 false 监控 gitlab用的。
## 1273 行修改为 false gitlab自己的cicd服务,用不到就关闭了。
开始安装Gitlab
全部修改好以后开始安装
## 需要在解压目录里面执行下面的命令,-n 指定是K8S 命名空间的名字,自己按需修改即可。
## 有一部分docker镜像是下载不了的,需要科学上网。
helm install gitlab -n gitlabs ./
安装好以后查看服务是否正常
[root@master01 gitlab]# kubectl get po -n gitlabs
NAME READY STATUS RESTARTS AGE
gitlab-gitaly-0 1/1 Running 0 4h51m
gitlab-gitlab-exporter-8485cb6756-txzdj 1/1 Running 0 4h51m
gitlab-gitlab-shell-77b68487c8-qm7sq 1/1 Running 0 4h51m
gitlab-gitlab-shell-77b68487c8-zczfr 1/1 Running 0 4h51m
gitlab-kas-7b568b57d5-rznqv 1/1 Running 3 (4h50m ago) 4h51m
gitlab-kas-7b568b57d5-ssnb6 1/1 Running 3 (4h50m ago) 4h51m
gitlab-minio-7748b7fb5f-klqmd 1/1 Running 0 4h51m
gitlab-nginx-ingress-controller-768649c56c-sm65k 1/1 Running 0 4h51m
gitlab-nginx-ingress-controller-768649c56c-trghh 1/1 Running 0 4h51m
gitlab-postgresql-0 2/2 Running 0 4h51m
gitlab-redis-master-0 2/2 Running 0 4h51m
gitlab-registry-55c4cf5884-qr9rv 1/1 Running 0 4h51m
gitlab-registry-55c4cf5884-skdjh 1/1 Running 0 4h51m
gitlab-sidekiq-all-in-1-v2-5c44c6c7f7-jmt68 1/1 Running 3 (4h49m ago) 4h51m
gitlab-toolbox-7d5c7b58bc-7vvdw 1/1 Running 0 4h51m
gitlab-webservice-default-566b849499-rxz9w 2/2 Running 4 (4h49m ago) 4h51m
gitlab-webservice-default-566b849499-xvbvm 2/2 Running 4 (4h48m ago) 4h51m
查看登陆域名
[root@master01 gitlab]# kubectl get ing -n gitlabs
NAME CLASS HOSTS ADDRESS PORTS AGE
gitlab-kas gitlab-nginx kas.example.cn 80, 443 4h52m
gitlab-minio gitlab-nginx minio.example.cn 80, 443 4h52m
gitlab-registry gitlab-nginx registry.example.cn 80, 443 4h52m
gitlab-webservice-default gitlab-nginx gitlab.example.cn 80, 443 4h52m
将域名添加到host文件即可访问,用户名:root , 密码获取方式如下:
kubectl get secret -n gitlabs gitlab-gitlab-initial-root-password -ojsonpath='{.data.password}' | base64 --decode ; echo
登陆成功以后就可以修改密码了。到此部署完成
发现问题
按照上面部署完成以后不能直接用git clone 克隆代码,解决办法如下:
修改SSH服务默认端口为其他端口,比如222,将ssh服务默认的22端口给gitlab服务使用即可正常下载。
vim /etc/ssh/sshd_config
systemctl restart sshd
修改Gitlab服务
kubectl edit svc -n gitlabs gitlab-nginx-ingress-controller
## 仅展示部分代码
- name: gitlab-shell
nodePort: 22 ## 将 NodePort 端口修改为 22
port: 22
protocol: TCP
targetPort: gitlab-shell
selector:
app: nginx-ingress
component: controller
release: gitlab
sessionAffinity: None
type: NodePort ## 修改此处为 NodePort
修改好以后保存退出即可。