作者|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。
创建完成之后,我们点击侧边菜单栏里的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集群进行测试。
福利
扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,r入驻博客,和志同道合的朋友们共同打卡学习!

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

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

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

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

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

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

真香,朕在看了!

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

  1. 安全策略_实操教程丨使用Pod安全策略强化K8S安全

    什么是Pod安全策略? Kubernetes Pod安全策略(PSP)是Kubernetes安全版块中极为重要的组件.Pod安全策略是集群级别的资源,用于控制Pod安全相关选项,并且还是一种强化Kub ...

  2. 实操教程|PyTorch AutoGrad C++层实现

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨xxy-zhihu@知乎 来源丨https://zhuanla ...

  3. [转载]你们要的GIF动图制作全攻略!看完就会做!(实操教程)

    非常实用呀 原文地址:你们要的GIF动图制作全攻略!看完就会做!(实操教程)作者:木木老贼 来源:文案匠(ID:sun-work) 作者:一木(授权转载,如需转载请联系文案匠) 文章配图的GIF动图怎 ...

  4. 通过大白菜u盘启动工具备份/还原/重装/激活系统/修复引导 实操教程(上)

    通过大白菜u盘启动工具备份/还原/重装/激活系统/修复引导 实操教程(上) 前言 进入大白菜u盘的pe系统 用GHOST进行系统盘备份/还原 在D盘上安装新系统(以win10-2004为例) 镜像下载 ...

  5. 寻找亚马逊测评师邮箱_美国及欧盟亚马逊产品外观专利查询步骤实操教程(已验证)...

    亚马逊产品外观专利防不胜防:美国及欧盟外观专利查询步骤实操教程(已验证) 欧洲 https://www.tmdn.org/tmdsview-web/dsview-logo-white.15c95da2 ...

  6. 实操教程|火遍全网的剪纸风格究竟是怎么做出来的?

    原文来自公众号:希音的设计笔记 > 添加微信:xiyin0820 获取高质量样机 | C4D教程 | OC渲染教程 | Sketch教程 Adobe2021 | Adobe2020 | LED字 ...

  7. mysql教程乛it教程网_MySQL数据库实操教程(35)——完结篇

    版权声明 专栏概况 从2019年7月21日至今,约莫一个月的时间终于写完了MySQL教程,我已将其集结在专栏<MySQL数据库实操教程>,概述如下: 共计35篇文章 每篇文章均附源码和运行 ...

  8. MySQL数据库实操教程(35)——完结篇

    版权声明 本文原创作者:谷哥的小弟 作者博客地址:http://blog.csdn.net/lfdfhl 专栏概况 从2019年7月21日至今,约莫一个月的时间终于写完了MySQL教程,我已将其集结在 ...

  9. 配置高可用K3s集群完全攻略

    前 言 在本文中,我们将简要介绍在高可用性(HA)配置中设置K3s的参考架构.这意味着你的K3s集群可以容忍故障,并保持启动和运行,为你的用户提供流量.你的应用程序也应该针对高可用性进行构建和配置,但 ...

最新文章

  1. LINUX TOP,不是这样玩地!!!
  2. java中用于选择按钮的语句_java程序员考试套题1
  3. 怎样格式化电脑_电脑硬盘故障恢复软件:坏硬盘数据怎么恢复?
  4. tf.train.Saver
  5. arcgis按属性设置符号大小
  6. 富编译器汇总及二次开发Demo
  7. 60+PPT 下载丨Oracle Open World 2019
  8. 4.4_factory_method_创建型模式:工厂方法模式
  9. DataSet运用DES加解密到Xml
  10. 层次聚类算法_机器学习理论(十四)聚类
  11. FreeSwitch视频会议,4路以上CPU占用暴增的原因
  12. DenseNet 简介
  13. python-json校验-jsonpath
  14. 注定平凡-----和will812
  15. 3d建模电脑配置要求
  16. 异步处理,Event Souring,事务补偿,实现最终一致性和服务的弹性和批处理
  17. Python批量复制一个文件夹中的全部excel数据并粘贴至一个excel文件中-openpyxl模块
  18. 挺着肚皮的小淘气 蒙语版铃声 挺着肚皮的小淘气 蒙语版手机铃...
  19. PC客户端自动化测试-控件操作方法
  20. 鬼吹灯之牧野诡事(四维数组的坐标搜索)

热门文章

  1. z370支持pcie信号拆分吗_定了!AMD B550主板确认将支持PCIE4.0,多项能力接近X570
  2. linux中在工作空间编译cpp,linux tensorflow2.4.0 c++ 编译
  3. 五月份哪里有有计算机考试,2021年5月全国计算机等级考试报名时间
  4. 取火的N种方式:学好物理是野外求生第一步
  5. 知乎高赞:什么样的学生最坑导师?
  6. 两届诺贝尔文学奖得主将同时公布
  7. 15 位健在的牛叉程序员,你知道哪几位?
  8. mongodb 监控权限_MongoDB - 监控
  9. (pytorch-深度学习)深度循环神经网络
  10. SSD( Single Shot MultiBox Detector)关键源码解析