使用kubernetes实现蓝绿色部署自动化的接口

bg-kube的Python项目详细描述


…图片::https://img.shields.io/pypi/v/bg kube.svg
:目标:https://pypi.python.org/pypi/bg kube

…图片::https://travis ci.org/stphivos/bg kube.svg
:目标:https://travis ci.org/stphivos/bg kube

…图片::https://codecov.io/github/stphivos/bg kube/coverage.svg
:目标:https://codecov.io/github/stphivos/bg kube

*****
**
bg kube
*****
一个用于在kubernetes群集上自动化蓝绿色部署的接口。

**请注意,此项目处于初始阶段开发,尚未准备好投入生产使用。
在测试/准备环境中小心使用。**


环境。
*易于扩展以支持多个云提供商(不仅仅是GKE和AWS/KOP)。
*最小设置/资源-不在云中,可从Travis等CI服务调用。


工作流
==
1。使用"docker build"命令从dockerfile生成并标记容器映像。
2。将标记图像推送到容器注册表(此时只有GCR和ECR)。
3.为数据库迁移创建"job"工作负载(可选-应向后兼容)。
4。使用新映像创建"部署"工作负载。
5。创建用于运行指定的烟雾测试命令(可选)的运行状况检查的"服务"。
*如果测试成功,则更新公共"服务"工作负载以指向新部署。
*如果测试失败,公共服务不受影响。

https://kubernetes.io/docs/tasks/tools/install kubectl/>;`

google kubernetes engine
----
*`创建项目<;https://console.cloud.google.com/project create>;`
*`创建集群<;https://console.cloud.google.com/kubernetes/add>;`
*`安装sdk<;https://cloud.google.com/sdk/downloads>`
*`install kops cli<;https://github.com/kubernetes/kops/blob/master/docs/install.md>;`\u
*`setup environment<;https://github.com/kubernetes/kops/blob/master/docs/aws.md>;`

最小配置示例代码块::yaml

apiversion:v1
kind:service
元数据:
注释:
external-dns.alpha.kubernetes.io/hostname:$域名。
标签:
运行:$service\u run标签
名称:$service\u名称
命名空间:默认值
规范:
端口:
-协议:tcp
端口:$service_port
目标端口:$container_port
选择器:
运行:$service_run_label
颜色:$color
类型:pod
类型:loadbalancer


服务配置-运行状况支票代码块::yaml

apiversion:v1
kind:service
元数据:
标签:
运行:$service_run_label
名称:$smoke_service_name
命名空间:默认
规范:
端口:
-协议:tcp
端口:$service_port
目标端口:$container_port
选择器:
运行:$service_run_label
颜色:$color
类型:pod
类型:loadbalancer



部署配置代码块::yaml

apiversion:extensions/v1beta1
kind:deployment
元数据:
标签:
颜色:$color
运行:$service\u run标签
名称:$deployment\u name-$color
命名空间:默认
规范:
副本:2
选择器:
匹配标签:
颜色:$COLOR
运行:$SERVICE\U RUN标签
模板:
元数据:
标签:
运行:$SERVICE\U RUN标签
颜色:$COLOR
标记:"$TAG"
类型:POD
规范:
容器:
-命令:["gunicorn","django_app.wsgi","--name","todoapp","-b",":$container_port"]
环境:
-名称:环境
值:$env
-名称:db_url
值:$db_url
图像:$image_name:$tag
名称:$container_name
端口:
-容器端口:$container_port
协议:tcp

env
--
::


env=prod
db_url=postgres://user:pass@1.2.3.4:5432/todoapp

image_name=gcr.io/todoapp-12345/todo api
container_port=8000
container_name=cnt todo api

project_name=todoapp-12345
cluster_name=todoapp cluster
cluster_zone=us-central1-a
domain_name=todoapp.example.com


service_port=80
service_name=svc todo api
service_config=./config/service.yaml
service_run label=todo api

部署名称=dep todo api
部署配置=./config/deployment.yaml

命令参数

--群集名称群集名称:群集的唯一名称
-z群集分区,--群集分区群集分区:群集位置的分区名称
-m docker_machine_name,--docker machine name docker_machine_name:提供给docker build命令的docker build args docker_build args参数,用空格分隔
-i image_name,--image name image_name:要使用docker生成的容器映像的名称
-服务名称,--服务名服务名:服务客户端的主服务名
--服务配置服务配置:主服务配置
--服务超时服务超时等待正常状态或返回错误的超时秒数
--部署配置部署配置包含主服务pod的部署配置
--部署超时部署超时超时等待正常状态或返回错误的超时秒
-x上下文,--context上下文:用于生成容器映像的docker上下文路径
-d dockerfile,--dockerfile dockerfile:dockerfile path
--烟雾服务配置烟雾服务配置暴露的烟雾服务lb的烟雾服务配置以进行健康检查
--烟雾测试命令烟雾测试命令:针对烟雾服务运行健康检查的shell命令
--db migrations job config seed db_migrations_job_config_seed:用初始数据填充数据库的作业配置
--db migrations job timeout db_migrations_job_timeout timeout secs等待正常状态或返回错误
--db migrations status命令db_migrations_status_命令:在任何正在运行的部署播客上执行shell命令以返回当前迁移状态
--db migrations apply命令db_migrations_apply_命令在任何正在运行的部署播客上执行的hell命令,以应用当前映像中生成的最新迁移
--db migrations rollback command db廑migrations廑rollback廑command:在任何正在运行的部署播客上使用migrations status command stdout执行的shell命令作为参数-在应用迁移之前检索,执行回滚到该状态的步骤:aws cluster state storage bucket name数据库迁移向后兼容
*支持更多云提供商
*更好的测试覆盖率

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Libgdx Android Gradle生成错误   java中的多线程不正确同步   java如何将带有子查询和计数的SQL查询转换为JPA条件生成器   java MQTT或RSMB可以处理多少用户和推送消息?   JAVAlang.IllegalArgumentException:setAttribute:不可序列化属性   JavaMaven/Eclipse试图用主代码编译测试   java Ormlite保存错误的日期日期,具体取决于一天中的时间   java从234树中搜索带有电话号码的单词   java为什么我在Eclipse包资源管理器中看不到我在文件资源管理器中看到的所有文件夹   java xpath表达式,用于选择具有特定字符串作为文本的父节点的子节点   使用Eclipse将wsdl转换为java类   java如何创建自定义JPanel扩展并从NetBeans调色板使用它?   java AspectJ模式签名   java小程序。加载本机时出现不满意的链接错误。动态链接库   java如何使用位图和画布?创建自定义水印   java如何解决OutOfMemoryError?