将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支持?

  1. Emrichen是一个相对未知的模板工具,所以他们可能永远不会接受将Emrichen集成到skafold中的PR。我不会;)
  2. 这样我们就可以使用Emrichen支持任何skafold deploy方法,而不仅仅是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和在--之后传递给emskafolden命令行的任何其他参数调用skafold。在

使用--分隔Emrichen和Skaffold选项

一般来说,--之前的选项转到Emrichen,--之后的选项转到{}。Skaffold子命令(或基本上任何positional参数)可以位于--的任一侧。在

所以这两个是可以互换的:

^{pr2}$

都是可互换的,它们都告诉Emrichen使用kubernetes/staging.vars.yamlvar文件,并使用run -f skaffold.compiled.yaml --default-repo=harbor.con2.fi/con2调用Skaffold。在

另一方面,如果省略--,emskafolden会抱怨--default-repo,skaffolden理解,但Emrichen/emskafolden不理解。在

提示:您可以对所有命令使用缩写emsk,而不是emskaffolden。在

默认和特定于环境的var文件

如果存在,kubernetes/default.vars.yamlvar文件将从加载。在

环境特定文件从kubernetes/加载(如果存在)。默认环境称为development,对应于kubernetes/development.vars.yaml,环境可以用-E <env name>进行切换。在

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

让Skaffold管理图像标记

skafold对generating immutable image tags有一流的支持。在

只需为部署中的第一方映像使用一个简单的名称,例如kompassi或{}。提交旧的hash标记将自动使用旧的hash标记。在

最后,将--default-repo或{}添加到prefix the image name with your private registry。在

工作流

没有emskaffolden init。只需复制example/中的文件,然后根据需要编辑它们。有关真实世界的示例,请参见KompassiEdegal。在

使用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.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java在ArrayList中比较数字   java在Kotlin中使异步调用同步   让“Scala编程”junit示例在IntelliJ中工作的java问题   java Servlet侦听器未在ContextListener中设置属性   将Microsoft SQL Server数据库连接到我的Java项目   加载资源时出现java“需要注册工厂”异常   java如何使用POI检查excel中的重复记录?   java如何更改机器生成的代码   java如何确保重写的方法是同步的   用Spring编写Hibernate时的java XML奥秘   java管理mysql数据库中存储的用户权限   java如何运行。来自Javascript的jar方法   java我想在Web应用程序中进行身份验证&对桌面应用程序使用相同的凭据。我该怎么做?