7ad3218537252994fb09898463bddb5f.jpeg

5d96d7eda23184ea5f82e901083c02f6.gif

关注回复【学习交流群】加入【安全开发运维】答疑交流群

请朋友们【多多点击文中的广告】,支持作者更新更多文章

完整原文链接: 

GitOps实践 | 云原生Tekton CI流水线,从Gitlab到镜像构建以及企业微信消息通知由于作者的工作及学习计划的需要,作者将原本企业中的Jenkins持续集成环境,换为了更适合在云原生中进行CI-持续集成工具,即Tekton是一个开源的云原生持续集成和持续交付/部署解决方案,允许开发人员通过云平台和本地构建、测试和部署系统。https://mp.weixin.qq.com/s/PVcZ95lFISx5el1d4tHw0g


目录:

9b1bde72e57bd234740fc78a66503274.png

0x00 企业中使用云原生CI工具Tekton从git克隆源代码到镜像构建实践

1.前言简述

描述: 由于作者的工作及下一步学习计划的需要,作者将原本企业中的Jenkins持续集成环境,换为了更适合在云原生中进行CI-持续集成工具,即 Tekton 是一个开源的云原生 CICD(持续集成和持续交付/部署)解决方案,允许开发人员通过云平台和本地构建、测试和部署系统。前面我们已经介绍过了所以此处不再累述,后续作者也会更新ArgoCD在企业中的实践,从而完成完整的GitOps(CI/CD-持续集成交付环境),请大家多多关注支持。

938e4dfcc9eebd2efad1f63e6aeac090.png

此处,作者使用自己编写的一个简单JavaSpring项目进行演示,使用Task以及TaskRuns对象带领各位看友,简单尝试从git clone、到 build、再到镜像构建,最后利用企业微信机器人进行消息的通知,并学习一些基本的Tekton资源清单编写语法,针对后续Pipeline以及PipelineRuns有着极大的帮助,可直接应用在企业的CI持续集成流水线场景中。

