写点什么

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

  • 2020-05-16
  • 本文字数:2238 字

    阅读完需:约 7 分钟

实操教程 | 如何将一个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.yamlapiVersion: v1clusters:- cluster:    certificate-authority-data: LS0tL...tCg==    server: https://localhost:6443  name: defaultcontexts:- context:    cluster: default    user: default  name: defaultcurrent-context: defaultkind: Configpreferences: {}users:- name: default  user:    password: 48f4b...4b4e7    username: admin
复制代码


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


$ kubectl get nodesNAME    STATUS ROLES  AGE VERSIONnode1   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: v1kind: ServiceAccountmetadata:  name: gitlab-admin  namespace: kube-system---apiVersion: rbac.authorization.k8s.io/v1beta1kind: ClusterRoleBindingmetadata:  name: gitlab-adminroleRef:  apiGroup: rbac.authorization.k8s.io  kind: ClusterRole  name: cluster-adminsubjects:- kind: ServiceAccount  name: gitlab-admin  namespace: kube-systemEOF
复制代码


当 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 tillerNAMESPACE           NAME          READY UP-TO-DATE AVAILABLE AGEgitlab-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 集群进行测试


2020-05-16 17:181751

评论

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

JMeter 并发测试和持续性压测详解

Liam

测试 压测 并发测试 测试工具

企业内部培训网站为例,探索云上成本优化

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

升级企业数智化底座,加速推进国产替代

用友BIP

技术大会 用友BIP 升级企业数智化底座

企业级安全运维审计产品-行云管家堡垒机全新V7.0举行线上发布会

行云管家

运维 云堡垒机 安全运维 等级

相约用友BIP技术大会,用友iuap带您玩转数据智能

用友BIP

技术大会 用友iuap 数智化底座

CSS中的各种格式化上下文-FC(BFC、IFC、GFC、FFC)

肥晨

css3 三周年连更

网站不收录是受哪些因素影响?

海拥(haiyong.site)

三周年连更

各大金融企业都在用的堡垒机-行云管家堡垒机

行云管家

金融 数据安全 堡垒机

全面数字化时代,国有大型银行如何走好金融创新之路?

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

​华为云网站安全解决方案,多重防御保护企业数据安全

IT科技苏辞

JavaScript 对象遍历为什么要使用 hasOwnProperty 检查属性

Lee Chen

JavaScript

摄影师必备图像编辑工具:Capture One Pro 23中文版

真大的脸盆

Mac Mac 软件 图像编辑 图像编辑工具 图像处理软件

观远数据 × Azure OpenAI,国内首个 BI Copilot 产品化应用

观远数据

ChatGPT

这些央国企在数智化转型时为何选择用友?

用友BIP

技术大会 用友iuap 用友技术大会

防止网页防篡改,华为云网站安全方案省心又省力

爱尚科技

国内功率半导体需求将持续快速增长

华秋电子

消息服务MNS之初见

六月的雨在InfoQ

Java 云产品 MNS 三周年连更 消息服务

众多企业的共同选择,华为云网站安全解决方案有哪些优势?

秃头也爱科技

从网站安全说起,华为云为何能成为政企的“好伙伴”

IT科技苏辞

火山引擎云原生数据仓库ByteHouse技术白皮书V1.0(中)

字节跳动数据平台

数据仓库 云原生 白皮书 云数据仓库 企业号 4 月 PK 榜

对话 BitSail Contributor | 刘啸:参与开源,提升自我技术力

字节跳动数据平台

大数据 开源 数据集成 数据集成平台 数据引擎

前端开发:未来依旧光明 | 社区征文

海拥(haiyong.site)

三周年征文

MatrixOne logservice 原理解析

MatrixOrigin

分布式数据库 MatrixOrigin MatrixOne Log Service

保护企业网站安全,华为云网站安全解决方案有绝招

秃头也爱科技

Spring Security 的介绍和简单使用

会踢球的程序源

Java 后端 spring security Java进阶

使用CodeArts发布OBS,函数工作流刷新CDN缓存

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

看数据如何驱动业务增长,来用友BIP技术大会探索数据智能的力量

用友BIP

数据智能 技术大会 用友iuap 用友技术大会

被称为大数据分析工具的瓴羊Quick BI,与传统数据分析工具有何不同?

流量猫猫头

实操教程 | 如何将一个k3s集群集成到Gitlab项目中_文化 & 方法_Rancher_InfoQ精选文章