如何通过YAML集装箱创作

问题描述:

当参数图片版本有什么办法传递一个清单.yaml时kubectl命令如何通过YAML集装箱创作

实例从varibale/config中通过镜像版本:

apiVersion: v1 
kind: ReplicationController 
metadata: 
    name: nginx 
spec: 
    replicas: 1 
    selector: 
    app: nginx 
    template: 
    metadata: 
     name: nginx 
     labels: 
     app: nginx 
    spec: 
     containers: 
     - name: nginx 
     image: nginx:${IMAGE_VERSION} 
     imagePullPolicy: Always 
     resources: 
     limits: 
      cpu: "1.2" 
      memory: 100Mi 
     ports: 
     - containerPort: 80 

使用情况是启动特定的图像版本,该版本设置为kubernetes级别,并且该变量由服务器端的kubernetes本身解析。

感谢和问候, 拉维

K8S清单文件是静态的YAML/JSON。

如果你想模板的清单(和捆绑式的方式管理多个资源),我强烈建议你看看Helm

我刚刚创建a Workshop which focuses precisely on the "Templating" features of Helm

Helm做的不仅仅是模板化,它是作为Kubernetes应用程序的完整包管理器(认为是Apt/Yum/Homebrew)构建的。

如果要处理所有客户端,看看https://github.com/errordeveloper/kubegen

虽然,在某些时候,你需要头盔的其他功能,将需要迁移到那个时候 - 我建议咬子弹并直奔Helm。

+0

另一种选择是使用'kubectl set'命令在现有部署(可以是CI/CD管道的一部分以触发滚动更新)上设置图像标记 - 但是,这里的问题是专门模板体现。 –

+0

假设用例使其更加清晰。 说,我有一个notebooklauncher服务启动齐柏林笔记本容器 现在,在启动器服务...没有硬编码齐柏林版本的图像版本将推出或标记为'最新' 现在,如果有一种方法来动态使用ConfigMap在zeppelin.image.version中泵...它会被钉住。 我试过这种方法....显然没有工作。 再次,图像版本必须由kube的服务器端检测,即在读取/解析yaml时在api-server中检测到...... 头盔或其他bash模板人员在客户端执行此操作。 – user1543211

+0

不是假设的用例,而是贯穿整个研讨会,并与实际案例联系起来,让我知道这是否仍然不清楚? –

最近看了这个之后,我们决定去sed。将kubectl apply换成小bash脚本,并在运行apply之前替换占位符。

我们确实研究了更复杂的工具,但我们只找到了Helm。然而,Helm是一种复杂的技术,不仅仅是模板化。它会改变你的工作流程,因为你不再使用kubectl进行部署,而且必须有一个Helm软件包回购来推送你的软件包。我们的评估是,Helm对于部署我们的应用程序并没有用处,并且仅仅用于模板是过分的。

+1

掌舵套件回购没有必要。我们使用'sed'和'kubectl修补程序部署从Makefiles移动.​​..'给Flask REST API渲染Jinja2模板并使用群集内服务帐户来更新部署......当我们满员时我们从不回头 - 为自己节省麻烦并尝试一下。 –

+0

PS:更常见的是用sigil代替sed –