创建多个容器模板

  • 本文关键字:创建 kubernetes
  • 更新时间 :
  • 英文 :


我有一个正在运行的k8s部署,其中包含一个容器。

我想部署10多个容器,在部署清单中有一些不同(即命令启动,容器名称,…)。

与其在整个部署中创建10个以上的.yml文件,我更愿意使用模板。我该怎么做才能达到这个目标呢?

---
apiVersion: v1
kind: CronJob
metadata:
name: myname
labels:
app.kubernetes.io/name: myname
spec:
schedule: "*/10 * * * *"
jobTemplate:
spec:
template:
metadata:
labels:
app.kubernetes.io/name: myname
spec:
serviceAccountName: myname
containers:
- name: myname
image: 'mynameimage'
imagePullPolicy: IfNotPresent
command: ["/my/command/to/launch"]
restartPolicy: OnFailure

Kustomize似乎是kubernetes配置中模板化、组合、多环境覆盖等的首选工具。它现在也直接内置到kubectl中。

具体来说,我认为你可以通过使用覆盖特性来实现你想要的。设置一个包含公共结构的基和包含特定覆盖的覆盖。

您可以指定一组要创建的容器,您可以这样做:

apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: container1
image: your-image
- name: container2
image: your-image
- name: container3
image: your-image

,你可以重复这个容器的定义,只要你想。

另一种方法是使用像上面提到的helm/customize这样的模板引擎。

使用helm,这是Kubernetes清单的模板引擎,您可以按照我的指导创建自己的模板。

如果您从未使用过helm,您可以查看官方文档

为了让您遵循,请确保您已经安装了helm !

-创建一个新图表:

helm create cowboy-app

这将为您生成一个新项目。

-删除templates目录中的所有内容

-删除所有values.yaml内容

-在templates目录下创建一个新文件deployment.yaml,并粘贴如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.appName }}
labels:
chart: {{ .Values.appName }}
spec:
selector:
matchLabels:
app: {{ .Values.appName }}
replicas: 1
template:
metadata:
labels:
app: {{ .Values.appName }}
spec:
containers:
{{ toYaml .Values.images | indent 8 }}     

-在values.yaml粘贴此:

appName: cowboy-app
images:
- name: app-1
image: image-1
- name: app-2
image: image-2
- name: app-3
image: image-3
- name: app-4
image: image-4
- name: app-5
image: image-5    
- name: app-6
image: image-6
- name: app-7
image: image-7
- name: app-8
image: image-8
- name: app-9
image: image-9
- name: app-10
image: image-10                                     

所以如果你熟悉helm你可以告诉{{ toYaml .Values.images | indent 10 }}deploy。yaml引用values.yaml中指定的数据。通过运行helm install release-name /path/to/chart将生成并部署一个清单文件,该文件为deploy . YAML它看起来像这样:

apiVersion: apps/v1
kind: Deployment
metadata:
name: cowboy-app
labels:
chart: cowboy-app
spec:
selector:
matchLabels:
app: cowboy-app
replicas: 1
template:
metadata:
labels:
app: cowboy-app
spec:
containers:
- image: image-1
name: app-1
- image: image-2
name: app-2
- image: image-3
name: app-3
- image: image-4
name: app-4
- image: image-5
name: app-5
- image: image-6
name: app-6
- image: image-7
name: app-7
- image: image-8
name: app-8
- image: image-9
name: app-9
- image: image-10
name: app-10

可以使用HelmKustomize. 它们都是模板工具,可以帮助您实现目标

相关内容

  • 没有找到相关文章

最新更新