K8S部署GitLab

这篇具有很好参考价值的文章主要介绍了K8S部署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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2. 查看ebs集群服务

查看集群的StorageClass

kubectl get sc

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

3. 设置ebs为默认

设置openobs-hostpath为default

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器
如后续不想用ebs作为默认存储类,可以将其参数改为false使其失效

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

三、创建命名空间

在部署之前先创建一个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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

secret对象生成

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

查看secret

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器
拓展:
如果创建错误或者想重新创建secret,则需先删除

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

五、创建文件夹

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

mkdir -p gitlab-yaml

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器


六、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-pvc
  namespace: gitlab-dev
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: openebs-hostpath
  resources:
    requests:
      storage: 1Gi

查看文件内容

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

1.2 部署命令

根据文件来部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

1.3 查看服务

查看创建的服务

kubectl get pvc -n gitlab-dev pgs-pvc

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器
注:如需删除创建的服务请参考:kubectl操作命令集合

2. 部署配置

pgs-dplm.yaml

2.1 文件创建

创建文件pgs-dplm.yaml

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

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

apiVersion: apps/v1
kind: Deployment
metadata:
  name: postgresql
  namespace: gitlab-dev
  labels:
    name: postgresql
spec:
  replicas: 1
  selector:
    matchLabels:
      name: postgresql
  template:
    metadata:
      name: postgresql
      labels:
        name: postgresql
    spec:
      #nodeSelector:
        #key: gitlab-dev
      containers:
        - name: postgresql
          image: sameersbn/postgresql
          imagePullPolicy: IfNotPresent
          env:
            - name: DB_USER
              value: gitlab
            - name: DB_PASS
              value: passw0rd
            - name: DB_NAME
              value: gitlab_production
            - name: DB_EXTENSION
              value: pg_trgm
          ports:
            - name: postgres
              containerPort: 5432
          volumeMounts:
            - mountPath: /var/lib/postgresql
              name: data
          livenessProbe:
            exec:
              command:
                - pg_isready
                - -h
                - localhost
                - -U
                - postgres
            initialDelaySeconds: 30
            timeoutSeconds: 5
          readinessProbe:
            exec:
              command:
                - pg_isready
                - -h
                - localhost
                - -U
                - postgres
            initialDelaySeconds: 5
            timeoutSeconds: 1
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: pgs-pvc

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

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2.2 部署命令

部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2.3查看服务

查看已创建的服务

kubectl get pod -n gitlab-dev

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器
注:pod启动需要一点时间,开始状态为ContainerCreating,过一会才会显示Running

3. 服务配置

pgs-svc.yaml

3.1 文件创建

创建文件pgs-svc.yaml

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

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

apiVersion: v1
kind: Service
metadata:
  name: postgresql
  namespace: gitlab-dev
  labels:
    name: postgresql
spec:
  ports:
    - name: postgres
      port: 5432
      targetPort: postgres
  selector:
    name: postgresql

查看文件内容

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

3.2 部署命令

部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

3.3 查看服务

查看已部署的服务

kubectl get svc -n gitlab-dev

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

七、Redis部署

数据缓存redis

1. 持久化配置

redis-pvc.yaml

1.1 文件创建

创建文件redis-pvc.yaml

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

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

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-pvc
  namespace: gitlab-dev
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: openebs-hostpath
  resources:
    requests:
      storage: 1Gi

查看文件内容

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

1.2 部署命令

部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

1.3 查看服务

查看已部署的服务

kubectl get pvc -n gitlab-dev redis-pvc

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2. 部署配置

redis-dplm.yaml

2.1 文件创建

创建redis-dplm.yaml文件

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

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

apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: gitlab-dev
  labels:
    name: redis
spec:
  replicas: 2
  selector:
    matchLabels:
      name: redis
  template:
    metadata:
      name: redis
      labels:
        name: redis
    spec:
      #nodeSelector:
        #key: gitlab-dev
      containers:
        - name: redis
          image: sameersbn/redis
          imagePullPolicy: IfNotPresent
          ports:
            - name: redis
              containerPort: 6379
          volumeMounts:
            - mountPath: /var/lib/redis
              name: data
          livenessProbe:
            exec:
              command:
                - redis-cli
                - ping
            initialDelaySeconds: 30
            timeoutSeconds: 5
          readinessProbe:
            exec:
              command:
                - redis-cli
                - ping
            initialDelaySeconds: 5
            timeoutSeconds: 1
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: redis-pvc

查看文件内容

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2.2 部署命令

部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2.3 查看服务

查看已部署的服务

kubectl get pod -n gitlab-dev

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

因为文件中配置的副本数为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-svc
  namespace: gitlab-dev
  labels:
    name: redis-svc
