使用ansible

您所在的位置:网站首页 k8s微服务部署原理 使用ansible

使用ansible

2023-07-01 14:29| 来源: 网络整理| 查看: 265

- 使用 ansible 管理和部署服务到 kubernetes - 适用于项目容器化,多套 k8s 环境的管理,可结合`CICD`工具做`DevOps` - 来自于项目实践,已部署多套 k8s 环境 ansible-app2k8s #1 介绍 使用 ansible 管理和部署服务到 kubernetes 适用于项目容器化,多套 k8s 环境的管理,可结合CICD工具做DevOps 来自于项目实践,已部署多套 k8s 环境 自建 k8s 阿里云 ACK 腾讯云 TEK 华为云 CCE AWS EKS 微软云 AKS #2 主要功能 镜像构建并推送到镜像仓库 环境初始化(创建 namespace、储存卷、驱动等) 部署监控(prometheus、grafana、loki) 构建与部署服务到 k8s(主要用途) #3 运行环境 系统 Ubuntu 20 ansible 2.7 (高版本可能出现语法兼容性问题) kubenertes(能被kubectl客户端连接即可) #4 原理与结构

原理很简单,使用ansible管理模板,调用kubectl执行部署 ansible-templates -> deploy.yml -> kubectl -> kubenertes 执行过程使用tag标记,如-t deploy执行deploy部分 根据执行过程,大致分为以下步骤模块

base-build 基础镜像构建(docker build) push 推送公共镜像到镜像仓库(docker pull) init 环境初始化(如创建 namespace) monitor 监控警报(如 prometheus) build 构建服务镜像(docker build) deploy 部署服务(kubectl apply ) ingress 配置域名访问(7 层代理)

模板目录 roles/k8s/templates 根据服务类别分为如下子目录

base 基础镜像 dockerfile ingress 域名解析配置 init 环境初始化 yaml 文件 java jar包构建镜像和部署模板 jetty 使用jetty的服务构建和部署模板 monitor 监控警报相关 yaml ms 没有单独参数文件的微服务部署模板 nignx 前端静态使用 nginx 容器的部署模板

针对不同k8s环境如dev、prod,使用各自参数配置如储存、镜像仓库、资源限制等 使用ansible -i 指定inventory路径并使用对应的组变量 如dev环境的k8s配置文件 group_vars/dev/k8s.yml 服务app-v1的dev环境配置 group_vars/dev/k8s_apps/app-v1.yml prod环境使用对应配置路径 group_vars/prod/k8s_apps/app-v1.yml

运行截图

#5 dev 环境准备与配置 #5.1 快速安装 k8s export Ver=1.22.16 #k8s版本 curl -ks http://elvin.vip/ks/k8s/k8s.master.ha.sh |bash # 参考https://www.cnblogs.com/elvi/p/8976305.html #5.2 获取 ansible-app2k8s mkdir -p /data/ansible-app2k8s cd /data/ansible-app2k8s #gitee git clone https://gitee.com/alivv/ansible-app2k8s.git ./ #github #git clone https://github.com/alivv/ansible-app2k8s.git ./ #5.3 运行 ansible-app2k8s 容器

为保证运行ansible版本一致,我做了ansible镜像

#查看shell cat /data/ansible-app2k8s/files/run.ansible-app2k8s.sh sudo docker rm -f ansible-app2k8s &>/dev/null sudo docker run -dit --net=host \ --name ansible-app2k8s -h app2k8s \ -w /data/ansible-app2k8s \ -v /tmp:/tmp \ -v /etc/hosts:/etc/hosts \ -v ~/.ssh:/root/.ssh \ -v /data/ansible-app2k8s:/data/ansible-app2k8s \ registry.cn-shanghai.aliyuncs.com/elvin/ansible:2.7.18-focal sudo docker ps -l #运行容器 ansible-app2k8s bash /data/ansible-app2k8s/files/run.ansible-app2k8s.sh #配置别名 alias app2k8s='docker start ansible-app2k8s ; docker exec -it ansible-app2k8s bash' #linux echo "alias app2k8s='docker start ansible-app2k8s ; docker exec -it ansible-app2k8s bash'" >>~/.bashrc #macOS echo "alias app2k8s='sudo docker start ansible-app2k8s ; sudo docker exec -it ansible-app2k8s bash'" >>~/.zshrc #进入ansible-app2k8s容器(Ctrl+d退出) app2k8s #查看ansbile版本 ansible --version #5.4 初始化 docker-build 节点

本实例把多个功能部署在 docker-build 单节点 为了安全,实际可根据需求可拆分为多个节点

#5.4.1 更改配置

配置 dev 节点 env/dev/k8s.inv

#配置dev环境节点信息 env/dev/k8s.inv cat > env/dev/k8s.inv 镜像构建 -> 镜像仓库

配置里有 3 个镜像仓库地址(公有云分内网和外网地址)

local_repository_url 构建默认 push 到本地镜像仓库 push_repository_url 推送到远程镜像仓库地址 deploy_repository_url 部署时的镜像仓库地址 #8.9 安全

请按需并自行解决安全问题,提示以下注意事项:

yaml 储存节点配置访问控制 使用 ansible-vault 加密 ansible 密码文件 手动配置 kubeconfig, 并限制 k8s-apiserver 访问 #8.10 其它 由于所有部署步骤,模板均可按需更改,自由度很高 k8s 所有配置、部署的操作,均保存 yaml 文件,便于以后升级、迁移等维护 若已熟悉 ansible,可使用本项目作为管理 k8s 部署服务的参考 做自动化部署还需结合其它工具,比如使用 Jenkins

使用 Jenkins+ansible+钉钉通知,自动化部署通知:

#9 日常使用命令参考 #更改构建参数后,查看dockerfile变化 ansible-playbook k8s.yml -i env/dev -D -t dockerfile -e applist=app-v1 -C #更改部署参数后查看deployment变化 ansible-playbook k8s.yml -i env/dev -D -t yml -e applist=app-v1 -C #单独更改configmap配置后,服务需要重启生效 ansible-playbook k8s.yml -i env/dev -D -t config,restart -e applist=app-v1 #构建和部署服务,rmi是删除构建节点已存在的相同tag镜像 ansible-playbook k8s.yml -i env/dev -D -t rmi,build,deploy -e applist=app-v1 #部署生产环境,使用upload上传镜像到外网镜像仓库 ansible-playbook k8s.yml -i env/prod -D -t upload,deploy -e applist=app-v1 #更改prometheus监控警报规则后需要reload生效 ansible-playbook k8s.yml -i dev -D -t monitor-config,monitor-reload #10 作者

Elvin [email protected] 主要博客 http://blog.elvin.vip

Source https://gitee.com/alivv/ansible-app2k8s

https://github.com/alivv/ansible-app2k8s

本文来自博客园,作者:blog-elvin-vip,转载请注明原文链接:https://www.cnblogs.com/elvi/p/17502093.html



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3