1、基本概念

  使用k8s安装gitlab-ce,采用GlusterFS实现持久化(注意PG使用的是NFS存储,使用动态存储重启postgresql的pod后无法成功启动pg,待解决),并集成了openLDAP。

  注意:我公司使用的gitlab是独立于k8s集群之外的。

2、安装部署

  最一开始使用的是helm安装gitlab,网上的文档应该全部都是使用的这个chart:https://github.com/helm/charts/tree/master/stable/gitlab-ce

  但是这个chart已经被弃用,并推荐我们使用官方的chart

  官方chart:https://docs.gitlab.com/ee/install/kubernetes/gitlab_chart.html

  我在使用官方chart部署完成以后,发现启动的容器太多,就放弃了这个方式,使用yaml文件部署。

  下载yaml文件:

git clone https://github.com/dotbalo/k8s.git
[root@k8s-master01 gitlab]# pwd
/root/k8s/gitlab
[root@k8s-master01 gitlab]# ls
gitlab-rc.yml gitlab-svc.yml postgresql-rc.yml postgresql-svc.yml redis-rc.yml redis-svc.yml
...

  修改对应的配置:

  主要修改每个rc的namespace,使用的持久化存储方式(当前yaml使用的GFS动态存储,pg使用的是NFS,按需修改)

  修改gitlab-rc.yml里面的env,对应的LDAP信息和SMTP信息等

  修改traefik的域名

  创建gitlab

[root@k8s-master01 gitlab]# kubectl apply -f .
[root@k8s-master01 gitlab]# kubectl get po,svc,pvc -n public-service
NAME READY STATUS RESTARTS AGE
pod/gitlab-cctr6 / Running 37m
pod/postgresql-c6trh / Running 37m
pod/redis-b6vfk / Running 3h NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/gitlab ClusterIP 10.109.163.143 <none> /TCP,/TCP 24m
service/gitlab-balancer NodePort 10.108.77.162 <none> :/TCP,:/TCP 14m
service/glusterfs-dynamic-gitlab-gitlab ClusterIP 10.102.192.68 <none> /TCP 59m
service/glusterfs-dynamic-gitlab-pg ClusterIP 10.96.14.147 <none> /TCP 37m
service/glusterfs-dynamic-gitlab-redis ClusterIP 10.106.253.41 <none> /TCP 1h
service/postgresql ClusterIP 10.104.102.20 <none> /TCP 3h
service/redis ClusterIP 10.97.174.50 <none> /TCP 3h NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
persistentvolumeclaim/gitlab-gitlab Bound pvc-b8249829-f6bf-11e8--000c298bf023 5Gi RWX gluster-heketi 59m
persistentvolumeclaim/gitlab-pg Bound pvc-b40b6227-f6c2-11e8--000c298bf023 5Gi RWX gluster-heketi 37m
persistentvolumeclaim/gitlab-redis Bound pvc-28d0276d-f6af-11e8-8d2c-000c293bfe27 3Gi RWX gluster-heketi 2h

  等待全部pods启动成功后,访问gitlab,报错解决

3、访问

  默认账号密码:root/gitlab123

  语言更改,注意:此时翻译是实验性的,更改后需要重新登录

  使用LDAP登录,均使用邮箱登录

4、创建项目

  我公司一个项目下有很多子项目,所以首先创建一个群组:

  创建项目

  添加README

  添加用户权限

  登录至该用户可查看到此项目

  添加SSH Key

  如果没有Key需要使用ssh-keygen -t rsa -C "your@email.com"生成对应的Key。

 5、拉取项目

  创建分支

  克隆代码,注意此时需要更改git的地址,因为ssh端口并非22,可以通过service查看nodeport的端口