温馨提示:此处作者并未使用官方文档通过hub库中来安装git clone[https://hub.tekton.dev/tekton/task/git-clone]、以及镜像构建 Kaniko[https://hub.tekton.dev/tekton/task/kaniko] 等task,这一点不同于在CSDN中的文章,其次是因为作者为了企业内部信息安全,而直接采用自行构建镜像以及Google官方的构建镜像工具Kaniko镜像,此外也带领各位看友,从最基础的环境配置起,提高学习收获成就感。

温馨提示: 为了尊重作者的实践劳动成功和防止爬虫恶意爬取,此篇实践文章为付费文章,以支持激励作者能够持之以恒的更新更多SevDevOps的实践文章,希望大家理解支持,谢谢,完整的流水线脚本请在文末自取

好,实践出真知。

2.前置环境

描述: 在进行实践前我们需要配置DNS解析(硬解析也可以),以及我们用到前面我们安装的Gitlab(代码仓库)以及Harbor(镜像仓库)分别创建devops用户和devops机器账户,具体操作如下:

此处实践环境依赖于前一篇实践文章,若还没安装Tekton以及Gitlab(代码仓库)以及Harbor(镜像仓库)的朋友可访问如下文章学习实践,已安装的朋友直接进行下一步。

前置知识与环境说明

# K8S 高可用集群主机 x 4
系统发行版: Ubuntu 20.04 
Kubernetes v1.23.17
Tekton -> Pipelines v0.44.4 | Triggers v0.22.2 | Dashboard v0.35.1


# Gitlab 代码仓库 & Harbor 镜像仓库主机 x 2 
系统发行版: Kylin Linux Advanced Server V10 
gitlab-server 10.20.176.250 | Gitlab v16.2.0
harbor-server 10.20.176.251 | Harbor v2.8.2
Docker v24.0.4 | containerd v1.6.21 | Docker-compose v2.20.2

Gitlab 环境操作说明

Step 1.登录搭建的私有Gitlab代码服务器,创建一个devops用户。

1a8bed5908a14e44835a3622c084d5bb.png

Step 2.登录devops用户创建一个hello-world的仓库,在实际环境中只需将此用户加入到项目成员中权限设置为Reporter或者Guest即可, 此处作者使用git将测试代码已经上传到Gitlab仓库中Master分支,注意最新Gitlab以及Github已经将当前默认分支master更改为main主分支,所以在拉取时不要弄错了。

e60318ad9b3d727fd941c81574c33cd0.png

温馨提示: 若需还有朋友不了解或者熟悉Git的请参考作者的此篇文章【Git学习之路汇总】[https://blog.weiyigeek.top/2018/1-1-1.html#Git学习之路汇总]。

Harbor 环境操作说明
Step 1.登录Harbor后台管理页面,创建两个项目一个公共的devops项目(用于存放公共镜像),一个私有的app项目(用于存放企业中代码项目的构建镜像)。

Step 2.创建一个系统级机器人账户 'robot$devops',针对项目分别选择赋予所需权限,注意创建成功后只有唯一一次复制当前令牌的机会,所以要保存好此令牌哟!

0d9c24630164f31e8c3400d368f8777b.png

K8S 集群节点主机操作
Step 1.此处作者为了演示就直接向节点中的主机添加Gitlab以及Harbor网址的硬解析,通常情况下企业内部应该有自己的DNS服务器可以在上面配置A记录解析即可。

tee -a /etc/hosts <<'EOF'
10.20.176.250 gitlab.weiyigeek.top
10.20.176.251 harbor.weiyigeek.top
EOF

Step 2.在Master主节点机器上,创建一个ssh认证公密钥,操作如下下述所示, Gitlab 公密钥认证配置参考地址: https://docs.gitlab.com/ee/user/ssh.html

# 1.生成ssh公密钥,注意密钥的名称,作者设置为 ssh-privatekey 这是为了后续 tekton 使用的方便。
ssh-keygen -t ed25519 -C "devops@weiyigeek.top" -f ~/.ssh/ssh-privatekey
  # Generating public/private ed25519 key pair.
  # Enter passphrase (empty for no passphrase): [密码为空]
  # Enter same passphrase again: [密码为空]
  # Your identification has been saved in /root/.ssh/ssh-privatekey
  # Your public key has been saved in /root/.ssh/ssh-privatekey.pub


# 2.将指定的密钥文件设置保存在 ~/.ssh/config 文件
tee -a ~/.ssh/config <<'EOF'
# Private GitLab instance
Host gitlab.weiyigeek.top
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/ssh-privatekey
  StrictHostKeyChecking no


# Github instance
Host github.com
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/ssh-privatekey
  StrictHostKeyChecking no
EOF

Step 3.将生成的ssh公钥文件复制到Gitlab里devops用户设置中SSH密钥中,加入后使用ssh -T命令进行验证。

# 1.查看生成的 ssh-privatekey.pub 公钥文件
cat ~/.ssh/ssh-privatekey.pub
ssh-ed25519 AAAAC3NzaC1lZD**隐藏打码**slTC+I21vt7NvUzGC4RNc+ devops@weiyigeek.top


# 2.验证与私有gitlab代码仓库的连接情况,若配置成果
ssh -T git@gitlab.weiyigeek.top -i ~/.ssh/ssh-privatekey
Welcome to GitLab, @devops!

71fbbfcb6d1401651039145e67d3d5a1.png

完整原文:

GitOps实践 | 云原生Tekton CI流水线,从Gitlab到镜像构建以及企业微信消息通知由于作者的工作及学习计划的需要,作者将原本企业中的Jenkins持续集成环境,换为了更适合在云原生中进行CI-持续集成工具,即Tekton是一个开源的云原生持续集成和持续交付/部署解决方案,允许开发人员通过云平台和本地构建、测试和部署系统。https://mp.weixin.qq.com/s/PVcZ95lFISx5el1d4tHw0g

Logo

一站式 AI 云服务平台

更多推荐