在本地GitLab上连接MicroK8s并体验GitLab的自动DevOps(后半部分)
我们提供一些在谷歌搜索中找不到的小细节。
本篇文章是作者个人观点,与作者所属的任何团体无关。
基于证书的Kubernetes集成(已弃用)
https://docs.gitlab.com/ee/user/infrastructure/clusters/#certificate-based-kubernetes-integration-deprecated
以下是使用方法的文章:
尝试使用GitLab Kubernetes代理(原名GitLab Agent for Kubernetes)- Qiita
https://qiita.com/ynott/items/35e9492d0681ea8ac60a
0. 开始
GitLab有与Kubernetes集成的功能,可以方便地进行各种操作。

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。
-
- 项目级别
-
- 组级别
- GitLab实例级别
不管是哪一种,方法都是相同的。如果在组级别上集成Kubernetes,可能会方便一些,因为不需要每次在项目级别上设置集成。这次我们尝试在组级别上进行了集成。
显示Kubernetes连接页面
点击「团队」,然后再点击「Kubernetes」。




4-3. 填写情报
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。

安装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

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

我将保存更改。
6. 部署 Auto DevOps 应用程序。
启用Auto DevOps。
这次我们将在团队级别上启用Auto DevOps

在NodeJS Express项目中,通过模板进行创建。
这次我们将使用GitLab的NodeJS Express模板作为测试Auto DevOps的应用程序。
点击”新建项目”,然后点击”从模板中创建”,再点击”使用NodeJS Express模板”。

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

6-3. 启用自动 DevOps
询问是否要启用Auto DevOps,请点击”设置”按钮并启用Auto DevOps。

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

7. 确认执行 Auto DevOps
7-1. 检查管线执行情况
当保存策略更改后,会启动流水线,通过”CI/CD -> 流水线”可以确认流水线正在运行。

由于“代码质量”和“性能”会给机器带来负担,请按下取消按钮取消。
确认部署状态。
打开「操作」- 打开「环境」

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

停止使用Auto DevOps来执行部署。
当评论结束后,请在环境界面的最右侧红色边框的■上按下,以结束环境。

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