文档章节

实操教程丨如何将一个k3s集群集成到Gitlab项目中

RancherLabs
 RancherLabs
发布于 08/26 11:41
字数 1429
阅读 31
收藏 0

K3s是一个轻量级的Kubernetes发行版(小于40MB),并且非常易于安装,仅需要512MB的RAM。它能够完美满足IoT设备以及边缘计算的需求。在本文中,我们将创建一个k3s集群并且展示如何将其集成到一个Gitlab的项目中。


关于k3s

K3s是由Rancher Labs发布的一个轻量级Kubernetes发行版,这款产品专为在资源有限的环境中运行Kubernetes的研发和运维人员设计。

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

  • 系统内核版本:Linux 3.10+

  • 每个Server最低RAM要求:512 MB

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

  • 磁盘空间最低要求:200 MB

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

这些低配置的要求使得k3s非常适用于IoT相关的场景。

在GitLab中创建项目

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

创建完成之后,我们点击侧边菜单栏里的Operations,并在下级菜单中选择Kubernetes。

我们现在有两个选项:

  • 在GKE上创建一个新的Kubernetes集群

  • 导入现有Kubernetes 集群的配置(无论这一集群在何处创建均可导入)

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

我们选择【Add existing cluster】这一选项卡。

在这一步中,我们需要填写几个字段来提供我们需要集成的集群配置。一直打开这个选项卡,暂时无需理会。现在,我们先去创建一个全新的Kubernetes集群。

创建一个k3s集群

我们现在将基于k3s启动一个Kubernetes集群。为什么是k3s呢?因为我想要表明设置它是多么容易。为了让步骤一目了然,我们仅仅设置一个节点的集群。

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

root@node1:~ $ curl -sfL https://get.k3s.io | sh -

上面的命令类似于用于快速Docker安装的命令:

curl https://get.docker.com | sh

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

root@node1:~ $ cat /etc/rancher/k3s/k3s.yaml
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tL...tCg==
    server: https://localhost:6443
  name: default
contexts:
- context:
    cluster: default
    user: default
  name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
  user:
    password: 48f4b...4b4e7
    username: admin

本地kubectl将自动使用此配置。

$ kubectl get nodes
NAME    STATUS ROLES  AGE VERSION
node1   Ready  master 3m  v1.14.5-k3s.1

