溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

實操教程丨如何將一個k3s集群集成到Gitlab項目中

發(fā)布時間:2020-07-14 11:19:29 來源:網(wǎng)絡(luò) 閱讀:612 作者:RancherLabs 欄目:云計算

關(guān)于k3s

K3s是由Rancher Labs發(fā)布的一個輕量級Kubernetes發(fā)行版,這款產(chǎn)品專為在資源有限的環(huán)境中運(yùn)行Kubernetes的研發(fā)和運(yùn)維人員設(shè)計。

它是經(jīng)過認(rèn)證的Kubernetes發(fā)行版,其最低的系統(tǒng)要求為:

  • 系統(tǒng)內(nèi)核版本:Linux 3.10+

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

  • 每個節(jié)點RAM最低要求:75MB

  • 磁盤空間最低要求:200 MB

  • 支持的硬件架構(gòu):x86_64、 ARMv7、 ARM64

這些低配置的要求使得k3s非常適用于IoT相關(guān)的場景。

在GitLab中創(chuàng)建項目

在安裝k3s之前,我們先在Gitlab上創(chuàng)建一個新的項目,稱為api。

實操教程丨如何將一個k3s集群集成到Gitlab項目中

創(chuàng)建完成之后,我們點擊側(cè)邊菜單欄里的Operations,并在下級菜單中選擇Kubernetes。

實操教程丨如何將一個k3s集群集成到Gitlab項目中

我們現(xiàn)在有兩個選項:

  • 在GKE上創(chuàng)建一個新的Kubernetes集群

  • 導(dǎo)入現(xiàn)有Kubernetes 集群的配置(無論這一集群在何處創(chuàng)建均可導(dǎo)入)

注意:在當(dāng)前版本的GitLab中,新集群的創(chuàng)建僅限于GKE。

實操教程丨如何將一個k3s集群集成到Gitlab項目中

我們選擇【Add existing cluster】這一選項卡。

實操教程丨如何將一個k3s集群集成到Gitlab項目中

在這一步中,我們需要填寫幾個字段來提供我們需要集成的集群配置。一直打開這個選項卡,暫時無需理會?,F(xiàn)在,我們先去創(chuàng)建一個全新的Kubernetes集群。

創(chuàng)建一個k3s集群

我們現(xiàn)在將基于k3s啟動一個Kubernetes集群。為什么是k3s呢?因為我想要表明設(shè)置它是多么容易。為了讓步驟一目了然,我們僅僅設(shè)置一個節(jié)點的集群。

我已經(jīng)配置了名為node1的Ubuntu 18.04服務(wù)器,我們在該主機(jī)上獲得了一個shell之后,只需要運(yùn)行以下命令來安裝k3s,這是一個經(jīng)過認(rèn)證的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/),添加額外的節(jié)點并不復(fù)雜,它基本上只需要從主服務(wù)器上的/var/lib/rancher/k3s/server/node-token獲取一個令牌,并使用以下命令即可連接其他一些節(jié)點:

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

在Gitlab中集成

現(xiàn)在讓我們獲取在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

獲取一個識別令牌的過程牽涉到幾個步驟。我們首先需要創(chuàng)建一個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

當(dāng)service account創(chuàng)建完畢之后,我們檢索關(guān)聯(lián)的類型secret的資源:

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

下一步是提取與secret關(guān)聯(lián)的JWT令牌:

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

我們已經(jīng)完成了所有設(shè)置,現(xiàn)在回到之前打開的選項卡中,開始使用所有信息并填寫Gitlab 【Add existing cluster 】表單的字段:

實操教程丨如何將一個k3s集群集成到Gitlab項目中

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

實操教程丨如何將一個k3s集群集成到Gitlab項目中

實操教程丨如何將一個k3s集群集成到Gitlab項目中

現(xiàn)在,我們可以從命令行檢查tiller 守護(hù)程序(helm的服務(wù)器端組件)是否運(yùn)行。

$?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

集群現(xiàn)在已經(jīng)可以使用了。除此之外,GitLab的Web界面允許一鍵安裝其他組件:

  • Ingress Controller,暴露集群中運(yùn)行的服務(wù)

  • Cert-Manager,使用Let's Encrypt管理TLS證書

  • Prometheus,監(jiān)控運(yùn)行在集群中 的應(yīng)用程序

  • Knative,部署Serverless工作負(fù)載

實操教程丨如何將一個k3s集群集成到Gitlab項目中

總?結(jié)

在本文中,我們了解如何創(chuàng)建一個k3s集群并且將其集成到一個Gitlab項目中。當(dāng)然,任何Kubernetes集群都可以使用相同的過程。

我們現(xiàn)在可以添加各種資源到項目中:

  • 源代碼

  • Dockerfile,指定如何從代碼中創(chuàng)建Docker鏡像

  • Kubernetes資源,如部署、服務(wù)……

  • .gitlab-ci.yaml文件,定義CI流水線以及如何部署應(yīng)用程序并且針對相關(guān)Kubernetes集群進(jìn)行測試



向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI