文章目录
一、架构总览
1.1 架构图
1.2 流程说明
二、服务规划
服务 | 主机IP | CPU | 内存 | 硬盘 | 系统 |
---|---|---|---|---|---|
GitLab | 192.168.1.41 | 8 | 16G | 100G | CentOS 7.6 |
Harbor/Jenkins/Kubectl | 192.168.1.40 | 8 | 16G | 500G | CentOS 7.6 |
Rancher | 192.168.1.10 | 8 | 16G | 300G | CentOS 7.6 |
k8s node1 | 192.168.1.11 | 4 | 8G | 300G | CentOS 7.6 |
k8s node2 | 192.168.1.12 | 4 | 8G | 300G | CentOS 7.6 |
k8s node3 | 192.168.1.13 | 4 | 8G | 300G | CentOS 7.6 |
准备好以上六台虚拟机(资源有限,只能把harbor和Jenkins放一起了)
三、软件安装
软件名 | 版本 | 描述 |
---|---|---|
GitLab-ce | 11.2.3 | 代码仓库 |
Harbor | 1.10.2 | 镜像仓库 |
Jenkins | 2.222.3 | 持续集成工具 |
Docker-ce | 19.03.8 | 容器技术 |
Rancher | 2.4.3 | 集成环境,用于部署Kubernetes |
Kubectl | 1.18.2 | kubernetes的客户端命令行 |
Kubernetes | 1.17.5 | 容器编排、管理工具 |
3.1 标准化环境
所有主机需要进行操作
先安装一些基本工具
yum install -y vim wget ntp net-tools unzip lrzsz
3.1.1 修改主机名
# 192.168.1.41
hostnamectl set-hostname gitlab.server
# 192.168.1.40
hostnamectl set-hostname harbor.server
# 192.168.1.10
hostnamectl set-hostname rancher.server
# 192.168.1.11
hostnamectl set-hostname node1.k8s
# 192.168.1.12
hostnamectl set-hostname node2.k8s
# 192.168.1.13
hostnamectl set-hostname node3.k8s
3.1.2 关闭防火墙、Selinux
# 关闭并设置为开机禁用
systemctl stop firewalld && systemctl disable firewalld
# 查看防火墙状态
systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
# 临时关闭
setenforce 0
# 永久关闭
vim /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled
# 查看Selinux状态
getenforce #查看状态为Permissive
3.1.3 启动NTP服务
注:NTP服务可以只在k8s集群中安装,保证集群时间一致
关闭chrony
服务,该服务会影响到NTP服务的开机启动
systemctl stop chronyd && systemctl disable chronyd
设置NTP服务
vim /etc/ntp.conf
# 将时钟服务器更改为如下4个国内服务器
server 0.cn.pool.ntp.org
server 1.cn.pool.ntp.org
server 2.cn.pool.ntp.org
server 3.cn.pool.ntp.org
启动时间同步服务器
systemctl start ntpd \
&& systemctl enable ntpd \
&& ntpdate -u 0.cn.pool.ntp.org \
&& hwclock --systohc \
&& date
3.1.4 安装Docker-ce
使用到的软件都是基于docker,所以docker也作为标准化环境了
卸载老版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装Docker repository
# 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
# 设置仓库源(国内用阿里云的)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker-ce 19.03.8版本
yum install -y docker-ce-19.03.8
添加私有仓库harbor的地址
mkdir /etc/docker/
vim /etc/docker/daemon.json
添加如下内容
{
"data-root":"/home/dockerlib",
"registry-mirrors": ["https://1e7waog4.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.1.40"]
}
data-root:修改docker的根目录
registry-mirrors:镜像仓库改为阿里云的
insecure-registries:私有加密仓库设置为harbor的(稍后搭建harbor)
启动docker
systemctl daemon-reload && systemctl start docker && systemctl enable docker
docker命令补全
yum install -y bash-completion \
&& source /usr/share/bash-completion/bash_completion \
&& source /usr/share/bash-completion/completions/docker
3.2 安装Gitlab-ce
根据规划192.168.1.41
主机安装GitLab
docker run --detach \
--hostname 192.168.1.41 \
--publish 443:443 --publish 80:80 \
--name gitlab \
--restart always \
--volume /home/gitlab/config:/etc/gitlab \
--volume /home/gitlab/logs:/var/log/gitlab \
--volume /home/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:11.2.3-ce.0
访问地址:http://192.168.1.41/
设置好root密码后,进入界面
3.3 安装Harbor
根据规划192.168.1.40
主机安装Harbor
3.3.1 安装Docker Compose
Harbor需要使用docker-compose
启动,这里先安装。
curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 版本
[root@harbor ~]# docker-compose -v
docker-compose version 1.24.1, build 4667896b
3.3.2 下载Harbor
离线安装包下载地址:https://github.com/goharbor/harbor/releases
tar -zxvf harbor-offline-installer-v1.10.2.tgz
3.3.3 配置harbor.yml
vim harbor/harbor.yml
# 修改的内容,并将https部分注释掉
hostname: 192.168.1.40
data_volume: /home/harbor
harbor_admin_password: Harbor12345
database:
password: root123
jobservice:
max_job_workers: 10
log:
level: info
rotate_count: 50
rotate_size: 200M
location: /var/log/harbor
3.3.4 启动Harbor
执行安装目录中的install.sh
脚本,安装成功出现以下内容
[Step 5]: starting Harbor ...
Creating network "harbor_harbor" with the default driver
Creating harbor-log ... done
Creating harbor-portal ... done
Creating registryctl ... done
Creating harbor-db ... done
Creating redis ... done
Creating registry ... done
Creating harbor-core ... done
Creating nginx ... done
Creating harbor-jobservice ... done
✔ ----Harbor has been installed and started successfully.----
使用docker-compose关闭,开启服务
# 关闭服务
docker-compose down
# 开启服务
docker-compose up -d
访问地址:http://192.168.1.40/
登陆设置的账号密码,进入主界面
3.4 安装Jenkins
根据规划192.168.1.40
主机安装Jenkins
下载网址:https://www.jenkins.io/download/
下载长期支持的通用war
包。Jenkins需要Java和tomcat。
3.4.1 安装Java环境
下载地址
https://www.oracle.com/java/technologies/javase-jdk8-downloads.html
上传安装包至服务器的/opt
目录,解压、改名
tar -zxvf jdk-8u251-linux-x64.tar.gz
mv jdk1.8.0_251/ jdk-1.8
配置环境变量
vim /root/.bashrc
# 追加下面内容
export JAVA_HOME=/opt/jdk-1.8
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
# 刷新文件
source /root/.bashrc
3.4.2 安装Tomcat
下载tomcat:https://tomcat.apache.org/download-90.cgi
上传安装包至服务器的/opt
目录,解压、改名
tar -zxvf apache-tomcat-9.0.34.tar.gz
mv apache-tomcat-9.0.34 jenkins
3.4.3 启动Jenkins
# 清空webapps下的内容
rm -rf /opt/jenkins/webapps/*
# 解压jenkins.war 至webapps/ROOT目录下
mv jenkins.war /opt/jenkins/webapps/
修改Jenkins的家目录,默认是/root
vim /opt/jenkins/bin/catalina.sh
# 添加一个环境变量
export JENKINS_HOME=/home/jenkins
如图
启动Jenkins
/opt/jenkins/bin/startup.sh
访问地址:http://192.168.1.40:8080/
选择推荐的插件
安装中
创建管理员账号
主界面
3.5 安装Kubectl
根据规划192.168.1.40
主机安装kubectl
3.5.1 配置kubernetes的yum源
cat >> /etc/yum.repos.d/kubernetes.repo <<EOF
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=0
EOF
3.5.2 yum安装
yum install -y kubectl
3.5.3 kubectl命令补全
echo "source <(kubectl completion bash)" >> ~/.bashrc
source ~/.bashrc
3.6 安装Rancher
根据规划192.168.1.10
主机安装rancher
docker run --detach \
--publish 80:80 --publish 443:443 \
--volume /home/rancher:/var/lib/rancher \
--restart always \
--name rancher \
rancher/rancher:v2.4.3
访问地址:http://192.168.1.10/
设置密码
设置访问地址
3.7 安装kubernetes
根据规划192.168.1.11
,192.168.1.12
,192.168.1.13
这三台主机安装kubernetes集群,这里直接使用rancher
集成环境安装集群
选择自定义
集群设置
根据提示,将生成的命令复制到需要添加的节点主机上
等待集群加入
启动完毕
创建一个项目
给项目创建命名空间
3.7.1授权kubectl所在主机连接k8s集群
复制该内容
kubectl主机配置,将内容粘贴进config
中
mkdir ~/.kube
vim ~/.kube/config
3.7.2 给该项目的namespace创建harbor的私钥
kubectl create secret docker-registry demo-secret \
--namespace=demo-namespace \
--docker-server=http://192.168.1.40 \
--docker-username=admin \
--docker-password=xxxxxxxxxxx \
--docker-email=xxxxxxx@qq.com
查看创建的密钥
kubectl get secret -n demo-namespace
NAME TYPE DATA AGE
default-token-sgbrj kubernetes.io/service-account-token 3 15m
demo-secret kubernetes.io/dockerconfigjson 1 33s