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

640?wx_fmt=jpeg
作者|RancherLabs
来源|CSDN企业博客
关于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。

640?wx_fmt=png

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

640?wx_fmt=png

我们现在有两个选项:
  • 在GKE上创建一个新的Kubernetes集群
  • 导入现有Kubernetes 集群的配置(无论这一集群在何处创建均可导入)
注意:在当前版本的GitLab中,新集群的创建仅限于GKE。
640?wx_fmt=png

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

640?wx_fmt=png

在这一步中,我们需要填写几个字段来提供我们需要集成的集群配置。一直打开这个选项卡,暂时无需理会。现在,我们先去创建一个全新的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 】表单的字段:

640?wx_fmt=png

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

640?wx_fmt=png
640?wx_fmt=png

现在,我们可以从命令行检查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工作负载

640?wx_fmt=png

总 结

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

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

  • 源代码
  • Dockerfile,指定如何从代码中创建Docker镜像
  • Kubernetes资源,如部署、服务……
  • .gitlab-ci.yaml文件,定义CI流水线以及如何部署应用程序并且针对相关Kubernetes集群进行测试。

640?wx_fmt=png

640?wx_fmt=png

640?wx_fmt=png

福利
扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,r入驻博客,和志同道合的朋友们共同打卡学习!

640?wx_fmt=jpeg

推荐阅读:
  • 2019云栖大会:逍遥看巅峰,张勇提“百新”,平头哥“再亮剑”

  • Pivotal冯雷:以数字化为核心竞争力的时代 自主可控是企业的“必然选择”

  • 漫画:程序员一时单身一时爽,一直单身...有点惨

  • 不止于刷榜,三大CV赛事夺冠算法技术的“研”与“用”

  • 如何用 Python 快速开发一个区块链数据结构?

  • 全面解析腾讯最新开源 loT 操作系统 TencentOS tiny!

真香,朕在看了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521606.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30个免费资源:涵盖机器学习、深度学习、NLP及自动驾驶

摘要&#xff1a; 本文是一份免费资源清单&#xff0c;涵盖机器学习、深度学习、NLP、AI以及自动驾驶&#xff0c;方便相关研究者选择自己感兴趣的内容资源进行学习随着碎片化的生活越来越日常化&#xff0c;大多数人都喜欢看总结性的的文章&#xff0c;这和时间成本有一定的关…

阿里AI界的新伙伴,1秒钟自动生成20000条文案

摘要&#xff1a; 最近&#xff0c;阿里“AI家族”又多了一位新的小伙伴——“AI智能文案”&#xff0c;俗称文案妹。 妹妹具备一个超能力&#xff0c;能仅用1秒钟自动生成20000条文案。 来&#xff0c;大家一起感受一下&#xff1a; 比如说你想买瓶粉底液&#xff0c;根据功效…

华为 招聘 状态 查看_英特尔放弃5G芯片研发:三星受益;爱立信2019年Q1净利润约2.51亿美元;华为也将要与高通和解;天津首个5G电话成功打通...

点击上方“通信人才网” 订阅&#xff01;导读&#xff1a;今日热点 爱立信2019年Q1净利润约2.51亿美元 扭亏为盈近日&#xff0c;爱立信发布截至2019年3月31日的第一季度财报。财报显示&#xff1a;爱立信第一季度净营收为489.06亿瑞典克朗(约合52.93亿美元)&#xff0c;较去年…

异步消息队列中间件

安装&#xff1a; rpm -ivh erlang-18.3-1.el7.centos.x86_64.rpmrpm -ivh socat-1.7.3.2-5.el7.lux.x86_64.rpmrpm -ivh rabbitmq-server-3.6.5-1.noarch.rpm配置文件&#xff1a; vim /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.5/ebin/rabbit.app找到loopback_users,把双引…

创纪录!浪潮云海完成OpenStack Rocky版本全球最大规模单一集群测试!

戳蓝字“CSDN云计算”关注我们哦&#xff01;云计算的概念已悄然走过十余年&#xff0c;在助力新兴技术发展的同时&#xff0c;自身也在历经变革。开源作为推动云计算发展的强大动力&#xff0c;于云计算而言&#xff0c;不仅是技术变革的历史潮流&#xff0c;也是相互助推的最…

idea如何反编译字节码指令_美团点评:Java字节码增强技术,线上问题诊断利器...

作者简介&#xff1a;泽恩&#xff0c;美团到店住宿业务研发团队工程师。文章转载于公众号&#xff1a;美团技术团队1. 字节码1.1 什么是字节码&#xff1f;Java之所以可以“一次编译&#xff0c;到处运行”&#xff0c;一是因为JVM针对各种操作系统、平台都进行了定制&#xf…

使用机器学习预测电子竞技游戏《守望先锋》的胜负

摘要&#xff1a; 机器学习可以预测游戏的输赢&#xff1f;来看看Bowen Yang博士是如何构建这一模型的。《守望先锋》中的英雄来自加州大学河滨分校的物理学博士学位的Bowen Yang正在致力于构建一个模型——对游戏中的人物特征进行有意义的学习&#xff0c;来预测电子竞技游戏中…

路由器上的usb接口有什么用_工业主板上有多少种USB接口,红色的USB接口代表什么...

