Gitlab基于k8s简单部署
主要参考官方文档基于docker的部署,进行k8s文件的配置添加链接描述1.
·
主要参考官方文档基于docker的部署,进行k8s文件的配置
官方文档
如果有网络不通的情况,可以考虑关闭下防火墙
1. 拉取镜像
我们使用社区版,所以需要改动官方文档里面的gitlab-ee->gitlab-ce
docker pull gitlab/gitlab-ce:latest
2. 构建DamoSet
apiVersion: apps/v1beta2
kind: DaemonSet
# ds 配置
metadata:
name: gitlab-ds
namespace: gitlab
# ds 描述
spec:
# 选择标签
selector:
matchLabels:
app: my-gitlab
# pod 模板
template:
metadata:
labels: # 包含标签
app: my-gitlab
spec:
# volume
volumes:
- name: gitlab-config
hostPath:
path: /data/k8s/volumes/gitlab/config
type: Directory
- name: gitlab-logs
hostPath:
path: /data/k8s/volumes/gitlab/logs
type: Directory
- name: gitlab-data
hostPath:
path: /data/k8s/volumes/gitlab/data
type: Directory
containers:
- name: gitlab
image: gitlab/gitlab-ce:latest
ports:
# 容器内部暴露的端口
- name: http
containerPort: 80
# 卷挂载到容器文件
volumeMounts:
- name: gitlab-config
mountPath: /etc/gitlab
- name: gitlab-logs
mountPath: /var/log/gitlab
- name: gitlab-data
mountPath: /var/opt/gitlab
这里本地目录需要创建好,不然可能由于找不到目录,导致容器启动失败
启动ds
kubectl create -f gitlab-ds.yaml
3. 创建Service暴露端口
apiVersion: v1
kind: Service
metadata:
name: gitlab-svc
namespace: gitlab
spec:
# 转发容器端口 http(80) 到 80 暴露到宿主机 30001端口
ports:
- port: 80
targetPort: http
nodePort: 30001
# 拥有此标签的pod都属于该服务
selector:
app: my-gitlab
# 默认ClusterIp 改为NodePort 暴露外部端口
type: NodePort
启动svc
kubectl create -f gitlab-svc.yaml
4. gitlab初始化
外部通过访问 宿主机ip:30001 访问。开始需要设置root密码,设置完成后使用root和密码登录即可
5. 修改clone时仓库路径
当前仓库的host是pod名称,需要改动下
git@gitlab-ds-md95x:dev/ci-test.git
修改 /data/k8s/volumes/gitlab/config/gitlab.rb 文件 将内容替换为对应ip或者域名
# http clone显示的
external_url 'http://git.xx.com'
# ssh clone显示的
gitlab_rails['gitlab_ssh_host'] = 'git.xx.com'
进入容器重启服务
kubectl exec -it gitlab-ds-j4sfk -- /bin/bash
gitlab-ctl reconfigure
gitlab-ctl restart
6. ssh clone提示密码
> $ git clone git@test.local.com:30002:xxxxx/eureka.git
Cloning into 'eureka'...
git@test.local.com's password:
测试了下,ssh确实是通的,而且可以登录gitlab
> $ ssh -vT git@test.local.com -p 30002
......
Welcome to GitLab, @devil!
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2780, received 2864 bytes, in 0.0 seconds
网上找了一圈,好多都说要设置git用户密码啥的,后来发现路径有点诡异,公司的gitlab路径是类型这样的
ssh://git@test.local.com:30002/xxxxx/eureka.git
找了下发现个gitlab.rb配置,去掉注释,重启下在gitlab页面克隆的时候,url就已经改变
# 如果是22 不会显示 ssh:// 需要改成其他的,这样的话,容器的端口也要换的
gitlab_rails['gitlab_shell_ssh_port'] = 1022
然后看了下github和gitee的路径,发现都是之前的格式也就是没有ssh。考虑可能是由于他们直接使用22端口,也就是说不加ssh而在路径里面加端口是不匹配的,所以可以修改gitlab-svc.yaml将之前映射到宿主机的30002也换成22端口,就可以了。
修改svc的yaml文件会有如下问题:provided port is not in the valid range. The range of valid ports is 30000-32767
> # vim /etc/kubernetes/manifests/kube-apiserver.yaml
# 找到 --service-cluster-ip-range 这一行,在这一行的下一行增加 如下内容
> # systemctl daemon-reload
> # systemctl restart kubelet
更多推荐
已为社区贡献2条内容
所有评论(0)