文章目录
gitlab + k8s + cicd + helm 持续集成
测试项目地址: https://gitee.com/texousliu/demo-gitlabci.git
简介
- 文章主要讲了 gitlab docker 搭建,k8s 集群搭建,gitlab-ci 和 k8s 集成持续交付
- 项目总共用了 4 台服务器:1 台装 gitlab, 3 台装 k8s 集群
- gitlab 服务器安装 docker、gitlab for docker,gitlab-runner for docker
- gitlab-runner 主要用来打包构建镜像,并推送到 gitlab container registry
- gitlab 服务器安装前准备只要关闭防火墙即可
- k8s 集群安装 docker、k8s、flannel
- k8s master 安装 helm、gitlab-runner
- helm 编排容器
- gitlab-runner 执行 helm ,发布项目
Kubernetes 搭建步骤
安装前的准备 (所有节点)
关闭防火墙
$ systemctl stop firewalld
$ systemctl disable firewalld
关闭 swap
$ swapoff -a # 临时
$ vi /etc/fstab # 永久, 注释 swap 那一行
设置主机名
$ vi /etc/sysconfig/network
# HOSTNAME=k8s-master
添加 主机名与 ip 映射
$ cat /etc/hosts
172.16.3.40 k8s-master
172.16.3.41 k8s-node1
172.16.3.42 k8s-node2
同步时间
$ yum install ntpdate -y
$ ntpdate ntp.api.bz
docker 安装 (所有节点)
移除旧 docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装必要的包
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
配置 stable 仓库
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安装 docker
$ sudo yum install docker-ce docker-ce-cli containerd.io
启动 docker
$ sudo systemctl start docker
配置开机启动
$ sudo systemctl enable docker
kubernetes 安装 (所有节点)
编写 kubernetes.repo 文件
$ cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
关闭 selinux
$ setenforce 0
$ sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
安装 kubelet kubeadm kubectl
$ yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
配置启动 kubelet
$ systemctl enable --now kubelet
流量桥接(如果需要)
$ cat <<EOF > /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
$ sysctl --system
kubernetes flannel 安装: (所有节点)
执行安装命令
$ kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/2140ac876ef134e0ed5af15c65e414cf26827915/Documentation/kube-flannel.yml
创建 k8s 主节点 (主节点)
$ kubeadm init \
--apiserver-advertise-address=192.168.220.35 \
--image-repository registry.aliyuncs.com/google_containers \
--kubernetes-version v1.17.0 \
--service-cidr=10.1.0.0/16 \
--pod-network-cidr=10.244.0.0/16
# --apiserver-advertise-address: 填写主节点 ip
# --image-repository: 国内使用 aliyun 镜像
# --kubernetes-version: k8s 版本号
# 后面两个配置不需要变,固定就好
# 安装好后日志打印的最后一行需要保留下来, 这是 node 节点加入的命令: 如果命令过期的话,需要重新生成 secret
$ mkdir -p $HOME/.kube
$ sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
$ sudo chown $(id -u):