我目前使用 Skaffold 在 k8s 上部署了一個應用程式。使用 Helm,我將主deployment.yaml清單定義為模板,并使用 avalues.yaml將其他值插入到該部署模板中。
我想做的是使用values.yaml檔案中的不同值對同一應用程式進行 2 次部署。因此,除了提供的不同值之外,基本上 2 個 pod 運行相同的應用程式,例如my-app-bluepod 和my-app-greenpod。無論如何我可以做到這一點而不必使用一個全新的deployment.yaml檔案?抱歉,我是 K8s、Helm 和 Skaffold 的新手。
部署.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: {{ .Values.namespace }}
name: {{ .Values.name }}
spec:
replicas: {{ .Values.blue-deployment.replicas }}
template:
spec:
containers:
- name: {{ .Values.blue-deployment.name }}
image: {{ .Values.blue-deployment.image }}
值.yaml
namespace: my-app
name: app
blue-deployment:
name: blue
image: my-image
replicas: 1
env:
- name: COLOR
value: 'blue'
green-deployment:
name: green
image: my-image
replicas: 1
env:
- name: COLOR
value: 'green'
腳手架.yaml
apiVersion: skaffold/v2beta
kind: Config
build:
artifacts:
- image: blue-deployment
context: './'
deploy:
- name: my-application
chartPath: kubernetes
valuesFiles:
- kubernetes/values.yaml
namespace: my-app
目錄結構:
myApp/
kubernetes/
templates/
myApp/
deployment.yaml
values.yaml
skaffold.yaml
Dockerfile
uj5u.com熱心網友回復:
只需使用一個回圈。掌舵范圍
值.yaml
namespace: my-app
name: app
deps:
- name: blue
image: my-image
replicas: 1
env:
- name: COLOR
value: 'blue'
- name: green
image: my-image
replicas: 1
env:
- name: COLOR
value: 'green'
部署.yaml
{{- $i, $v := range .Values.deps}}
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: {{ .Values.namespace }}
name: {{ $v.name }}
spec:
replicas: {{ $v.replicas }}
template:
spec:
containers:
- name: {{ $v.name }}
image: {{ $v.image }}
{{- end }}
輸出
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: my-app
name: blue
spec:
replicas: 1
template:
spec:
containers:
- name: blue
image: my-image
---
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: my-app
name: green
spec:
replicas: 1
template:
spec:
containers:
- name: green
image: my-image
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/489266.html
標籤:Kubernetes kubernetes-helm 脚手架
