将Skaffold与Emrichen模板一起使用
emskaffolden的Python项目详细描述
Emskaffolden=Emrichen+skaffolden
{JSON或JSON的输出是一个JSON模板,类似于YAML模板中的变量。Emrichen在模板化Kubernetes清单方面特别强大。在
Skaffold是一个开发人员工具,它处理构建、推送和部署应用程序的工作流,允许您专注于最重要的事情:编写代码。skafold特别擅长三件事:使用Kubernetes进行日常开发,提供一种在CI中进行图像标记的一致方法,以及观察Kubernetes在CD中完成的部署。在
emskafolden通过使用Emrichen编译skafold配置文件和Kubernetes模板,然后调用Skaffold来组合Emrichen和skafold。在
Emskafolden固执己见:它可能不适合每个人的工作流程。如果你发现Emskafolden的工作方式不适合你的需要,你可以试着在这些问题上提出自己的观点,但我们尽量使核心内容保持在很小的范围内。在
为什么包装skafold而不是实现对skafold的Emrichen支持?
- Emrichen是一个相对未知的模板工具,所以他们可能永远不会接受将Emrichen集成到skafold中的PR。我不会;)
- 这样我们就可以使用Emrichen支持任何skafold deploy方法,而不仅仅是
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
和在--
之后传递给emskafolden命令行的任何其他参数调用skafold。在
使用--
分隔Emrichen和Skaffold选项
一般来说,--
之前的选项转到Emrichen,--
之后的选项转到{--
的任一侧。在
所以这两个是可以互换的:
^{pr2}$都是可互换的,它们都告诉Emrichen使用kubernetes/staging.vars.yaml
var文件,并使用run -f skaffold.compiled.yaml --default-repo=harbor.con2.fi/con2
调用Skaffold。在
另一方面,如果省略--
,emskafolden会抱怨--default-repo
,skaffolden理解,但Emrichen/emskafolden不理解。在
提示:您可以对所有命令使用缩写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管理图像标记
skafold对generating immutable image tags有一流的支持。在
只需为部署中的第一方映像使用一个简单的名称,例如kompassi
或{
最后,将--default-repo
或{
工作流
没有emskaffolden init
。只需复制example/
中的文件,然后根据需要编辑它们。有关真实世界的示例,请参见Kompassi或Edegal。在
使用emskaffolden dev
作为您的日常开发环境–可以在本地使用Docker Desktop,也可以在您选择的Kubernetes环境中使用。在
在CI/CD管道中使用emskaffolden run
,或者将其拆分为emskaffolden build -- --output-file=build.json
和{
*.compiled.yaml
文件不应提交到Git中。^{.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.
- 项目
标签: