K8S部署GitLab

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

  • 一、概述
  • 二、持久化存储安装
    • 1. 安装ebs
    • 2. 查看ebs集群服务
    • 3. 设置ebs为默认
  • 三、创建命名空间
  • 四、账号密码
  • 五、创建文件夹
  • 六、Postgresql部署
    • 1. 持久化配置
      • 1.1 文件创建
      • 1.2 部署命令
      • 1.3 查看服务
    • 2. 部署配置
      • 2.1 文件创建
      • 2.2 部署命令
      • 2.3查看服务
    • 3. 服务配置
      • 3.1 文件创建
      • 3.2 部署命令
      • 3.3 查看服务
  • 七、Redis部署
    • 1. 持久化配置
      • 1.1 文件创建
      • 1.2 部署命令
      • 1.3 查看服务
    • 2. 部署配置
      • 2.1 文件创建
      • 2.2 部署命令
      • 2.3 查看服务
    • 3. 服务配置
      • 3.1 文件创建
      • 3.2 部署命令
      • 3.3 查看服务
  • 八、GitLab部署
    • 1. 持久化配置
      • 1.1 文件创建
      • 1.2 部署命令
      • 1.3 查看服务
    • 2. 部署配置
      • 2.1 文件创建
      • 2.2 部署命令
      • 2.3 查看服务
    • 3. 服务配置
      • 3.1 文件创建
      • 3.2 部署命令
      • 3.3 查看服务
  • 九、访问GitLab


一、概述

在k8s中部署gitlab,然后使用gitlab来实现代码打包到打镜像再到使用镜像自动生成容器服务的过程
gitlab部署主要有三个部分,用到了reids、postgresql、gitlab,将三个应用配置好之后启动即可安装gitlab


二、持久化存储安装

安装持久化存储工具,可以使用nfs或ebs
安装后在配置持久化时可根据安装的持久化工具将storageClassName参数的值填充:
如果安装的是nfs则可以是
storageClassName: “managed-nfs-storage”
如果安装的是ebs则可以是
storageClassName: openebs-hostpath

以ebs为例

1. 安装ebs

kubectl apply -f https://openebs.github.io/charts/openebs-operator.yaml

在这里插入图片描述

2. 查看ebs集群服务

查看集群的StorageClass

kubectl get sc

在这里插入图片描述

3. 设置ebs为默认

设置openobs-hostpath为default

kubectl patch storageclass openebs-hostpath -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'

在这里插入图片描述


三、创建命名空间

在部署之前先创建一个namespace用于分类管理服务
创建一个名为gitlab-dev的命名空间

kubectl create namespace gitlab-dev

四、账号密码

分别创建存储账号和密码的文件
账号文件username,用于存储账号信息

echo -n "gitlab-admin" > ./username

密码文件password,用于存储密码信息

echo -n "gitlab.123" > ./password

查看文件

ls

查看文件内容

cat ./username
cat ./password

在这里插入图片描述

secret对象生成

kubectl create secret generic git-user-pass --from-file=./username --from-file=./password -n gitlab-dev

在这里插入图片描述

查看secret

kubectl -n gitlab-dev get secret git-user-pass -o yaml

在这里插入图片描述
拓展:
如果创建错误或者想重新创建secret,则需先删除

kubectl delete secret git-user-pass -n gitlab-dev

五、创建文件夹

创建gitlab-yaml文件夹用于存储gitlab相关的yaml部署文件

mkdir -p gitlab-yaml

在这里插入图片描述


六、Postgresql部署

为了方便管理以及后续修改更新文件,本篇对每个结构部分都创建一个yaml文件,且创建的文件都放在当前目录下的gitlab-yaml文件夹下,后续redis和gitlab的部分与此相同

参数:
pgs:Postgresql
dplm:Deployment
pvc:PersistentVolumeClaim
svc:Service

1. 持久化配置

pgs-pvc.yaml

1.1 文件创建

创建文件pgs-pvc.yaml

vim ./gitlab-yaml/pgs-pvc.yaml

将以下内容复制粘贴到文件中,其中name可自定义,namespace前面创建了gitlab-dev

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: pgs-pvcnamespace: gitlab-dev
spec:accessModes:- ReadWriteOncestorageClassName: openebs-hostpathresources:requests:storage: 1Gi

查看文件内容

cat ./gitlab-yaml/pgs-pvc.yaml

在这里插入图片描述

1.2 部署命令

