今天我们来进行实战演练,目录结构如下所示,主要演示deployment.yaml 文件的差异性
1、先通过helm 的values.yaml 文件填充模板
helm template base ./ --output-dir /root/demo
2、查看base files(主要以deployment为主)
base/templates/gateway-deploy.yaml
# Source: base/templates/gateway-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
labels:
app: demo
version: v1
name: demo
spec:
progressDeadlineSeconds: 600
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:
app: demo
version: v1
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
creationTimestamp: null
labels:
app: demo
version: v1
spec:
containers:
- env:
- name: SPRING_PROFILES_ACTIVE
value: int
- name: JAVA_OPTS
value: ' -Xmx512m -Xms512m'
image: aaa
imagePullPolicy: Always
name: demo
ports:
- containerPort: 7001
name: http
protocol: TCP
resources:
requests:
cpu: 300m
memory: 1000Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: package
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
base/kustomization.yaml
resources:
- ./templates/gateway-deploy.yaml
- ./templates/gateway-ing.yaml
3、查看overlay/dev files (主要以deployment为主)
overlay/dev/gateway-deploy.yaml,修改了环境变量和resourcesh中requests的大小
apiVersion: apps/v1
kind: Deployment
metadata:
name: demo
spec:
replicas: 2
template:
spec:
containers:
- env:
- name: SPRING_PROFILES_ACTIVE
value: int
- name: JAVA_OPTS
value: ' -Xmx1024m -Xms1024m'
name: demo
resources:
requests:
cpu: 500m
memory: 2000Mi
overlay/dev/kustomization.yaml
bases:
- ../../base
patchesStrategicMerge:
- gateway-deploy.yaml
检查生成的yaml文件
kustomize build overlay/dev
内容如下:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: demo
version: v1
name: demo
spec:
progressDeadlineSeconds: 600
replicas: 2
revisionHistoryLimit: 10
selector:
matchLabels:
app: demo
version: v1
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: demo
version: v1
spec:
containers:
- env:
- name: SPRING_PROFILES_ACTIVE
value: int
- name: JAVA_OPTS
value: ' -Xmx1024m -Xms1024m'
image: aaa
imagePullPolicy: Always
name: demo
ports:
- containerPort: 7001
name: http
protocol: TCP
resources:
requests:
cpu: 500m
memory: 2000Mi
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
imagePullSecrets:
- name: package
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
terminationGracePeriodSeconds: 30
把生成的yaml文件应用到kubernetes集群中
kubectl apply -k overlays/dev
4、stage 环境与dev类似,这里就不赘述了。
5、我们可以通过sed命令来组织想要的资源,比如我们不想把ingress部署到kubernete集群中去
sed -i 's/.*ing/#&/' base/kustomization.yaml