使用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 的支持?
- Emrichen 是一种相对未知的模板工具,所以他们可能永远不会接受将 Emrichen 集成到 Skaffold 中的 PR。我不会这样做 ;)
- 这样我们就可以使用 Emrichen 支持任何 Skaffold 部署方法,而不仅仅是
kubectl
。您甚至可以使用 Emrichen 生成 Kustomize 或甚至是 Helm YAML!嗯,不确定您为什么想这样做。但您可以。
安装
安装 Skaffold 和 Python 3.5+。然后使用 Pip 安装 emskaffolden
python3 -m pip install emskaffolden
使用
当您调用 emskaffolden
(或简称 emsk
)时,它将执行以下步骤
- 将
skaffold.in.yaml
编译为skaffold.compiled.yaml
(使用-F
修改) - 读取
skaffold.compiled.yaml
,发现所有引用的*.compiled.yaml
文件,找到相应的*.in.yaml
模板并将其编译为*.compiled.yaml
- 使用
-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 等中的第一方镜像使用简单名称,例如 kompassi
或 edegal-static
。Skaffold 将自动使用 Git 提交哈希作为镜像标签。
最后,将 --default-repo
或 SKAFFOLD_DEFAULT_REPO
添加到 以您的私有仓库作为前缀的镜像名称。
工作流程
没有 emskaffolden init
。只需将 example/
中的文件复制过来,并按您的喜好进行编辑。有关实际示例,请参阅 Kompassi 或 Edegal。
使用 emskaffolden dev
作为您的日常开发环境 - 要么使用 Docker Desktop 本地运行,要么在您选择的 Kubernetes 环境中运行。
在 CI/CD 流程中使用 emskaffolden run
,或将它拆分为 emskaffolden build -- --file-output=build.json
和 emskaffolden 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 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5a776abf48960431ab109df614ca18f76fe5827e21a11de9338418dfced640f4 |
|
MD5 | 338b6f0b3f716a2a408cc691480bdd7b |
|
BLAKE2b-256 | 5681db217f1983d38890e38224cf4eca63849f8ee13e8f6e6c697e5d9b5bb731 |