Rancher+k3s+阿里云流水线详细配置教程

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、前言

当我们的项目是集群部署的时候我们再更新代码部署到机器上的时候是很麻烦的。所以这时候我们需要借助一些工具来帮助我们更便捷的进行更新和发布。

首先我准备了两台机器进行一个环境搭建演示。一台用于安装rancher一台用来跑微服务。

二、安装Rancher

1.安装docker

apt-get update
apt-get install docker.io

2.安装Rancher

docker run -d --restart=unless-stopped \
--name=rancher-server \
-p 80:80 -p 443:443 -p 6443:6443 \
--privileged \
-v /var/server/rancher:/var/lib/rancher \
rancher/rancher:stable

3.配置Rancher

通过浏览器输入服务器的ip地址后进入rancher界面

在这里插入图片描述

我们在服务器上输入下面这条语句来启动密码

docker logs <你的容器id>  2>&1 | grep "Bootstrap Password:"

在这里插入图片描述

接下来Rancher需要我们配置一个初始化密码并同意他们的协议

在这里插入图片描述

我们选择Set a specific password to use

Server Url配置我们服务器的外网IP如果你是虚拟机测试也可以填写虚拟机的地址

4.配置Rancher容器中的K3S

1.进入rancher容器

docker exec -it rancher-server /bin/bash

2.暴露k3s.yaml到环境变量中

echo export KUBECONFIG=/etc/rancher/k3s/k3s.yaml>>/etc/profile
source /etc/profile

3.在/var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl最后增加以下配置

# 
cp /var/lib/rancher/k3s/agent/etc/containerd/config.toml /var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl

# 编辑拷贝的文件
vi /var/lib/rancher/k3s/agent/etc/containerd/config.toml.tmpl

在文件中增加一条镜像源的配置

[plugins.cri.registry.mirrors]
  [plugins.cri.registry.mirrors."docker.io"]
    endpoint = ["https://vcw3fe1o.mirror.aliyuncs.com"] #镜像加速地址

镜像加速地址获取https://cr.console.aliyun.com/cn-guangzhou/instances/mirrors

4.私有镜像仓库配置

vim /etc/rancher/k3s/registries.yaml
mirrors:
  docker.io:
    endpoint:
      - "registry.cn-guangzhou.aliyuncs.com"
configs:
  "registry.cn-guangzhou.aliyuncs.com":
    auth:
      username: '你的私有仓库用户名'
      password: '你的私有仓库密码'

阿里云私有仓库获取地址

私有仓库和用户名密码在左侧菜单栏中的访问凭证中可以进行配置

5.退出Rancher容器并执行docker restart rancher-server即可

三、搭建工作机器的环境

1.安装docker和前面的步骤一样我就不重复了

2.安装mysql

docker run --restart always -p 3306 --name mysql -v /data/mysql/logs:/logs -v /data/mysql/db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

启动起来之后我们进入mysql容器中设置一下远程访问连接

docker exec -it mysql /bin/bash

mysql -uroot -p

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

flush privileges;

退出mysql容器。

由于我是单台机器内网搭建k3s和mysql所以我这里通过docker命令查看mysql容器的内网IP地址并记录下来

docker inspect mysql

在这里插入图片描述

3.安装k3s

curl -sfL http://rancher-mirror.cnrancher.com/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn \

  INSTALL_K3S_VERSION='v1.20.4+k3s1'  \
  sh -s - server \
  --disable traefik \
  --kubelet-arg eviction-hard='memory.available<200Mi,nodefs.available<2%'  \
  --datastore-endpoint='mysql://root:123456@tcp(172.17.0.5:3306)/kubernetes'  \
  --write-kubeconfig-mode 644

记得替换掉endpoint中mysql的连接信息

等待k3s安装完毕后我们就跟之前一样进行一次k3s的配置当然这次我们没有将k3s安装在docker中所以我们直接在节点服务器上配置即可。

配置完毕后我们输入下面的命令来重启k3s服务

systemctl restart k3s.service

四、配置阿里云容器镜像

首先进入进行控制台页面点击左侧的仓库管理 -> 命名空间进行一个配置
在这里插入图片描述

然后我们点击镜像仓库 -> 创建镜像仓库

在这里插入图片描述

命名空间选择刚刚创建的仓库名称和摘要可以随意填写完毕后点击下一步
在这里插入图片描述

