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 应用程序,同时提供一…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...

理解 MCP 工作流:使用 Ollama 和 LangChain 构建本地 MCP 客户端
🌟 什么是 MCP? 模型控制协议 (MCP) 是一种创新的协议,旨在无缝连接 AI 模型与应用程序。 MCP 是一个开源协议,它标准化了我们的 LLM 应用程序连接所需工具和数据源并与之协作的方式。 可以把它想象成你的 AI 模型 和想要使用它…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...

微信小程序云开发平台MySQL的连接方式
注:微信小程序云开发平台指的是腾讯云开发 先给结论:微信小程序云开发平台的MySQL,无法通过获取数据库连接信息的方式进行连接,连接只能通过云开发的SDK连接,具体要参考官方文档: 为什么? 因为…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...

基于Springboot+Vue的办公管理系统
角色: 管理员、员工 技术: 后端: SpringBoot, Vue2, MySQL, Mybatis-Plus 前端: Vue2, Element-UI, Axios, Echarts, Vue-Router 核心功能: 该办公管理系统是一个综合性的企业内部管理平台,旨在提升企业运营效率和员工管理水…...