AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

实操教程 | 如何将一个 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:181492

评论

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

新手注册ChatGPT详细流程

kookeey代理严选

AI 静态代理 代理IP ChatGPT chatgpt注册

低代码平台:技术困局与破局路径

代码制造者

低代码

HarmonyOS NEXT 实现滑动拼图验证码功能

威哥爱编程

HarmonyOS HarmonyOS框架 HarmonyOS NEXT HarmonyOS5.0

NocoBase 本周更新汇总:优化执行记录写入逻辑

NocoBase

开源 低代码 零代码 无代码 版本更新

(下篇)从项目管理到价值管理的转型路径:基于敏捷价值管理办公室(VMO®)的战略升级

ShineScrum

PMO 敏捷、 #项目管理 VMO

e签宝携华为鸿蒙打造全国首个"智能签署江南范式"。

科技汇

麦杰科技即将亮相2025第七届工业医院发展论坛:工业数据底座赋能工业设备全生命周期管理

麦杰科技

麦杰科技即将亮相2025第七届工业医院发展论坛:工业数据底座赋能工业设备全生命周期管理

麦杰研究院

长三角地区安防全产业链的盛会“2025浙江安博会”7月召开

AIOTE智博会

安防展会 杭州安博会 安博会、 安防博览会

实力认证!天翼云问鼎国产智算云服务市场

天翼云开发者社区

云服务

实测文心4.5与X1一个月后,我预测文心大模型4.5 Turbo将有这几个升级点

herosunly

#大模型

如何使用通义灵码辅助学习C++编程 - AI编程助手提升效率

阿里云云效

c++ 人工智能

企业管理中,一个好用的管理工具为何如此重要?

伤感汤姆布利柏

e签宝携华为鸿蒙打造全国首个"智能签署江南范式"。

科技热闻

奥雅的数字化新版图:用 NocoBase 探索精细化管理新可能

NocoBase

开源 低代码 数字化转型 客户案例 内部工具

阿里云 AI 搜索开放平台:从算法到业务——AI 搜索驱动企业智能化升级

阿里云大数据AI技术

人工智能 大数据 阿里云 rag AI搜索

Dify 基于 TiDB 的数据架构重构实践

PingCAP

小程序热更新:助App实现“空中换引擎

xuyinyin

娱美德加速布局中国游戏市场:传奇IP新游发布、研发中心落地与专项基金启动三管齐下

新消费日报

【亲测有效】Tuxera NTFS 2024免费版|激活码|注册码分享 Tuxera for Mac最新破解教程

阿拉灯神丁

激活码生成器 NTFS磁盘管理器 Tuxera NTFS2024 Mac破解软件 磁盘管理工具

【2025实战】淘宝天猫商品数据接口逆向分析手记:新手也能看懂的技术拆解

代码忍者

API 接口

一款网络安全软件推荐-企业小伙伴要看哦!

行云管家

网络安全 数据安全 堡垒机

大语言模型→超能力者的边界探索与破局脑洞

代码制造者

#大语言模型

火山引擎发布企业级AI数据专家Data Agent

字节跳动数据平台

大数据 AI agent 数据飞轮 Data Agent

20年携手共进,e签宝如何从重要参与者成长为行业标准制定者?

科技汇

什么是微前端?有什么好处?有哪一些方案?

不在线第一只蜗牛

前端

AI与5G的融合:如何实现更快速、更智能的物联网应用?

天津汇柏科技有限公司

AI 5G

怎么用DeepSeek生成系统架构图?DS高阶使用技巧分享!

职场工具箱

架构图 AIGC AI 绘图 架构图工具 DeepSeek

Flink Forward Asia 2025 新加坡站议题征集开启|The future of AI is Real-Time

Apache Flink

大数据 flink AI 实时计算

鸿蒙HarmonyOS埋点SDK,ClkLog适配鸿蒙埋点分析

ClkLog

开源 埋点 sdk HarmonyOS 用户画像

如何使用通义灵码辅助学习C++编程 - AI编程助手提升效率

阿里巴巴云原生

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