首页 > 其他分享 >【devops】git-runner介绍与使用

【devops】git-runner介绍与使用

时间:2024-09-19 12:19:41浏览次数:3  
标签:kubectl kind git name runner gitlab devops yaml

 本站以分享各种运维经验和运维所需要的技能为主

《python零基础入门》:python零基础入门学习

《python运维脚本》: python运维脚本实践

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》从问题中去学习k8s

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》运维日常

《linux》运维面试100问

《DBA》db的介绍使用(mysql、redis、mongodb...)

Git-Runner

前期说明

对于gitlab Runner是什么这里不做过多介绍,这里仅对runner部署方式,以及如何使用展开说明。

实现功能:

配置文件存储位置为gitlab,当代码提交,自动触发apply操作

背景说明:

当前gitlab版本: 13.9.3-ee

使用runner版本:v13.9.0

k8s集群版本:v1.20.11

kubectl版本:v1.20

gitlab-runner部署方式:

gitlab-runner可支持部署方式有多种,如docker,本地,或者运行在pod中,这里的部署使用k8s方式。

runner运行方式:

runner可以理解为agent,可以指定.gitlab.yaml文件中定义的指定运行环境,可以为docker,kubernetes,或者shell,这里围绕kubernetes。

gitlab-runner部署

因为gitlab账号并不是管理员权限,仅对group具备Maintainer权限,所以gitlab-runner使用group作为绑定方式。

绑定关系:

gitlab --> gitlab-runner --> 创建pod运行gitlab-runner中的stages

  • 1.RBAC授权

# 1. 授权,让后续gitlab-runner具有创建pod权限
[root@pi-cloud-cpu-test-jyl01 gitlab-runner]# cat RBAC.yaml 
apiVersion: v1
kind: Namespace
metadata:
  name: base

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: executor
  namespace: base
imagePullSecrets:
- name: dockersecret

---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  namespace: base
  name: executor-role
rules:
- apiGroups: [""]
  resources: ["pods", "pods/exec"]
  verbs: ["get", "list", "watch", "create", "update", "patch", "delete"]

---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  namespace: base
  name: executor-rolebinding
subjects:
- kind: ServiceAccount
  name: executor
  namespace: cicd
roleRef:
  kind: Role
  name: executor
  apiGroup: rbac.authorization.k8s.io
  • 2.gitlab-runner配置文件使用configmap方式挂载

[root@pi-cloud-cpu-test-jyl01 gitlab-runner]# cat runner-configmap.yaml 
apiVersion: v1
kind: ConfigMap
metadata:
  namespace: monitoring
  labels:
    app: gitlab-deployer
  name: gitlab-runner-cm
data:
  REGISTRATION_TOKEN: "gitlab-CICD-Runner中获取到的token"
  REGISTER_NON_INTERACTIVE: "true"
  REGISTER_LOCKED: "false"
  CI_SERVER_URL: "gitlab-CICD-Runner中获取到的Url"	 
  METRICS_SERVER: "0.0.0.0:9100"
  RUNNER_CONCURRENT_BUILDS: "4"
  RUNNER_REQUEST_CONCURRENCY: "4"
  RUNNER_TAG_LIST: "prometheus-runner"
  RUNNER_EXECUTOR: "kubernetes"		# 指定后续runner使用什么方式运行指令
  KUBERNETES_NAMESPACE: "base"      
  KUBERNETES_SERVICE_ACCOUNT: "executor"
  KUBERNETES_PULL_POLICY: "if-not-present"
  • 3.gitlab-runner in kubernetes 部署

[root@pi-cloud-cpu-test-jyl01 gitlab-runner]# cat runner-deployment.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: runner
  namespace: monitoring
  labels:
    app: runner
spec:
  replicas: 1
  selector:
    matchLabels:
      app: runner
  template:
    metadata:
      labels:
        app: runner
    spec:
      containers:
      - name: ci-builder
        image: registry.cn-hangzhou.aliyuncs.com/lindytom/gitlab-runner:latest
        command:
        - /bin/bash
        - -c
        - "/usr/bin/gitlab-runner unregister -n $RUNNER_NAME || true; /usr/bin/gitlab-runner register; exec /usr/bin/gitlab-runner run"
        imagePullPolicy: IfNotPresent
        envFrom:
        - configMapRef:
            name: gitlab-runner-cm
        ports:
        - containerPort: 9100
          name: http-metrics
          protocol: TCP
        lifecycle:
          preStop:
            exec:
              command:
              - /bin/bash
              - -c
              - "/usr/bin/gitlab-runner unregister -n $RUNNER_NAME"
      restartPolicy: Always

出现如下界面,则表示gitlab-runner和gitlab已经是绑定关系,.gitlab.yaml可以使用tag名称,对gialb-runner实现控制。

img

gitlab-runner使用

在代码项目目录中书写.gitlab.yaml文件,在代码提交时,对文件扫描,执行yaml文件中的流程。

既然上面说到是触发对k8s的apply操作,必然少不了的就是kubectl的控制方式,将kubectl文件挂载到runner中不太现实,而且可能需要对多个集群生效,这里使用gitlab中的变量方式,将kube-config文件写入到gitlab中

img

