分布式版本控制系统(一)
- 分布式版本控制系统(一)
- 1、Git、Github、Gitlab 的区别
- 2、Git 与 SVN 区别
- 3、Git工作流程
- 4、Git基本概念
- 5、Git 客户端安装使用
- 6、Github 远程仓库
- 7、Gitlab Server 部署
- 8、Gitlab 开发代码提交处理流程
- 8.1 公司代码提交合并流程
- 8.2 创建项目管理用户 laoli
- 8.3 将 laoli 用户添加到组中,指定T为本组的 owner
- 8.4 同样的方法将用户xiaozhao、xiaosun 添加到组中,并指定为 Developer
- 8.5 使用 laoli 用户的身份与密码登录到 gitlab 界面中,并创建项目 Project
- 8.6 指定项目的存储路径和项目名称
- 8.7 在 client 上添加 laoli 的用户
- 8.8 将 laoli 的公钥复制到 gitlab 中
- 8.9 为 laoli 用户配置 git
- 8.10 创建新文件,添加内容,并提交到 master 分支
- 8.11 使用 xiaozhao 用户登录,并 clone 项目
- 8.12 同样需要使用Eric用户登录gitlab web 界面,并添加相应的ssh-key。然后设置git ,并clone项目
- 8.13 创建并切换到dev分支,修改文件内容,并将新 code 提交到 dev分支 (Developer角色默认并没有提交master的权限)
- 8.14 使用 xiaozhao 用户登录gitlab web,在界面中 创建一个合并请求
- 8.15 使用 laoli 用户登录 gitlab web ,找到“合并请求” ,然后将dev分支合并到master分支
- 9、Gitlab 备份与恢复
- 10、利用Gitlab管理k8s集群
1、Git、Github、Gitlab 的区别
- Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。git是一套软件,可以做本地私有仓库。
- Github是在线的基于Git的代码托管服务。 GitHub是2008年由Ruby on Rails编写而成。GitHub同时提供付费账户和免费账户。公有和私有仓库(收费),不能做本地私有仓库。
- Gitlab本身也是一个代码托管的网站,功能上和github没有区别,公有和私有仓库(免费),可以部署本地私有仓库。
2、Git 与 SVN 区别
GIT不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。
如果你是一个具有使用SVN背景的人,你需要做一定的思想转换,来适应GIT提供的一些概念和特征。
Git 与 SVN 区别:
- Git是分布式的,svn不是:这是GIT和其它非分布式的版本控制系统,例如SVN,CVS等,最核心的区别。
- GIT把内容按元数据方式存储,而SVN是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似.svn,.cvs等的文件夹里。
- GIT分支和SVN的分支不同:分支在SVN中一点不特别,就是版本库中的另外的一个目录。
- GIT没有一个全局的版本号,而SVN有:目前为止这是跟SVN相比GIT缺少的最大的一个特征。
- GIT的内容完整性要优于SVN:GIT的内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。
- GIT是分布式的版本控制器,没有客户端和服务器端的概念。SVN它是C/S结构的版本控制器,有客户端和服务器端 服务器如果宕机而且代码没有备份的情况下完整代码就会丢失。
3、Git工作流程
一般工作流程如下:
- 克隆 Git 资源作为工作目录。
- 在克隆的资源上添加或修改文件。
- 如果其他人修改了,你可以更新资源。
- 在提交前查看修改。
- 提交修改。
- 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。
Git 的工作流程示意图:
4、Git基本概念
- 工作区:就是你在电脑里能看到的目录。
- 暂存区:英文叫stage, 或index。一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
- 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
工作区、版本库中的暂存区和版本库之间的关系的示意图:
- 图中左侧为工作区,右侧为版本库。在版本库中标记为 index 的区域是暂存区(stage, index),标记为 master 的是 master 分支所代表的目录树。
- 图中我们可以看出此时
HEAD
实际是指向 master 分支的一个游标
。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。- 图中的
objects
标识的区域为 Git 的对象库,实际位于.git/objects
目录下,里面包含了创建的各种对象及内容。- 当对工作区修改(或新增)的文件执行
git add
命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。- 当执行提交操作
git commit
时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。- 当执行
git reset HEAD
命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。- 当执行
git rm --cached <file>
命令时,会直接从暂存区删除文件,工作区则不做出改变。- 当执行
git checkout .
或者git checkout -- <file>
命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。- 当执行
git checkout HEAD .
或者git checkout HEAD <file>
命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。
5、Git 客户端安装使用
5.1 git-server安装配置
名称 | 物理IP |
---|---|
git-server | 192.168.200.19 |
git-client | 192.168.200.20 |
- # 安装git
- [root@git-server ~]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
- [root@git-server ~]# yum -y install git git-all git-core gitweb
- # 创建git用户
- [root@git-server ~]# useradd git
- [root@git-server ~]# echo "123.123" | passwd --stdin git
-
- # 创建git仓库目录
- [root@git-server ~]# mkdir /git-root
- [root@git-server ~]# cd /git-root/
-
- # 创建一个裸仓库
- [root@git-server git-root]# git init --bare shell.git
- 初始化空的 Git 版本库于 /git-root/shell.git/
git init 和 git init --bare 的区别:
- 使用
--bare
选项时,不再生成.git目录
,而是只生成.git目录
下面的版本历史记录文件,这些版本历史记录文件也不再存放在.git目录
下面,而是直接存放在版本库的根目录下面.- 用
git init
初始化的版本库用户也可以在该目录下执行所有git方面的操作,但别的用户在将更新push上来的时候容易出现冲突。- 使用
git init --bare
方法创建一个所谓的裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,如果你硬要操作的话,只会得到下面的错误(This operation must be run in a work tree
)这个就是最好把远端仓库初始化成bare仓库的原因
- # 仓库目录授权
- [root@git-server git-root]# chown -R git:git shell.git
5.2 git-client配置免密登录git服务器
- # 创建密匙
- [root@git-client ~]# ssh-keygen
-
- # 分发密匙到git-server机器
- [root@git-client ~]# ssh-copy-id git@192.168.200.19
Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量。这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
/etc/gitconfig
文件:系统中对所有用户都普遍适用的配置。若使用git config
时用--system
选项,读写的就是这个文件。~/.gitconfig
文件:用户目录下的配置文件只适用于该用户。若使用git config
时用--global
选项,读写的就是这个文件。- 当前项目的 Git 目录中的配置文件(也就是工作目录中的
.git/config
文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以.git/config
里的配置会覆盖/etc/gitconfig
中的同名变量。
- # 配置git使用邮箱
- [root@git-client ~]# git config --global user.email "git@163.com"
- # 配置git使用用户
- [root@git-client ~]# git config --global user.name "git"
如果用了 --global
选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global
选项重新配置即可,新的设定保存在当前项目的 .git/config
文件里。
5.3 文本编辑器
设置Git默认使用的文本编辑器, 一般可能会是 Vi 或者 Vim。如果你有其他偏好,比如 Emacs 的话,可以重新设置
[root@git-client ~]# git config --global core.editor emacs
5.4 差异分析工具
还有一个比较常用的是,在解决合并冲突时使用哪种差异分析工具。比如要改用 vimdiff 的话:
[root@git-client ~]# git config --global merge.tool vimdiff
Git 可以理解 kdiff3,tkdiff,meld,xxdiff,emerge,vimdiff,gvimdiff,ecmerge,和 opendiff 等合并工具的输出信息。
5.5 查看配置信息
要检查已有的配置信息,可以使用 git config --list 命令:
- [root@git-client ~]# git config --list
- user.email=git@163.com
- user.name=git
- core.editor=emacs
- merge.tool=vimdiff
有时候会看到重复的变量名,那就说明它们来自不同的配置文件(比如/etc/gitconfig
和~/.gitconfig
),不过最终 Git 实际采用的是最后一个。
这些配置我们也可以在 ~/.gitconfig
或 /etc/gitconfig
看到,如下所示:
- [root@git-client ~]# cat ~/.gitconfig
- [user]
- email = git@163.com
- name = git
- [core]
- editor = emacs
- [merge]
- tool = vimdiff
也可以直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:
- [root@git-client ~]# git config user.name
- git
5.6 常用的 git 命令
- git init # 初始化
- git add main.cpp # 将某一个文件添加到暂存区
- git add . # 将文件夹下的所有的文件添加到暂存区
- git commit -m ‘note‘ # 将暂存区中的文件保存成为某一个版本
- git log # 查看所有的版本日志
- git status # 查看现在暂存区的状况
- git diff # 查看现在文件与上一个提交-commit版本的区别
- git reset --hard HEAD^ # 回到上一个版本
- git reset --hard XXXXX # XXX为版本编号,回到某一个版本
- git pull origin master # 从主分支pull到本地
- git push -u origin master # 从本地push到主分支
- git pull # pull默认主分支
- git push # push默认主分支 ...
5.7 本地项目与远程服务器项目之间的交互
5.7.1 如果你没有最新的代码,希望从头开始
- # 这里是项目的地址(可从项目主页复制),将远程服务器的内容完全复制过来
- [root@git-client ~]# git clone git@192.168.200.19:/git-root/shell.git
-
- # clone 之后进入该项目的文件夹
- [root@git-client ~]# cd shell/
- # 新建一个文件
- [root@git-client shell]# echo "ceshi" > 1.txt
-
- # 将新的文件添加到git的暂存区
- [root@git-client shell]# git add 1.txt
- # 将暂存区的文件提交到某一个版本保存下来,并加上注释
- [root@git-client shell]# git commit -m '首次测试提交文件'
- # 将本地的更改提交到远程服务器
- [root@git-client shell]# git push -u origin master
5.7.2 如果你已经有一个新版代码,希望直接把本地的代码替换到远程服务器
- # 新的代码
- [root@git-client shell]# echo "git" > 1.txt
- [root@git-client shell]# cat 1.txt
- git
-
- # 进入代码存在的文件夹,或者直接在该文件夹打开
- # 重新初始化
- [root@git-client shell]# git init
-
- # 添加该文件夹中所有的文件到git的暂存区
- [root@git-client shell02]# git add .
- # 提交所有代码到本机的版本库
- [root@git-client shell]# git commit -m '第二次测试提交文件'
- # 将本地的更改提交到远程服务器
- [root@git-client shell]# git push -u origin master
- git 中 clone 过来的时候,git 不会对比本地和服务器的文件,也就不会有冲突,
- 建议确定完全覆盖本地的时候用 clone,不确定会不会有冲突的时候用
git pull
,将远程服务器的代码download下来git pull=git fetch+git merge
5.8 分支管理
5.8.1 创建分支
- # 创建 test 分支
- [root@git-client shell]# git branch test
- # 命令会列出所有分支,当前分支前面会标一个*号
- [root@git-client shell]# git branch
- * master
- test
5.8.2 分支切换
- [root@git-client shell]# git checkout test
- 切换到分支 'test'
- [root@git-client shell]# git branch
- master
- * test
-
- # 创建dev分支并切换到dev分支
- [root@git-client shell]# git checkout -b dev
- 切换到一个新分支 'dev'
- [root@git-client shell]# git branch
- * dev
- master
- test
5.8.3 分支删除
- # 删除 test 分支
- [root@git-client shell]# git branch -d test
- 已删除分支 test(曾为 fc18276)。
- [root@git-client shell]# git branch
- * dev
- master
5.8.4 分支提交
- # 修改代码
- [root@git-client shell]# echo "123" >> 1.txt
- [root@git-client shell]# cat 1.txt
- git
- 123
-
- # 添加该文件夹中所有的文件到git的暂存区
- [root@git-client shell02]# git add .
- # 在dev分支上正常提交
- [root@git-client shell]# git commit -m '第三次测试提交文件'
- # 将本地的更改提交到远程服务器
- [root@git-client shell]# git push -u origin dev
-
- # 查看文件,刚才添加的内容不见了,因为那个提交是在dev分支上,而master分支此刻的提交点并没有变
- [root@git-client shell]# git checkout master
- 切换到分支 'master'
- [root@git-client shell]# cat 1.txt
- git
5.8.5 合并分支
- # 把dev分支的工作成果合并到master分支上
- [root@git-client shell]# git merge dev
- 更新 fc18276..7298181
- Fast-forward
- 1.txt | 1 +
- 1 file changed, 1 insertion(+)
-
- # 合并后,再查看文件内容,就可以看到和dev分支的最新提交是完全一样的
- [root@git-client shell]# cat 1.txt
- git
- 123
注意到上面的Fast-forward信息,Git告诉我们,这次合并是“快进模式”,也就是直接把master指向dev的当前提交,所以合并速度非常快。当然,也不是每次合并都能Fast-forward,我们后面会讲其他方式的合并。
5.8.6 解决冲突
- # 创建新的feature1分支
- [root@git-client shell]# git checkout -b feature
- 切换到一个新分支 'feature'
- [root@git-client shell]# git branch
- dev
- * feature
- master
-
- # 修改文件内容
- [root@git-client shell]# echo "feature" >> 1.txt
- [root@git-client shell]# cat 1.txt
- git
- 123
- feature
-
- # 添加该文件夹中所有的文件到git的暂存区
- [root@git-client shell02]# git add .
- # 在feature分支上提交
- [root@git-client shell]# git commit -m '第四次测试提交文件'
- #切换到master分支
- [root@git-client shell]# git checkout master
- 切换到分支 'master'
- 您的分支领先 'origin/master' 共 1 个提交。
- (使用 "git push" 来发布您的本地提交)
-
- # Git还会自动提示我们当前master分支比远程的master分支要超前1个提交。
-
- # 在master分支上把文件改为:
- [root@git-client shell]# echo "feature" >> 1.txt
- [root@git-client shell]# cat 1.txt
- git
- 123
- feature
-
- # 添加该文件夹中所有的文件到git的暂存区
- [root@git-client shell02]# git add .
- # 在master分支上提交
- [root@git-client shell]# git commit -m '第五次测试提交文件'
- # 现在,master分支和feature分支各自都分别有新的提交。这种情况下,Git无法执行“快速合并”,只能试图把各自的修改合并起来,但这种合并就可能会有冲突,我们试试看:
- [root@git-client shell]# git merge feature
- fatal: 您尚未结束您的合并(存在 MERGE_HEAD)。
- 请在合并前先提交您的修改。
- # 文件存在冲突,必须手动解决冲突后再提交。
- # git status 可以显示冲突的文件;
- [root@git-client shell]# git status
- # 位于分支 master
- # 您的分支领先 'origin/master' 共 2 个提交。
- # (使用 "git push" 来发布您的本地提交)
- #
- # 所有冲突已解决但您仍处于合并中。
- # (使用 "git commit" 结束合并)
- #
- 无文件要提交,干净的工作区
-
- # 添加该文件夹中所有的文件到git的暂存区
- [root@git-client shell02]# git add .
- # 在master分支上提交
- [root@git-client shell]# git commit -m '第六次测试提交文件'
- # 将本地的更改提交到远程服务器
- [root@git-client shell]# git push -u origin master
5.8.7 fetch拷贝分支内容
实验如下:
- # 远程Git服务器代码内容如下:
- [root@git-client shell]# cat 1.txt
- ceshi
-
- # 本地代码内容如下:
- [root@git-client shell]# echo "hello" >> 1.txt
- [root@git-client shell]# cat 1.txt
- ceshi
- hello
- # 本地机器做fetch操作:
- [root@git-client shell]# git fetch origin master:test
- 来自 192.168.200.19:/git-root/shell
- * [新分支] master -> test
-
- # 新分支
- [root@git-client shell]# git branch
- dev
- feature
- * master
- test
fetch
是把远程代码作为本地的一个其他分支下载到本地,并不更新本地分支,这里的命令是把远程的master
分支下载到本地作为一个新的分支test
存在
- # 查看本地文件并没有发生变化
- [root@git-client shell]# ls
- 1.txt
- [root@git-client shell]# cat 1.txt
- ceshi
- hello
-
- # 添加该文件夹中所有的文件到git的暂存区
- [root@git-client shell02]# git add .
- # 提交所有代码到本机的版本库
- [root@git-client shell]# git commit -m '第七次测试提交文件'
- # 用diff查看本地master分支和fetch下来的test分支有什么区别:
- [root@git-client shell]# git diff master test
- diff --git a/1.txt b/1.txt
- index 6b96083..9c0df78 100644
- --- a/1.txt
- +++ b/1.txt
- @@ -1,2 +1,3 @@
- -ceshi
- -hello
- +git
- +123
- +feature
5.9 版本回退
- # 用 git log 命令查看
- [root@git-client shell]# git log
- ......
- commit 64df6707db0ed6fd675fd00cadd975601e505502
- Merge: 24a7faa b137dad
- Author: git <git@163.com>
- Date: Fri Jun 9 15:01:47 2023 +0800
-
- 第六次测试提交文件
-
- commit 24a7faa8528aa3ec22f4db7e0ecabc7a6ad0d102
- Author: git <git@163.com>
- Date: Fri Jun 9 14:57:53 2023 +0800
-
- 第五次测试提交文件
-
- commit b137dadbc8bb922e3ec39871b4490177ee9df3b3
- Author: git <git@163.com>
- Date: Fri Jun 9 14:55:00 2023 +0800
- ......
- # 查看当前文件内容
- [root@git-client shell]# cat 1.txt
- git
- 123
- feature
-
- # 使用 git reset 命令退到上一个版本
- [root@git-client shell]# git reset --hard HEAD^
- HEAD 现在位于 eeacd84 第三次测试提交文件
-
- # 查看现在文件内容
- [root@git-client shell]# cat 1.txt
- git
- 123
- # 查看命令历史,以便确定要回到哪个版本
- [root@git-client shell]# git reflog
- 7298181 HEAD@{0}: reset: moving to HEAD^
- .....
- fc18276 HEAD@{17}: commit: 第二次测试提交文件
- 2439382 HEAD@{18}: commit (initial): 首次测试提交文件
-
- # 回滚哪个版本
- [root@git-client shell]# git reset --hard 2439382
- HEAD 现在位于 2439382 首次测试提交文件
-
- # 查看现在文件内容
- [root@git-client shell]# cat 1.txt
- ceshi
6、Github 远程仓库
6.1 登录github官方网站注册账户
6.2 github 上创建仓库
6.3 本地服务器生成 ssh 公钥
- # 邮箱要与github上注册的相同
- [root@git-client ~]# ssh-keygen -t rsa -C 'git@163.com'
-
- [root@git-client ~]# cat .ssh/id_rsa.pub
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCrKk6mx30blyeRetvc2PwnKv5bRY3ifXkZLD5Z5GUBfy5GiRX7T6suNiFzmi5Oscn/vofkAVbf1rfrGa+C76O+1ohYlKc9mlgOYKvO0WrW0lJL47P7MSy9zeuMfDxTM0KlKdpQ9AXGzpNFloEwRRFEZf36cquAdv6mkyzpkIalRJjtoZZt4Ps43bSvhJCMSfiIo0n7HowwDBQWpqON6VrU/R75RC5AbK9plyR5MUZ2Scf33skfmkPfn/5C7wmbL/E24Ngtg8KtWcLV05uvSh3amDIHC5zCimXdT0heDIEbZV2JrbHtD3tUk+xmjKzdM3EqVsMt1cGJKfOJh17YqJ2f git@163.com
6.4 github 添加 ssh 公钥
6.5 测试连接
- The authenticity of host 'github.com (20.205.243.166)' can't be established.
- ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
- ECDSA key fingerprint is MD5:7b:99:81:1e:4c:91:a5:0d:5a:2e:2e:80:13:3f:24:ca.
- Are you sure you want to continue connecting (yes/no)? yes
- Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
- Hi ywb971108! You've successfully authenticated, but GitHub does not provide shell access.
6.6 连接远程仓库(创建一个测试存储库)
- # 在 github 网站新建一个仓库,命名为fib
- [root@git-client ~]# mkdir fib
- [root@git-client ~]# cd fib/
-
- # git 初始化,然后做第一个基本的git操作(需要在github上创建存储库)
- [root@git-client fib]# git init
- [root@git-client fib]# echo "ceshi" > README.md
- [root@git-client fib]# cat README.md
- ceshi
-
- [root@git-client fib]# git add README.md
- [root@git-client fib]# git commit -m "首次提交"
- [root@git-client fib]# git remote add origin git@github.com:ywb971108/fib.git
-
- # 执行push到远端
- [root@git-client fib]# git push -u origin master
-
- # 注意设置存储库链接
- [root@git-client linux]# git remote set-url origin git@github.com:ywb971108/fib.git
7、Gitlab Server 部署
7.1 环境配置
7.1.1 关闭防火墙
- [root@git-server ~]# systemctl stop firewalld
- [root@git-server ~]# systemctl disable firewalld
7.1.2 关闭 SELinux
- [root@git-server ~]# setenforce 0
- [root@git-server ~]# sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
7.1.3 开启邮件服务
- [root@git-server ~]# systemctl start postfix
- [root@git-server ~]# systemctl enable postfix
7.2 部署 Gitlab
7.2.1 安装 gitlab 依赖包
- # gitlab-ce 10.x.x以后的版本需要依赖policycoreutils-python
- [root@git-server ~]# yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
7.2.2 添加官方源
[root@git-server ~]# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash
7.2.3 安装 Gitlab
- # 安装指定版本Gitlab
- [root@git-server ~]# yum -y install gitlab-ce-12.3.5
7.2.4 配置 Gitlab
7.2.4.1 查看Gitlab版本
- [root@git-server ~]# head -1 /opt/gitlab/version-manifest.txt
- gitlab-ce 12.3.5
7.2.4.2 修改 Gitlab 配置
- [root@git-server ~]# vim /etc/gitlab/gitlab.rb
- [root@git-server ~]# egrep -v "^#|^$" /etc/gitlab/gitlab.rb
- # 绑定监听的域名或IP。没有域名,可以设置为本机IP地址
- # GitLab默认的监听端口为80,但是在企业中这个端口经常被别的服务占用,所以我们还需要更换端口号
- external_url 'http://192.168.200.19:8088'
- gitlab_rails['gitlab_email_enabled'] = true
- gitlab_rails['gitlab_email_from'] = '2659911387@qq.com'
- gitlab_rails['gitlab_email_display_name'] = 'gitlab'
- gitlab_rails['gitlab_email_reply_to'] = '2659911387@qq.com'
- gitlab_rails['gitlab_email_subject_suffix'] = '[gitlab]'
- gitlab_rails['gitlab_email_smime_enabled'] = true
- # ssl证书
- gitlab_rails['gitlab_email_smime_key_file'] = '/etc/gitlab/ssl/git-server.key'
- gitlab_rails['gitlab_email_smime_cert_file'] = '/etc/gitlab/ssl/git-server.crt'
- gitlab_rails['smtp_enable'] = true
- gitlab_rails['smtp_address'] = "smtp.qq.com"
- gitlab_rails['smtp_port'] = 465
- gitlab_rails['smtp_user_name'] = "2659911387@qq.com"
- # 这是我的qq邮箱授权码
- gitlab_rails['smtp_password'] = "gpmkavaafgtwdice"
- gitlab_rails['smtp_domain'] = "smtp.qq.com"
- gitlab_rails['smtp_authentication'] = "login"
- gitlab_rails['smtp_enable_starttls_auto'] = true
- gitlab_rails['smtp_tls'] = false
7.2.4.3 手动配置ssl证书
1、创建私有密钥
- [root@git-server ~]# mkdir -p /etc/gitlab/ssl
- [root@git-server ~]# openssl genrsa -out "/etc/gitlab/ssl/git-server.key" 2048
2、创建私有证书
- [root@git-server ~]# openssl req -new -key "/etc/gitlab/ssl/git-server.key" -out "/etc/gitlab/ssl/git-server.csr"
- You are about to be asked to enter information that will be incorporated
- into your certificate request.
- What you are about to enter is what is called a Distinguished Name or a DN.
- There are quite a few fields but you can leave some blank
- For some fields there will be a default value,
- If you enter '.', the field will be left blank.
- -----
- Country Name (2 letter code) [XX]:CN # 国家
- State or Province Name (full name) []:BeiJing # 省份
- Locality Name (eg, city) [Default City]:BeiJing # 城市
- Organization Name (eg, company) [Default Company Ltd]: # 空格
- Organizational Unit Name (eg, section) []: # 空格
- Common Name (eg, your name or your server's hostname) []:git-server # 名字
- Email Address []:2659911387@qq.com # 邮箱地址
- Please enter the following 'extra' attributes
- to be sent with your certificate request
- A challenge password []:123456 # 密码
- An optional company name []: # 空格
3、利用ssl密钥和证书创建签署证书
- [root@git-server ~]# openssl x509 -req -days 365 -in "/etc/gitlab/ssl/git-server.csr" -signkey "/etc/gitlab/ssl/git-server.key" -out "/etc/gitlab/ssl/git-server.crt"
- Signature ok
- subject=/C=CN/ST=BeiJing/L=BeiJing/O=Default Company Ltd/CN=git-server/emailAddress=2659911387@qq.com
- Getting Private key
- [root@git-server ~]# ll /etc/gitlab/ssl/
- 总用量 12
- -rw-r--r-- 1 root root 1289 6月 14 11:54 git-server.crt
- -rw-r--r-- 1 root root 1078 6月 14 11:51 git-server.csr
- -rw-r--r-- 1 root root 1679 6月 14 11:50 git-server.key
7.2.4.4 GitLab中文社区版补丁包安装
GitLab中文社区:https://gitlab.com/xhang/gitlab/tree/12-3-stable-zh
- # 下载GitLab中文版补丁包
- [root@git-server ~]# wget https://gitlab.com/xhang/gitlab/-/archive/12-3-stable-zh/gitlab-12-3-stable-zh.tar.gz
-
- #解压GitLab中文版补丁包
- [root@git-server ~]# tar xf gitlab-12-3-stable-zh.tar.gz
-
- #备份英文版GitLab
- [root@git-server ~]# cp -r /opt/gitlab/embedded/service/gitlab-rails{,.bak}
-
- #将中文补丁包的内容覆盖英文版
- [root@git-server ~]# rm -rf gitlab-12-3-stable-zh/{tmp,log}
- [root@git-server ~]# /bin/cp -rf gitlab-12-3-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
7.2.4.5 初始化 Gitlab
- # 初始化GitLab,配置时间较长
- [root@git-server ~]# gitlab-ctl reconfigure
- ......
7.2.4.6 启动 Gitlab 服务
- [root@git-server ~]# gitlab-ctl start
- ok: run: alertmanager: (pid 11147) 304s
- ok: run: gitaly: (pid 10157) 473s
- ok: run: gitlab-exporter: (pid 11110) 306s
- ok: run: gitlab-workhorse: (pid 11089) 307s
- ok: run: grafana: (pid 11176) 298s
- ok: run: logrotate: (pid 10786) 348s
- ok: run: nginx: (pid 10754) 354s
- ok: run: node-exporter: (pid 11100) 306s
- ok: run: postgres-exporter: (pid 11162) 304s
- ok: run: postgresql: (pid 10006) 494s
- ok: run: prometheus: (pid 11126) 305s
- ok: run: redis: (pid 9845) 502s
- ok: run: redis-exporter: (pid 11117) 305s
- ok: run: sidekiq: (pid 10714) 361s
- ok: run: unicorn: (pid 10687) 362s
-
- [root@git-server ~]# lsof -i:8088
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- nginx 10754 root 7u IPv4 37593 0t0 TCP *:radan-http (LISTEN)
- nginx 10760 gitlab-www 7u IPv4 37593 0t0 TCP *:radan-http (LISTEN)
- nginx 10761 gitlab-www 7u IPv4 37593 0t0 TCP *:radan-http (LISTEN)
- nginx 10762 gitlab-www 7u IPv4 37593 0t0 TCP *:radan-http (LISTEN)
- nginx 10763 gitlab-www 7u IPv4 37593 0t0 TCP *:radan-http (LISTEN)
7.2.4.7 Gitlab 发送邮件测试
- [root@git-server ~]# gitlab-rails console
- --------------------------------------------------------------------------------
- GitLab: 12.3.5 (2417d5becc7)
- GitLab Shell: 10.0.0
- PostgreSQL: 10.9
- --------------------------------------------------------------------------------
- Loading production environment (Rails 5.2.3)
- irb(main):001:0> Notify.test_email('2659911387@qq.com', 'Message Subject', 'hi 杨哥!').deliver_now # 输入测试命令,回车
-
- ......
-
- => #<Mail::Message:70088952551520, Multipart: true, Headers: <Date: Wed, 14 Jun 2023 12:07:34 +0800>, <From: gitlab <2659911387@qq.com>>, <Reply-To: gitlab <2659911387@qq.com>>, <To: 2659911387@qq.com>, <Message-ID: <64893d0631374_2f053fbef17cf9a823477@git-server.mail>>, <Subject: Message Subject>, <Mime-Version: 1.0>, <Content-Type: multipart/signed; boundary=----4C560D25FC43B1D07A1CF6F8B4FC1BF9; micalg=sha-256; protocol="application/x-pkcs7-signature">, <Content-Transfer-Encoding: 7bit>, <Content-Disposition: >, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
去qq邮箱web界面查看是否收到邮件
7.2.4.8 Gitlab服务管理
- gitlab-ctl start # 启动所有 gitlab 组件;
- gitlab-ctl stop # 停止所有 gitlab 组件;
- gitlab-ctl restart # 重启所有 gitlab 组件;
- gitlab-ctl status # 查看服务状态;
- gitlab-ctl reconfigure # 初始化服务;
- vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
- gitlab-ctl tail # 查看日志;
7.3 Gitlab 的使用
7.3.1 浏览器登录Gitlab
7.3.2 创建项目组 group
7.3.3 去掉用户的自动注册功能(安全)
8、Gitlab 开发代码提交处理流程
8.1 公司代码提交合并流程
- PM(项目主管/项目经理)在gitlab创建任务,分配给开发人员
- 开发人员领取任务后,在本地使用git clone拉取代码库
- 开发人员创建开发分支(git checkout -b dev),并进行开发
- 开发人员完成之后,提交到本地仓库(git commit )
- 开发人员在gitlab界面上申请分支合并请求(Merge request)
- PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master)
- 开发人员在gitlab上Mark done确认开发完成,并关闭issue。这一步在提交合并请求时可以通过描述中填写"close #1"等字样,可以直接关闭issue
8.2 创建项目管理用户 laoli
同样的方法,再创建 xiaozhao
、xiaosun
用户。用户添加完毕后,gitlab 会给用户发一封修改密码的邮件,各用户需要登录自己的邮箱,并点击相关的链接,设置新密码。
8.3 将 laoli 用户添加到组中,指定T为本组的 owner
8.4 同样的方法将用户xiaozhao、xiaosun 添加到组中,并指定为 Developer
8.5 使用 laoli 用户的身份与密码登录到 gitlab 界面中,并创建项目 Project
8.6 指定项目的存储路径和项目名称
把客户端的公钥添加到这里之后才会出现下图的内容
8.7 在 client 上添加 laoli 的用户
- [root@git-client ~]# useradd laoli
- [root@git-client ~]# useradd xiaozhao
- [root@git-client ~]# useradd xiaosun
-
- [root@git-client ~]# su - laoli
- [laoli@git-client ~]$ ssh-keygen
- Generating public/private rsa key pair.
- Enter file in which to save the key (/home/laoli/.ssh/id_rsa):
- Created directory '/home/laoli/.ssh'.
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /home/laoli/.ssh/id_rsa.
- Your public key has been saved in /home/laoli/.ssh/id_rsa.pub.
- The key fingerprint is:
- SHA256:E5n9PvKd1ZLTmISeyxodzvlU4snmvIc99G245jjmKE0 laoli@git-client
- The key's randomart image is:
- +---[RSA 2048]----+
- | |
- | + |
- | + . |
- | . . . |
- | S + o .|
- | .E* B X.|
- | oo X &+*|
- | . .*o@+**|
- | .o+*+X=.|
- +----[SHA256]-----+
- [laoli@git-client ~]$ cat .ssh/id_rsa.pub
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDVRpUTP6OdsODg2qmICQsYGHhI3ThGnYD3Xw104VudQShpdPEzgQE5Fr47xdTSojCsyExiA2HovJKKZDjjHavzDepIhRH4jC4aDGWSpPOJDDRJRD64O0CmNfzvedzE+HUq8j3UxPLCS6N0Kf8CQBlGB+jqj/yFeUL39rOCORxOYk1nqgo8hU4BQ20RtmwpRMBzOBqlkz/Z5ksDeRSFqppq1K7h7MZnrkfS2JVVZywFs3LqoWes+wm7zpROSWU/m9+Ftlm7wZMKYDlqu3bZeh6RFGZ8IwTYR+Dnhyy2jRAc5kSCqfYaADiMUCVRpqbuf8Q92pe//ZTkkOBpc/YVifKF laoli@git-client
8.8 将 laoli 的公钥复制到 gitlab 中
使用 laoli 用户的身份与密码登录到 gitlab界面中,然后在 ssh-key 中添加相关的key
8.9 为 laoli 用户配置 git
- [laoli@git-client ~]$ git config --global user.email "2@qq.com"
- [laoli@git-client ~]$ git config --global user.name "laoli"
-
- [laoli@git-client ~]$ git clone git@192.168.200.19:ceshi/project.git
8.10 创建新文件,添加内容,并提交到 master 分支
- [laoli@git-client ~]$ cd project/
- [laoli@git-client project]$ echo "gitlab test" > test.txt
- [laoli@git-client project]$ cat test.txt
- gitlab test
-
- [laoli@git-client project]$ git add .
- [laoli@git-client project]$ git commit -m "首次提交"
- [laoli@git-client project]$ git push -u origin master
8.11 使用 xiaozhao 用户登录,并 clone 项目
- [root@git-client ~]# su - xiaozhao
- [xiaozhao@git-client ~]$ ssh-keygen
- Generating public/private rsa key pair.
- Enter file in which to save the key (/home/xiaozhao/.ssh/id_rsa):
- Created directory '/home/xiaozhao/.ssh'.
- Enter passphrase (empty for no passphrase):
- Enter same passphrase again:
- Your identification has been saved in /home/xiaozhao/.ssh/id_rsa.
- Your public key has been saved in /home/xiaozhao/.ssh/id_rsa.pub.
- The key fingerprint is:
- SHA256:Wf0g3H5vqScOD9VeE3X1g3X5/Z6D0hRa/7/Px6lk89o xiaozhao@git-client
- The key's randomart image is:
- +---[RSA 2048]----+
- | .B|
- | . o o.=|
- | + +. o+|
- | o o =. =|
- | S +.=oo|
- | ..o.o=|
- | oo+.=*|
- | .*+=B=|
- | o*=EX|
- +----[SHA256]-----+
- [xiaozhao@git-client ~]$ cat .ssh/id_rsa.pub
- ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDTzKqeDVDiD/FzelTDuWV21k9r162lTLRGwK3v+kIikzY0QoncI4ebmxR2CicnzjvGjs9ooKAHTAzXxqDct/mJ0/y4D05eOu8zbvEqCDYpSDLx+UQxs9GLfLhFqnJm5Pd6fJU/gSVwU88P1WVNrUkzjH77rqxAmmnol9zwx7TblqKwtC8hrko//hovXdAmxXhI+CwDMbEUtrxDbRuAyeH/eNaFiumPhXOdeN+O2MsiLYMEAujbS+baEuuPwfm9ZJMRuTHCXT9zERcz+pMnmJg+Tngm8dPPJF/ZinZuV0g2fifxlTBu72prlpKA23ZVRmAqCcpP6MoKnN/Culo/qbdJ xiaozhao@git-client
8.12 同样需要使用Eric用户登录gitlab web 界面,并添加相应的ssh-key。然后设置git ,并clone项目
- [xiaozhao@git-client ~]$ git config --global user.email "3@qq.com"
- [xiaozhao@git-client ~]$ git config --global user.name "xiaozhao"
- [xiaozhao@git-client ~]$ git clone git@192.168.200.19:ceshi/project.git
8.13 创建并切换到dev分支,修改文件内容,并将新 code 提交到 dev分支 (Developer角色默认并没有提交master的权限)
- [xiaozhao@git-client ~]$ cd project/
- [xiaozhao@git-client project]$ git checkout -b dev
- 切换到一个新分支 'dev'
- [xiaozhao@git-client project]$ git branch
- * dev
- master
-
- [xiaozhao@git-client project]$ echo "xiaozhao test" > xiaozhao.txt
- [xiaozhao@git-client project]$ ls
- test.txt xiaozhao.txt
- [xiaozhao@git-client project]$ cat xiaozhao.txt
- xiaozhao test
-
- [xiaozhao@git-client project]$ git add .
- [xiaozhao@git-client project]$ git commit -m '第二次提交'
- [xiaozhao@git-client project]$ git push -u origin dev
8.14 使用 xiaozhao 用户登录gitlab web,在界面中 创建一个合并请求
提交合并请求:
8.15 使用 laoli 用户登录 gitlab web ,找到“合并请求” ,然后将dev分支合并到master分支
9、Gitlab 备份与恢复
9.1 查看系统版本和软件版本
- [root@git-server ~]# cat /etc/redhat-release
- CentOS Linux release 7.9.2009 (Core)
-
- [root@git-server ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
- 12.3.5
9.2 数据备份
9.2.1 创建备份目录
[root@git-server ~]# mkdir -p /data/gitlab/backups
9.2.2 查看备份相关的配置项
- [root@git-server ~]# vim /etc/gitlab/gitlab.rb
- [root@git-server ~]# sed -n "368,369p" /etc/gitlab/gitlab.rb
- gitlab_rails['manage_backup_path'] = true
- gitlab_rails['backup_path'] = "/data/gitlab/backups"
该项定义了默认备份出文件的路径,可以通过修改该配置,并执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效。
- # 重启服务
- [root@git-server ~]# gitlab-ctl restart
9.2.3 执行备份命令进行备份
[root@git-server ~]# /opt/gitlab/bin/gitlab-rake gitlab:backup:create
9.2.4 添加到 crontab 中定时执行
- [root@git-server ~]# crontab -l
- 0 2 * * * bash /opt/gitlab/bin/gitlab-rake gitlab:backup:create
可以到/data/gitlab/backups
找到备份包,解压查看,会发现备份的还是比较全面的,数据库、repositories、build、upload等分类还是比较清晰的。
9.2.5 设置备份保留时长
防止每天执行备份,有目录被爆满的风险,打开/etc/gitlab/gitlab.rb配置文件,找到如下配置:
- [root@git-server ~]# vim /etc/gitlab/gitlab.rb
- [root@git-server ~]# sed -n "377p" /etc/gitlab/gitlab.rb
- gitlab_rails['backup_keep_time'] = 604800
-
- # 重启服务
- [root@git-server ~]# gitlab-ctl restart
设置备份保留7天(7360024=604800),秒为单位,如果想增大或减小,可以直接在该处配置,并通过gitlab-ctl restart 重启服务生效。
备份完成,会在备份目录中生成一个当天日期的tar包。
- [root@git-server ~]# ll /data/gitlab/backups/
- 总用量 140
- -rw------- 1 git git 143360 8月 11 23:19 1691767153_2023_08_11_12.3.5_gitlab_backup.tar
9.3 数据恢复
9.3.1 安装部署 gitlab server
具体步骤参见上面:7.2 gitlab server
搭建过程
9.3.2 恢复 gitlab
9.3.2.1 查看备份相关的配置项
- # 创建备份目录
- [root@git-client ~]# mkdir -p /data/gitlab/backups
-
- [root@git-client ~]# vim /etc/gitlab/gitlab.rb
- [root@git-client ~]# sed -n "369p" /etc/gitlab/gitlab.rb
- gitlab_rails['backup_path'] = "/data/gitlab/backups"
修改该配置,定义了默认备份出文件的路径,并执行 gitlab-ctl reconfigure 或者 gitlab-ctl restart 重启服务生效。
9.3.2.2 恢复前需要先停掉数据连接服务
- [root@git-client ~]# gitlab-ctl stop unicorn
- [root@git-client ~]# gitlab-ctl stop sidekiq
- 如果是台新搭建的主机,不需要操作,理论上不停这两个服务也可以。停这两个服务是为了保证数据一致性。
9.3.2.3 同步备份文件到新服务器
将老服务器/data/gitlab/backups
目录下的备份文件拷贝到新服务器上的/data/gitlab/backups
[root@git-server ~]# rsync -avz /data/gitlab/backups/1691767153_2023_08_11_12.3.5_gitlab_backup.tar root@192.168.200.20:/data/gitlab/backups/
- 注意权限:600权限是无权恢复的。 实验环境可改成了777,生产环境建议修改属主属组
- [root@git-client ~]# cd /data/gitlab/backups
-
- [root@git-client backups]# chown -R git:git 1691767153_2023_08_11_12.3.5_gitlab_backup.tar
- [root@git-client backups]# chmod -R 777 1691767153_2023_08_11_12.3.5_gitlab_backup.tar
-
- [root@git-client backups]# ll
- 总用量 140
- -rwxrwxrwx 1 git git 143360 8月 11 23:19 1691767153_2023_08_11_12.3.5_gitlab_backup.tar
9.3.2.4 执行命令进行恢复
- # 注意:backups 目录下保留一个备份文件可直接执行
- [root@git-client backups]# /opt/gitlab/bin/gitlab-rake gitlab:backup:restore BACKUP=1691767153_2023_08_11_12.3.5
-
- # 后面再输入两次 yes 就完成恢复了
9.3.2.5 恢复完成启动服务
恢复完成后,启动刚刚的两个服务,或者重启所有服务,再打开浏览器进行访问,发现数据和之前的一致:
- [root@git-client backups]# gitlab-ctl start unicorn
- [root@git-client backups]# gitlab-ctl start sidekiq
-
- 或
-
- gitlab-ctl restart
注意:通过备份文件恢复gitlab必须保证两台主机的gitlab版本一致,否则会提示版本不匹配
10、利用Gitlab管理k8s集群
10.1 获取k8s集群API地址
- [root@k8s-master ~]# kubectl cluster-info | grep 'Kubernetes' | awk '/http/ {print $NF}'
- https://192.168.200.21:6443
10.2 权限设置
10.3 获取k8s集群默认CA证书
- [root@k8s-master ~]# kubectl get secrets
- NAME TYPE DATA AGE
- default-token-74zwn kubernetes.io/service-account-token 3 20m
default-token-74zwn
为上面获取到的secrets的名称,用以下命令查看证书
- [root@k8s-master ~]# kubectl get secret default-token-74zwn -o jsonpath="{['data']['ca\.crt']}" | base64 --decode
- -----BEGIN CERTIFICATE-----
- MIIC5zCCAc+gAwIBAgIBADANBgkqhkiG9w0BAQsFADAVMRMwEQYDVQQDEwprdWJl
- cm5ldGVzMB4XDTIzMDgxNDE0MTk1MFoXDTMzMDgxMTE0MTk1MFowFTETMBEGA1UE
- AxMKa3ViZXJuZXRlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAPdL
- VEhCPY0nhSqZinVG4rc7dFLil+GdYgNZMzZMr4hIueszKqyMemWnS1RK/H7CBGfY
- Us6t9/jVfDUymz6UmTjj2QBVYgUfxH11xyfOBeHZHAmyRZjmE+7tlq+85sbIDrXU
- uiLqcNdAIWGS5w8AYLoUhEMPrir3L+dE4Hug2c+543UTw+GP94Fxfh+VYbZx5Yke
- U9Ji/Hea8+cq4/o6nARlFxVpI5pirl6KH7BhkkhvKVdb/8LwKAFTdp0SQ6INVbC3
- lxUFcBsxc1C9KydwnZkQVZHAIQZJVv53ImfTeY6sWrOMeihjQtEypjGQuFIfiE6X
- TnBGgpx1v4WmgQeR4OMCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB
- /wQFMAMBAf8wHQYDVR0OBBYEFBv7Foo8bPpEYzi5XUPONTZHpF6JMA0GCSqGSIb3
- DQEBCwUAA4IBAQDkjegr5TOvdPaMndFbE03wy73eheK+nNZt8c0v6CvC5heM+Hul
- IrVt1uR7g60zjEx8qVQ3Vn1zNlY+U6GpCMpH2RiY9S9c5Yj6LJUbRYZ9pmSptz+j
- UCaayR6hswLOZ08R+OsN8skfFS53QXEC0b4bmP1DymXKcpMD/NNnt4PFOF6oATwy
- JSkjKoTd1Iq5pp/nT+apBFwjokGBitrg6yrPqel2bgnaq3MFsLCCjUKfDKXxbMC5
- qG+XbrNg5M98KWdxLh9RCIvXFy3YuIoXfReF2ZmVvRA4oiRaTH2crSx6R4v0IEcZ
- ADHsavHxImP46bfranoOCSOVrizJz8ibO+2C
- -----END CERTIFICATE-----
10.4 设置rbac
- [root@k8s-master ~]# cat > gitlab-admin-service-account.yaml << EOF
- apiVersion: v1
- kind: ServiceAccount
- metadata:
- name: gitlab-admin
- namespace: kube-system
- ---
- apiVersion: rbac.authorization.k8s.io/v1beta1
- kind: ClusterRoleBinding
- metadata:
- name: gitlab-admin
- roleRef:
- apiGroup: rbac.authorization.k8s.io
- kind: ClusterRole
- name: cluster-admin
- subjects:
- - kind: ServiceAccount
- name: gitlab-admin
- namespace: kube-system
- EOF
-
- [root@k8s-master ~]# kubectl apply -f gitlab-admin-service-account.yaml
10.5 获取gitlab-admin的token
- [root@k8s-master ~]# kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep gitlab-admin | awk '{print $1}')
- Name: gitlab-admin-token-lp9fm
- Namespace: kube-system
- Labels: <none>
- Annotations: kubernetes.io/service-account.name: gitlab-admin
- kubernetes.io/service-account.uid: 50623e31-0189-4f75-9267-acf1691eb1fa
-
- Type: kubernetes.io/service-account-token
-
- Data
- ====
- ca.crt: 1066 bytes
- namespace: 11 bytes
- token: eyJhbGciOiJSUzI1NiIsImtpZCI6IlZacFNqNWctTENwa0UwVS15VHJHMmFscF9aR0wzYloxQ09kV096bjFxUm8ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJnaXRsYWItYWRtaW4tdG9rZW4tbHA5Zm0iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC5uYW1lIjoiZ2l0bGFiLWFkbWluIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiNTA2MjNlMzEtMDE4OS00Zjc1LTkyNjctYWNmMTY5MWViMWZhIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50Omt1YmUtc3lzdGVtOmdpdGxhYi1hZG1pbiJ9.GBkb434h84KLtDoQDEbLZFX_BDjMnX7imuS-6GspXA0FKTm2h9kK-SbJHs0kw5WdM2wBkiW1oFoyWnvuaTtaYj5fqN6-8YBdyo-gXI9C5x11XTWp2Lb0k_v5zJX8xypfDwmVgy0arLR8LX5owWYJDgWjnFYwVzaLkEJR7IaN5fHo57xuIicylCJlkqmZOD3FoNw7L1Qo3EvQIoNsvdNnm8QjLZZKh9xkX4TMX_qsnqVDOoBU_B9NPpsyhADnbZpGBOmxaS6q8oUr_MIg0d-flWUTr2X5z8LNIezMRwlHEPsYO9v_XAAmQXnfTYgA0TT_sPJazz3TRDc55_I_3QHb6g