首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >客官来玩K8S之搭个Gitlab

客官来玩K8S之搭个Gitlab

作者头像
李国宝
发布于 2020-01-02 09:09:38
发布于 2020-01-02 09:09:38
1.3K00
代码可运行
举报
运行总次数:0
代码可运行

客官来玩K8S之搭个Gitlab

前言

不需要前言.

本次教程中包含的知识点

需要的知识点

  • k8s基础, Pod/Service 相关知识
  • k8s存储, PV/PVC/StorageClass 相关知识
  • nginx基础

Gitlab CE 依赖的服务

  • postgreSQL
  • redis
  • 2G 以上内存, 最好 4G(2G 内存不如 dog)

当然, 以上服务一样用 K8S 部署.

postgreSQL
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: postgresql
  name: postgresql
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      run: postgresql
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        run: postgresql
    spec:
      containers:
        - env:
          - name: POSTGRES_DB
            value: gitlab
          - name: POSTGRES_USER
            value: gitlab
          - name: POSTGRESQL_PASSWORD
            value: 随便写你的密码
          - name: PGDATA
            value: /var/lib/postgresql/data/pgdata
          image: postgres:10
          imagePullPolicy: IfNotPresent
          name: postgresql
          imagePullPolicy: IfNotPresent
          ports:
          - containerPort: 5432
            protocol: TCP
          resources:
            limits:
              cpu: 500m
              memory: 1024Mi
            requests:
              cpu: 200m
              memory: 256Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /var/lib/postgresql/data/
            name: es-data
            subPath: postgresql
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
      # 这里是k8s的pvc, 我这里pvc叫es-data, 和elastic用同一个磁盘
      volumes:
        - name: es-data
          persistentVolumeClaim:
            claimName: es-data
---
apiVersion: v1
kind: Service
metadata:
  # 这个annotations是腾讯云申请内网IP的配置, 需要改成自己k8s所在网络的子网id
  # postgresql 这里其实可以不要内网service ip, 内网直接用service name访问即可
  annotations:
    service.kubernetes.io/loadbalance-id: lb-你自己的loadbalanceid
    service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: subnet-你自己的子网id
  labels:
    run: postgresql
  name: postgresql
spec:
  externalTrafficPolicy: Cluster
  ports:
  - port: 3433
    protocol: TCP
    targetPort: 5432
  selector:
   run: postgresql
  sessionAffinity: None
  type: LoadBalancer

这里面用的 PV/PVC 需要自己在腾讯云里面创建, 基本就是点点点就能创建出来了.

redis 部署

跳过…

随便抄一下 k8s 部署 Redis 教程就完事了.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: apps/v1
kind: StatefulSet
metadata:
  generation: 2
  labels:
    app: redis
  name: redis
spec:
  podManagementPolicy: OrderedReady
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: redis
  serviceName: redis
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: redis
    spec:
      containers:
        - env:
            - name: REDIS_PASSWORD
              value: 换成你的密码
          image: bitnami/redis:5.0
          imagePullPolicy: IfNotPresent
          name: redis
          resources:
            limits:
              cpu: 500m
              memory: 256Mi
            requests:
              cpu: 200m
              memory: 128Mi
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
            - mountPath: /bitnami/redis/data
              name: redis-data
              subPath: redis
      dnsPolicy: ClusterFirst
      imagePullSecrets:
        - name: regsecret
      nodeSelector:
        tuiwen-tech.com/phase: test
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext:
        runAsUser: 0
      terminationGracePeriodSeconds: 30
  updateStrategy:
    rollingUpdate:
      partition: 0
    type: RollingUpdate
  volumeClaimTemplates:
    - metadata:
        creationTimestamp: null
        name: redis-data
      spec:
        accessModes:
          - ReadWriteOnce
        dataSource: null
        resources:
          requests:
            storage: 10Gi
        storageClassName: 换成你的storageClassName
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app: redis
  name: redis
spec:
  externalTrafficPolicy: Cluster
  ports:
    - name: headless
      nodePort: 31966
      port: 6379
      protocol: TCP
      targetPort: 6379
  selector:
    app: redis
  sessionAffinity: None
  type: LoadBalancer

Gitlab CE

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: gitlab
  name: gitlab
