使用rancher发布k8s主要流程记录
K8s 最佳实践整理
文档说明:
此文档只介绍最简单的将一个项目用rancher部署到k8s集群上的主要流程,暂时没有对docker、rancher、k8s的具体概念做深入探讨,讲解。这些知识可以另外起文档或者专题专门研究。整理了几个关键节点的相对重要的几个工程化实践。
1、 集群初始化完成环境搭建(这些步骤在rancher中)。
我做了文字版的说明,上面地址有图片,更加直观;
1.1 集群创建
跟运维确认是用rancher创建的;具体为:
AddCluster -> From Existing Nodes
1.2 镜像数据仓库准备
Resources->Secrets->Registry Credentials(Address-custom: harbor的目录)
1.3 Jekins目录设置
Resources -> Pipelines -> Config Repositories
需要在Git仓库中提前配置号权限;
1.4 项目创建
Eg: gmg
1.5 命名空间
Eg: gmg
1.6 ConfigMap的创建
2、 日常项目迁移和维护操作步骤。
2.1 Dockfile文件自动生成后,替换默认的基本镜像地址为:
FROM harbor.XXX.com/commonality/dotnet-core-aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
FROM harbor.XXX.com/commonality/dotnet-core-sdk:3.1-buster AS build
WORKDIR /src
(其他扩充配置可以修改Dockerfile文件)
2.2 在项目最外层添加.rancher-pipeline.yml文件, 比较重要的一个资源配置为
- applyYamlConfig:
path: ./bjbmp/yamls/bjbmp.service.${CICD_GIT_BRANCH}.yaml
注意:
i) 如果branch分支配置不一样(比如正式、测试对应不同的域名的使用场景),可以考虑用着方法区分,可能有其他方式,暂时还没有研究,如果有更好的方式可以考虑使用;
ii) 这个地方的applyYamlConfig可以使用多个,比如ingress、service,deployment等指定不同的文件;
iii) 文件路径可以自己指定,放到项目中放一个yalms文件夹是一个比较好的选择;
2.3 平时维护时,只需要修改deployment.yaml文件,普通程序开发只能修改deployment,这样保证ingress等不会被轻易修改到;(降低了因为所有配置放到一个文件中,因为修改一个配置导致其他受影响的风险)
3、 使用过程中的常用技巧
3.1 仓库地址选择:测试库、正式库分开保存 VS 只用一个库
建议: 只用一个库,会省去很多麻烦
建议分开, 如果同一个,随着数量的增多,会使harbor库变得原来越大,备份越来越慢。 而正式的数量比较少,测试的经常发布,数量会非常庞大,尤其是项目多的时候;
3.2 用master develop区分
4、 常碰到的问题记录
4.1 yalm文件
a) name后面要跟空格
b) harbor库, service的名字等,都需要用小写子母;
c) 文件夹的路径,区分大小写
4.2 部署方面
a) 尽量直接编写yalm文件,代替直接操作rancher来操作k8s的配置;
b) Ingress文件要统一管理;
不能根据when,区分正式,测试的host unknown field "when" in io.k8s.api.extensions.v1beta1.IngressRule
解决方案: 两个域名都注册一下;(测试ing)
---------------------------补充ing