使用ansible |
您所在的位置:网站首页 › k8s微服务部署原理 › 使用ansible |
- 使用 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
模板目录 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 运行截图
为保证运行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+钉钉通知,自动化部署通知:
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 |