kubernetes基于helm部署gitlab-operator
kubernetes基于helm部署gitlab-operator
这篇博文介绍如何在 Kubernetes 中使用helm部署 GitLab-operator。
先决条件
- 已运行的 Kubernetes 集群
- 负载均衡器,为ingress-nginx控制器提供EXTERNAL-IP,本示例使用metallb
- 默认存储类,为gitlab pods提供持久化存储,本示例使用openebs
- cert-manager,为gitlab提供自签名证书
root@ubuntu:~# kubectl -n metallb-system get pods
NAME READY STATUS RESTARTS AGE
metallb-controller-7d644d8b89-8748v 1/1 Running 0 10d
metallb-speaker-mbjfb 1/1 Running 0 10droot@ubuntu:~# kubectl get sc
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
openebs-hostpath (default) openebs.io/local Delete WaitForFirstConsumer false 10droot@ubuntu:~# kubectl -n cert-manager get pods
NAME READY STATUS RESTARTS AGE
cert-manager-7bd4d4cdff-8fbtb 1/1 Running 0 10d
cert-manager-cainjector-5cdc7f9c66-k494w 1/1 Running 0 10d
cert-manager-webhook-77c8d4fd8d-lwxxt 1/1 Running 0 10d
项目地址:https://gitlab.com/gitlab-org/cloud-native/gitlab-operator
官方文档:https://docs.gitlab.com/operator/installation.html
部署gitlab-operator
添加gitlab-operator helm 仓库
helm repo add gitlab-operator https://gitlab.com/api/v4/projects/18899486/packages/helm/stable
使用helm部署gitlab-operator
helm upgrade --install gitlab-operator gitlab-operator/gitlab-operator \--namespace gitlab-system \--create-namespace
查看运行的gitlab-operator pods
root@ubuntu:~# kubectl -n gitlab-system get pods
NAME READY STATUS RESTARTS AGE
gitlab-controller-manager-8f9956d6f-78h26 2/2 Running 0 22s
创建 GitLab 自定义资源 (CR)
$ cat mygitlab.yaml
apiVersion: apps.gitlab.com/v1beta1
kind: GitLab
metadata:name: gitlabnamespace: gitlab-system
spec:chart:version: "7.1.2" # https://gitlab.com/gitlab-org/cloud-native/gitlab-operator/-/blob/master/CHART_VERSIONSvalues:global:edition: cehosts:domain: example.comingress:configureCertmanager: truecertmanager-issuer:email: youremail@example.com
部署gitlab实例
kubectl apply -f mygitlab.yaml
查看运行的pods
root@ubuntu:~# kubectl -n gitlab-system get pods
NAME READY STATUS RESTARTS AGE
gitlab-controller-manager-8f9956d6f-78h26 2/2 Running 0 6m20s
gitlab-gitaly-0 1/1 Running 0 4m2s
gitlab-gitlab-exporter-5995f6684b-fjpjz 1/1 Running 0 3m20s
gitlab-gitlab-shell-7994f99cb6-r2s8n 1/1 Running 0 3m21s
gitlab-kas-766596f95c-4ljtx 1/1 Running 0 3m20s
gitlab-migrations-1-f92-1-4rhpc 0/1 Completed 0 3m20s
gitlab-minio-597fdc58cd-74k6r 1/1 Running 0 4m2s
gitlab-minio-create-buckets-1-wghhz 0/1 Completed 0 4m2s
gitlab-nginx-ingress-controller-cdb4f99d6-l9tqm 1/1 Running 0 4m22s
gitlab-nginx-ingress-controller-cdb4f99d6-pmf9p 1/1 Running 0 4m22s
gitlab-postgresql-0 2/2 Running 0 4m2s
gitlab-redis-master-0 2/2 Running 0 4m2s
gitlab-registry-ddb69f4c9-cqrrq 1/1 Running 0 3m21s
gitlab-shared-secrets-1-z8p-ntk7g 0/1 Completed 0 4m22s
gitlab-sidekiq-all-in-1-v2-74489fc8b9-b7s2z 1/1 Running 0 87s
gitlab-toolbox-668cb9bdc7-nhx89 1/1 Running 0 3m20s
gitlab-webservice-default-558795cff7-zvwsq 2/2 Running 0 87s
查看service,确认gitlab-nginx-ingress-controller
service是否分配EXTERNAL-IP
root@ubuntu:~# kubectl -n gitlab-system get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
gitlab-controller-manager-metrics-service ClusterIP 10.96.0.121 <none> 8443/TCP 6m48s
gitlab-gitaly ClusterIP None <none> 8075/TCP,9236/TCP 4m30s
gitlab-gitlab-exporter ClusterIP 10.96.0.110 <none> 9168/TCP 3m48s
gitlab-gitlab-shell ClusterIP 10.96.3.153 <none> 22/TCP 3m49s
gitlab-kas ClusterIP 10.96.3.81 <none> 8150/TCP,8153/TCP,8154/TCP,8151/TCP 3m48s
gitlab-minio-svc ClusterIP 10.96.0.154 <none> 9000/TCP 4m30s
gitlab-nginx-ingress-controller LoadBalancer 10.96.3.92 192.168.72.200 80:31118/TCP,443:30763/TCP,22:32004/TCP 4m50s
gitlab-nginx-ingress-controller-metrics ClusterIP 10.96.2.133 <none> 10254/TCP 4m50s
gitlab-postgresql ClusterIP 10.96.2.120 <none> 5432/TCP 4m30s
gitlab-postgresql-hl ClusterIP None <none> 5432/TCP 4m30s
gitlab-postgresql-metrics ClusterIP 10.96.0.76 <none> 9187/TCP 4m30s
gitlab-redis-headless ClusterIP None <none> 6379/TCP 4m30s
gitlab-redis-master ClusterIP 10.96.3.221 <none> 6379/TCP 4m30s
gitlab-redis-metrics ClusterIP 10.96.0.82 <none> 9121/TCP 4m30s
gitlab-registry ClusterIP 10.96.1.1 <none> 5000/TCP 3m49s
gitlab-webhook-service ClusterIP 10.96.2.47 <none> 443/TCP 6m48s
gitlab-webservice-default ClusterIP 10.96.2.13 <none> 8080/TCP,8181/TCP,8083/TCP 3m48s
查看ingress
root@ubuntu:~# kubectl -n gitlab-system get ingress
NAME CLASS HOSTS ADDRESS PORTS AGE
gitlab-kas gitlab-nginx kas.cloudce.com 192.168.72.201 80, 443 4m17s
gitlab-minio gitlab-nginx minio.cloudce.com 192.168.72.201 80, 443 4m59s
gitlab-registry gitlab-nginx registry.cloudce.com 192.168.72.201 80, 443 4m18s
gitlab-webservice-default gitlab-nginx gitlab.cloudce.com 192.168.72.201 80, 443 4m17s
查看pv卷
root@ubuntu:~# kubectl -n gitlab-system get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-0465c308-b141-409a-b6bc-24045c2ec944 8Gi RWO Delete Bound gitlab-system/data-gitlab-postgresql-0 openebs-hostpath 5m33s
pvc-49fae8fb-ce89-4001-888d-03aa39bd2143 8Gi RWO Delete Bound gitlab-system/redis-data-gitlab-redis-master-0 openebs-hostpath 5m32s
pvc-7a77d996-1115-4a1c-9bb0-d3fe91441482 50Gi RWO Delete Bound gitlab-system/repo-data-gitlab-gitaly-0 openebs-hostpath 5m34s
pvc-ea6981f6-742b-40c8-be1e-ad7cea21845c 10Gi RWO Delete Bound gitlab-system/gitlab-minio openebs-hostpath 5m32s
访问gitlab
获取gitlab UI root
用户的登陆密码
root@ubuntu:~# kubectl -n gitlab-system get secret gitlab-gitlab-initial-root-password -ojsonpath='{.data.password}' | base64 --decode ; echo
bvTyB0UUwXA3VhVywKOIzdD29KVJV64LB2Td0pyzAJUYe8pcTTOFSYla1SVpXeIx
获取gitlab UI 登陆的URL地址,如果设置 global.hosts.domain=example.com
,那么访问地址为
https://gitlab.example.com
配置本地域名解析,其中192.168.72.200
为上文gitlab-nginx-ingress-controller service的EXTERNAL-IP
gitlab.example.com 192.168.72.200
登录gitlab后界面如下:
相关文章:

