陈奇网络工作室

实用课程如何将一个k3s集群集成到Gitlab项目中?

云计算

关于k3s

K3s是由Rancher Labs发布的Kubernetes轻量级发行版。该产品是专门为在资源有限的环境中运行Kubernetes的R&D和运维人员设计的。

它是经过认证的Kubernetes发行版,其最低系统要求是:

系统内核版本:Linux 3.10

每台服务器的最低内存要求:512 MB。

每个节点的最低RAM要求:75MB

最低磁盘空间要求:200 MB

支持的硬件架构:x86_64、ARMv7、ARM64。

这些低配置要求使得k3s非常适合物联网相关的场景。

在GitLab中创建项目

在安装k3s之前,我们先在Gitlab上新建一个名为api的项目。

创建完成后,我们单击侧面菜单栏中的Operations,然后在下面的菜单中选择Kubernetes。

我们现在有两个选择:

在GKE创建一个新的Kubernetes集群

导入现有Kubernetes集群的配置(可以在创建该集群的任何地方导入)。

注意:在GitLab的当前版本中,新集群的创建仅限于GKE。

我们选择[添加现有集群]选项卡。

在这一步中,我们需要填写几个字段,以提供我们需要集成的集群配置。保持此选项卡打开,暂时忽略它。现在,让我们首先创建一个全新的Kubernetes集群。

创建k3s集群

我们现在将启动一个基于k3s的Kubernetes集群。为什么是k3s?因为我想展示设置它是多么容易。为了使步骤清晰,我们只设置了一个节点集群。

我已经配置了名为node1的Ubuntu 18.04服务器。在这台主机上获得一个shell之后,我们只需要运行下面的命令来安装k3s,这是一个经过认证的Kubernetes集群。

root@node1:~?$?卷曲?-sfL?https://get.k3s.io?|?嘘?-

上述命令类似于用于快速docker安装的命令:

卷曲?https://get.docker.com?|?嘘

安装完成后,可以在/etc/ranger/k3s/k3s.yaml中找到连接到集群的配置文件。

root@node1:~?$?猫?/etc/rancher/k3s/k3s.yaml

apiVersion:第五颅神经的眼支

集群:

-?群集:

证书-授权-数据:LS0tL.tCg==

服务器:https://本地主机:6443

姓名:系统默认值

上下文:

-?背景:

集群:系统默认值

用户:系统默认值

姓名:系统默认值

当前上下文:系统默认值

善良:配置

偏好:{}

用户:

-?姓名:系统默认值

用户:

密码:48f4b.4b4e7

用户名:管理

本地kubectl将自动使用这个配置。

$?库贝特尔?得到?节点

NAMESTATUS?ROLESAGE?版本

node1?现成大师?3mv1.14.5-k3s.1

注意:正如我们在快速入门(https://k3s.io/)中看到的,添加额外的节点并不复杂。它基本上只需要从主服务器上的/var/lib/ranger/K3s/server/node-token中获取一个令牌,使用以下命令连接其他节点:

$?卷曲?-sfL?https://get.k3s.io?|?K3S_URL=https://myserver:6443?K3S_TOKEN=XXX?嘘?-

Gitlab中的集成

现在让我们获取在Gitlab项目中集成新k3s集群所需的所有信息。

集群名称:k3s

API服务器的URL:在配置文件中,API服务器被指定为:https://localhost:6443。为了从外部访问,我们需要提供node1外部的IP地址。

集群ca证书:为了给Gitlab提供一个集群CA证书,我们需要对配置中指定的文件进行解码(就像在base 64中一样)。

$?库贝特尔?配置?观点?-生的?\\\\

-o=jsonpath=\\\'{。clusters[0]. cluster . certificate-authority-data } \ \ \ '\\\\

|?base64?-解码

服务令牌

获得标识令牌的过程包括几个步骤。我们首先需要创建一个ServiceAccount,并为它提供一个集群管理角色。以下命令可以完成这些步骤:

$?猫?EOF?|?库贝特尔?申请?-f?-

apiVersion:第五颅神经的眼支

善良:服务帐户

元数据:

姓名:git lab-管理

命名空间:kube系统

-

apiVersion:rbac.authorization.k8s.io/v1beta1

善良:ClusterRoleBinding

元数据:

姓名:git lab-管理

roleRef:

apiGroup:rbac.authorization.k8s.io

善良:集群角色

姓名:集群管理

主题:

-?善良:服务帐户

姓名:git lab-管理

命名空间:kube系统

文件结束

创建服务帐户时,我们检索相关类型secret的资源:

$?SECRET=$(kubectl?-n?kube-系统?得到?秘密?|?grep?gitlab-admin?|?awk?\ \ \ ' {打印?$1}\\\')

下一步是提取与秘密相关联的JWT令牌:

$?TOKEN=$(kubectl?-n?kube-系统?得到?秘密?$秘密?-哦?jsonpath=\\\'{.data.token}\\\ '|?base64?-解码)

$?回声?$TOKEN

我们已经完成了所有的设置。现在,让我们回到先前打开的选项卡,开始使用所有信息,并填写Gitlab【添加现有集群】表单的字段:

集群集成后,我们可以直接从web界面安装helm(Kubernetes包管理器)。

现在,我们可以从命令行检查tiller守护进程(helm的服务器端组件)是否正在运行。

$?库贝特尔?得到?部署?-所有名称空间?|?grep?舵柄

命名空间?名字准备好了吗?最新的?可用?年龄

git lab-托管-应用?舵柄展开。1/1?11?67s

集群现在可以使用了。此外,GitLab的Web界面允许一键安装其他组件:

入口控制器,公开集群中运行的服务。

证书管理器,使用Let\\\'s Encrypt来管理TLS证书。

Prometheus,监视集群中运行的应用程序。

创新,部署无服务器工作负载

总计?结

在本文中,我们学习如何创建k3s集群并将其集成到Gitlab项目中。当然,任何Kubernetes集群都可以使用相同的过程。

我们现在可以向项目添加各种资源:

源代码

Dockerfile,它指定如何从代码创建Docker映像。

Kubernetes资源,如部署、服务.

Gitlab-CI.yaml文件,它定义了CI管道和如何部署应用程序,并测试了相关的Kubernetes集群。

更多关于云服务器,域名注册,虚拟主机的问题,请访问西部数码代理官网:www.chenqinet.cn。

后台-系统设置-扩展变量-手机广告位-内容页底部广告位3