kubernetes搭建GitLab并提供本地域名服务及业务微服务接口集成GitLab

这篇具有很好参考价值的文章主要介绍了kubernetes搭建GitLab并提供本地域名服务及业务微服务接口集成GitLab。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

搭建GitLab服务

        业务管理平台需要将本地的代码上传并进行版本管理,选择搭建gitlab私服较为合理,下面就介绍下在已有kubernetes集群上如何搭建gitlab私服及配置域名提供服务过程。

镜像准备

        选择gitlab-ce镜像,登录dockerhub 搜索 gitlab/gitlab-ce,选择合适版本,这里需要注意的是,由于我们后续要使用gitlab的api集成,在使用api中需要用到access_token,而据官方文档说明,创建永久token能力在15.4之后已不推荐使用,并计划在16.0删除。我们考虑集成的方便性,可能要用到永久的token能力,所以这里选择了15.11.6-ce.0 。可以直接使用dockerhub,考虑拉取速度也可以pull到本地并上传harbor私库。在从dockerhub拉取本地时,如果速度过慢,可以注册阿里云账号,添加加速器,详情参考 Docker镜像加速。
        准备好镜像之后,就可以编写kubernetes脚本了,我们要把gitlab的数据和配置进行持久化保存,所以需要创建两个持久卷PVC,分别为gitlab-data和gitlab-config。

数据卷脚本

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: gitlab-data
  namespace: gitlab
  annotations:
    kubesphere.io/creator: aaaaaa
    pv.kubernetes.io/bind-completed: 'yes'
    pv.kubernetes.io/bound-by-controller: 'yes'
    volume.beta.kubernetes.io/storage-provisioner: dev-nfs-storage
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  volumeName: pvc-15d9ceca-0416-4fa0-a78c-72cc349ff4ea
  storageClassName: managed-nfs-storage
  volumeMode: Filesystem
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: gitlab-config
  namespace: gitlab
  annotations:
    kubesphere.io/creator: aaaaaa
    pv.kubernetes.io/bind-completed: 'yes'
    pv.kubernetes.io/bound-by-controller: 'yes'
    volume.beta.kubernetes.io/storage-provisioner: dev-nfs-storage
  finalizers:
    - kubernetes.io/pvc-protection
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi
  volumeName: pvc-d7a420ff-6220-49ff-863b-8dfc04cee692
  storageClassName: managed-nfs-storage
  volumeMode: Filesystem

部署脚本

创建部署时,把容器中gitlab的数据(/var/opt/gitlab)和配置(/etc/gitlab)分别挂载到卷 gitlab-data 和 gitlab-config上。同时需要注意的是通过环境变量 GITLAB_ROOT_PASSWORD 来指定默认的root账号登录密码,密码不能含有常见词汇及连续数字,否则创建会失败。gitlab比较耗内存,建议使用8G。

kind: Deployment
apiVersion: apps/v1
metadata:
  name: gitlab15
  namespace: gitlab
  labels:
    app: gitlab15
  annotations:
    deployment.kubernetes.io/revision: '32'
    kubesphere.io/creator: aaaaaa
    kubesphere.io/description: 15.11.6-ce.0
spec:
  replicas: 1
  selector:
    matchLabels:
      app: gitlab15
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: gitlab15
      annotations:
        kubesphere.io/restartedAt: '2023-07-28T02:45:21.829Z'
    spec:
      volumes:
        - name: gitlab-data
          persistentVolumeClaim:
            claimName: gitlab-data
        - name: gitlab-config
          persistentVolumeClaim:
            claimName: gitlab-config
      containers:
        - name: container-rc2xwo
          image: gitlab/gitlab-ce:15.11.6-ce.0 # 这里可以指定上边准备的harbor私库
          ports:
            - name: http-1
              containerPort: 80
              protocol: TCP
          env:
            - name: GITLAB_ROOT_PASSWORD
              value: Xxx@12axxfadfafeetx  #这里是默认密码
          resources:
            limits:
              cpu: '4'
              memory: 8Gi
              nvidia.com/gpu: '0'
            requests:
              nvidia.com/gpu: '0'
          volumeMounts:
            - name: gitlab-data
              mountPath: /var/opt/gitlab
            - name: gitlab-config
              mountPath: /etc/gitlab
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          imagePullPolicy: IfNotPresent
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      dnsPolicy: ClusterFirst
      serviceAccountName: default
      serviceAccount: default
      securityContext: {}
      imagePullSecrets:
        - name: harbor-secret
      schedulerName: default-scheduler
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 25%
      maxSurge: 25%
  revisionHistoryLimit: 10
  progressDeadlineSeconds: 600