kubernetes基于helm部署gitlab-operator
kubernetes基于helm部署gitlab-operator 这篇博文介绍如何在 Kubernetes 中使用helm部署 GitLab-operator。 先决条件 已运行的 Kubernetes 集群负载均衡器,为ingress-nginx控制器提供EXTERNAL-IP,本示例使用metallb默认存储类,为gitlab p…...
ChatGPT在在线客服和呼叫中心中的应用如何?
ChatGPT在在线客服和呼叫中心领域中有广泛的应用潜力,可以帮助企业提供更高效、个性化和满意度更高的客户服务体验。以下是详细的讨论: **1. 自动化客服:** ChatGPT可以用于自动化客服流程,通过自动回复用户的常见问题和查询&…...

C++多线程环境下的单例类对象创建
使用C无锁编程实现多线程下的单例模式 贺志国 2023.8.1 在多线程环境下创建一个类的单例对象,要比单线程环境下要复杂很多。下面介绍在多线程环境下实现单例模式的几种方法。 一、尺寸较小的类单例对象创建 如果待创建的单例类SingletonForMultithread内包含的成…...
“深入解析JVM内部机制:从字节码到垃圾回收“
标题:深入解析JVM内部机制:从字节码到垃圾回收 摘要:本文将从字节码生成、类加载、运行时数据区域和垃圾回收等方面深入解析JVM的内部机制,并通过示例代码展示其工作原理和实践应用。 正文: 一、字节码生成 JVM是基…...
音频系统项目与音频算法研究方向分类
+我V hezkz17进数字音频系统研究开发交流答疑群(课题组) 音频系统项目与音频算法研究方向分类 一 音频系统项目产品分类 1 收音机,数字收音机,复读机 2 耳机,蓝牙耳机,TWS蓝牙耳机, 3 立体声音箱,AI智能音箱, 4 音频功放,车载功放, 5 音响,普通音响,Soundbar音响…...