spec:
  ports:
    - name: redis
      port: 6379
      targetPort: redis
  selector:
    name: redis

查看文件内容

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

3.2 部署命令

部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

3.3 查看服务

查看已部署的服务

kubectl get svc -n gitlab-dev redis-svc

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

八、GitLab部署

gitlab

1. 持久化配置

gitlab-pvc.yaml

1.1 文件创建

创建文件gitlab-pvc.yaml

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

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

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: gitlab-pvc
  namespace: gitlab-dev
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: openebs-hostpath
  resources:
    requests:
      storage: 5Gi

查看文件内容

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

1.2 部署命令

部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

1.3 查看服务

查看已部署的服务

kubectl get pvc -n gitlab-dev gitlab-pvc

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2. 部署配置

gitlab-dplm.yaml

2.1 文件创建

创建文件gitlab-dplm.yaml

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

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

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gitlab
  namespace: gitlab-dev
  labels:
    name: gitlab
spec:
  replicas: 1
  selector:
    matchLabels:
      name: gitlab
  template:
    metadata:
      name: gitlab
      labels:
        name: gitlab
    spec:
      #nodeSelector:
        #key: gitlab-dev
      containers:
        - name: gitlab
          image: sameersbn/gitlab
          imagePullPolicy: IfNotPresent
          env:
            - name: TZ
              value: Asia/Shanghai
            - name: GITLAB_TIMEZONE
              value: Beijing
            - name: GITLAB_SECRETS_DB_KEY_BASE
              value: long-and-random-alpha-numeric-string
            - name: GITLAB_SECRETS_SECRET_KEY_BASE
              value: long-and-random-alpha-numeric-string
            - name: GITLAB_SECRETS_OTP_KEY_BASE
              value: long-and-random-alpha-numeric-string
            - name: GITLAB_ROOT_PASSWORD
              #value: admin321
              valueFrom:
                secretKeyRef:
                  name: git-user-pass
                  key: password
            - name: GITLAB_ROOT_EMAIL
              value: hslb@163.com
            - name: GITLAB_HOST
              value: gitlab.hslb.com
            - name: GITLAB_PORT
              value: "30021"
            - name: GITLAB_SSH_PORT
              value: "30022"
            - name: GITLAB_NOTIFY_ON_BROKEN_BUILDS
              value: "true"
            - name: GITLAB_NOTIFY_PUSHER
              value: "false"
            - name: GITLAB_BACKUP_SCHEDULE
              value: daily
            - name: GITLAB_BACKUP_TIME
              value: 01:00
            - name: DB_TYPE
              value: postgres
            - name: DB_HOST
              value: postgresql
            - name: DB_PORT
              value: "5432"
            - name: DB_USER
              value: gitlab
            - name: DB_PASS
              value: passw0rd
            - name: DB_NAME
              value: gitlab_production
            - name: REDIS_HOST
              value: redis
            - name: REDIS_PORT
              value: "6379"
          ports:
            - name: http
              containerPort: 80
            - name: ssh
              containerPort: 22
          volumeMounts:
            - mountPath: /home/git/data
              name: data
          livenessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 180
            timeoutSeconds: 5
          readinessProbe:
            httpGet:
              path: /
              port: 80
            initialDelaySeconds: 5
            timeoutSeconds: 1
      volumes:
        - name: data
          persistentVolumeClaim:
            claimName: gitlab-pvc

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

查看文件内容

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2.2 部署命令

部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

2.3 查看服务

查看已部署的服务

kubectl get pod -n gitlab-dev

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

3. 服务配置

gitlab-svc.yaml

3.1 文件创建

创建文件gitlab-svc.yaml

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

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

apiVersion: v1
kind: Service
metadata:
  name: gitlab
  namespace: gitlab-dev
  labels:
    name: gitlab
spec:
  ports:
    - name: http
      port: 80
      targetPort: http
      nodePort: 30021
    - name: ssh
      port: 22
      targetPort: ssh
      nodePort: 30022
  selector:
    name: gitlab
  type: NodePort

查看文件内容

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

3.2 部署命令

部署服务

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

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

3.3 查看服务

查看已部署的服务

kubectl get svc -n gitlab-dev

K8S部署GitLab,# Kubernetes,kubernetes,gitlab,容器

以上就是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

------->>>>>完整版文章跳转


感谢阅读,祝君暴富!文章来源地址https://www.toymoban.com/news/detail-815520.html