λ git clone ssh://git@gitlab.xxx.net:32455/platform/app1.git
Cloning into 'app1'...
remote: Enumerating objects: , done.
remote: Counting objects: % (/), done.
remote: Total (delta ), reused (delta )
Receiving objects: % (/), done.
Checking connectivity... done. D:\code
λ cd app1\ D:\code\app1 (master)
λ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/app1-develop
remotes/origin/master D:\code\app1 (master)
λ git checkout app1-develop
Branch app1-develop set up to track remote branch app1-develop from origin.
Switched to a new branch 'app1-develop' D:\code\app1 (app1-develop)
λ touch.exe testfile D:\code\app1 (app1-develop)
λ git add . D:\code\app1 (app1-develop)
λ git commit -am "create a test file"
[app1-develop 9050e35] create a test file
file changed, insertions(+), deletions(-)
create mode testfile D:\code\app1 (app1-develop)
λ git push origin app1-develop
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
remote:
remote: To create a merge request for app1-develop, visit:
remote: http://gitlab.xxx.net/platform/app1/merge_requests/new?merge_request%5Bsource_branch%5D=app1-develop remote:
To ssh://git@gitlab.xxx.net:32455/platform/app1.git
0a63d86..9050e35 app1-develop -> app1-develop

  查看文件

  协同开发,同样方式将其他用户加入此项目

  克隆代码,并修改文件

[root@k8s-node02 ~]# git clone ssh://git@gitlab.xxx.net:32455/platform/app1.git
Cloning into 'app1'...
The authenticity of host '[gitlab.xxx.net]:32455 ([192.168.20.10]:32455)' can't be established.
ECDSA key fingerprint is SHA256:l6BYlMWpAWyXx/f5oTG8lK4JQvG9C2ZZ9opqdQZfIuc.
ECDSA key fingerprint is MD5:5b:b4:::::2e:ba:fe:f8::6c:8f:d3:fa:.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[gitlab.xxx.net]:32455,[192.168.20.10]:32455' (ECDSA) to the list of known hosts.
remote: Enumerating objects: , done.
remote: Counting objects: % (/), done.
remote: Compressing objects: % (/), done.
remote: Total (delta ), reused (delta )
Receiving objects: % (/), done.
[root@k8s-node02 ~]# cd app1/
[root@k8s-node02 app1]# ls
README.md
[root@k8s-node02 app1]# git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/app1-develop
remotes/origin/master
[root@k8s-node02 app1]# git checkout app1-develop
Branch app1-develop set up to track remote branch app1-develop from origin.
Switched to a new branch 'app1-develop'
[root@k8s-node02 app1]# ls
README.md testfile
[root@k8s-node02 app1]# echo "add something" >> testfile
[root@k8s-node02 app1]# git add .
[root@k8s-node02 app1]# git commit -am "add someting to testfile"
[app1-develop 69d693c] add someting to testfile
file changed, insertion(+)
[root@k8s-node02 app1]# git push origin app1-develop
Counting objects: , done.
Delta compression using up to threads.
Compressing objects: % (/), done.
Writing objects: % (/), bytes | bytes/s, done.
Total (delta ), reused (delta )
remote:
remote: To create a merge request for app1-develop, visit:
remote: http://gitlab.xxx.net/platform/app1/merge_requests/new?merge_request%5Bsource_branch%5D=app1-develop
remote:
To ssh://git@gitlab.xxx.net:32455/platform/app1.git
9050e35..69d693c app1-develop -> app1-develop

赞助作者:

  

