Hello! 琳园!

使用GitLab CI构建持续集成案例


avatar
linKing 2024-11-13 106

1. 部署GitLab

[root@master ~]# tar -zxvf Gitlab-CI.tar.gz

[root@master ~]# ctr -n k8s.io image import gitlab-ci/images/images.tar

[root@master ~]# docker load < gitlab-ci/images/images.tar

(2)部署GitLab服务

新建命名空间gitlab-ci:

[root@master ~]# kubectl create ns gitlab-ci

namespace/gitlab-ci created

在gitlab-ci命名空间下部署GitLab,将80端口以NodePort方式对外暴露为30880,YAML资源文件如下:

[root@master ~]# cd gitlab-ci

[root@master gitlab-ci]# vi gitlab-deploy.yaml

 

apiVersion: apps/v1

kind: Deployment

metadata:

name: gitlab

namespace: gitlab-ci

labels:

name: gitlab

spec:

selector:

matchLabels:

name: gitlab

template:

metadata:

name: gitlab

labels:

name: gitlab

spec:

containers:

– name: gitlab

image: gitlab/gitlab-ce:latest

imagePullPolicy: IfNotPresent

env:

– name: GITLAB_ROOT_PASSWORD

value: Abc@1234

– name: GITLAB_ROOT_EMAIL

value: 123456@qq.com

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

volumes:

– name: gitlab-config

hostPath:

path: /home/gitlab/conf

– name: gitlab-logs

hostPath:

path: /home/gitlab/logs

– name: gitlab-data

hostPath:

path: /home/gitlab/data

创建service服务释放端口

[root@master gitlab-ci]# vi gitlab-svc.yaml

apiVersion: v1

kind: Service

metadata:

name: gitlab

namespace: gitlab-ci

labels:

name: gitlab

spec:

type: NodePort

ports:

– name: http

port: 80

targetPort: http

nodePort: 30880

selector:

name: gitlab

创建资源:

[root@master gitlab-ci]# kubectl apply -f gitlab-deploy.yaml

deployment.apps/gitlab created

[root@master gitlab-ci]# kubectl apply -f gitlab-svc.yaml

service/gitlab created

 

查看Pod:

[root@master gitlab-ci]# kubectl -n gitlab-ci get pods

NAME                      READY   STATUS    RESTARTS   AGE

gitlab-7b54df755-6ljtp    1/1     Running   0          45s

 

(3)自定义hosts

查看GitLab Pod的IP地址:

[root@master gitlab-ci]# kubectl -n gitlab-ci get pods -owide

NAME                      READY   STATUS    RESTARTS   AGE    IP            NODE               NOMINATED NODE   READINESS GATES

gitlab-7b54df755-6ljtp    1/1     Running   0          50s   10.244.1.43   k8s-worker-node1   <none>           <none>

 

在集群中自定义hosts添加gitlab Pod的解析:

[root@master gitlab-ci]# kubectl edit configmap coredns -n kube-system

……..

apiVersion: v1

data:

Corefile: |

.:53 {

errors

health {

lameduck 5s

}

ready

kubernetes cluster.local in-addr.arpa ip6.arpa {

pods insecure

fallthrough in-addr.arpa ip6.arpa

ttl 30

}

## 添加以下字段

hosts {

10.244.1.43 gitlab-7b54df755-6ljtp

fallthrough

}

prometheus :9153

##删除以下三行字段

forward . /etc/resolv.conf {

max_concurrent 1000

}

 

cache 30

loop

reload

loadbalance

}

……..

[root@master gitlab-ci]# kubectl -n kube-system rollout restart deploy coredns

deployment.apps/coredns restarted

 

进入gitlab pod中

[root@master gitlab-ci]#  kubectl exec -ti -n gitlab-ci      gitlab-7b54df755-6ljtp   bash

root@gitlab-7b54df755-6ljtp:/# vi /etc/gitlab/gitlab.rb

 

在首行添加(ip为pod IP地址)

external_url ‘http://10.244.1.43:80’

root@gitlab-7b54df755-6ljtp:/# reboot

root@gitlab-7b54df755-6ljtp:/# exit

 

(4)访问GitLab

查看Service:

[root@master gitlab-ci]# kubectl -n gitlab-ci get svc

NAME     TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE

gitlab   NodePort   10.96.108.3   <none>        80:30880/TCP   3m33s

 

通过http://10.24.2.14:30880访问GitLab,用户名123456@qq.com,密码Abc@1234,如图2所示:

点击“Create a project”按钮

http://tuchuang.hzhazha.top/image/2.png

点击“Create blank project”创建项目demo-2048,可见等级选择“Public”,如图所示

http://tuchuang.hzhazha.top/image/1.png

点击“Create project”,进入项目,如图3所示

http://tuchuang.hzhazha.top/image/4.png

将源代码推送到项目中:

[root@master gitlab-ci]# cd /root/gitlab-ci/demo-2048

[root@master demo-2048]# git config –global user.name “administrator”

[root@master demo-2048]# git config –global user.email “admin@example.com”

[root@master demo-2048]# git remote remove origin

[root@master demo-2048]# git remote add origin http://10.24.2.14:30880/root/demo-2048.git

[root@master demo-2048]# git add .

[root@master demo-2048]# git commit -m “initial commit”

[master (root-commit) 105c032] initial commit

[root@master demo-2048]# git push -u origin drone

Username for ‘http://10.24.2.14:30880’: root

Password for ‘http://root@10.24.2.14:30880’:              #输入密码Abc@1234

