在本地GitLab上连接MicroK8s并体验GitLab的自动DevOps(后半部分)

我们提供一些在谷歌搜索中找不到的小细节。
本篇文章是作者个人观点,与作者所属的任何团体无关。

这种方法已经在GitLab v14.5中成为不推荐使用的,并且在GitLab v15.0中将无法使用。
基于证书的Kubernetes集成(已弃用)
https://docs.gitlab.com/ee/user/infrastructure/clusters/#certificate-based-kubernetes-integration-deprecated
请今后使用GitLab Kubernetes代理。
以下是使用方法的文章:
尝试使用GitLab Kubernetes代理(原名GitLab Agent for Kubernetes)- Qiita
https://qiita.com/ynott/items/35e9492d0681ea8ac60a

0. 开始

GitLab有与Kubernetes集成的功能,可以方便地进行各种操作。

image.png

Kubernetes 集群 | GitLab
https://docs.gitlab.com/ee/user/project/clusters/

然而,存在问题。不论是选择GKE还是EKS,费用都相当高。作为一个简单的应用部署环境,这是昂贵的。然而,要搭建一个完整的Kubernetes也是非常困难的。。。。

因此,我们将在虚拟机上运行MicroK8s,并将其与内部GitLab进行整合。

因为长度变长了,所以我把它分成了前半部分和后半部分。

前半部分在这里。

使用MicroK8s连接到本地GitLab并体验GitLab的Auto DevOps(前半)- Qiita

4. 将GitLab与Kubernetes进行连接配合。

添加与Kubernetes协作的组

在当前的GitLab(13.7)中,您可以在以下层面上添加Kubernetes。

    1. 项目级别

 

    1. 组级别

 

    GitLab实例级别

不管是哪一种,方法都是相同的。如果在组级别上集成Kubernetes,可能会方便一些,因为不需要每次在项目级别上设置集成。这次我们尝试在组级别上进行了集成。

显示Kubernetes连接页面

点击「团队」,然后再点击「Kubernetes」。

image.png
image.png
image.png
image.png

4-3. 填写情报

項目名説明Kubernetesクラスター名前半で動かしたMicrok8sの名前を入れます(一意に識別できれば何でも構いません)環境スコープここに”production”や”staging”と入れると.gitlab-ci.ymlで指定する本番用やステージング用として利用できます。”*”だとワイルドカードで.gitlab-ci.ymlでの指定に影響されませんAPI URL前半3-1. API URLで取得した以下の情報を入れますCA証明書前半3-2. CA証明書で取得した以下の情報を入れますサービストークン前半3-3. サービストークンで取得した以下の情報を入れますRBAC有効クラスター前半のMicrok8s Addonでrbacを有効にしたのでチェックしますGitLabマネージドクラスターGitLab側でKubernetesの必要な設定を管理できるようにしますNamespace per environmentAutoDevOpsでアプリをデプロイする環境をネームスペースで分離します

当您输入后,点击“添加Kubernetes集群”。

创建基础域名

为了指定基本域,需要启用Ingress并启用Ingress终结点。

5-1. 探索进入

如果能够进行联动的话,可以从”应用程序”选项卡中安装Ingress。

image.png

安装Ingress后,将在名为gitlab-managed-apps的命名空间中运行ingress-controller和ingress-default-backend。

$ kubectl get all -n gitlab-managed-apps
NAME                                                       READY   STATUS      RESTARTS   AGE
pod/ingress-nginx-ingress-default-backend-c9b59c85-vvm9f   1/1     Running     0          39s
pod/ingress-nginx-ingress-controller-75686bdf76-gcqdr      2/2     Running     0          39s
pod/install-ingress                                        0/1     Completed   0          56s

NAME                                            TYPE           CLUSTER-IP       EXTERNAL-IP     PORT(S)                      AGE
service/ingress-nginx-ingress-default-backend   ClusterIP      10.152.183.240   <none>          80/TCP                       39s
service/ingress-nginx-ingress-controller        LoadBalancer   10.152.183.45    192.168.10.20   80:31012/TCP,443:31903/TCP   39s

NAME                                                    READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ingress-nginx-ingress-default-backend   1/1     1            1           39s
deployment.apps/ingress-nginx-ingress-controller        1/1     1            1           39s

NAME                                                             DESIRED   CURRENT   READY   AGE
replicaset.apps/ingress-nginx-ingress-default-backend-c9b59c85   1         1         1       39s
replicaset.apps/ingress-nginx-ingress-controller-75686bdf76      1         1         1       39s
image.png

5-2. 設定基底域

回到详细选项卡,将Ingress端点注册到DNS中,然后创建基础域名。
这次我们没有把它注册到公司内部的DNS,而是使用了xip。

image.png

我将保存更改。

6. 部署 Auto DevOps 应用程序。

启用Auto DevOps。

这次我们将在团队级别上启用Auto DevOps

image.png

在NodeJS Express项目中,通过模板进行创建。

这次我们将使用GitLab的NodeJS Express模板作为测试Auto DevOps的应用程序。

点击”新建项目”,然后点击”从模板中创建”,再点击”使用NodeJS Express模板”。

image.png

请您输入一个合适的项目名称,然后点击“创建项目”。

image.png

6-3. 启用自动 DevOps

询问是否要启用Auto DevOps,请点击”设置”按钮并启用Auto DevOps。

image.png

6-4. 设置Auto DevOps的部署策略。

如果您不指定部署策略,即使启用了Auto DevOps,也不会执行流水线,所以选择持续部署到生产环境,然后点击“保存更改”。

image.png

7. 确认执行 Auto DevOps

7-1. 检查管线执行情况

当保存策略更改后,会启动流水线,通过”CI/CD -> 流水线”可以确认流水线正在运行。

image.png

由于“代码质量”和“性能”会给机器带来负担,请按下取消按钮取消。

确认部署状态。

打开「操作」- 打开「环境」

image.png

点击向外的箭头图标,浏览器将打开一个标签页,可以确认执行情况。

image.png

停止使用Auto DevOps来执行部署。

当评论结束后,请在环境界面的最右侧红色边框的■上按下,以结束环境。

image.png

9. 总结

我可以使用Microk8s进行Auto DevOps的验证。
我想确认是否也可以使用k3s来实现相同的功能。

希望在Auto DevOps中,能够修复使用内置项目模板创建Spring项目时出现的文件权限问题。(#63246) · 任务 · GitLab.org / GitLab FOSS · GitLab
https://gitlab.com/gitlab-org/gitlab-foss/-/issues/63246

10. 参考 – 参考资料

    • Adding and removing Kubernetes clusters | GitLab

 

    • Index · Clusters · Project · User · ヘルプ · GitLab

 

    • microk8sを使ってkubernetesクラスタを構築してみる + metallbアドオンお試し | NTTテクノクロスブログ

 

    • Debugging DNS Resolution | Kubernetes

 

    • GitLab Auto DevOps with MicroK8s on an Raspberry Pi 4 | by Jason McNeal | Medium

 

    • UbuntuにMicroK8sを導入する – Qiita

 

    • MicroK8sを外部のクライアントからkubectlで接続する – Qiita

 

    • RancherをMicroK8s(Kubernetes 1.17.0)で動かす – Qiita

 

    GitLab CI/CDパイプラインとContainer Engine for Kubernetesを統合する | Oracle Technology Network Japan Blog
bannerAds