kubernetes实战(十四):k8s持久化部署gitlab集成openLDAP登录的更多相关文章

  1. kubernetes实战(十三):k8s使用helm持久化部署harbor集成openLDAP登录

    1.基本概念 上节在k8s中部署了harbor和ldap,本节将部署harbor使用openLDAP验证,部署方式与之前相同,只是改了adminserver-cm.yaml的AUTH_MODE: &q ...

  2. kubernetes实战(十五):k8s使用helm持久化部署jenkins集成openLDAP登录

    1.基本概念 Jenkins在DevOps工具链中是核心的流程管理中心,负责串联系统的构建流程.测试流程.镜像制作流程.部署流程等,在持续集成中常用到的工具如下: Maven:源代码编译工具 Robo ...

  3. kubernetes实战(十二):k8s使用helm持久化部署redmine集成openLDAP

    1.基本概念 此次安装的有Jenkins.Gitlab.Redmine,我公司目前使用的是独立于k8s集群之外单独部署的Jenkins等服务,此文章会介绍三种服务基于k8s的部署方式,之后集成之前部署 ...

  4. kubernetes实战(十):k8s使用Helm安装harbor

    1.基本概念 对于复杂的应用中间件,需要设置镜像运行的需求.环境变量,并且需要定制存储.网络等设置,最后设计和编写Deployment.Configmap.Service及Ingress等相关yaml ...

  5. kubernetes实战(五):k8s持久化安装Redis Sentinel

    1.PV创建 在nfs或者其他类型后端存储创建pv,首先创建共享目录 [root@nfs ~]# cat /etc/exports /k8s/redis-sentinel/ *(rw,sync,no_ ...

  6. LDAP落地实战(三):GitLab集成OpenLDAP认证

    上一篇文章介绍了svn集成OpenLDAP认证,版本控制除了svn外,git目前也被越来越多的开发者所喜爱,本文将介绍GitLab如何集成openldap实现账号认证 GitLab集成OpenLDAP ...

  7. kubernetes实战(十一):k8s使用openLDAP统一认证

    1.基本概念 为了方便管理和集成jenkins,k8s.harbor.jenkins均使用openLDAP统一认证. 2.部署openLDAP 此处将openLDAP部署在k8s上,openLDAP可 ...

  8. kubernetes实战(二十):k8s一键部署高可用Prometheus并实现邮件告警

    1.基本概念 本次部署使用的是CoreOS的prometheus-operator. 本次部署包含监控etcd集群. 本次部署适用于二进制和kubeadm安装方式. 本次部署适用于k8s v1.10版 ...

  9. kubernetes实战(十六):k8s高可用集群平滑升级 v1.11.x 到v1.12.x

    1.基本概念 升级之后所有的containers会重启,因为hash值会变. 不可跨版本升级. 2.升级Master节点 当前版本 [root@k8s-master01 ~]# kubeadm ver ...

随机推荐

  1. [XPath] XPath 与 lxml (三)XPath 坐标轴

    本章我们将沿用上一章的 XML 示例文档. XPath 坐标轴 坐标轴用于定义当对当前节点的节点集合. 坐标轴名称 含义 ancestor 选取当前节点的所有先辈元素及根节点. ancestor-or ...

  2. es5.0 安装head插件

    es5.0的安装和之前的版本有些区别,我的电脑用plugin install 没成功, 查了一下资料,说是可以用grunt进行安装,启动; 1,先安装grunt: grunt是一个很方便的构建工具,可 ...

  3. 转:ANDROID音频系统散记之四:4.0音频系统HAL初探

    昨天(2011-11-15)发布了Android4.0的源码,今天download下来,开始挺进4.0时代.简单看了一下,发现音频系统方面与2.3的有较多地方不同,下面逐一描述. 一.代码模块位置 1 ...

  4. java上传并压缩图片(等比例压缩或者原尺寸压缩)

    本文转载自http://www.voidcn.com/article/p-npjxrbxr-kd.html 先看效果: 原图:1.33M 处理后:27.4kb 关键代码; package codeGe ...

  5. 【Java知识点专项练习】之 volatile 关键字的功能

    volatile是java中的一个类型修饰符.它是被设计用来修饰被不同线程访问和修改的变量.如果不加入volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器 失去大量优化的机会. ...

  6. 【大数据系列】MapReduce详解

    MapReduce是hadoop中的一个计算框架,用来处理大数据.所谓大数据处理,即以价值为导向,对大数据加工,挖掘和优化等各种处理. MapReduce擅长处理大数据,这是由MapReduce的设计 ...

  7. 【VI】如何再执行上一个(历史)命令(已解决)

    输入命令提示符( : )+ 上下箭头(<Up/Down>键) 输入 :his 或者 :history 查看历史

  8. guzzle http异步 post

    use GuzzleHttp\Pool;use GuzzleHttp\Client;//use GuzzleHttp\Psr7\Request;use Psr\Http\Message\Respons ...

  9. JavaScript arguments对象详解

    1. 什么是 arguments MDN 上解释: arguments 是一个类数组对象.代表传给一个function的参数列表. 我们先用一个例子直观了解下 JavaScript 中的 argume ...

  10. 对Java中使用两个大括号进行初始化的理解

    最近重读Java 编程思想,读到有关实例化代码块儿 的内容,使我对于使用两个大括号进行初始化有了更深的理解. 实例化代码块儿: 和静态代码块儿的概念相对应,静态代码块儿是static 关键字 + 大括 ...