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

一、前言

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

首先我准备了两台机器进行一个环境搭建演示。一台用于安装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界面

Rancher+k3s+阿里云流水线详细配置教程_第1张图片

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

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

Rancher+k3s+阿里云流水线详细配置教程_第2张图片

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

Rancher+k3s+阿里云流水线详细配置教程_第3张图片

我们选择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

Rancher+k3s+阿里云流水线详细配置教程_第4张图片

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

四、配置阿里云容器镜像

首先进入进行控制台页面,点击左侧的仓库管理 -> 命名空间进行一个配置
Rancher+k3s+阿里云流水线详细配置教程_第5张图片

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

Rancher+k3s+阿里云流水线详细配置教程_第6张图片

命名空间选择刚刚创建的,仓库名称和摘要可以随意填写,完毕后点击下一步
Rancher+k3s+阿里云流水线详细配置教程_第7张图片

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

五、配置阿里云效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

Rancher+k3s+阿里云流水线详细配置教程_第8张图片

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

4.设置阿里云流水线

点击创建流水线
Rancher+k3s+阿里云流水线详细配置教程_第9张图片

下拉到最底部,找到空模板
Rancher+k3s+阿里云流水线详细配置教程_第10张图片
首先我们先来添加流水线
1.添加流水线资源
Rancher+k3s+阿里云流水线详细配置教程_第11张图片
选择codeup后选择好我们刚刚创建的代码仓库名称和分支后点击添加

2.在阶段1点击空任务后,右侧会弹出一个配置表单,我们对其进行配置
Rancher+k3s+阿里云流水线详细配置教程_第12张图片
在配置好任务名称后添加一个java构建,这个java构建可以不用更改,直接用它默认的就好。
接下来我们再添加一个步骤
Rancher+k3s+阿里云流水线详细配置教程_第13张图片
Rancher+k3s+阿里云流水线详细配置教程_第14张图片
在这里他会显示出来我们之前在阿里云容器镜像服务中配置好的信息。
完毕后我们点击右上角的仅保存。

3.配置发布到k3s集群上
点击新的任务 选择 kubernetes发布
Rancher+k3s+阿里云流水线详细配置教程_第15张图片

Rancher+k3s+阿里云流水线详细配置教程_第16张图片
在这里需要配置我们的k3s集群。首先我们先切回rancher

Rancher+k3s+阿里云流水线详细配置教程_第17张图片
点击添加集群
Rancher+k3s+阿里云流水线详细配置教程_第18张图片
选择导入
Rancher+k3s+阿里云流水线详细配置教程_第19张图片
输入集群名称后点创建

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

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

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

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

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

Rancher+k3s+阿里云流水线详细配置教程_第28张图片
输入下面的命令查看我们刚刚配置好的

cat ~/.docker/config.json

Rancher+k3s+阿里云流水线详细配置教程_第29张图片

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

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

其中,dockercfg-192为你的密钥名称,而这个名称应该与manifests.yaml文件中的imagePullSecrets一一对应
Rancher+k3s+阿里云流水线详细配置教程_第30张图片

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

你可能感兴趣的:(中间件,阿里云,docker,云计算)