根据文件来部署服务

kubectl apply -f ./gitlab-yaml/pgs-pvc.yaml

在这里插入图片描述

1.3 查看服务

查看创建的服务

kubectl get pvc -n gitlab-dev pgs-pvc

在这里插入图片描述
注:如需删除创建的服务请参考:kubectl操作命令集合

2. 部署配置

pgs-dplm.yaml

2.1 文件创建

创建文件pgs-dplm.yaml

vim ./gitlab-yaml/pgs-dplm.yaml

注:公有镜像可省略版本号,默认拉取最新版本。私有镜像必须加版本号,不然部署不成功,Pod状态显示Pending
将以下内容复制粘贴到文件中

apiVersion: apps/v1
kind: Deployment
metadata:name: postgresqlnamespace: gitlab-devlabels:name: postgresql
spec:replicas: 1selector:matchLabels:name: postgresqltemplate:metadata:name: postgresqllabels:name: postgresqlspec:#nodeSelector:#key: gitlab-devcontainers:- name: postgresqlimage: sameersbn/postgresqlimagePullPolicy: IfNotPresentenv:- name: DB_USERvalue: gitlab- name: DB_PASSvalue: passw0rd- name: DB_NAMEvalue: gitlab_production- name: DB_EXTENSIONvalue: pg_trgmports:- name: postgrescontainerPort: 5432volumeMounts:- mountPath: /var/lib/postgresqlname: datalivenessProbe:exec:command:- pg_isready- -h- localhost- -U- postgresinitialDelaySeconds: 30timeoutSeconds: 5readinessProbe:exec:command:- pg_isready- -h- localhost- -U- postgresinitialDelaySeconds: 5timeoutSeconds: 1volumes:- name: datapersistentVolumeClaim:claimName: pgs-pvc

注:nodeSelector的key的值就是namespace,最后的claimName的值是持久化配置文件的名称pgs-pvc
查看文件内容

cat ./gitlab-yaml/pgs-dplm.yaml

在这里插入图片描述

2.2 部署命令

部署服务

kubectl apply -f ./gitlab-yaml/pgs-dplm.yaml

在这里插入图片描述

2.3查看服务

查看已创建的服务

kubectl get pod -n gitlab-dev

在这里插入图片描述
注:pod启动需要一点时间,开始状态为ContainerCreating,过一会才会显示Running

3. 服务配置

pgs-svc.yaml

3.1 文件创建

创建文件pgs-svc.yaml

vim ./gitlab-yaml/pgs-svc.yaml

将以下内容复制粘贴到文件中

apiVersion: v1
kind: Service
metadata:name: postgresqlnamespace: gitlab-devlabels:name: postgresql
spec:ports:- name: postgresport: 5432targetPort: postgresselector:name: postgresql

查看文件内容

cat ./gitlab-yaml/pgs-svc.yaml

在这里插入图片描述

3.2 部署命令

部署服务

kubectl apply -f ./gitlab-yaml/pgs-svc.yaml

在这里插入图片描述

3.3 查看服务

查看已部署的服务

kubectl get svc -n gitlab-dev

在这里插入图片描述

七、Redis部署

数据缓存redis

1. 持久化配置

redis-pvc.yaml

1.1 文件创建

创建文件redis-pvc.yaml

vim ./gitlab-yaml/redis-pvc.yaml

将以下内容复制粘贴到文件中

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: redis-pvcnamespace: gitlab-dev
spec:accessModes:- ReadWriteOncestorageClassName: openebs-hostpathresources:requests:storage: 1Gi

查看文件内容

cat ./gitlab-yaml/redis-pvc.yaml

在这里插入图片描述

1.2 部署命令

部署服务

kubectl apply -f ./gitlab-yaml/redis-pvc.yaml

在这里插入图片描述

1.3 查看服务

查看已部署的服务

kubectl get pvc -n gitlab-dev redis-pvc

在这里插入图片描述

2. 部署配置

redis-dplm.yaml

2.1 文件创建

创建redis-dplm.yaml文件

vim ./gitlab-yaml/redis-dplm.yaml

注:公有镜像可省略版本号,默认拉取最新版本。私有镜像必须加版本号,不然部署不成功,Pod状态显示Pending
将以下内容复制粘贴到文件中

