InfoQ Geekathon 大模型技术应用创新大赛 了解详情
写点什么

如何国建 Kubernetes CI/CD 流水线

  • 2020-04-15
  • 本文字数:2000 字

    阅读完需:约 7 分钟

如何国建Kubernetes CI/CD流水线

持续集成/持续交付(CI/CD)的主题,在服务变得越来越细化、更新越来越频繁的当下,显得愈发重要。它让公司能够按照一种一致的、可重复操作的方式完全自动化地完成代码的搭建、测试和部署。


市场中有不少不同的 CI/CD 工具可供用户使用,它们中的很多将可以和 Kubernetes 进行原生集成。


本文将介绍如何使用托管的 GitLab.com 解决方案来实现 CI/CD。不过本文中讨论到的 Kubernetes 集成是通用的,其他的 CI/CD 工具只要提供了 Kubernetes 接口,就同样可以按本文的方法、使用服务账号来与 Kubernetes 进行对接。

先决条件

  1. 用于部署工作负载的 Rancher 2.0 集群

  2. 登陆 gitlab.com

设置 GitLab.com

我们准备使用 GitLab 提供的一个模版,首先第一步先通过网址https://gitlab.com/users/sign_in登陆 gitlab.com

创建项目

第一步先创建项目


  • 点击 New project

  • 选择【从模版创建/Create from template】标签

  • 点击



图标下的



  • 设置【项目名称/Project name】

  • 点击【创建项目/Create Project】

  • 等待项目完成导入

将 Kubernetes 端点添加到你的项目中



下面选择



点击【Kubernetes 集群/Kubernetes cluster】,接着选择【添加现有集群/Add existing cluster】



上面所有的字段都需要填入内容,我会在下文介绍如何填写。

API URL

API URL 是 GitLab 用于和你的集群中那些用于部署工作负载的 Kubernetes API 进行通信的 URL。根据 Kubernetes 集群运行的位置,你需要确保端口是打开的状态,这样才能让 gitlab.com 和 Kubernetes 集群的<address>:<port>进行通信。


为了检索 API URL,我们将在 Rancher 服务器上运行一个控制 Kubernets 集群的脚本,这一步会生成一个 kubeconfig 文件,文件中包含了我们使用 GitLab 配置 Kubernetes 设置所需要的信息。


  • 登陆到运行 Rancher Server 的服务器

  • https://gist.github.com/superseb/f6cd637a7ad556124132ca39961789a4下载 get_kubeconfig_custom_cluster_rancher2.sh 文件中的内容

  • 在服务器上创建一个文件并把内容复制到里面

  • 使用命令 chmod +x <filename>让文件能够执行

  • 使用命令./<filename> <name_of_cluster_to_deploy_to>运行脚本

  • 这会在本地目录中生成一个 kubeconfig 文件

  • 运行命令 cat kubeconfig | grep server:

  • https 的值是需要添加到 API URL 字段的值

CA 证书

CA 证书是需要的,因为这些证书通常是自定义证书,它们不在 GitLab 服务器的证书存储区中,它们可以让连接受到保护。


在 API URL 指令生成的 kubeconfig 文件所在文件夹下进行如下操作:


  • 运行 cat kubeconfig | grep certificate-authority-data,这会提供给你一个 base64 编码的证书字符串,GitLab 中的字段需要 PEM 格式

  • 把编码的字符串存到一个文件中,比如 cert.base64

  • 运行 base64 -d cert.base64 > cert.pem

  • 返回一个 pem 格式的证书,你可以把它拷贝到 GitLab 中的 CA 证书字段里

Token

为了让 gitlab.com 实例能够与集群通信,我们将为它创建一个服务账号。我们还要给 GitLab 创建一个命名空间来部署应用程序。


为了简化操作,我们将所有内容都放到了一个文件中,可以在http://x.co/rm082018找到。


为了创建必要的条件,我们需要运行下面的命令:


项目命名空间

如果你已经按照这篇文章以及我提供的 Kubernetes 文件执行到了这一步,那么下面你需要将 Project Namespace 设置为 gitlab-managed-apps。如果你已经更新了 Kubernetes 文件,那么需要将它改为你设置的命名空间。

Rancher Server 2.0 设置

作为 GitLab 模板项目的一部分,它们部署了一个 PostgresSQL pod。这意味着你需要有一个动态存储配置程序。如果你没有这些设置,那么你需要进入到你需要部署的集群上的目录,启动 Library NFS 配置程序。我们目前暂不建议将这用于生产环境,不过它能让 auto devops 功能正常工作。

开启 Auto Devops

在 GitLab 界面,进入 Setting-CI/CD 并且扩展 Auto DevOps。


点击【开启 Auto DevOps/Enable Auto Devops】的按钮。


在 Domain 部分中,它要求你指定将用于访问要部署服务的 DNS 名称。DNS 名称应该指向集群上部署服务的入口。在测试中,你可以使用<host-ip>.nip.io,它将解析为指定的主机 ip。


