如何构建Kubernetes CI/CD流水线

Posted RancherLabs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何构建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】标签

  • 点击

图标下的

如何构建Kubernetes CI/CD流水线
  • 设置【项目名称/Project name】

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

  • 等待项目完成导入


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



如何构建Kubernetes CI/CD流水线

下面选择

如何构建Kubernetes CI/CD流水线

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


如何构建Kubernetes CI/CD流水线


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


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找到。


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


  • kubectl apply -f http://x.co/rm082018(.kube/config文件中用的是默认集群,如果要使用其他的,可以选择添加-kubeconfig <kubeconfig>

  • 这样会创建出一个服务账号并且生成一个token,我们需要在GitLab Kubernetnes配置pane中使用到该token。

  • 获取secret execute:kubectl describe secrets/gitlab-secret -n gitlab-managed-apps | grep token:

  • 复制token并将其粘贴到GitLab配置中


项目命名空间


如果你已经按照这篇文章以及我提供的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流水线。另外,正如文章开头所言,文中的Kubernetes部分适用于大多数CI/CD Kubernetes集成。

 


拓展阅读:


Rancher Labs由硅谷云计算泰斗、CloudStack之父梁胜创建,致力于打造创新的开源软件,帮助企业在生产环境中运行容器与Kubernetes。旗舰产品Rancher是一个开源的企业级Kubernetes平台,是业界首个且唯一可以管理所有云上、所有发行版、所有Kubernetes集群的平台。解决了生产环境中企业用户可能面临的基础设施不同的困境,改善Kubernetes原生UI易用性不佳以及学习曲线陡峭的问题,是企业落地Kubernetes的不二之选。


Rancher在全球已有9000万次下载和超过20000个生产节点部署,且在全球范围内已经拥有包含迪斯尼、IBM、乐高、美国农业部、SONY、中国平安、海航集团在内数百家大中型政府及企业客户。


如何构建Kubernetes CI/CD流水线 如何构建Kubernetes CI/CD流水线
如何构建Kubernetes CI/CD流水线
如何构建Kubernetes CI/CD流水线

官    网:cnrancher.com

如何构建Kubernetes CI/CD流水线

加它好友

以上是关于如何构建Kubernetes CI/CD流水线的主要内容,如果未能解决你的问题,请参考以下文章

瀚云平台基于Kubernetes实现高效CI/CD流水线

如何使用GitLab和Rancher构建CI/CD流水线 – Part 2

如何使用GitLab和Rancher构建CI/CD流水线–Part 1

DEVOPS架构师 -- 05从零开始构建基于Kubernetes的DevOps平台

CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台

CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台