跳转到主要内容

一个用于管理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

在两个命名空间(例如 productionstagingstaginglocal)之间同步媒体存储桶。

部署

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

在两个命名空间(例如 productionstagingstaginglocal)之间同步媒体存储桶。

镜像

build

构建 Docker 镜像。使用 <tag> 参数和“latest”标签。

配置

tag: 应用标签。如果未设置,则从 git 分支/提交生成。

app_build_target: 多阶段构建的 Dockerfile 目标。通常这是“deploy”

参数

tag: 应用标签。如果未设置,则从 git 分支/提交生成。

dockerfile: 非标准的 Dockerfile 位置和/或名称

target: 如果在任务中未设置配置变量,或需要针对非标准构建阶段,请使用此选项。

push

将 Docker 镜像推送到远程仓库。(默认)

此命令在推送之前执行 buildtag 任务。

配置

repository: Docker 仓库名称,例如 dockerhub.com/myproject。

tag: 要推送的标签。如果未设置,则从 git 分支/提交生成。

参数

tag: 应用标签。如果未设置,则从 git 分支/提交生成。

stop

停止 docker-compose 中的可部署镜像

tag

基于本地分支和提交哈希生成标签。将配置“tag”设置为生成的标签。

up

在本地 docker-compose 中启动可部署镜像以进行测试

信息

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 (18.8 kB 查看哈希值)

上传于

构建分发

invoke_kubesae-0.1.0-py2.py3-none-any.whl (20.8 kB 查看哈希值)

上传于 Python 2 Python 3

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面