到了这里,关于K8S部署GitLab的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Kubernetes(K8s)基本环境部署

    此处只做学习使用,配置单master环境。 1、ip+主机规划(准备五台新机)==修改各个节点的主机名 注意:关闭防火墙与selinux 节点 主机名 ip 身份 joshua1 kubernetes-master.openlab.cn 192.168.134.151 master joshua2 kubernetes-work1.openlab.cn 192.168.134.152 work1 joshua3 kubernetes-work2.openlab.cn 192.168.134.153

    2024年02月10日
    浏览(59)
  • Kubernetes(k8s)部署模式发展

    在部署应用程序的方式上,主要经历了三个时代: 传统部署: 互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应用程序定义资源使用边界,很难合理地分配计算资源,而且程序之间容易产生影响 虚拟化部署: 可以在一台物

    2024年02月11日
    浏览(48)
  • Kubernetes(k8s)集群安装部署

    名称 IP 系统 配置 主控节点 192.168.202.101 CentOS 7.9.2009 2核4G 工作节点1 192.168.202.102 CentOS 7.9.2009 2核4G 工作节点2 192.168.202.103 CentOS 7.9.2009 2核4G 2.1 升级操作系统内核 导入elrepo gpg key 安装elrepo YUM源仓库 安装kernel-ml版本,ml为长期稳定版本,lt为长期维护版本 设置grub2默认引导为0 重

    2024年02月10日
    浏览(80)
  • Kubernetes(k8s)部署DolphinScheduler

    本次安装环境为:3台k8s+现有的mysql数据库+nfs DolphinScheduler-3.2.0官网:https://dolphinscheduler.apache.org/zh-cn/download/3.2.0 官网安装文档:https://dolphinscheduler.apache.org/zh-cn/docs/3.2.0/guide/installation/kubernetes#appendix-configurationr 默认k8s集群已经安装完成,本次已腾讯的TKE为例介绍 参考腾讯TK

    2024年01月19日
    浏览(66)
  • kubernetes(k8s) 安装与部署

    版本:kubernetes(k8s) v1.28.2 并准备主机名映射。 设置好静态IP。 在Ubuntu的/etc/hosts文件中,填入如下内容。也可以在Windows的C:WindowsSystem32driversetchosts文件中填写相同内容。 关闭防火墙和SELinux。 关闭防火墙命令如下。 可使用命令 systemctl status firewalld 查看防火墙状态。 关闭

    2024年02月03日
    浏览(64)
  • 纯 k8s 部署实现 gitlab CICD 保姆级教程

    ​ GitLab 具有三个需要进行持久化的目录,它们分别是 /etc/gitlab、/var/log/gitlab、/var/opt/gitlab,它们分别为 Gitlab 的运行提供配置、日志、数据的持久化。我们使用 nfs 来作为 GitLab 的持久化方式(当然,你也可以选择其他方式),为此,我们需要先安装 NFS,并且在 NFS 的配置文

    2024年02月06日
    浏览(48)
  • Kubernetes(K8S)单机版部署

    1.虚拟机部署Kubernetes(K8S)_生骨大头菜的博客-CSDN博客,首先按照这里部署好k8s服务,但是只需要部署一台master服务器就可以 2.默认k8s的master节点是不能跑pod的业务,需要执行以下命令解除限制 3. 如果需要保留其他子节点但是想将pod调度到master节点上,可以进行上述命令后

    2024年02月11日
    浏览(60)
  • Kubernetes(k8s)集群部署----->超详细

    💖The Begin💖点点关注,收藏不迷路💖 Kubernetes(简称k8s)是一个开源的容器编排平台,可以帮助开发人员和运维团队更轻松地管理容器化应用程序。本文将详细介绍如何进行k8s集群的部署,以帮助读者快速搭建一个高可用、可伸缩的k8s集群。 1、操作系统:至少三台物理机或

    2024年02月05日
    浏览(65)
  • Kubernetes - 一键安装部署 K8S(附:Kubernetes Dashboard)

    不知道大伙是如何安装 K8s,特别还是集群的时候,我上一次安装搭建的时候,那个恶心到我了,真的是一步一个脚印走完整个搭建流程,爬了不少坑。 于是,才有了今天的文章,到底有没有可以一键完美部署 k8s 并且附带 Dashboard……?那这么问了肯定是有的,否则岂不是在

    2024年02月03日
    浏览(55)
  • 基于Docker的K8s(Kubernetes)集群部署

    开始搭建k8s集群 三台服务器修改主机名称 关闭对话窗口,重新连接 三台主机名称呢就修改成功了。 接下来修改每台节点的 hosts 文件 所有节点关闭 setLinux 查看是否关闭成功 为每个节点添加 k8s 数据源 如果安装docker数据源找不到yum-config 所有节点安装kubelet kubelet安装中… k

    2024年02月08日
    浏览(100)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包