点击【保存更改/Save changes】,这会自动发布你的流水线并且启动作业运行。


你可以进入 CI/CD – Pipelines 中查看进度,在 production 阶段结束时,你应该能看到可以访问应用程序的 http 地址了


希望这篇博客可以带你成功部署一个很棒的 CI/CD 流水线。另外,正如文章开头所言,文中的 Kubernetes 部分适用于大多数 CI/CD Kubernetes 集成。


活动推荐:

2023年9月3-5日,「QCon全球软件开发大会·北京站」 将在北京•富力万丽酒店举办。此次大会以「启航·AIGC软件工程变革」为主题,策划了大前端融合提效、大模型应用落地、面向 AI 的存储、AIGC 浪潮下的研发效能提升、LLMOps、异构算力、微服务架构治理、业务安全技术、构建未来软件的编程语言、FinOps 等近30个精彩专题。咨询购票可联系票务经理 18514549229(微信同手机号)。

2020-04-15 23:05505

评论

发布
暂无评论
发现更多内容

数智化赋能企业,开启全新商业模式

用友BIP

国产替代

《2022-2023年中国大数据市场研究年度报告》正式发布,腾讯云位列领导者行列

Geek_2d6073

深度剖析之由浅入深揭秘JavaScript类型转换(最全总结篇)

控心つcrazy

JavaScript 类型转换 隐式转换 类型 强制类型转换

加速布局,用友为国产化替代保驾护航!

用友BIP

国产替代

京东统一头尾管理系统探索实践 | 京东云技术团队

京东科技开发者

管理系统 企业号 7 月 PK 榜 头尾管理

一份保姆级的Stable Diffusion部署教程,开启你的炼丹之路 | 京东云技术团队

京东科技开发者

人工智能 AI绘画 Stable Diffusion 企业号 7 月 PK 榜

谈谈我这两年的前端开发经验

树上有只程序猿

INFINI Labs 产品更新 | Easysearch 新增 kNN 搜索功能、Console 支持 LDAP 认证登录等

极限实验室

console Gateway 产品更新 easysearch 极限科技

户外led显示屏常见规格有哪些

Dylan

广告 屏幕亮度 像素 LED显示屏 户外LED显示屏

万字血书React—走近React

不在线第一只蜗牛

React 教程分享

飞桨和硬件伙伴们在WAIC 2023!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

IT运维的福音!WeOps综合服务让运维更简单

嘉为蓝鲸

运维 IT weops

新能力提升全面预算管理效率和效力

用友BIP

全面预算

Rainbond开源

EquatorCoco

开源 rainbond

手把手教学构建农业知识图谱:农业领域的信息检索+智能问答,命名实体识别,关系抽取,实体关系查询

汀丶人工智能

人工智能 深度学习 nlp 知识图谱 智能问答

科研类项目核算的“法、术、器”(一)

用友BIP

项目云

Pytorch: 数据读取机制Dataloader与Dataset

timerring

人工智能

基于知识图谱的《红楼梦》人物关系可视化及问答系统(含码源):命名实体识别、关系识别、LTP简单教学

汀丶人工智能

人工智能 深度学习 nlp 知识图谱 智能问答

科兴未来|第二届T-MAX“科创太仓”国际创新创业--先进材料专场赛

科兴未来News

用友iuap亮相全球数字经济大会助力企业升级数智化底座

用友BIP

数智底座

王海峰最新发声!

飞桨PaddlePaddle

人工智能 百度 paddle 飞桨 百度飞桨

Git操作不规范,战友提刀来相见!

树上有只程序猿

gRPC 接口调试利器,让你成为高效开发者

Apifox

程序员 gRPC RPC 开发 RPC 协议实现原理

智能电视APP鲜时光,如何应用AB测试打造极致的用户观看体验?

字节跳动数据平台

业务创新的利器:探索Flutter与小程序容器的融合应用

FinClip

万字好文:大报文问题实战 | 京东物流技术团队

京东科技开发者

MySQL 网关 报文 企业号 7 月 PK 榜 大报文

快速提效,便捷易用 | 嘉为蓝鲸数字化运营中心全方位体验升级

嘉为蓝鲸

运维 IT weops

Kurator v0.4.0版本更新4大内容,满足多云环境的复杂需求

华为云开发者联盟

云原生 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

几天不写React,已经看不懂语法了

伤感汤姆布利柏

新兴技术与禅坐 | 聊聊经验 | 社区征文

写程序的小王叔叔

经验分享 年中技术盘点

数据库运维实操优质文章分享(含Oracle、MySQL等) | 2023年6月刊

墨天轮

MySQL 数据库 oracle postgresql 国产数据库

  • 扫码添加小助手
    领取最新资料包
如何国建Kubernetes CI/CD流水线_文化 & 方法_Rancher_InfoQ精选文章