wanerta
---
apiVersion: app.k8s.io/v1beta1
kind: Application
metadata:
name: {{ .Values.application.name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Values.application.name }}
annotations:
servicemesh.kubesphere.io/enabled: {{ .Values.mesh.enabled | quote }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: {{ .Values.application.name }}
addOwnerRef: true
descriptor:
icons:
- src: /assets/bookinfo.svg
componentKinds:
- group: ''
kind: Service
- group: apps
kind: Deployment
- group: apps
kind: StatefulSet
- group: extensions
kind: Ingress
- group: servicemesh.kubesphere.io
kind: Strategy
- group: servicemesh.kubesphere.io
kind: ServicePolicy
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Values.appService.name }}-{{ .Values.appService.version }}
namespace: {{ .Release.Namespace }}
labels:
app: {{ .Values.appService.name }}
version: {{ .Values.appService.version }}
app.kubernetes.io/name: {{ .Values.application.name }}
annotations:
servicemesh.kubesphere.io/enabled: {{ .Values.mesh.enabled | quote }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
app: {{ .Values.appService.name }}
version: {{ .Values.appService.version }}
app.kubernetes.io/name: {{ .Values.application.name }}
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
labels:
app: {{ .Values.appService.name }}
version: {{ .Values.appService.version }}
app.kubernetes.io/name: {{ .Values.application.name }}
lang: {{ .Values.appService.label.lang }}
group: {{ .Values.appService.label.group }}
annotations:
{{- if .Values.mesh.enabled }}
sidecar.istio.io/inject: 'true'
sidecar.istio.io/proxyCPU: 10m
{{- end }}
spec:
containers:
- name: spring-boot
imagePullPolicy: {{ .Values.image.imagePullPolicy }}
image: "{{ .Values.image.name }}"
env:
- name: BUILD_NUMBER
value: "{{ .Values.env.buildNumber }}"
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: APP_NAME
valueFrom:
fieldRef:
fieldPath: metadata.labels['app']
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: JAVA_OPTS
value:
- name: SPRING_PROFILES_ACTIVE
value: {{ .Values.env.springProfile }}
ports:
- name: http
protocol: TCP
containerPort: {{ .Values.appService.port }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumeMounts:
- name: host-time
mountPath: /etc/localtime
readOnly: true
volumes:
- hostPath:
path: /etc/localtime
type: ''
name: host-time
---
apiVersion: v1
kind: Service
metadata:
name: {{ .Values.appService.name }}
namespace: {{ .Release.Namespace }}
labels:
app: {{ .Values.appService.name }}
app.kubernetes.io/name: {{ .Values.application.name }}
annotations:
{{- if .Values.mesh.enabled }}
servicemesh.kubesphere.io/enabled: 'true'
{{- end }}
spec:
sessionAffinity: None
selector:
app: {{ .Values.appService.name }}
app.kubernetes.io/name: {{ .Values.application.name }}
ports:
- name: http-80
protocol: TCP
port: 80
targetPort: {{ .Values.appService.port }}
模板大概是这样