USB接口正式出现是在1996年&#xff0c;一经问世&#xff0c;就成功取代了串口和并口&#xff0c;当然这只是相对于商业电脑和民用电脑而言的&#xff0c;在工控机中还是有串口和并口存在的。USB版本发展至今也已经历好几个阶段&#xff0c;例如USB1.0、USB1.1、USB2.0、USB3.0…

GitHub 热榜第一!这个 Python 项目超 8.4k 标星,网友:太实用!

这个十一&#xff0c;又经历了一波抢票大战。常规办法根本抢不到&#xff0c;大家就把目光转移到“技术手段”上&#xff0c;顺便把一个Python抢票工具&#xff0c;送到了GitHub趋势榜第一&#xff1a;标星超过8.4k&#xff0c;来自名叫文贤平的程序员。这很可能是全GitHub最德…

c语言点按钮弹窗口,【iOS】按钮点击弹窗

拖入一个Round Rect Button&#xff0c;并将Button的文字修改成“点击弹窗”将ViewController.h修改为如下代码&#xff0c;实则在ViewController.h中添加了一行-(IBAction)messageBoxShow;&#xff0c;注册messageBoxShow这个函数。类似于C语言使用函数之前需要在头文件声明这…

cstring 不明确_股价不可预测明确时间点的涨跌

前言最近不少朋友或私信问或群里问几类问题&#xff1a;XXX 股票还能买吗&#xff1f;买了会不会还继续下跌&#xff1f;买了我能不能立刻就涨&#xff1f;XXX 股票能卖吗&#xff1f;我卖了不会还继续涨吧&#xff1f;XXX 股票为什么下跌这么厉害&#xff0c;是要有黑天鹅出现…

11月4日,上海开源基础设施峰会,不见不散!

戳蓝字“CSDN云计算”关注我们哦&#xff01;即日起&#xff0c;登录上海开源基础设施峰会网站&#xff0c;凭“OpenInfra10”优惠码注册就能享受九折优惠。另外&#xff0c;OpenStack基金会还特别为CSDN云计算社区的成员们预留了宝贵位置。11月4日至6日&#xff0c;世界各地的…

5求的值c语言编辑,C语言中怎样求1+3+5~~~~~+9值并 – 手机爱问

2018-04-06C 语言中的原码怎么&#xff1f;数计算机二进制形式表示数分有符号数和无符号数原码、反码、补码都有符号定点数表示方法有符号定点数高位符号位0正1副下都8位整数例原码数本身二进制形式例1000001 -10000001 1正数反码和补码都和原码相同负数反码其原码除符号位之外…

RabbitMQ 下载、安装、配置、验证_rpm版本(Linux环境)

文章目录一、RabbitMQ 安装准备二、RabbitMQ 安装2.1. 环境安装(最小化版本先安装环境)2.2. 安装包下载2.3. rpm安装RabbitMQ2.4. 配置文件修改2.5. 启动RabbitMQ2.6. 查看RabbitMQ是否启动2.7. 查看RabbitMQ 插件列表2.8. 安装RabbitMQ 管控台2.9. 浏览器访问RabbitMQ 管控台三…

python 华泰证券 客户端_华泰证券网上交易系统(高级版)下载 v8.13官方版下载

华泰证券网上交易系统高级版是止录最新的证券交易软件&#xff0c;该版本在原有版本上重新设计改版&#xff01;数据更清晰&#xff0c;交易更快捷&#xff01;新版本分别有行情、选股、资讯、数据和交易五大模块&#xff0c;新版的框架支持了4K高清显示器显示&#xff0c;如果…

使用拓扑数据分析理解卷积神经网络模型的工作过程

摘要&#xff1a; 神经网络功能强大&#xff0c;但内部复杂且不透明&#xff0c;被称为黑匣子工具。使用拓扑数据分析以紧凑且可理解的方式描述卷积神经网络的功能和学习过程。1.简介神经网络在各种数据方面处理上已经取得了很大的成功&#xff0c;包括图像、文本、时间序列等。…

2000万条直播数据,揭秘斗鱼主播生存现状

戳蓝字“CSDN云计算”关注我们哦&#xff01;2019年7月17日游戏直播平台斗鱼在美国纳斯达克股票交易所成功上市&#xff0c;成为继虎牙直播之后第二家赴美上市的国内直播平台。7月底斗鱼因为平台主播“乔碧萝殿下”事件再次被推上热搜。段子手们纷纷调侃成为主播的门槛之低&…

最佳实践:使用负载均衡SLB IPv6搞定苹果AppStore审核

摘要&#xff1a; 1.Greetings HI&#xff0c;大家好&#xff0c;我是负载均衡SLB产品经理添毅&#xff0c;今天我们来聊一聊苹果的IPv6审核&#xff0c;以及使用阿里云负载均衡SLB&#xff08;IPv6&#xff09;搞定AppStore IPv6审核。 2.Appstore IPv6审核是什么 由于国外的I…

curl查看swift状态命令_前端应该会的23个linux常用命令

(给前端大学加星标&#xff0c;提升前端技能.)作者:null仔https://segmentfault.com/a/11900000214395601、ls 命令 : 显示目录内容列表Linux ls 命令用于显示指定工作目录下之内容(列出目前工作目录所含之文件及子目录)。ls [-alrtAFR] [name...]常用 options-a 显示所有文件及…