天天看點

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

環境

Centos7.0

準備工作

序号 IP位址 主機名稱 角色
A 192.168.100.10 gitlab gitlab、gitlab-runner、docker本地倉庫、(K8S-Master)
B 192.168.100.11 rancher rancher、k8s節點伺服器1
C 192.168.100.12 node1 k8s節點伺服器2
D 192.168.100.13 node2 k8s節點伺服器3
E 192.168.100.14 node3 k8s節點伺服器4

01

網絡設定

以下設定需要在所有主機上設定

1.1.1關閉防火牆

systemctl stop firewalld && systemctl disable firewalld           

複制

1.1.2設定路由轉發

vi /etc/sysctl.conf     #添加     
net.ipv4.ip_forward=1
sysctl -p           

複制

1.1.3修改主機名稱

hostnamectl set-hostname gitlab    針對A主機
bash
hostnamectl set-hostname rancher   針對B主機
bash
hostnamectl set-hostname node1     針對C主機
bash
hostnamectl set-hostname node2     針對D主機
bash
hostnamectl set-hostname node3     針對E主機
bash           

複制

1.1.4編寫主機檔案

vim /etc/hosts     #添加     
192.168.100.10  gitlab     
192.168.100.11  rancher     
192.168.100.12  node1     
192.168.100.13  node2     
192.168.100.14  node3           

複制

02

安裝Docker

以下設定需要在所有主機上設定

2.1.1清除非官方的Docker軟體包

yum -y remove docker docker-common container-selinux           

複制

2.1.2安裝yum-utils工具包

yum install -y yum-utils           

複制

2.1.3配置docker所需yum源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
cd /etc/yum.repos.d/ ls     #至少保留這三個yum源     
CentOS-Base.repo  CentOS-Media.repo  docker-ce.repo           

複制

2.1.4更新yum倉庫中繼資料

yum clean all  
yum makecache fast           

複制

2.1.5安裝docker

yum -y install docker-ce           

複制

2.1.6啟動docker服務,檢視docker版本資訊

systemctl enable docker && systemctl start docker  
docker -v           

複制

2.1.7将所有docker服務指向Master端

vim /etc/docker/daemon.json
{       
 "insecure-registries" : ["192.168.100.10:5000"]
}
systemctl restart docker           

複制

03

安裝本機Docker庫

在主機A(gitlab)上操作

3.1.1運作docker容器

docker run -d -p 5000:5000 --restart=always --name registry -v /mnt/registry:/var/lib/registry registry:latest           

複制

3.1.2檢視私有倉庫中現有的鏡像

curl -XGET http://192.168.100.10:5000/v2/_catalog           

複制

04

GitLab環境安裝

在主機A(gitlab)上操作

4.1.1用docker将GitLat CE版鏡像拉到本地

docker pull gitlab/gitlab-ce           

複制

4.1.2建立GitLab存儲目錄

mkdir -vp /home/huiyi/gitlab/{data,logs,config}           

複制

4.1.3運作GitLab

docker run -d -h 192.168.100.10 -p 443:443 -p 80:80 -p 1022:22 --name gitlab --restart always -v /home/huiyi/gitlab/config:/etc/gitlab -v /home/huiyi/gitlab/logs:/var/log/gitlab -v /home/huiyi/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest           

複制

4.1.4設定GitLab的Root密碼(8位密碼)

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

登入

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

05

安裝GitLab Runner(兩種方法)

在主機A(gitlab)上操作

方法一:

5.1.1安裝Runner

docker run -d --name gitlab-runner --restart always  -v /var/run/docker.sock:/var/run/docker.sock  -v /srv/gitlab-runner/config:/etc/gitlab-runner  gitlab/gitlab-runner:latest           

複制

5.1.2安裝進入容器

docker exec -it gitlab-runner bash           

複制

5.1.3修改容器内hosts檔案

vi /etc/hosts
192.168.100.10 gitlab           

複制

5.1.4擷取Runner Token

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

5.1.5在容器内注冊runner

gitlab-runner register --non-interactive --executor "docker" --docker-image "192.168.100.10:5000/ali-maven-docker:3.5.4-jdk-8-alpine" --url "http://192.168.100.10/" --registration-token " " --description "Docker runner" --tag-list "shared-runner" --run-untagged --locked="false" --docker-privileged="false"           

複制

5.1.6修改容器内runner檔案

vi /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0

[session_server]
   session_timeout = 1800
[[runners]]
   name = "Docker runner"
   url = "http://192.168.100.10/"
   token = "pXzFUNrSrwrx3552fHac"
   executor = "docker"
  [runners.custom_build_dir]
   [runners.docker]
     tls_verify = false
     image = "192.168.100.10:5000/ali-maven-docker:3.5.4-jdk-8-alpine"
   privileged = false
     disable_entrypoint_overwrite = false
     oom_kill_disable = false
     disable_cache = false
     volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache", "/home/huiyi/.m2:/root/.m2"]        #修改
shm_size = 0
pull_policy = "if-not-present"      #添加
 [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]           

複制

5.1.7開啟運作未标記的作業

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

5.1.8檢查結果

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

方法二:

5.2.1添加 GitLab官方庫

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash           

複制

5.2.2安裝Runner

yum install gitlab-runner

5.2.3擷取Runner Token

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

5.2.4注冊Runner

gitlab-runner register --non-interactive --executor "docker" --docker-image "192.168.100.10:5000/ali-maven-docker:3.5.4-jdk-8-alpine" --url "http://192.168.100.10/" --registration-token " " --description "Docker runner" --tag-list "shared-runner" --run-untagged --locked="false" --docker-privileged="false"
vi /etc/gitlab-runner/config.toml
concurrent = 1
check_interval = 0

[session_server]
   session_timeout = 1800
[[runners]]
   name = "Docker runner"
   url = "http://192.168.100.10/"
   token = "pXzFUNrSrwrx3552fHac"
  executor = "docker"
  [runners.custom_build_dir]
   [runners.docker]
     tls_verify = false
     image = "192.168.100.10:5000/ali-maven-docker:3.5.4-jdk-8-alpine"
   privileged = false
     disable_entrypoint_overwrite = false
     oom_kill_disable = false
     disable_cache = false
     volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache", "/home/huiyi/.m2:/root/.m2"]        #修改
shm_size = 0
pull_policy = "if-not-present"      #添加
 [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]           

複制

5.2.5檢查結果

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

06

安裝rancher叢集

在主機B(rancher)上操作

6.1.1啟動rancher容器

docker run -d --restart=unless-stopped -v /data:/var/lib/rancher/ -p 80:80 -p 443:443 rancher/rancher           

複制

6.1.2打開網頁認證

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

6.1.3設定密碼

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

6.1.4确認本機url位址

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

6.1.5設定語言

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

6.1.6建立K8S叢集

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

6.1.7添加伺服器主機

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

等待叢集自動部署

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

主節點以及部署完成,等待worker節點

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

07

鏡像準備

在主機A(gitlab)上操作

7.1.1建立Aliyun Maven Docker鏡像

cd /home/           

複制

将附件一中的檔案放到該使用者目錄下

cd ali-maven-docker/
ls
daemon.json  Dockerfile  settings.xml
vi daemon.json
{
          "insecure-registries" : ["192.168.100.10:5000"]      #修改為gitlab位址    
 }           

複制

7.1.2建立鏡像,送出到私有倉庫

docker build -t 192.168.100.10:5000/ali-maven-docker:3.5.4-jdk-8-alpine .
docker push 192.168.100.10:5000/ali-maven-docker:3.5.4-jdk-8-alpine           

複制

7.2.1建立Kubectl鏡像

mkdir -pv /root/.kube/config/kubectl/
cd /root/.kube/config/kubectl/
 vi Dockerfile
FROM lachlanevenson/k8s-kubectl:v1.11.0
LABEL maintainer="huiyi Name <[email protected]>"
ENV KUBE_LATEST_VERSION="v1.11.0"
ADD admin.conf /root/.kube/config
WORKDIR /root
vi admin.conf           

複制

複制rancher建立的連接配接資訊

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

7.2.2建立鏡像,送出到私有倉庫

docker build -t 192.168.100.10:5000/kubectl:1.11.0 .
docker push 192.168.100.10:5000/kubectl:1.11.0           

複制

7.3.1建立Oracle JAVA鏡像

docker pull fancybing/java:serverjre-8           

複制

08

建立GitLab項目

8.1.1建立Group

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

8.1.2建立項目

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建

8.1.3配置Group環境變量

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建
Key: DOCKER_HUB_REPO     Value:192.168.100.10:5000/k8s-ci           

複制

8.1.4送出項目

Springcloud +Gitlab+ Rancher2.0+Kubernetes微服務持續內建