服务脚本

        服务中通过标签gitlab15选择上述部署。

kind: Service
apiVersion: v1
metadata:
  name: gitlab-service
  namespace: gitlab
  labels:
    app: gitlab-service
  annotations:
    kubesphere.io/creator: aaaaaa
spec:
  ports:
    - name: http-1
      protocol: TCP
      port: 80
      targetPort: 80
  selector:
    app: gitlab15
  clusterIP: xx.xx.xxx.xx  #会自动生成
  clusterIPs:
    -  xx.xx.xxx.xx
  type: ClusterIP
  sessionAffinity: None
  ipFamilies:
    - IPv4
  ipFamilyPolicy: SingleStack

路由脚本

        创建Ingress,关联上述服务及端口,Ingress中指定域名为ai-gitlab.qm.cn。配置之后登陆时即访问该域名。

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: ai-gitlab
  namespace: gitlab
  annotations:
    kubesphere.io/creator: aaaaaa
    nginx.ingress.kubernetes.io/proxy-body-size: 60M
    nginx.ingress.kubernetes.io/proxy-connect-timeout: '300'
    nginx.ingress.kubernetes.io/proxy-read-timeout: '300'
    nginx.ingress.kubernetes.io/proxy-send-timeout: '300'
spec:
  rules:
    - host: your-host.com.cn  #你的域名
      http:
        paths:
          - path: /
            pathType: ImplementationSpecific
            backend:
              service:
                name: gitlab-service
                port:
                  number: 80

        由于your-host.com.cn是本地域名,需要配置hosts(C:\Windows\System32\drivers\etc\hosts)文件才能访问。hosts文件中添加 集群节点ip和域名的对应关系,如:10.140.56.5 ai-gitlab.qm.cn

        另外Ingress中要指定请求的body-size,否则上传文件时会报错(Error writing request body to server)。

登录及配置

        上述脚本运行后,正常启动,就可以访问域名http://your-host.com.cn/来登录gitlab了。输入默认用户root和部署时指定的默认密码,即可登录。
kubernetes搭建GitLab并提供本地域名服务及业务微服务接口集成GitLab,kubernetes,gitlab,微服务
        登录后,我们创建项目,发现项目的clone地址为服务名+部署pod名,而不是我们指定的域名,这时我们需要修改gitlab的配置,登录到docker内部,这里我们直接从集群连接终端即可。找到/etc/gitlab下的gitlab.rb文件,vi gitlab.rb 进行编辑,找到 external_url 取消注释并修改值为 我们的域名 http://your-host.com.cn。这样再次查看项目的下载地址,就已经变更为我们指定的域名了。至此我们在本地(配置了hosts)和gitlab交互(clone,pull,push)都已OK。

GitLab接口及业务微服务上传代码

GitLab接口注意事项

        业务微服务需要通过接口在gitlab上创建用户、组、项目等,需要调用gitlab的API。这里主要注意的是:

  1. 所有api都要使用access_token进行认证。

  2. 创建用户的时候,必须要管理员账号才有权限。(详情参考官网 Users API
    | GitLab)

  3. access_token 有有效期,且在16.0及以后的版本,不支持永久有效。(详情参考官网 Project
    access tokens | GitLab)

  4. api的地址为域名/api/version/xxx, 如
    http://your-host.com.cn/api/v4/projects (详情参考官网 REST API | GitLab)

业务微服务上传代码注意事项

        上述我们讲到过在本地(即配置了hosts的机器)可以正常操作gitlab本地私库(your-host.com.cn),但是我们在微服务上传和下载代码时,实际是在微服务后端,即微服务所在的pod容器中,那么问题也就来了,这个容器会识别your-host.com.cn吗,肯定是不会的(实际验证也报了错误 java.net.UnknownHostException: your-host.com.cn),那我们怎么让容器能识别呢,也就是怎么能类似在容器的etc/hosts中添加 your-host.com.cn呢?这里我们可以通过kubernetes中的 HostAliases 来添加。在与container同级下增加 HostAliases属性。

kubernetes搭建GitLab并提供本地域名服务及业务微服务接口集成GitLab,kubernetes,gitlab,微服务文章来源地址https://www.toymoban.com/news/detail-620573.html

