一个用于管理Kubernetes项目的任务库。
项目描述
invoke-kubesae
kubesae库是一个invoke任务库,为与Kubernetes集群一起工作提供一些基本管理任务。
许可
此invoke库在BSD许可协议下发布。有关详细信息,请参阅LICENSE文件。
版本
我们试图不进行破坏性更改以破坏向后兼容性。尽管如此,为了安全起见,您应该始终使用此存储库的固定版本。升级前请检查发布历史以获取任何说明或警告。
贡献
如果您认为您已发现错误或有兴趣为此项目做出贡献,请查看GitHub上的invoke-kubesae。
由Caktus咨询集团,LLC赞助开发。
安装
pip安装到您的虚拟环境
$ pip install invoke-kubesae
使用方法
Invoke从项目根目录中的tasks.py
文件中工作。
以下代码片段导入所有当前集合以显示支持AWS的示例,然后为各种任务设置一些配置值。请注意,GCP也由providers.gcp
模块支持,并且与providers.aws
模块的工作方式类似。有关每个任务使用的配置的更多文档,请参阅以下内容。
tasks.py:
import invoke from colorama import init from kubesae import * init(autoreset=True) @invoke.task def staging(c): c.config.env = "staging" c.config.namespace = "myproject-staging" c.config.container_name = "myproject-web" ns = invoke.Collection() ns.add_collection(image) ns.add_collection(aws) ns.add_collection(deploy) ns.add_collection(pod) ns.add_task(staging) ns.configure( { "app": "appname", "aws": { "region": "us-west-2", "profile_name": "my-aws-profile", # a profile from .aws/credentials }, "repository": "123456789012.dkr.ecr.us-east-1.amazonaws.com/myproject", "run": { "echo": True, "pty": True, }, } )
现在,你可以通过运行以下命令来查看所有当前可用的任务
$ inv -l
构建镜像
$ inv image.build
登录 AWS Docker 仓库
$ inv aws.docker-login
推送刚刚构建的镜像
$ inv image.push
设置您的 kubectl 上下文
$ inv aws.configure-eks-kubeconfig
安装 Ansible 角色
$ inv deploy.install
部署刚刚推送的相同标签
$ inv image.tag staging deploy.deploy
任务参考
(按字母顺序和集合排序)
AWS
configure-eks-kubeconfig
获取 EKS 访问令牌。
配置
aws.region: AWS 区域名称(默认:us-east-1)
cluster: EKS 集群名称
docker-login
获取用于 docker login 的 ECR 凭据。
配置
aws.region: AWS 区域名称(默认:us-east-1)
repository: Docker 仓库名称,例如 dockerhub.com/myproject。
sync-media
在两个命名空间(例如 production 到 staging 或 staging 到 local)之间同步媒体存储桶。
部署
deploy
部署您的 k8s 应用程序。(默认)
警告:如果您在 CI 中运行此操作,请确保设置 –verbosity=0 以防止环境变量以纯文本形式在 CI 控制台中记录。
先决条件:deploy.install
配置
env: 目标 ansible 主机(“staging”,“production”等 …)
tag: 部署的镜像标签(默认:与构建 & 推送默认标签相同)
verbosity: 从 0 到 4 的整数级别(最详细)
install
安装 ansible-galaxy requirements.yml。
playbook
运行指定目录中(deploy/)的 Ansible playbook。用于运行与默认 playbook 不同的 playbook。
警告:如果您在 CI 中运行此操作,请确保设置 –verbosity=0 以防止环境变量以纯文本形式在 CI 控制台中记录。
配置
name: 要运行的 Ansible playbook 名称,包括扩展名
extra: 传递给 ansible-playbook 的额外命令行参数
verbosity: 从 0 到 4 的整数级别(最详细)
GCP
configure-gcp-kubeconfig
通过 GCP 认证以获取集群凭据。
配置
app: GCP 中的项目名称
gcp.region: GCP 区域名称(默认:us-east1)
cluster: GCP 中的集群名称(默认 config.cluster)
docker-login
通过 GCP 认证并配置 Docker。
配置
app: GCP 中的项目名称
repository: Docker 仓库名称,例如 us.gcr.io/myproject/myproject
sync-media
在两个命名空间(例如 production 到 staging 或 staging 到 local)之间同步媒体存储桶。
镜像
build
构建 Docker 镜像。使用 <tag> 参数和“latest”标签。
配置
tag: 应用标签。如果未设置,则从 git 分支/提交生成。
app_build_target: 多阶段构建的 Dockerfile 目标。通常这是“deploy”
参数
tag: 应用标签。如果未设置,则从 git 分支/提交生成。
dockerfile: 非标准的 Dockerfile 位置和/或名称
target: 如果在任务中未设置配置变量,或需要针对非标准构建阶段,请使用此选项。
push
将 Docker 镜像推送到远程仓库。(默认)
此命令在推送之前执行 build 和 tag 任务。
配置
repository: Docker 仓库名称,例如 dockerhub.com/myproject。
tag: 要推送的标签。如果未设置,则从 git 分支/提交生成。
参数
tag: 应用标签。如果未设置,则从 git 分支/提交生成。
stop
停止 docker-compose 中的可部署镜像
tag
基于本地分支和提交哈希生成标签。将配置“tag”设置为生成的标签。
up
在本地 docker-compose 中启动可部署镜像以进行测试
信息
print-ansible-vars
一个命令,用于通过环境检查任何 Ansible 变量。如果没有指定变量,则将打印当前的 k8s 环境变量。
- 参数
c (invoke.Context):当前调用上下文。var(字符串,可选):您想公开的Ansible变量。默认为None。yaml(字符串,可选):Ansible路径。默认为None。pty(布尔值,可选):如果您将输出管道传输到另一个命令,可能需要将其设置为False。默认为True。hide(布尔值,可选):如果您不希望结果打印到控制台,请设置为“out”。默认为False。
pod-stats
报告集群中总Pod与Pod容量。
Pod
clean-collectstatic
移除所有collectstatic Pods
配置
namespace:将被清理的k8s命名空间
clean-debian
清除旧debian Pods以便新Pod运行。
clean-migrations
移除所有迁移作业
配置
namespace:将被清理的k8s命名空间
debian
一个临时容器,用于在集群上运行系统管理任务
fetch_namespace_var
获取可能存在于运行容器上的变量名称。查询容器以获取该变量的值,并将其作为Result对象返回。
配置
namespace:将被清理的k8s命名空间
container_name:Docker容器的名称。
参数
fetch_var(字符串):目标容器上预期的环境变量
hide(布尔值,可选):如果为True,则隐藏stdout。默认为False。
get_db_dump
获取环境的数据库转储。
配置
namespace:将被清理的k8s命名空间
container_name:Docker容器的名称。
参数
db_var(字符串):存储数据库连接的变量名称。
filename(字符串,可选):存储转储的文件名。如果为None,则默认为{namespace}_database.dump。
restore_db_from_dump
将数据库转储文件加载到环境的数据库中。
配置
namespace:将被清理的k8s命名空间
container_name:Docker容器的名称。
参数
db_var(字符串):存储数据库连接的变量。
filename(字符串):要还原的转储文件的文件名。
shell
在应用程序Pod上提供shell。 (默认)
配置
container_name:Docker容器的名称。
Utils
get_backup_from_hosting
从caktus托管服务的存储桶下载备份。
参数
c(invoke.Context):运行上下文 latest(字符串,可选):从指定的时间段获取最新的备份。默认为“daily”。选项为“daily”,“weekly”,“monthly”,“yearly”。profile(字符串,可选):允许访问S3存储桶的AWS配置文件。默认:“caktus”。backup_name(字符串,可选):特定的备份文件名。list(布尔值,可选):如果设置,将列出项目文件夹中的存储桶内容并退出。
使用此任务需要在您的 tasks.py 配置中添加 hosting_services_backup_folder
ns.configure({“hosting_services_backup_folder”: “<PROJECT_FOLDER>”,})
count_backups
对由caktus-hosting-services cronjob生成的备份进行排序,并打印每种类型的数量。
参数
c(invoke.Context):运行上下文 bucket_identifier(字符串,可选):存储备份的存储桶名称。默认:caktus-hosting-services-backups profile(字符串,可选):具有访问存储桶列表访问权限的AWS配置文件。默认:caktus extra_schedules(字符串,可选):包含每个额外调度名称的逗号分隔字符串,不允许空格。示例:‘every2hours,every-hour,every-thursday’
list_backup_schedules
列出项目中托管存储桶中找到的备份计划。
参数
c(invoke.Context):运行上下文 bucket_identifier(字符串,可选):存储备份的存储桶名称。默认:caktus-hosting-services-backups profile(字符串,可选):具有访问存储桶列表访问权限的AWS配置文件。默认:caktus
项目详情
invoke-kubesae-0.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f6727ae826f9fc28d6704431a5f44666b29cdac0de84e19d2fdebf8fca0bca05 |
|
MD5 | e886a2ee21baba7ed76dbc5559a7d9e3 |
|
BLAKE2b-256 | ca75fb07d7fc9f23ccc36b7bc903f78468add72f6eeabd83cc2dcf4b710ba725 |
invoke_kubesae-0.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 72d46b382d9bf4128bfd03900d9393e11dc7b08d4188d92094090cc4cdb71a3a |
|
MD5 | 41884690d1c9803531b5c0b2c3646fb5 |
|
BLAKE2b-256 | 3db9af3ca3cb5ea4ae54f0c5497af91a6936c220f5fe6b6ef6349bf88601c0e2 |