注意:正如我们看到的Quick Start那样(https://k3s.io/ ),添加额外的节点并不复杂,它基本上只需要从主服务器上的/var/lib/rancher/k3s/server/node-token获取一个令牌,并使用以下命令即可连接其他一些节点:

$ curl -sfL https://get.k3s.io | K3S_URL=https://myserver:6443 K3S_TOKEN=XXX sh -

在Gitlab中集成

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

  • 集群名字:k3s

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

  • 集群的CA证书:要向Gitlab提供集群CA证书,我们需要解码配置中指定的那个文件(就像它在base 64中一样)。

$ kubectl config view --raw \
-o=jsonpath='{.clusters[0].cluster.certificate-authority-data}' \
| base64 --decode
  • Service token:获取一个识别令牌的过程牵涉到几个步骤。我们首先需要创建一个ServiceAccount并且向它提供一个cluster-admin角色。以下命令可以完成这些步骤:
$ cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ServiceAccount
metadata:
  name: gitlab-admin
  namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
  name: gitlab-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: gitlab-admin
  namespace: kube-system
EOF

当service account创建完毕之后,我们检索关联的类型secret的资源:

$ SECRET=$(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}')

下一步是提取与secret关联的JWT令牌:

$ TOKEN=$(kubectl -n kube-system get secret $SECRET -o jsonpath='{.data.token}' | base64 --decode)
$ echo $TOKEN

我们已经完成了所有设置,现在回到之前打开的选项卡中,开始使用所有信息并填写Gitlab 【Add existing cluster 】表单的字段:

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

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

$ kubectl get deploy --all-namespaces | grep tiller
NAMESPACE           NAME          READY UP-TO-DATE AVAILABLE AGE
gitlab-managed-apps tiller-deploy 1/1   1          1         67s

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

  • Ingress Controller,暴露集群中运行的服务

  • Cert-Manager,使用Let's Encrypt管理TLS证书

  • Prometheus,监控运行在集群中 的应用程序

  • Knative,部署Serverless工作负载

总 结

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

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

  • 源代码

  • Dockerfile,指定如何从代码中创建Docker镜像

  • Kubernetes资源,如部署、服务……

  • .gitlab-ci.yaml文件,定义CI流水线以及如何部署应用程序并且针对相关Kubernetes集群进行测试

© 著作权归作者所有

RancherLabs
粉丝 95
博文 254
码字总数 553319
作品 0
深圳
程序员
私信 提问
加载中

评论(1)

RancherLabs
RancherLabs 博主
欢迎添加微信助手(rancher2),进官方技术群,了解更多Kubernetes使用攻略
GitLab Auto DevOps功能与Kubernetes集成教程

介 绍 在这篇文章中,我们将介绍如何将GitLab的Auto DevOps功能与Rancher管理的Kubernetes集群连接起来,利用Rancher v2.2.0中引入的授权集群端点的功能。通过本文,你将能全面了解GitLab如何...

RancherLabs
04/23
475
2
如何构建Kubernetes CI/CD流水线

持续集成/持续交付(CI/CD)在服务精细化、更新频繁的当下显得愈发重要。本文将分享如何使用托管的GitLab.com解决方案来实现CI/CD,并将其与Kubernetes原生集成。且文中方法适合其他一切提供...

RancherLabs
2018/08/16
183
0
Rancher推出k3OS:业界首个Kubernetes操作系统,领跑边缘计算生态

美国时间2019年4月24日,业界领先的容器软件提供商Rancher Labs(以下简称Rancher)正式发布k3OS,这是业界首个专为Kubernetes而生的极轻量操作系统,资源消耗极低,操作极简,秒级启动,能大...

RancherLabs
04/28
189
2
Rancher 2.1全面发布,优化Kubernetes集群运维

GitLab支持、CICD优化、项目配额管理、驱散容器功能等等,Rancher 2.1给你带来一大票惊喜新功能!还有备着【千元大奖】的用户体验计划等你来参与! Rancher 2.1已于近日全面发布! Rancher ...

RancherLabs
2018/10/18
336
0
如何使用k3s+树莓派在生产中构建轻量K8S裸机集群

Boogie Software是欧洲著名的金融科技公司,多年来致力于为银行提供Fintech、AI、大数据高性能后端、移动应用程序、数据分析及UX等创新服务,帮助银行推动数字化转型。凭借过去十多年在该领域...

RancherLabs
09/29
958
2

没有更多内容

加载失败,请刷新页面

加载更多

PCB设计-Allegro软件入门系列-铺铜操作(下)

铺铜是PCB很常见的操作,PCB的敷铜一般都是覆地铜,增大地线面积,有利于地线阻抗降低,使电源和信号传输稳定,在高频的信号线附近敷铜,可大大减少电磁辐射干扰,起屏蔽作用。 本讲讲解啊一...

demyar
27分钟前
4
0
如何通过WASI SDK 在Linux上编译ZXing C++

Mozilla在今年三月份的时候公布了WASI。WASI的目标就是让WebAssembly在任何地方都可以运行,而不仅仅像现在这样只能运行在Node.js和Web浏览器中。WASI目前依然处于初级阶段,这篇文章分享下如...

yushulx
29分钟前
3
0
.Net界面开发神器—DevExpress官方汉化包免费下载!还在等什么?

点击获取DevExpress v19.1.7新版试用下载 DevExpress Localization Service允许您创建一组自定义的附属程序集,要将语言包添加到程序集中,请查看本文中为大家列出的对应版本的汉化包,下载并...

FILA6666
29分钟前
4
0
php生成二维码

        header('Content-Type: image/png');        //清除缓冲区,防止之前面不知道的情况下被加头部信息导致不显示图片内容        ob_clean();        $...

横着走的螃蟹
35分钟前
3
0
伪类和伪元素

伪类和伪元素 伪类和伪元素,对于绝大多数同学来说,都是耳熟能详的名字,但确实又有很多人搞不清楚它们之间的区别,以致于混淆概念。而当概念都混淆的时候,也往往意味着你不会经常使用它,...

不负好时光
37分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部