Counting objects: 189, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (137/137), done.

Writing objects: 100% (189/189), 43.35 KiB | 0 bytes/s, done.

Total 189 (delta 40), reused 0 (delta 0)

remote: Resolving deltas: 100% (40/40), done.

To http://10.24.2.14:30880/root/cloud-manager.git

* [new branch]      master -> master

Branch master set up to track remote branch master from origin.

将源代码推送到项目后,如图五所示

http://tuchuang.hzhazha.top/image/5.png

 

 

 

部署GitLab CI Runner

操作过程

我们在gitlab的web界面里,点击”Settings”→”CI/CD”,找到Runners,点击右边”Expend”展开,查看注册的Token并复制,如图六所示

http://tuchuang.hzhazha.top/image/6.png#

回到gitlab-ci目录

[root@k8s-master-node1 demo-2048]# cd ../

#解压gitlab-runner压缩包

[root@k8s-master-node1 gitlab-ci]# tar -zxf gitlab-runner-0.43.0.tgz

[root@k8s-master-node1 gitlab-ci]# ls gitlab-runner/

CHANGELOG.md Chart.yaml CONTRIBUTING.md LICENSE Makefile NOTICE EADME.md templates values.yaml

#修改values.yaml文件

[root@master gitlab-ci]# vi gitlab-runner/values.yaml

#修改的配置项:

#添加gitlab的地址和注册的token

# gitlabUrl: http://gitlab.your-domain.com/ 修改为:

gitlabUrl: “http://192.168.200.15:30880/”

# runnerRegistrationToken: “” 修改为:

runnerRegistrationToken: “GR1348941X_zjBBFn4JzPtDPwdR-8”

# unregisterRunners: true 修改为:

unregisterRunners: true

#启用RBAC,这样才有权限

rbac:

create: false #修改为:

create: true

#启用metrics,监控GitLab Runner的性能

metrics:

enabled: false #修改为

enabled: true

#根据题目要求,设置缓存目录

runners: #添加配置:

cachePath: “/home/gitlab-runner/ci-build-cache”

#这里使用helm部署,需要安装docker-compose,在我们先前搭建容器云平台时,添加Harbor仓库的步骤中就有安装了

[root@master gitlab-ci]# helm install gitlab-runner gitlab-runner/ -n gitlab-ci

#检查是否部署成功

[root@k8s-master-node1 gitlab-cicd]# helm ls -A

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION

gitlab-runner gitlab-ci 2 2024-06-25 16:32:45.061864768 +0800 CST deployed gitlab-runner-0.1.37

#查看是否运行

[root@k8s-master-node1 gitlab-cicd]# kubectl get -n gitlab-ci all

NAME READY STATUS RESTARTS AGE

pod/gitlab-59dc9fc7b4-sl4vt 1/1 Running 1 (55m ago) 77m

pod/gitlab-runner-gitlab-runner-6f846767bf-69rxc 1/1 Running 0 3m11s

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE

service/gitlab NodePort 10.96.125.173 <none> 80:30880/TCP 76m

NAME READY UP-TO-DATE AVAILABLE AGE

deployment.apps/gitlab 1/1 1 1 77m

deployment.apps/gitlab-runner-gitlab-runner 1/1 1 1 8m49s

NAME DESIRED CURRENT READY AGE

replicaset.apps/gitlab-59dc9fc7b4 1 1 1 77m

replicaset.apps/gitlab-runner-gitlab-runner-6f846767bf 1 1 1 3m11s

http://tuchuang.hzhazha.top/image/7.png

 

3、集群部署GitLab Agent

http://tuchuang.hzhazha.top/image/8.png

输入题目要求的名称kubernetes-agent,点击“Create agent”创建代理,然后点击”Register”注册

http://tuchuang.hzhazha.top/image/9.png

接下来跳出的界面里,会提示我们使用helm安装的示例命令

http://tuchuang.hzhazha.top/image/10.png

[root@k8s-master-node1 gitlab-ci]# tar -zxf gitlab-agent-1.1.0.tgz

[root@k8s-master-node1 gitlab-ci]# ls gitlab-agent

Chart.yaml CONTRIBUTING.md LICENSE README.md templates values.yaml

#题目要求部署在gitlab-ci命名空间,我们使用-n指定。

[root@k8s-master-node1 gitlab-ci]# helm install kubernetes-agent gitlab-agent/ \

-n gitlab-ci –set image.tag=v16.2.0 \

–set config.token=JSwAyX3yu1SJQyxwHej9-ysWdX6nV12RDAv2thDwyGQVm2YtEw

> –set config.kasAddress=ws://192.168.200.15:30880/-/kubernetes-agent/

#查看一下是否正在运行

[root@k8s-master-node1 gitlab-ci]# kubectl get pods -n gitlab-ci -owide

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES

gitlab-5664855986-5wdv2 1/1 Running 1 (49m ago) 54m 10.244.0.12 k8s-master-node1 <none> <none>

gitlab-runner-gitlab-runner-58c889dc5c-rf4zg 1/1 Running 0 14m 10.244.0.30 k8s-master-node1 <none> <none>

kubernetes-agent-gitlab-agent-877f6456f-t6949 1/1 Running 0 64s 10.244.0.35 k8s-master-node1 <none> <none>

回到Web界面,也可以看到我们创建的代理的连接状态是已连接

http://tuchuang.hzhazha.top/image/11.png

 

 

 

 

暂无评论

发表评论

相关阅读