spec:
  replicas: 1
  strategy:
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0
  template:
    metadata:
      labels:
        app: gitlab
    spec:
      containers:
        - env:
            - name: GITLAB_OMNIBUS_CONFIG
              value: |
                # external_url 这里要注意, 要不改成你的公网IP, 要不改成nginx暴露到外面的域名+端口 或者域名+二级目录
                external_url '换成你自己的'
                # Disable the built-in Postgres
                postgresql['enable'] = false

                # Fill in the connection details for database.yml
                gitlab_rails['db_adapter'] = 'postgresql'
                gitlab_rails['db_encoding'] = 'utf8'
                gitlab_rails['db_host'] = 'postgresql'
                gitlab_rails['db_port'] = 3433
                gitlab_rails['db_database'] = "gitlab"
                gitlab_rails['db_username'] = 'gitlab'
                gitlab_rails['db_password'] = '换成你自己的'

                # mail config
                gitlab_rails['smtp_enable'] = true
                gitlab_rails['smtp_address'] = "换成你自己的"
                gitlab_rails['smtp_port'] = 465
                gitlab_rails['smtp_user_name'] = "换成你自己的"
                gitlab_rails['smtp_password'] = "换成你自己的"
                gitlab_rails['smtp_domain'] = "换成你自己的"
                gitlab_rails['smtp_authentication'] = "login"
                gitlab_rails['smtp_enable_starttls_auto'] = true
                gitlab_rails['smtp_tls'] = true  # 这个很重要,而且是官方文档里没提及的 

                # If your SMTP server does not like the default 'From: [email protected]ocalhost' you
                # # can change the 'From' with this setting.
                gitlab_rails['gitlab_email_from'] = '完整邮件账户'

                # Disable the built-in Redis
                redis['enable'] = true

                # Add any other gitlab.rb configuration here, each on its own line
                # Redis via TCP
                gitlab_rails['redis_host'] = 'redis'
                gitlab_rails['redis_port'] = 6379
                gitlab_rails['redis_password'] = '换成你自己的'
          image: gitlab/gitlab-ce:11.11.7-ce.0
          name: gitlab
          resources:
            requests:
              memory: "1Gi"
              cpu: "300m"
            limits:
              memory: "3Gi"
              cpu: "1000m"
          ports:
            - containerPort: 443
            - containerPort: 80
            - containerPort: 22
          volumeMounts:
            - mountPath: /etc/gitlab
              name: es-data
              subPath: gitlab
            - mountPath: /var/opt/gitlab/git-data
              name: es-data
              subPath: gitlab
      restartPolicy: Always
      serviceAccount: gitlab
      serviceAccountName: gitlab
      volumes:
        - name: es-data
          persistentVolumeClaim:
            claimName: es-data
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.kubernetes.io/loadbalance-id: 换成你自己的
    service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: 换成你自己的
  labels:
    app: gitlab
  name: gitlab
spec:
  ports:
    - name: git-ssl
      port: 443
      targetPort: 443
    - name: git-http
      port: 80
      targetPort: 80
  selector:
    app: gitlab
  type: LoadBalancer
---
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.kubernetes.io/loadbalance-id: 换成你自己的
    service.kubernetes.io/qcloud-loadbalancer-internal-subnetid: 换成你自己的
  labels:
    app: gitlab
  name: gitlab-ssh
spec:
  ports:
    - name: git-ssh
      port: 22
      targetPort: 22
  selector:
    app: gitlab
  type: LoadBalancer

理论上来说, 只需要等待启动就完事了..

最后是暴露到外部的 NGINX 配置

如果直接使用 k8s ingress 拿到公网 IP 的话, 就不用自己配置 NGINX 转发了.

如果和我一样需要自己用 Nginx 提供外部访问的话, 参考下面.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

location /app/git {
    proxy_pass   http://可达的内网IP(就是k8s service的内网IP):80;
    client_max_body_size 50m;
}