apiVersion: apps/v1
kind: Deployment
metadata:name: redisnamespace: gitlab-devlabels:name: redis
spec:replicas: 2selector:matchLabels:name: redistemplate:metadata:name: redislabels:name: redisspec:#nodeSelector:#key: gitlab-devcontainers:- name: redisimage: sameersbn/redisimagePullPolicy: IfNotPresentports:- name: rediscontainerPort: 6379volumeMounts:- mountPath: /var/lib/redisname: datalivenessProbe:exec:command:- redis-cli- pinginitialDelaySeconds: 30timeoutSeconds: 5readinessProbe:exec:command:- redis-cli- pinginitialDelaySeconds: 5timeoutSeconds: 1volumes:- name: datapersistentVolumeClaim:claimName: redis-pvc

查看文件内容

cat ./gitlab-yaml/redis-dplm.yaml

在这里插入图片描述

2.2 部署命令

部署服务

kubectl apply -f ./gitlab-yaml/redis-dplm.yaml

在这里插入图片描述

2.3 查看服务

查看已部署的服务

kubectl get pod -n gitlab-dev

在这里插入图片描述

因为文件中配置的副本数为2,故生成了两个redis的pod

3. 服务配置

redis-svc.yaml

3.1 文件创建

创建文件redis-svc.yaml

vim ./gitlab-yaml/redis-svc.yaml

讲一下内容复制粘贴进文件中

apiVersion: v1
kind: Service
metadata:name: redis-svcnamespace: gitlab-devlabels:name: redis-svc
spec:ports:- name: redisport: 6379targetPort: redisselector:name: redis

查看文件内容

cat ./gitlab-yaml/redis-svc.yaml

在这里插入图片描述

3.2 部署命令

部署服务

kubectl apply -f ./gitlab-yaml/redis-svc.yaml

在这里插入图片描述

3.3 查看服务

查看已部署的服务

kubectl get svc -n gitlab-dev redis-svc

在这里插入图片描述

八、GitLab部署

gitlab

1. 持久化配置

gitlab-pvc.yaml

1.1 文件创建

创建文件gitlab-pvc.yaml

vim ./gitlab-yaml/gitlab-pvc.yaml

将以下内容复制粘贴到文件中

apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: gitlab-pvcnamespace: gitlab-dev
spec:accessModes:- ReadWriteOncestorageClassName: openebs-hostpathresources:requests:storage: 5Gi

查看文件内容

cat ./gitlab-yaml/gitlab-pvc.yaml

在这里插入图片描述

1.2 部署命令

部署服务

kubectl apply -f ./gitlab-yaml/gitlab-pvc.yaml

在这里插入图片描述

1.3 查看服务

查看已部署的服务

kubectl get pvc -n gitlab-dev gitlab-pvc

在这里插入图片描述

2. 部署配置

gitlab-dplm.yaml

2.1 文件创建

创建文件gitlab-dplm.yaml

vim ./gitlab-yaml/gitlab-dplm.yaml

注:公有镜像可省略版本号,默认拉取最新版本。私有镜像必须加版本号,不然部署不成功,Pod状态显示Pending
讲一下内容复制粘贴到文件中

apiVersion: apps/v1
kind: Deployment
metadata:name: gitlabnamespace: gitlab-devlabels:name: gitlab
spec:replicas: 1selector:matchLabels:name: gitlabtemplate:metadata:name: gitlablabels:name: gitlabspec:#nodeSelector:#key: gitlab-devcontainers:- name: gitlabimage: sameersbn/gitlabimagePullPolicy: IfNotPresentenv:- name: TZvalue: Asia/Shanghai- name: GITLAB_TIMEZONEvalue: Beijing- name: GITLAB_SECRETS_DB_KEY_BASEvalue: long-and-random-alpha-numeric-string- name: GITLAB_SECRETS_SECRET_KEY_BASEvalue: long-and-random-alpha-numeric-string- name: GITLAB_SECRETS_OTP_KEY_BASEvalue: long-and-random-alpha-numeric-string- name: GITLAB_ROOT_PASSWORD#value: admin321valueFrom:secretKeyRef:name: git-user-passkey: password- name: GITLAB_ROOT_EMAILvalue: hslb@163.com- name: GITLAB_HOSTvalue: gitlab.hslb.com- name: GITLAB_PORTvalue: "30021"- name: GITLAB_SSH_PORTvalue: "30022"- name: GITLAB_NOTIFY_ON_BROKEN_BUILDSvalue: "true"- name: GITLAB_NOTIFY_PUSHERvalue: "false"- name: GITLAB_BACKUP_SCHEDULEvalue: daily- name: GITLAB_BACKUP_TIMEvalue: 01:00- name: DB_TYPEvalue: postgres- name: DB_HOSTvalue: postgresql- name: DB_PORTvalue: "5432"- name: DB_USERvalue: gitlab- name: DB_PASSvalue: passw0rd- name: DB_NAMEvalue: gitlab_production- name: REDIS_HOSTvalue: redis- name: REDIS_PORTvalue: "6379"ports:- name: httpcontainerPort: 80- name: sshcontainerPort: 22volumeMounts:- mountPath: /home/git/dataname: datalivenessProbe:httpGet:path: /port: 80initialDelaySeconds: 180timeoutSeconds: 5readinessProbe:httpGet:path: /port: 80initialDelaySeconds: 5timeoutSeconds: 1volumes:- name: datapersistentVolumeClaim:claimName: gitlab-pvc