# .gitlab.yaml文件内容
image: docker:stable
stages:							        # 主要流程为两步
  - code_check					 	        # 第一步代码检测
  - deploy_prometheus			  	                # 第二步部署应用
variables:
  GIT_SUBMODULE_STRATEGY: recursive	                        # 自动代码拉取
code_check_job:					
  stage: code_check					        # stage: 和主流程中指定的一致,这里为第一个流程
  image: registry.cn-hangzhou.aliyuncs.com/lindytom/promtool:latest	# 使用镜像具备语法检测功能
  only:
    - huya-master					       # 仅代码提交到huya-master分支生效
  tags:
    - prometheus-runner				               # runner的tag,需要和runner tag保持一致
  script:						       # prometheus operator的yaml规则检测方式
    - cat manifests/configuration-files/prometheus-rule/*.yaml|yq --yaml-output .spec|promtool check rules /dev/stdin
    
deploy_prometheus_job:				
  stage: deploy_prometheus			               # stage: 和主流程中指定的一致,这里为第二个流程
  image: bitnami/kubectl:1.20.15	                       # 通过kubectl镜像,生成kubectl环境
  only:
    - huya-master		
  tags:
    - prometheus-runner
  script:							# 这里为执行指令,对yaml检测,并apply
    - mkdir $HOME/.kube/ && cat $huya_kube_config > $HOME/.kube/config
    - kubectl apply -f manifests/configuration-files --dry-run
    - kubectl apply -f manifests/configuration-files

img

 

标签:kubectl,kind,git,name,runner,gitlab,devops,yaml
From: https://blog.csdn.net/zerotoall/article/details/142357106

相关文章

  • Centos7.9安装部署Gitlab
    环境准备系统IP配置centos7.9(图形化)192.168.8.1802c4g--300GGitlab介绍GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。GitLab由乌克兰程序员DmitriyZaporozhets和ValerySizov开发,它由Ruby写成。后来,一些部......
  • 使用gitee的webhook实现提交代码后自动部署项目
    独立站原文业务背景giteeAction付费,gitPages也停止了服务,没办法想搞一个国内服务器的独立站只能自己动手了,看了gitee提供了webhook......
  • Linux中git使用
    基础环境在linux系统基础上关闭防火墙 systemctldisablefirewalld查看防火墙状态systemctlstatusfirewalld关闭安全模式,永久关闭修改:将  修改disabledvi/etc/selinux/config查看git客户端前提    1.注册github用户    2.在githu......
  • C++信奥老师解一本通题 1164:digit函数
    ​【题目描述】在程序中定义一函数digit(n,k),它能分离出整数n从右边数第k个数字。【输入】正整数n和k。【输出】一个数字。【输入样例】318593【输出样例】8#include<iostream>usingnamespacestd;intdigit(longlongn,intk){ if(k==1) returnn%10......
  • 如何搭建Github图床(CDN加速)
    一、PicGoPicGo是一个用于快速上传图片并获取图片URL链接的工具PicGo原生支持七牛云腾讯云Github又拍云SM.MS阿里云OSSImgur等图床。官网地址:PicGoGithubRelease安装PicGo-Setup.exe二、获取Githubtoken首先需要创建一个Github仓库,选定为Public。获取Ac......
  • git 提交前缀
    在使用Git进行版本控制时,提交信息的规范化对于团队合作和代码管理非常重要。以下是常见的Git提交前缀,它们通常用于描述提交的类型或目的:1.feat:新功能(feature)用于新增某个功能模块或功能。例如:sqlCopycodefeat:adduserloginfunctionality2.fix:修复bug用于修复代码......
  • 极狐gitlab 搭建
    1、安装参考:https://gitlab.cn/install/2、启动容器:注意:$GITLAB_HOME变量需要提前设置sudodockerrun--detach\--hostnamelocalhost\--publish13443:443--publish13800:80--publish13822:22\--namegitlab\--restartalways\--volume$GITLAB_HOME/config:......
  • 使用随机森林模型在digits数据集上执行分类任务
    程序功能使用随机森林模型对digits数据集进行手写数字分类任务。具体步骤如下:加载数据:从digits数据集中获取手写数字图片的特征和对应的标签。划分数据:将数据集分为训练集和测试集,测试集占30%。训练模型:使用随机森林算法训练分类模型。进行预测:使用训练好的模型对测试......
  • GitHub 配置 ssh key 的步骤及原理解释
    原文:Github配置sshkey的步骤(大白话+包含原理解释)本文涉及SSH相关知识,建议先阅读SSH原理与运用(一):远程登录或者将其作为扩展资料。前言在GitHub上配置sshkey很容易,网上一大堆教程,但基本没有详细解释其原理的,为什么要配?每使用一台主机都要配?配了为什么就不用密码......
  • Linux基础3-基础工具4(git,冯诺依曼计算机体系结构)
    上篇文章:Linux基础3-基础工具3(make,makefile,gdb详解)-CSDN博客本章重点:1.git简易使用2.冯诺依曼计算机体系结构介绍一.git使用 1.1什么是git?    git是用于管理代码版本的一种工具,我们在如GitHub,Gitee中创立自己的仓库后。        我们在本地使......