到了这里,关于kubernetes搭建GitLab并提供本地域名服务及业务微服务接口集成GitLab的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 几分钟在Ubuntu搭建本地Emlog博客网站并发布至公网无需购买域名服务器

    博客作为使用最广的个人在互联网的发声网站,在很长一段时间里,都被大家视作在互联网上发声的主要通道之一。虽然之后出现的即时聊天工具和朋友圈崛起,抢夺了不少博客的空间,但其仍占有不小的市场份额。也正因博客很重要,才吸引了不少开发者,制作出了各种各

    2024年02月04日
    浏览(50)
  • 家庭宽带在有ipv6公网环境下,配置本地tomcat服务器+域名+ssl+ddns,实现ipv6建站、搭建简易的文件服务器、搭建webdav服务器等功能

    必备条件:         宽带运营商提供了ipv6         光猫拨号改为路由器拨号且路由器开启了ipv6         运营商未屏蔽ipv6的80/443端口(如果屏蔽了常用端口,那么可以尝试高一点的端口号。端口号范围:1 - 65535) 目录 一、阿里云申请域名ssl证书 1、申请域名 2、申

    2024年02月06日
    浏览(83)
  • 微信小程序配置服务器域名和业务域名校验文件

    为方便开发,一般在使用开发者工具-本地设置中会勾选\\\"不校验合法域名、业务域名及HTTPS证书\\\"。 开发完成后需使用微信公众平台登录小程序账号完成域名配置。 配置服务器域名 开发 - 开发管理 - 开发设置 - 服务器域名 配置成功后可以在微信开发者工具 - 右上角详情 - 项目

    2024年02月15日
    浏览(40)
  • 微信小程序生态12-微信小程序开发设置中服务器域名和业务域名

    微信小程序生态1-初识小程序 微信小程序生态2-创建一个微信小程序 微信小程序生态3-微信小程序登录流程设计 微信小程序生态4-扫普通二维码进入小程序、打开短链接进入小程序 微信小程序生态5-微信公众号扫码登录PC端网页 微信小程序生态6-微信公众号授权登录(适用于H

    2023年04月16日
    浏览(37)
  • H5套壳微信小程序跳转H5以及配置服务器接口域名和业务域名

    一、H5套壳微信小程序跳转H5 基本语法: web-view src=\\\"https://你的域名\\\"/web-view 1. 其中,url必须在管理后台加进业务域名,并且是https开头的。 使用了web-view,页面将不能放置其他元素,因为web-view会铺满整个页面 电脑端调试,需要在开发者工具的项目设置里把基础库版本改为最

    2024年02月07日
    浏览(46)
  • [最新搭建教程]0基础Linux CentOS7系统服务器本地安装部署ChatGPT模型服务搭建/免费域名绑定网页Https访问/调用open AI的API/GPT3/GPT3.5/GPT4模型接口

    一、关于此文 本文介绍了如何克隆一个开源的项目,通过请求调用OpenAI ChatGPT模型接口,以使用ChatGPT的强大功能。相比于直接登录ChatGPT官网对话,此方法对话过程更为流畅,不会频频出现限流导致对话中断或网络异常;此外,部署完成后无需魔法即可访问,可分享给亲朋好

    2024年02月10日
    浏览(57)
  • 独立服务器:为您的在线业务提供无限扩展空间

    独立服务器:为您的在线业务提供无限扩展空间 随着互联网的迅猛发展和数字化时代的到来,越来越多的企业和个人将业务转移到了在线平台上。从电子商务到在线娱乐,从社交网络到云计算,网络业务正成为各行各业的主要形态。在这个日益竞争激烈的环境中,拥有稳定高

    2024年02月12日
    浏览(47)
  • 私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问

    GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产生的代码和文档进行管理, Gitlab主要针对group和project两个维度进行代码和

    2024年02月16日
    浏览(58)
  • 搭建本地GitLab仓库排坑指南

    关于GitLab GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。 2022年2月消息,极狐(GitLab)正式宣布推出极狐GitLab SaaS (JihuLab.com),为中国用户提供从源代码托管到开发运维的全

    2024年02月01日
    浏览(42)
  • 私有GitLab仓库 - 本地搭建GitLab私有代码仓库并随时远程访问「内网穿透」

    转载自远控源码文章:Linux搭建GitLab私有仓库,并内网穿透实现公网访问 GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。 Gitlab是被广泛使用的基于git的开源代码管理平台, 基于Ruby on Rails构建, 主要针对软件开发过程中产

    2024年01月21日
    浏览(47)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包