选择本地仓库然后点击创建镜像仓库即可。

五、配置阿里云效codeup流水线

1.我们先在阿里云效创建一个项目

2.idea创建一个maven project

3.在工程根目录创建两个新的文件

Dockerfile

# 基于 java 8构建
FROM registry.cn-shenzhen.aliyuncs.com/quan_center/java:8
# 基于构建上下文 . 进行COPY 文件到 /root目录下
COPY ./target/k8s-spring-demo-0.0.1-SNAPSHOT.jar /root
# 容器启动执行的命令
CMD java -jar -Xms200m -Xmx200m -Dspring.profiles.active=test /root/k8s-spring-demo-0.0.1-SNAPSHOT.jar

manifests.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ${SERVICE}
spec:
  replicas: 1
  selector:
    matchLabels:
      app: ${SERVICE}
  template:
    metadata:
      labels:
        app: ${SERVICE}
    spec:
      containers:
        - image: ${IMAGE}
          imagePullPolicy: Always
          name: ${SERVICE}
          # 容器端口暴露  留意服务未指定端口暴露时默认8080
          # 因此暴露8080 是所有服务的默认端口。
          ports:
            - containerPort: 8080
      imagePullSecrets:
        - name: dockercfg-192

在这里插入图片描述

完毕后提交代码到阿里云codeup上

4.设置阿里云流水线

点击创建流水线
在这里插入图片描述

下拉到最底部找到空模板
在这里插入图片描述
首先我们先来添加流水线
1.添加流水线资源
在这里插入图片描述
选择codeup后选择好我们刚刚创建的代码仓库名称和分支后点击添加

2.在阶段1点击空任务后右侧会弹出一个配置表单我们对其进行配置
在这里插入图片描述
在配置好任务名称后添加一个java构建这个java构建可以不用更改直接用它默认的就好。
接下来我们再添加一个步骤
在这里插入图片描述
在这里插入图片描述
在这里他会显示出来我们之前在阿里云容器镜像服务中配置好的信息。
完毕后我们点击右上角的仅保存。

3.配置发布到k3s集群上
点击新的任务 选择 kubernetes发布
在这里插入图片描述

在这里插入图片描述
在这里需要配置我们的k3s集群。首先我们先切回rancher

在这里插入图片描述
点击添加集群
在这里插入图片描述
选择导入
在这里插入图片描述
输入集群名称后点创建

在这里插入图片描述
这时候它会有两行命令提示这时候我们打开刚刚搭建好环境的节点服务器
将这两行命令复制粘贴过去这时候就会发现我们刚刚创建好的集群已经有一个主机在线了
在这里插入图片描述
我们进入到helloworld这个仪表盘
在这里插入图片描述
再点击右上角的kubeconfig文件将里面显示的内容全部复制下来
在这里插入图片描述
在阿里云流水线那边点击新建连接将刚刚复制的内容粘贴过去
在这里插入图片描述
然后保存即可。

4.配置服务名称和包名
由于我在manifests.yaml文件中填入了两个变量参数
在这里插入图片描述
我们现在需要进行配置首先配置我们的服务名称
在这里插入图片描述
点击添加后我们选择自定义参数。
然后在添加一个上下游制品因为需要从我们的阿里云容器仓库中拉去制品
在这里插入图片描述
选择公网地址的那个选项
在这里插入图片描述
5.修改manifests的文件路径
由于在工程根目录我们直接填写
./manifests.yaml即可
在这里插入图片描述

到这里我们保存完毕后流水线的配置就已经完毕了。

六、给k3s配置私有镜像仓库的密钥

1.按照阿里云镜像加速的提示让我们服务器的Docker先登陆进去

在这里插入图片描述
输入下面的命令查看我们刚刚配置好的

cat ~/.docker/config.json

在这里插入图片描述

2.创建一个Secret来保存你的验证口令

kubectl create secret docker-registry dockercfg-192 --docker-server=阿里云私有镜像的公网地址 --docker-username=阿里云私有镜像仓库用户名 --docker-password=阿里云私有镜像仓库密码

其中dockercfg-192为你的密钥名称而这个名称应该与manifests.yaml文件中的imagePullSecrets一一对应
在这里插入图片描述

至此我们的配置就都完成了。

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6