跳转到主要内容

使用Emrichen模板与Skaffold一起使用

项目描述

Emskaffolden = Emrichen + Skaffold

Emrichen 是一种模板引擎,它接受用 YAML 或 JSON 编写的模板,处理变量替换等操作,并输出 YAML 或 JSON。Emrichen 特别擅长用于 Kubernetes 表现的模板。

Skaffold 是一款开发者工具,用于处理构建、推送和部署应用程序的工作流程,让您专注于最重要的任务:编写代码。Skaffold 在以下三个方面特别出色:使用 Kubernetes 进行日常开发、提供一致的方法进行 CI 中的镜像标记以及在 CD 中监视 Kubernetes 部署完成。

Emskaffolden 通过编译 Skaffold 配置文件和 Kubernetes 模板与 Emrichen,然后调用 Skaffold 来结合 Emrichen 和 Skaffold。

Emskaffolden 是有偏见的:它可能不适合每个人的工作流程。如果您发现 Emskaffolden 的工作方式不适合您的需求,您可以在 issues 中提出您的观点,但我们努力保持核心非常小。

为什么用 Skaffold 包装而不是为 Skaffold 实现对 Emrichen 的支持?

  1. Emrichen 是一种相对未知的模板工具,所以他们可能永远不会接受将 Emrichen 集成到 Skaffold 中的 PR。我不会这样做 ;)
  2. 这样我们就可以使用 Emrichen 支持任何 Skaffold 部署方法,而不仅仅是 kubectl。您甚至可以使用 Emrichen 生成 Kustomize 或甚至是 Helm YAML!嗯,不确定您为什么想这样做。但您可以。

安装

安装 SkaffoldPython 3.5+。然后使用 Pip 安装 emskaffolden

python3 -m pip install emskaffolden

使用

当您调用 emskaffolden(或简称 emsk)时,它将执行以下步骤

  1. skaffold.in.yaml 编译为 skaffold.compiled.yaml(使用 -F 修改)
  2. 读取 skaffold.compiled.yaml,发现所有引用的 *.compiled.yaml 文件,找到相应的 *.in.yaml 模板并将其编译为 *.compiled.yaml
  3. 使用 -f skaffold.compiled.yaml 和任何您在 emskaffolden 命令行中 -- 之后传递的其他参数调用 Skaffold。

使用 -- 分隔 Emrichen 和 Skaffold 选项

一般来说,位于 -- 前的选项会传递给 Emrichen,位于 -- 后的选项会传递给 skaffold。Skaffold 的子命令(或基本上任何 位置 参数)可以位于 -- 的任一侧。

所以,以下两个示例是可互换的

emskaffolden run -f kubernetes/staging.vars.yaml -- --default-repo=harbor.con2.fi/con2
emskaffolden -f kubernetes/staging.vars.yaml -- run --default-repo=harbor.con2.fi/con2

它们都是可互换的,并且都指示 Emrichen 使用 kubernetes/staging.vars.yaml var 文件,并调用 Skaffold 执行 run -f skaffold.compiled.yaml --default-repo=harbor.con2.fi/con2

另一方面,如果你省略了 --,Emskaffolden 会对 --default-repo 发出抱怨,这是 Skaffold 理解的,但 Emrichen/Emskaffolden 不理解。

提示:您可以使用简写形式 emsk 来代替 emskaffolden 的所有命令。

默认和特定环境的 var 文件

如果存在,则会从 kubernetes/default.vars.yaml var 文件中加载。

如果存在,则会从 kubernetes/ 加载特定环境的文件。默认环境称为 development,对应于 kubernetes/development.vars.yaml,可以通过 -E <env name> 来切换环境。

如果您的特定环境 var 文件在其他地方,请使用 -f path/to/foo.vars.yaml

让 Skaffold 管理镜像标签

Skaffold 对 生成不可变镜像标签 提供了一流的支持。

只需为 Deployment 等中的第一方镜像使用简单名称,例如 kompassiedegal-static。Skaffold 将自动使用 Git 提交哈希作为镜像标签。

最后,将 --default-repoSKAFFOLD_DEFAULT_REPO 添加到 以您的私有仓库作为前缀的镜像名称

工作流程

没有 emskaffolden init。只需将 example/ 中的文件复制过来,并按您的喜好进行编辑。有关实际示例,请参阅 KompassiEdegal

使用 emskaffolden dev 作为您的日常开发环境 - 要么使用 Docker Desktop 本地运行,要么在您选择的 Kubernetes 环境中运行。

在 CI/CD 流程中使用 emskaffolden run,或将它拆分为 emskaffolden build -- --file-output=build.jsonemskaffolden deploy -- -a build.json

*.compiled.yaml 文件不应提交到 Git。在 example/ 中的 .gitignore 排除了它们。

许可

The MIT License (MIT)

Copyright © 2020 Santtu Pajukanta

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解有关 安装软件包 的更多信息。

源分布

emskaffolden-0.2.1.tar.gz (16.1 kB 查看散列)

构建分布

emskaffolden-0.2.1-py3-none-any.whl (22.8 kB 查看散列)

Python 3

由以下支持