单例模式和工厂模式
目录 今日良言:关关难过关关过,步步难行步步行 一、单例模式 1.饿汉模式 2.懒汉模式 二、工厂模式 今日良言:关关难过关关过,步步难行步步行 一、单例模式 首先来解释一下,什么是单例模式。 单例模式也就是单个…...

两个镜头、视野、分辨率不同的相机(rgb、红外)的视野校正
文章目录 背景实际效果查找资料资料1资料2 解决方案最终结果 背景 目前在做的项目用到两个摄像头,一个是热成像摄像头、另一个是普通的rgb摄像头。 一开始的目标是让他们像素级重合,使得点击rgb图像时,即可知道其像素对应的温度。但是在尝试…...

kettle 连接jdbc
DM JDBC连接 oracle JDBC连接 PG JDBC连接 SQLSERVER JDBC连接...

PyTorch中加载模型权重 A匹配B|A不匹配B
在做深度学习项目时,从头训练一个模型是需要大量时间和算力的,我们通常采用加载预训练权重的方法,而我们往往面临以下几种情况: 未修改网络,A与B一致 很简单,直接.load_state_dict() net ANet(num_cla…...
@FeignClient指定多个url实现负载均衡
C知道回答的如下: 在使用 FeignClient 调用多个 URL 实现负载均衡时,可以使用 Spring Cloud Ribbon 提供的功能来实现。下面是一个示例代码: 首先,在Spring Boot主类上添加EnableFeignClients注解启用Feign Client功能。 Spring…...

vue diff 双端比较算法
文章目录 双端指针比较策略命中策略四命中策略二命中策略三命中策略一未命中四种策略,遍历旧节点列表新增情况一新增情况二 删除节点双端比较的优势 双端指针 使用四个变量 oldStartIdx、oldEndIdx、newStartIdx 以及 newEndIdx 分别存储旧 children 和新 children …...
初识React: 基础(概念 特点 高效原因 虚拟DOM JSX语法 组件)
1.什么是React? React是一个由Facebook开源的JavaScript库,它主要用于构建用户界面。React的特点是使用组件化的思想来构建界面,使得代码的可复用性和可维护性大大提高。React还引入了虚拟DOM的概念,减少了对真实DOM的直接操作,…...

自监督去噪:Neighbor2Neighbor原理分析与总结
文章目录 1. 方法原理1.1 先前方法总结1.2 Noise2Noise回顾1.3 从Noise2Noise到Neighbor2Neighbor1.4 框架结构2. 实验结果3. 总结 文章链接:https://arxiv.org/abs/2101.02824 参考博客:https://arxiv.org/abs/2101.02824 1. 方法原理 1.1 先前方法总…...

简单工厂模式(Simple Factory)
简单工厂模式,又称为静态工厂方法(Static Factory Method)模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式不属于GoF的23个…...

Agent:OpenAI的下一步,亚马逊云科技站在第5层
什么是Agent?在大模型语境下,可以理解成能自主理解、规划、执行复杂任务的系统。Agent也将成为新的起点,成为各行各业构建新一代AI应用必不可少的组成部分。 对此,初创公司Seednapse AI创始人提出构建AI应用的五层基石理论&#…...

JMeter 4.x 简单使用
文章目录 前言JMeter 4.x 简单使用1. 启动2. 设置成中文3. 接口测试3.1. 设置线程组3.2. HTTP信息请求头管理器3.3. 添加HTTP请求默认值3.4. 添加HTTP cookie 管理3.5. 添加http请求3.5.1. 添加断言 3.6. 添加监听器-查看结果树3.7. 添加监听器-聚合报告 4. 测试 前言 如果您觉…...
深入NLTK:Python自然语言处理库高级教程
在前面的初级和中级教程中,我们了解了NLTK库中的基本和进阶功能,如词干提取、词形还原、n-gram模型和词云的绘制等。在本篇高级教程中,我们将深入探索NLTK的更多高级功能,包括句法解析、命名实体识别、情感分析以及文本分类。 一…...
React 用来解析html 标签的方法
在React中,解析HTML标签通常是使用JSX(JavaScript XML)语法的一部分。JSX允许您在JavaScript代码中编写类似HTML的标记,然后通过React进行解析和渲染。 以下是React中解析HTML标签的几种常见方式: 直接在JSX中使用标…...

【C++】做一个飞机空战小游戏(五)——getch()控制两个飞机图标移动(控制光标位置)
[导读]本系列博文内容链接如下: 【C】做一个飞机空战小游戏(一)——使用getch()函数获得键盘码值 【C】做一个飞机空战小游戏(二)——利用getch()函数实现键盘控制单个字符移动【C】做一个飞机空战小游戏(三)——getch()函数控制任意造型飞机图标移动 【C】做一个飞…...

Flask 是什么?Flask框架详解及实践指南
Flask 是一个轻量级的 Python Web 框架,它被广泛用于构建 Web 应用程序和 API。Flask 简单易用,具有灵活性和可扩展性,是许多开发者喜欢用其构建项目的原因。本文将介绍 Flask 是什么以及如何使用它来构建 Web 应用程序,同时提供一…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

【7色560页】职场可视化逻辑图高级数据分析PPT模版
7种色调职场工作汇报PPT,橙蓝、黑红、红蓝、蓝橙灰、浅蓝、浅绿、深蓝七种色调模版 【7色560页】职场可视化逻辑图高级数据分析PPT模版:职场可视化逻辑图分析PPT模版https://pan.quark.cn/s/78aeabbd92d1...

Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...

Python环境安装与虚拟环境配置详解
本文档旨在为Python开发者提供一站式的环境安装与虚拟环境配置指南,适用于Windows、macOS和Linux系统。无论你是初学者还是有经验的开发者,都能在此找到适合自己的环境搭建方法和常见问题的解决方案。 快速开始 一分钟快速安装与虚拟环境配置 # macOS/…...