如何通过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。
最近看了这个之后,我们决定去sed
。将kubectl apply
换成小bash脚本,并在运行apply之前替换占位符。
我们确实研究了更复杂的工具,但我们只找到了Helm。然而,Helm是一种复杂的技术,不仅仅是模板化。它会改变你的工作流程,因为你不再使用kubectl进行部署,而且必须有一个Helm软件包回购来推送你的软件包。我们的评估是,Helm对于部署我们的应用程序并没有用处,并且仅仅用于模板是过分的。
掌舵套件回购没有必要。我们使用'sed'和'kubectl修补程序部署从Makefiles移动...'给Flask REST API渲染Jinja2模板并使用群集内服务帐户来更新部署......当我们满员时我们从不回头 - 为自己节省麻烦并尝试一下。 –
PS:更常见的是用sigil代替sed –
另一种选择是使用'kubectl set'命令在现有部署(可以是CI/CD管道的一部分以触发滚动更新)上设置图像标记 - 但是,这里的问题是专门模板体现。 –
假设用例使其更加清晰。 说,我有一个notebooklauncher服务启动齐柏林笔记本容器 现在,在启动器服务...没有硬编码齐柏林版本的图像版本将推出或标记为'最新' 现在,如果有一种方法来动态使用ConfigMap在zeppelin.image.version中泵...它会被钉住。 我试过这种方法....显然没有工作。 再次,图像版本必须由kube的服务器端检测,即在读取/解析yaml时在api-server中检测到...... 头盔或其他bash模板人员在客户端执行此操作。 – user1543211
不是假设的用例,而是贯穿整个研讨会,并与实际案例联系起来,让我知道这是否仍然不清楚? –