GITLAB_ROOT_PASSWORD 密码部分,可以直接将值设为密码,这里从第二章中设置的密码文件中读取
GITLAB_ROOT_EMAIL 邮箱部分,自定义即可
GITLAB_HOST 主机地址,可自定义

查看文件内容

cat ./gitlab-yaml/gitlab-dplm.yaml

在这里插入图片描述

2.2 部署命令

部署服务

kubectl apply -f ./gitlab-yaml/gitlab-dplm.yaml

在这里插入图片描述

2.3 查看服务

查看已部署的服务

kubectl get pod -n gitlab-dev

在这里插入图片描述

3. 服务配置

gitlab-svc.yaml

3.1 文件创建

创建文件gitlab-svc.yaml

vim ./gitlab-yaml/gitlab-svc.yaml

将以下内容复制粘贴到文件中

apiVersion: v1
kind: Service
metadata:name: gitlabnamespace: gitlab-devlabels:name: gitlab
spec:ports:- name: httpport: 80targetPort: httpnodePort: 30021- name: sshport: 22targetPort: sshnodePort: 30022selector:name: gitlabtype: NodePort

查看文件内容

cat ./gitlab-yaml/gitlab-svc.yaml

在这里插入图片描述

3.2 部署命令

部署服务

kubectl apply -f ./gitlab-yaml/gitlab-svc.yaml

在这里插入图片描述

3.3 查看服务

查看已部署的服务

kubectl get svc -n gitlab-dev

在这里插入图片描述

以上就是redis、postgresql、gitlab三个部分的部署,如果出现问题需要删除创建的服务,可参考以下命令
部署pvc

kubectl apply -f ./gitlab-yaml/pgs-pvc.yaml
kubectl apply -f ./gitlab-yaml/redis-pvc.yaml
kubectl apply -f ./gitlab-yaml/gitlab-pvc.yaml

查看pvc

kubectl get pvc -n gitlab-dev

删除指定pvc

kubectl delete pvc pgs-pvc -n gitlab-dev

删除全部pvc (bukeyong)

kubectl delete pvc -n gitlab-dev

部署pod

kubectl apply -f ./gitlab-yaml/pgs-dplm.yaml
kubectl apply -f ./gitlab-yaml/redis-dplm.yaml
kubectl apply -f ./gitlab-yaml/gitlab-dplm.yaml

查看pod

kubectl get pod -n gitlab-dev

删除无副本设置的pod

kubectl delete pod postgresql -n gitlab-dev

删除设置副本的pod

kubectl delete deployment postgresql -n gitlab-dev

部署svc

kubectl apply -f ./gitlab-yaml/pgs-svc.yaml
kubectl apply -f ./gitlab-yaml/redis-svc.yaml
kubectl apply -f ./gitlab-yaml/gitlab-svc.yaml

查看svc

kubectl get svc -n gitlab-dev

删除指定svc

kubectl delete svc postgresql -n gitlab-dev

删除全部svc

kubectl delete svc -n gitlab-dev

注:此注释可无视,由于操作是在阿里云服务器的运维管理浏览器窗口操作,复制粘贴功能有瑕疵导致内容格式会错乱,故安装了ossutil工具,在本地创建了文件后上传到oss然后再拉取到服务器指定位置(gitlab-yaml文件夹),如有需要可参考linux服务器中oss工具安装和上传下载文件


九、访问GitLab

关于yaml文件中image参数的写法格式
https://blog.csdn.net/m0_46629123/article/details/124144654
官网的image可以省略tag
但是私有的image必须带上tag