教程完毕.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-08-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
k8s yaml部署gitlab
客户端新增hots记录192.168.10.10 gitlab.local.com
章工运维
2024/03/28
3510
TKE(K8S)部署mysql使用CFS存储
2,权限组 来访地址: * 用户权限是:no_root_squash 读写权限:读写
chen1900s
2022/07/17
6170
K8S容器环境下GitLab-CI和GItLab Runner 部署记录
注意:本示例部署所涉及到的image镜像均导入到Harbor私有私仓(172.16.60.230) 。
洗尽了浮华
2021/04/01
7.9K0
K8S容器环境下GitLab-CI和GItLab Runner 部署记录
linux skywalking k8s部署
调用链监控告警神器: git:https://github.com/apache/skywalking 实践: oap-server  deployment: apiVersion: apps/v1beta2 kind: Deployment metadata: annotations: deployment.kubernetes.io/revision: "14" description: skywalking-oap-server creationTimestamp: "2020
葫芦
2020/04/22
2.7K0
你不可能搞不定腾讯云K8S的Service/Ingress
里面提到过Service是K8S中的负载均衡, 同时也可以在不同Pod中使用Service name互相访问.
李国宝
2019/09/01
2.5K1
你还在用YAML编排K8s吗?看看这篇吧
由于 YAML的局限,它是配置文件,不够灵活,所以我便写了这个程序,目前还没有进入 Release 阶段。等我用一段时间,稳定了,就会升级。
netkiller old
2021/10/20
5060
(3 / 3)CentOS搭建K8s微服务20条
k8s第三方资源监控资源展示平台、Prometheus(数据收集)、Grafana(数据展示)
老张的哲学
2023/01/09
6030
Gitlab CI/CD 部署应用到 K8S 演示
前言 关于 Gitlab CE 部署 与 Gitlab CI 搭建请参考下文 Docker Compose部署Gitlab Gitlab CI 搭建持续集成环境 环境 与 概述 一个 hello-world nodejs 项目 Dockerfile 和 app.dev.yaml(k8s deploy 文件) 存放在业务代码中 Gitlab CI Build 机器需要安装 envsubst 命令 构建一个 Docker 业务镜像发布到 Kubernetes 中 本项目部署 K8S Service 、HPA
山月
2020/05/26
1.1K0
Gitlab CI/CD 部署应用到 K8S 演示
Gitlab CICD 与Kubernetes实践·部署GitLab
上一篇,简单的从?Gitlab CI/CD方法论中探索实践中大致了解Gitlab在CI/CD功能的基本介绍,现在我们通过在K8s集群内安装Gitlab、Gitlab Runner来为深入探索Gitla
公众号: 云原生生态圈
2020/11/02
2.4K0
Gitlab CICD 与Kubernetes实践·部署GitLab
三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境!!
作者个人研发的在高并发场景下,提供的简单、稳定、可扩展的延迟消息队列框架,具有精准的定时任务和延迟队列处理功能。自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。为使更多童鞋受益,现给出开源框架地址:
冰河
2020/12/24
6.2K2
三万字无坑搭建基于Docker+K8S+GitLab/SVN+Jenkins+Harbor持续集成交付环境!!
反手来个K8S入门到跑路(腾讯云版本)
放假前一两天发现腾讯云托管K8S集群上线好一阵子了, 还支持把原有主机迁入k8s集群, 索性开始搞事了.
李国宝
2019/09/05
2.7K0
2022-02-13:k8s安装gitlab,yaml如何写?
2022-02-13:k8s安装gitlab,yaml如何写? 答案2022-02-13: yaml如下: apiVersion: apps/v1 kind: Deployment metadata: labels: app: gitlab name: gitlab namespace: moonfdd spec: replicas: 1 selector: matchLabels: app: gitlab template: metadata:
福大大架构师每日一题
2022/02/13
3470
Kubernetes 1.20.5 安装gitlab
参照https://www.yuque.com/duiniwukenaihe/ehb02i内https://www.yuque.com/duiniwukenaihe/ehb02i/qz49ev之前文章。要完成kubernetes devops工作流的完成。前面已经搭建了jenkins。gitlab代码仓库也是必不可缺少的。现在搞一下gitlab,关于helm前面也做了详细的讲述,这里略过了。另外之前gitlab版本没有中文版本可参照https://hub.docker.com/r/twang2218/gitlab-ce-zh/ twang2218的汉化版本。现在的gitlab已经支持多语言了,可以略过。下面就开始安装gitlab。看了一眼helm的安装方式...文章较少。还是决定老老实实yaml方式安装了
对你无可奈何
2021/04/01
2.6K0
部署 Prometheus 和 Grafana 到 k8s
上次我们主要分享了 asp.net core 集成 prometheus,以及简单的 prometheus 使用,在实际在 k8s 中部署的时候就不能在使用前面讲的静态配置的方式来部署了,需要使用 Prometheus 的服务发现。
huofo
2022/03/17
8520
部署 Prometheus 和 Grafana 到 k8s
自建dns实现tke集群apiserver域名内网自动解析
腾讯云tke集群访问apiserver地址都是域名来访问的,支持内网和公网访问apiserver,如果是公网访问会创建一个公网的类型的clb,然后将域名自动解析到clb的vip上。如果是内网访问会创建一个内网clb类型的service,default命名空间下的kube-user,但是内网不会做域名的自动解析,所以通常需要配置在客户端配置hosts解析才能访问集群。客户端机器较多的时候,需要每一台配置host解析就比较麻烦,能否实现tke集群apiserver域名做内网的自动解析?
聂伟星
2021/10/11
4.3K0
Eureka 在 K8S 的上高可用部署
Kubelets 通过调用以下三种类型的 Pod中的 Handler 进行健康检查:
鲍远林
2021/06/04
6.7K1
Eureka 在 K8S 的上高可用部署
在k8s中获取客户端真实IP实践
当需明确服务请求来源以满足业务需求时,则需后端服务能够准确获取请求客户端的真实源 IP。例如以下场景:
chen1900s
2022/07/17
7.3K0
Kubernetes(TKE集群)部署Nacos
官网文档:https://nacos.io/zh-cn/docs/use-nacos-with-kubernetes.html
chen1900s
2022/02/26
3.9K0
Gitlab CI/CD 实践一:Gitlab Runner 安装到 K8S 集群
Gitlab Runner可以直接使用二进制、Docker或者k8s来部署,而使用k8s部署带来的的好处是:合理利用资源,工作容器会被调度到资源相对空闲的节点(构建是一个比较耗费资源的过程)。
Yuyy
2022/09/21
3.8K0
Gitlab CI/CD 实践一:Gitlab Runner 安装到 K8S 集群
k8s部署java项目
{ "insecure-registries": ["192.168.31.90"] }
章工运维
2023/06/13
5130
相关推荐
k8s yaml部署gitlab
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档