K3s是一個輕量級的Kubernetes發行版(小於40MB),而且很是易於安裝,僅須要512MB的RAM。它可以完美知足IoT設備以及邊緣計算的需求。在本文中,咱們將建立一個k3s集羣而且展現如何將其集成到一個Gitlab的項目中。node
K3s是由Rancher Labs發佈的一個輕量級Kubernetes發行版,這款產品專爲在資源有限的環境中運行Kubernetes的研發和運維人員設計。git
它是通過認證的Kubernetes發行版,其最低的系統要求爲:web
這些低配置的要求使得k3s很是適用於IoT相關的場景。docker
在安裝k3s以前,咱們先在Gitlab上建立一個新的項目,稱爲api。shell
建立完成以後,咱們點擊側邊菜單欄裏的Operations,並在下級菜單中選擇Kubernetes。json
咱們如今有兩個選項:api
注意:在當前版本的GitLab中,新集羣的建立僅限於GKE。服務器
咱們選擇【Add existing cluster】這一選項卡。架構
在這一步中,咱們須要填寫幾個字段來提供咱們須要集成的集羣配置。一直打開這個選項卡,暫時無需理會。如今,咱們先去建立一個全新的Kubernetes集羣。app
咱們如今將基於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項目中集成全新的k3s集羣所需的全部信息。
$ kubectl config view --raw \ -o=jsonpath='{.clusters[0].cluster.certificate-authority-data}' \ | base64 --decode
$ 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界面容許一鍵安裝其餘組件:
在本文中,咱們瞭解如何建立一個k3s集羣而且將其集成到一個Gitlab項目中。固然,任何Kubernetes集羣均可以使用相同的過程。
咱們如今能夠添加各類資源到項目中: