.NET DevOps 接入指南 | 1. GitLab 安装

引言

容器、DevOps和微服务被称为驱动云原生快速发展的三架马车。而DevOps是其中非常重要的一环,DevOps 是由Developers(Dev)和Operations(Ops)两个单词简称组成,中文直译就是“开发运维一体化”。 

DevOps 作为一种复杂的软件工程方法,推行实施并不可一蹴而就。因此采用好的平台工具,方能事半功倍,Gitlab作为一款成熟开源的一体化DevOps平台,其覆盖了DevOps全流程,提供了端到端的解决方案,诸如看敏捷开发、源代码托管、CI/CD、包管理、监控、K8S集成等。

接下来我会在最近的系列本章中来阐述.NET如何借助Gitlab来落地DevOps。

安装前准备

学习新技术的基础路径就是一定要上手实操,因此先介绍如何使用Helm安装一套GitLab环境,以便后续内容的展开。在安装前,首先确保拥有以下资源:

  1. 拥有自己的域名,可以自行到域名提供商注册申请

  2. 一个Kubernetes集群,需8核CPU,1内存以上

  3. 本地已安装kubectlHelm3

  4. 本地已安装Kubernetes IDE:Lens,具体可访文https://k8slens.dev进行下载。

其中,第2、3步在Kubernetes章节已有介绍,这里不在赘述。

开始安装

1. 添加GitLab Helm 仓库

为了使用Helm安装GitLab,首先就需要添加官方gitlab chart,参考以下命令进行添加:打开命令行,执行helm repo add gitlab https://charts.gitlab.io

shengjie@Thinkpad:~$ kubectl config get-contexts # 确保本地kubectl连接到正确集群
CURRENT   NAME             CLUSTER          AUTHINFO                             NAMESPACEcloud-native     cloud-native     clusterUser_aks-group_cloud-native
*         docker-desktop   docker-desktop   docker-desktop
shengjie@Thinkpad:~$ helm version # 查看本地helm版本
version.BuildInfo{Version:"v3.7.1", GitCommit:"1d11fcb5d3f3bf00dbe6fe31b8412839a96b3dc4", GitTreeState:"clean", GoVersion:"go1.16.9
shengjie@Thinkpad:~$ helm repo add gitlab https://charts.gitlab.io # 添加gitlab helm 仓库
"gitlab" has been added to your repositories
shengjie@Thinkpad:~$ helm repo list # 查看本地已添加的Helm仓库
NAME    URL
gitlab  https://charts.gitlab.io
shengjie@Thinkpad:~$ helm search repo gitlab/gitlab # 搜索gitlab Chart
NAME                            CHART VERSION   APP VERSION     DESCRIPTION
gitlab/gitlab                   5.3.3           14.3.3          Web-based Git-repository manager with wiki and ...

2. 下载GitLab Helm Chart

为了方便根据需要配置Helm Chart,可以先将GitLab Helm Chart 下载至本地进行修改,下载命令仅需执行以下命令:

shengjie@Thinkpad:~$ mkdir cloud-native # 创建目录
shengjie@Thinkpad:~$ cd cloud-native 
shengjie@Thinkpad:~/cloud-native$ helm pull gitlab/gitlab --version 5.3.3 --untar # 下载指定版本的gitlab chart
shengjie@Thinkpad:~/cloud-native$ ls gitlab/
CHANGELOG.md     Chart.yaml  README.md  charts    requirements.lock  support    values.yaml
CONTRIBUTING.md  LICENSE.md  Rakefile   deps.yml  requirements.yaml  templates

3. 安装GitLab Helm Chart

接下来就可以在本地进行安装,执行以下命令:

shengjie@Thinkpad:~/cloud-native/gitlab$ kubectl create namespace gitlab # 创建gitlab命名空间
shengjie@Thinkpad:~/cloud-native/gitlab$ helm install gitlab . -n gitlab \ # 指定在gitlab 命名空间安装
> --set global.hosts.domain={你的域名} \ # 设置域名,这里为后续讲解方便,{你的域名}替换为shengjie.dev
> --set certmanager-issuer.email={你的邮箱} # 设置证书邮件
NAME: gitlab
LAST DEPLOYED: Sat Sep 25 04:29:39 2021
NAMESPACE: default
STATUS: deployed
REVISION: 1
NOTES:
NOTICE: The minimum required version of PostgreSQL is now 12. See https://gitlab.com/gitlab-org/charts/gitlab/-/blob/master/doc/installation/upgrade.md for more details.NOTICE: You've installed GitLab Runner without the ability to use 'docker in docker'.
The GitLab Runner chart (gitlab/gitlab-runner) is deployed without the `privileged` flag by default for security purposes. This can be changed by setting `gitlab-runner.runners.privileged` to `true`. Before doing so, please read the GitLab Runner chart's documentation on why we
chose not to enable this by default. See https://docs.gitlab.com/runner/install/kubernetes.html#running-docker-in-docker-containers-with-gitlab-runnersHelp us improve the installation experience, let us know how we did with a 1 minute survey:
https://gitlab.fra1.qualtrics.com/jfe/form/SV_6kVqZANThUQ1bZb?installation=helm&release=14-3

安装成功后,可以通过执行以下命令来确认gitlab是否成功安装,带所有pod 处于Running状态就说明安装成功了。

shengjie@Thinkpad:~$ helm list -n gitlab # 查看gitlab命名空间安装的Chart状态
NAME NAMESPACE REVISION STATUS  CHART   APP VERSION
gitlab  gitlab      1           deployed    gitlab-5.3.2    14.3.2
shengjie@Thinkpad:~$ kubectl get deploy -n gitlab # 查看gitlab命名空间下的deploy是否都为可用状态
NAME                                   READY   UP-TO-DATE   AVAILABLE   AGE
gitlab-certmanager                     1/1     1            1           8d
gitlab-certmanager-cainjector          1/1     1            1           8d
gitlab-certmanager-webhook             1/1     1            1           8d
gitlab-gitlab-exporter                 1/1     1            1           8d
gitlab-gitlab-runner                   1/1     1            1           8d
gitlab-gitlab-shell                    2/2     2            2           8d
gitlab-minio                           1/1     1            1           8d
gitlab-nginx-ingress-controller        2/2     2            2           8d
gitlab-nginx-ingress-default-backend   1/1     1            1           8d
gitlab-prometheus-server               1/1     1            1           8d
gitlab-registry                        2/2     2            2           8d
gitlab-sidekiq-all-in-1-v1             1/1     1            1           8d
gitlab-task-runner                     1/1     1            1           8d
gitlab-webservice-default              2/2     2            2           8d
shengjie@Thinkpad:~$ kubectl get statefulset -n gitlab # 查看已安装的有状态服务
NAME                  READY   AGE
gitlab-gitaly         1/1     8d
gitlab-postgresql     1/1     8d
gitlab-redis-master   1/1     8d

从安装的Pod来看,GitLab chart默认安装了以下组件和服务:

  • NGINX Ingress Controller:用于部署Nginx 作为Ingress 控制器,控制集群入口网关。

  • Registry:提供镜像仓库服务,用于存储镜像。

  • GitLab/Gitaly:GitLab的RPC组件,用于内部通信。

  • GitLab/GitLab Exporter:收集GitLab运行指标,用于GitLab服务监控。

  • GitLab/GitLab Grafana:用于提供仪表盘 。

  • GitLab/GitLab Pages:用于为GitLab项目生成静态网站。

  • GitLab/GitLab Shell:用于配置SSH以便访问GitLab的SSH服务器。

  • GitLab/Mailroom:电子邮件服务。

  • GitLab/GitLab Runner:用于执行CI/CD流水线任务。

  • GitLab/Sidekiq:后台任务执行组件

  • GitLab/Task Runner:用于在 GitLab 应用程序中执行定期管理任务。这些任务包括备份、Sidekiq 维护和 Rake 任务。

  • GitLab/Webservice:GitLab Web 站点。

  • PostgreSQL:关系型数据库,用于存储GitLab配置。

  • Redis:非关系数据库,用于缓存。

  • MinIO:对象存储服务器。

  • Cert-Mangager:用于自动通过Let's Encrypt申请SSL证书。

  • Prometheus:用于指标收集提供监控

  • Grafana:提供可视化的仪表盘用于指标展示

4. 域名绑定

接下来就是进行域名绑定了,首先执行kubectl get ingress -n gitlab来查看所有的ingress。命令如下:

shengjie@Thinkpad:~$ kubectl get ingress -n gitlab
NAME                        CLASS    HOSTS                   ADDRESS         PORTS     AGE
gitlab-minio                <none>   minio.shengjie.dev      20.205.104.95   80, 443   7d22h 
gitlab-registry             <none>   registry.shengjie.dev   20.205.104.95   80, 443   7d22h
gitlab-webservice-default   <none>   gitlab.shengjie.dev     20.205.104.95   80, 443   7d22h

其中minio.shengjie.dev为minio对象存储站点,registry.shengjie.dev为镜像仓库站点,gitlab.shengjie.dev 为gitlab主站点。接下来前往自己的域名提供商的管理站点,添加A记录进行域名映射。举例如下:bdceb9a53850c1befcd09cd354c17889.png做好域名绑定后,Cert-Manager组件负责申请的SSL证书就会下发成功,具体状态可以通过命令 kubectl get certificate -n gitlab查看Certificate资源确认,也可使用Lens工具通过以下步骤进行验证,当Ready状态为True时说明下方成功,即可通过域名正常访问。61fe8de62f306ce483524ec078140f30.png

5. 访问验证

由于在安装时未指定root用户密码,因此需要从命名为gitlab-gitlab-initial-root-password的Secret中获取,这里建议直接通过Lens快速查看,步骤如下图所示:9cbfc018e6bb9260feb8103d6c620d75.png打开gitlab站点,用户名输入root,密码输入上图中Base64解码的密码即可成功登录,登录成功后,如下图所示:5e88dc9f5ec52474bb5c9086da1f212e.png由于默认界面为英文展示,可以根据需要通过上图中Go to preferences前往偏好设置页面,进行语言修改。步骤如下图所示:b7c2b4b3758438e006adf7285f7d1f21.pngGitLab在安装时同时也安装了MinIO,MinIO 是一款高性能、分布式的开源对象存储系统。MinIO 为云原生而设计,对Kubernetes支持友化,其简单轻量易用,实现了对象存储所需的全部功能,与传统对象存储相比,MinIo在同等硬件配置下有更高的吞吐量和更低的延迟,目前已成为主流的对象存储系统。可以通过查看ingress发现默认绑定到域名minio.shengjie.dev。此时可以通过从命名为gitlab-minio-secret的Secret中找到用于登录的accesskeysecretkey,如下图所示:833212b8d83294f70d0b742c2b07febf.png

MinIO站点登录成功后,可以发现其预置了一些bucket(桶),其中有以下比较常用的桶:

  1. gitlab-artifacts:用于存储持续构建环节中产生的中间产物,用于在同一流水线的不同Stage中共享。

  2. gitlab-packages:用于存储如NPM 包、NutGet 包。

  3. gitlab-pages:用于存储gitlab 静态页面文件资源。

  4. registry:用于作为镜像仓库,如存储docker镜像。

  5. runner-cache:用来存储依赖项,比如从互联网上下载的软件包。

在后续的流水线配置中,将使用MinIO存储镜像文件和缓存。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/591147.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring-AOP综述

文章迁移自语雀。 今天下雪了, 完成了spring aop的应用学习, 学到了以前很多忽略的知识点,也写完了各种试验. 今天给程程分享了很多了随州下雪的场景,写了一二三, ♡程程, i miss u 等字体,在雪地上写给程程看, 还拍摄了照片和视频给她, 上午的时候,还做了一个雪人, 哈哈哈, 她…

防勒索病毒攻击的关键措施

【作者】朱向东 中原银行 高级工程师 在当今数字化时代&#xff0c;勒索病毒成为了企业和个人面临的一项严峻威胁。勒索病毒攻击可以导致数据丢失、系统瘫痪以及经济损失。为了保护自己和组织的利益&#xff0c;采取一系列的防范措施是至关重要的。下面是一些关键的措施&#…

zlib.decompressFile报错 【Bug已解决-鸿蒙开发】

文章目录 项目场景:问题描述原因分析:解决方案:方案1方案2此Bug解决方案总结寄语项目场景: 最近也是遇到了这个问题,看到网上也有人在询问这个问题,本文总结了自己和其他人的解决经验,解决了zlib.decompressFile报错 的问题。 问题: zlib.decompressFile报错,怎么解…

Find My帽子|苹果Find My技术与帽子结合,智能防丢,全球定位

帽子是戴在头部的服饰&#xff0c;多数可以覆盖头的整个顶部。主要用于保护头部&#xff0c;部分帽子会有突出的边缘&#xff0c;可以遮盖阳光。帽子亦可作打扮之用&#xff0c;也可以用来保护发型、遮盖秃头。可不同种类&#xff0c;例如贝雷帽、鸭舌帽等等。戴帽子在不同的地…

Java 8 中的 Stream 轻松遍历树形结构!

可能平常会遇到一些需求&#xff0c;比如构建菜单&#xff0c;构建树形结构&#xff0c;数据库一般就使用父id来表示&#xff0c;为了降低数据库的查询压力&#xff0c;我们可以使用Java8中的Stream流一次性把数据查出来&#xff0c;然后通过流式处理&#xff0c;我们一起来看看…

visual studio中如何指定查看WPF中某个窗口的运行效果

在 Visual Studio 中查看 WPF 窗口的运行效果通常意味着启动应用程序&#xff0c;并确保该窗口是应用程序启动时显示的第一个窗口。要做到这一点&#xff0c;您需要在应用程序的入口点&#xff08;通常是 App.xaml.cs&#xff09;指定要作为启动窗口的 WPF 窗口。 以下是如何指…

预编译仓库中的 Helm Chart

背景 内网部署项目, 没法直接hlem install , 需要提前看看有哪些镜像, 拉到本地看看 要使用预编译仓库中的 Helm Chart&#xff0c;你可以使用 helm fetch 命令来将 Chart 下载到本地&#xff0c;并使用 helm template 命令来预编译该 Chart。 首先&#xff0c;你可以使用以…

Cypress安装与使用教程(3)—— 软测大玩家

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

java 赋值运算符、自增自减运算符、关系运算符、逻辑运算符、三元运算符

一、赋值运算符 1.:把左边和右边的数据相加结果赋值给左边。 2.-把左边和右边相减赋值给左边。 3.*把左边和右边相乘赋值给左边。 4./把左边和右边相除赋值给左边。 5.%把左边和右边取余赋值给左边。 注意&#xff1a;扩展运算符包含了强制类型转换。 二、自增自减运算符…

SQL常见面试题

今天刷了一遍牛客里的必知必会题&#xff0c;一共50道题&#xff0c;大部分都比较基础&#xff0c;下面汇总一下易错题。 SQL81 顾客登录名 本题几个关键点&#xff1a; 登录名是其名称和所在城市的组合&#xff0c;因此需要使用substring()和concat()截取和拼接字段。得到登…

FL Studio 21最新版本for mac 21.2.2.3740中文解锁版2024最新图文安装教程

FL Studio 21最新版本for mac 21.2.0.3740中文解锁版是最新强大的音乐制作工具。它可以与所有类型的音乐一起创作出令人惊叹的音乐。它提供了一个非常简单且用户友好的集成开发环境&#xff08;IDE&#xff09;来工作。这个完整的音乐工作站是由比利时公司 Image-Line 开发的。…

若依生产环境中vue去除log

若依生产环境vue去除log 在main.js文件添加 // 测试环境 /dev-api 生产环境 /prod-api if (process.env.VUE_APP_BASE_API /prod-api) {//如果是生产环境 直接将log写没console.log () > {} }

模块测试:确保软件质量的关键步骤

引言&#xff1a; 在软件开发过程中&#xff0c;模块测试是确保软件质量的关键环节。通过模块化的设计和测试方法&#xff0c;可以提高开发效率、降低错误率&#xff0c;并最终提供稳定可靠的软件产品。本文将介绍模块测试的概念、重要性以及实施步骤&#xff0c;帮助读者了解如…

不知道怎么使用IDEA,一篇文章带你快速上手

前言 IDEA 是由 JetBrains 公司开发的软件产品&#xff0c;全称为 IntelliJ IDEA&#xff0c;一个 Java 语言的集成开发环境。它 —— 在业界被公认为是最好的 Java 开发工具之一&#xff0c;尤其在智能代码助手、代码自动提示、重构、J2EE 支持、Ant、JUnit、CVS 整合、代码审…

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现

经典目标检测YOLO系列(一)复现YOLOV1(3)正样本的匹配及损失函数的实现 之前&#xff0c;我们依据《YOLO目标检测》(ISBN:9787115627094)一书&#xff0c;提出了新的YOLOV1架构&#xff0c;并解决前向推理过程中的两个问题&#xff0c;继续按照此书进行YOLOV1的复现。 经典目标…

5个用于构建Web应用程序的Go Web框架

探索高效Web开发的顶级Go框架 Go&#xff08;或称为Golang&#xff09;以其简洁性、高效性和出色的标准库而闻名。然而&#xff0c;有几个流行的Go Web框架和库为构建Web应用程序提供了额外的功能。以下是五个最值得注意的Go框架&#xff1a; 1. Gin&#xff1a; Gin是一个高…

Tinker 环境下数据表的用法

如果我们要自己手动创建一个模型文件&#xff0c;最简单的方式是通过 make:model 来创建。 php artisan make:model Article 删除模型文件 rm app/Models/Article.php 创建模型的同时顺便创建数据库迁移 php artisan make:model Article -m Eloquent 表命名约定 在该文件中&am…

Spark之Dynamic Resource Allocation

文章目录 Dynamic Resource Allocation请求策略移除策略移除存在的问题相关参数 Dynamic Resource Allocation Spark提供一种基于负载使用情况来动态调整application资源的机制。 DRA机制在所有的调度模式下均支持&#xff0c;但默认禁用DRA机制就是用于动态调整executor的数…

SIC产业链简述

同第一代硅半导体产业链类似&#xff0c;SiC产业链也分为以下几个环节&#xff1a; 设备和材料环节&#xff0c;包括晶体生长炉、MOCVD、切割设备、碳粉/硅粉/SiC粉体、石墨件等耗材&#xff1b; SiC衬底合外延环节&#xff0c;包括导SiC晶体生长、衬底晶片、外延片等制造&am…

KVM虚拟机部署K8S重启后/etc/hosts内容丢失

前言 使用KVM开了虚拟机部署K8S&#xff0c;部署完成后重启&#xff0c;节点的pod等信息无法获取到&#xff0c;查看报错初步推测为域名解析失效&#xff0c;查看/etc/hosts后发现安装k8s时添加的内容全部消失 网上搜索一番之后发现了 如果直接修改 /etc/hosts 文件&#xff0…