感谢阅读,祝君暴富!

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

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

相关文章

Jmeter相关知识介绍

Jmeter 是Apache 组织开发的基于JAVA 的压力测试工具,用于对软件做压力测试,特别适合于WEB 应用测试(包括压力,接口测试) 今天简单介绍Jemeter的入门相关概念的理解 一、在安装目录下有一个Bin\Jmeter.bat 双击打开 打开之后是一个这样的界面 二、测试计划 1、添加和删…

【Python机器学习】线性模型——lasso

除了岭回归,还有一种正则化的线性回归是lasso,与岭回归相同,使用lasso也是约束系数使其接近于0,但方法不同,叫做L1正则化。L1正则化的结果是使用lasso时某些系数刚好为0。说明某些特征被模型完全忽略。 同样以波士顿房…

亚马逊自养号测评:提升商品排名与流量的必要操作

自养号测评是通过使用自主注册的海外买家账号,对商品进行评价,以提升其在平台上的排名和流量的操作。卖家选择自养号这种方式来增强商品的曝光度和吸引更多潜在买家。然而,养号并非易事,需要卖家提高养号技术、掌握相应技巧&#…

SonarQube 漏洞扫描

SonarQube 漏洞扫描 一、部署服务 1.1 docker方式部署 #安装docker curl -L download.beyourself.org.cn/shell-project/os/get-docker-latest.sh | sh yum install -y docker-compose #进去输入:set paste可以保证不穿行 [rootlocalhost sonar]# vim docker-compose.yml v…

git本地创建分支并推送到远程关联起来

git本地创建分支并推送到远程关联起来 git本地基于当前分支创建个新的分支,然后推送到远程,并把本地新创建的分支和远程分支关联 在当前分支下,新建分支 git checkout -b test推送到远程仓库 git push origin test将本地分支和远程分支关联…

0基础学习VR全景平台篇第134篇:720VR全景,云台调整节点

相机、云台和脚架全套设备组装完成后需要进行调校才能开始拍摄。这一节,我们将主要介绍云台调整的两个内容:对中心靶、调三点一线。(后附调校原理) 云台部件名称 一、调节准备 (一)对于安装好的云台 1.检…

音量控制软件sound control mac功能亮点

sound control mac可以帮助用户控制某个独立应用程序的音量,通过每应用音量,均衡器,平衡和音频路由独立控制每个应用的音频,还有整个系统的音量。 sound control mac功能亮点 每个应用程序的音量控制 独立控制应用的数量。 键盘音…

docker安装nodejs,并更改为淘宝源

拉取官方 Node.js 镜像 docker pull node:latest创建 Dockerfile,并更改 NPM 下载源为淘宝源,设置为全局持久化 # 使用最新版本的Node.js作为基础镜像 FROM node:latest# 设置工作目录为/app WORKDIR /app # 更改 NPM 下载源为淘宝源,并设置…

让桥梁学会“说话”

背景 2023年7月6日凌晨时分,G5012恩广高速达万段230公里加80米处6号大桥部分桥面发生垮塌,导致造成2车受损后自燃,3人受轻伤。目前,四川省公安厅交通警察总队高速公路五支队十四大队民警已对现场进行双向管制。 作为世界第一桥梁…

Vue介绍和基本使用

0 前端的发展史 1.HTML(5)、CSS(3)、JavaScript(ES5、ES6):编写一个个的页面 -> 给后端(PHP、Python、Go、Java) -> 后端嵌入模板语法 -> 后端渲染完数据 -> 返回数据给前端 -> 在浏览器中查看 2.Ajax的出现 -> 后台发送异步请求,Re…

【人工智能】深入了解人工智能的核心算法与应用实践

人工智能 学习AI要看的第一本书人工智能应当以人为本人工智能(第3版)通晓六点,明白人工智能是怎么回事基本概念和历史基础知识基于知识的系统高级专题现在和未来安全和编程 人工智能已经是基础学科 学习AI要看的第一本书 人工智能知识对于当…

使用ArrayList居然用forEach遍历删除元素,该打

通常1-3年工作经验的程序员算是初级程序员,再往后基本上就是在编程领域有了一定经验的高级程序员了。 但是最近公司代码review时,我居然发现一个 5 年工作经验的程序员,使用 ArrayList 居然用 forEach 遍历删除元素? 1、现场还原 由于公司代码有一定敏感,我这里把代码进…