一、GitLab介绍
GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
二、环境信息
OS:CentOS7.6/openEuler20.03-LTS-SP1
软件:docker-18.09.0,k8s-1.18.20
三、部署指南
K8s需准备一个master节点和若干个worker节点,我们以1个master节点和1个worker节点为例。
1,基础环境准备
在所有节点执行以下命令,添加k8s的repo源:
执行以下命令刷新yum缓存:
执行以下命令关闭防火墙:
执行以下命令关闭selinux:
执行以下命令开启ipv4转发:
执行以下命令禁用交换分区:
执行以下命令修改系统配置:
在/etc/hosts文件中添加以下内容(ip请根据实际节点的ip来修改):
2,安装docker
执行以下命令安装docker:
执行以下命令查看docker版本信息:
如果是在内网环境,访问互联网需要设置代理的情况,则需要为docker配置代理,否则镜像无法下载。执行以下命令可以为docker配置代理:
3,安装k8s组件
以下命令在所有节点执行。
执行以下命令安装k8s相关组件:
执行以下命令设置服务开机启动:
执行以下命令下载相关镜像:
执行以下命令修改镜像标签:
执行以下命令删除旧镜像:
4,k8s集群部署
在master节点,执行以下命令初始化集群:
初始化成功后会有对应的提示信息,在最后还有将worker节点加入集群的命令。 在master节点执行以下命令配置集群:
在master节点查看集群节点信息:
在所有计算节点执行以下命令,将计算节点加入集群(token值需根据实际情况修改):
加入集群后可以在master节点使用kubectl get node命令查看集群节点信息。 在master节点,执行以下命令安装calico网络插件(也可以安装其他网络差距,如flannel和cilium):
在master节点执行以下命令,查看相关pod的状态,所有pod状态为running时表示集群已正常就绪:
如果有pod的状态不为running,需排查该pod状态异常的原因,可以使用命令kubectl describe pod -n kube-system来进行查看。
5,部署redis
在master节点创建gitlab-redis.yaml文件并添加以下内容:
执行以下命令创建reids的pod:
执行以下命令观察该pod状态,确保redis的pod状态为running:
6,部署postgresql
在master节点创建gitlab-pgsql.yaml文件并添加以下内容:
执行以下命令创建postgresql的pod:
执行以下命令观察该pod状态,确保redis的pod状态为running:
7,部署gitlab
在master节点创建gitlab.yaml并添加以下内容:
执行以下命令创建gitlab的pod:
执行以下命令观察该pod状态,确保redis的pod状态为running:
打开浏览器,访问链接"http://:30852"即可访问gitlab登录页(默认超级用户名为root,密码在yaml中已设置为root)。 至此k8s+gitlab的环境就部署完成了。
一、GitLab介绍
GitLab是由GitLabInc.开发,使用MIT许可证的基于网络的Git仓库管理工具,且具有wiki和issue跟踪功能。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
二、环境信息
OS:CentOS7.6/openEuler20.03-LTS-SP1
软件:docker-18.09.0,k8s-1.18.20
三、部署指南
K8s需准备一个master节点和若干个worker节点,我们以1个master节点和1个worker节点为例。
1,基础环境准备
在所有节点执行以下命令,添加k8s的repo源:
执行以下命令刷新yum缓存:
执行以下命令关闭防火墙:
执行以下命令关闭selinux:
执行以下命令开启ipv4转发:
执行以下命令禁用交换分区:
执行以下命令修改系统配置:
在/etc/hosts文件中添加以下内容(ip请根据实际节点的ip来修改):
2,安装docker
执行以下命令安装docker:
执行以下命令查看docker版本信息:
如果是在内网环境,访问互联网需要设置代理的情况,则需要为docker配置代理,否则镜像无法下载。执行以下命令可以为docker配置代理:
3,安装k8s组件
以下命令在所有节点执行。
执行以下命令安装k8s相关组件:
执行以下命令设置服务开机启动:
执行以下命令下载相关镜像:
执行以下命令修改镜像标签:
执行以下命令删除旧镜像:
4,k8s集群部署
在master节点,执行以下命令初始化集群:
初始化成功后会有对应的提示信息,在最后还有将worker节点加入集群的命令。 在master节点执行以下命令配置集群:
在master节点查看集群节点信息:
在所有计算节点执行以下命令,将计算节点加入集群(token值需根据实际情况修改):
加入集群后可以在master节点使用kubectl get node命令查看集群节点信息。 在master节点,执行以下命令安装calico网络插件(也可以安装其他网络差距,如flannel和cilium):
在master节点执行以下命令,查看相关pod的状态,所有pod状态为running时表示集群已正常就绪:
如果有pod的状态不为running,需排查该pod状态异常的原因,可以使用命令kubectl describe pod -n kube-system来进行查看。
5,部署redis
在master节点创建gitlab-redis.yaml文件并添加以下内容:
apiVersion: apps/v1 kind: Deployment metadata: name: redis namespace: default spec: selector: matchLabels: name: redis template: metadata: labels: name: redis spec: containers: - name: redis image: redis imagePullPolicy: IfNotPresent ports: - name: redis containerPort: 6379 volumeMounts: - mountPath: /var/lib/redis name: data livenessProbe: exec: command: - redis-cli - ping initialDelaySeconds: 30 timeoutSeconds: 5 readinessProbe: exec: command: - redis-cli - ping initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: data emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: redis namespace: default labels: name: redis spec: ports: - name: redis port: 6379 targetPort: redis selector: name: redis执行以下命令创建reids的pod:
执行以下命令观察该pod状态,确保redis的pod状态为running:
6,部署postgresql
在master节点创建gitlab-pgsql.yaml文件并添加以下内容:
apiVersion: apps/v1 kind: Deployment metadata: name: postgresql namespace: default labels: name: postgresql spec: selector: matchLabels: name: postgresql template: metadata: name: postgresql labels: name: postgresql spec: containers: - name: postgresql image: postgres:13.6 imagePullPolicy: IfNotPresent env: - name: POSTGRES_HOST_AUTH_METHOD value: trust - name: DB_USER value: gitlab - name: DB_PASS value: passw0rd - name: DB_NAME value: gitlab_production - name: DB_EXTENSION value: pg_trgm ports: - name: postgres containerPort: 5432 volumeMounts: - mountPath: /var/lib/postgresql name: data livenessProbe: exec: command: - pg_isready - -h - localhost - -U - postgres initialDelaySeconds: 30 timeoutSeconds: 5 readinessProbe: exec: command: - pg_isready - -h - localhost - -U - postgres initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: data emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: postgresql namespace: default labels: name: postgresql spec: ports: - name: postgres port: 5432 targetPort: postgres selector: name: postgresql执行以下命令创建postgresql的pod:
执行以下命令观察该pod状态,确保redis的pod状态为running:
7,部署gitlab
在master节点创建gitlab.yaml并添加以下内容:
apiVersion: apps/v1 kind: Deployment metadata: name: gitlab namespace: default labels: name: gitlab spec: selector: matchLabels: name: gitlab template: metadata: name: gitlab labels: name: gitlab spec: containers: - name: gitlab image: yrzr/gitlab-ce-arm64v8:latest imagePullPolicy: IfNotPresent env: - name: TZ value: Asia/Shanghai - name: GITLAB_TIMEZONE value: Beijing - name: GITLAB_SECRETS_DB_KEY_BASE value: long-and-random-alpha-numeric-string - name: GITLAB_SECRETS_SECRET_KEY_BASE value: long-and-random-alpha-numeric-string - name: GITLAB_SECRETS_OTP_KEY_BASE value: long-and-random-alpha-numeric-string - name: GITLAB_ROOT_PASSWORD value: root - name: GITLAB_ROOT_EMAIL value: 123123@qq.com - name: GITLAB_HOST value: git.qikqiak.com - name: GITLAB_PORT value: "80" - name: GITLAB_SSH_PORT value: "22" - name: GITLAB_NOTIFY_ON_BROKEN_BUILDS value: "true" - name: GITLAB_NOTIFY_PUSHER value: "false" - name: GITLAB_BACKUP_SCHEDULE value: daily - name: GITLAB_BACKUP_TIME value: 01:00 - name: DB_TYPE value: postgres - name: DB_HOST value: postgresql - name: DB_PORT value: "5432" - name: DB_USER value: gitlab - name: DB_PASS value: passw0rd - name: DB_NAME value: gitlab_production - name: REDIS_HOST value: redis - name: REDIS_PORT value: "6379" ports: - name: http containerPort: 80 - name: ssh containerPort: 22 volumeMounts: - mountPath: /home/git/data name: data livenessProbe: httpGet: path: / port: 80 initialDelaySeconds: 180 timeoutSeconds: 5 readinessProbe: httpGet: path: / port: 80 initialDelaySeconds: 5 timeoutSeconds: 1 volumes: - name: data emptyDir: {} --- apiVersion: v1 kind: Service metadata: name: gitlab namespace: default labels: name: gitlab spec: ports: - name: http port: 80 targetPort: http nodePort: 30852 - name: ssh port: 22 nodePort: 32353 targetPort: ssh selector: name: gitlab type: NodePort执行以下命令创建gitlab的pod:
执行以下命令观察该pod状态,确保redis的pod状态为running:
打开浏览器,访问链接"http://:30852"即可访问gitlab登录页(默认超级用户名为root,密码在yaml中已设置为root)。 至此k8s+gitlab的环境就部署完成了。