应用交付提供组件模板功能,帮助快速生成 OAM 应用中的组件。本文为您介绍系统预置的组件模板。
系统预置的空白模板。适用于有明确需求,希望自行编写组件内容的场景。
系统预置的 Deployment 和 Service 服务模板。适用于需多次复用的任务。
apiVersion: apps/v1 kind: Deployment metadata: name: {{ .AppDeliver.componentName }} labels: run: {{ .AppDeliver.componentName }} namespace: {{ .Values.namespace }} spec: {{- if .Values.replicas }} replicas: {{ .Values.replicas }} {{- end }} selector: matchLabels: run: {{ .AppDeliver.componentName }} template: metadata: labels: run: {{ .AppDeliver.componentName }} spec: containers: - name: {{ .AppDeliver.componentName }} image: {{ .AppDeliver.image.backend }} # 端口配置: ports: - containerPort: {{ .Values.port }}
apiVersion: v1 kind: Service metadata: name: {{ .AppDeliver.componentName }} namespace: {{ .Values.namespace }} spec: selector: run: {{ .AppDeliver.componentName }} ports: - protocol: TCP port: {{ .Values.port }} targetPort: {{ .Values.port }}
系统预置的 Deployment + Service 服务模板,关联了微服务引擎 MSE 泳道配置,适用于集群环境内部东西向的应用做灰度发布。需要提前在 MSE 创建治理中心实例,并配置泳道。
apiVersion: v1 kind: Service metadata: name: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} namespace: {{ .Values.namespace }} labels: run: {{ .AppDeliver.componentName }} app: "{{ .AppDeliver.componentName }}" spec: selector: run: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} ports: - protocol: TCP port: {{ .Values.port }} targetPort: {{ .Values.port }}
apiVersion: apps/v1 kind: Deployment metadata: name: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} labels: run: {{ .AppDeliver.componentName }} app: "{{ .AppDeliver.componentName }}" namespace: {{ .Values.namespace }} spec: {{- if .Values.replicas }} replicas: {{ .Values.replicas }} {{- end }} selector: matchLabels: run: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} template: metadata: annotations: sidecar.mesh.io/prestop-timeout: "{{ .Values.prestopTimeout }}" labels: run: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} app: "{{ .AppDeliver.componentName }}" sidecar.mesh.io/mse-namespace: "{{ .Values.mseNamespace }}" sidecar.mesh.io/lane: "{{ .Values.lane }}" sidecar.mesh.io/data-plane-mode: "{{ .Values.dataPlanMode }}" sidecar.istio.io/inject: "false" spec: containers: - name: {{ .AppDeliver.componentName }} image: {{ .AppDeliver.image.backend }} # 端口配置: command: - /bin/sh args: - '-c' - {{ .Values.startCommand }} ports: - containerPort: {{ .Values.port }}
系统预置的 Deployment + Service + ingress 入口服务和路由(基于请求头)模板,适用于南北向流量的第一跳的应用做灰度发布。模板关联了微服务引擎 MSE 泳道配置,结合了 ingress 入口服务和路由的功能,通过请求头进行路由控制,通过 Kubernetes Ingress 通用控制器网关进行关联,可结合 预置 MSE 灰度服务模板 的应用一起使用。需要提前创建 MSE 治理中心实例和 ingress 控制器(如 APIG,nginx-ingress 等)。
apiVersion: apps/v1 kind: Deployment metadata: name: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} labels: run: {{ .AppDeliver.componentName }} app: "{{ .AppDeliver.componentName }}" namespace: {{ .Values.namespace }} spec: {{- if .Values.replicas }} replicas: {{ .Values.replicas }} {{- end }} selector: matchLabels: run: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} template: metadata: annotations: sidecar.mesh.io/prestop-timeout: "{{ .Values.prestopTimeout }}" labels: run: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} app: "{{ .AppDeliver.componentName }}" sidecar.mesh.io/mse-namespace: "{{ .Values.mseNamespace }}" sidecar.mesh.io/lane: "{{ .Values.lane }}" sidecar.mesh.io/data-plane-mode: "{{ .Values.dataPlanMode }}" sidecar.istio.io/inject: "false" spec: containers: - name: {{ .AppDeliver.componentName }} image: {{ .AppDeliver.image.backend }} # 端口配置: command: - /bin/sh args: - '-c' - {{ .Values.startCommand }} ports: - containerPort: {{ .Values.port }}
apiVersion: v1 kind: Service metadata: name: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} namespace: {{ .Values.namespace }} labels: run: {{ .AppDeliver.componentName }} app: "{{ .AppDeliver.componentName }}" spec: selector: run: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} ports: - protocol: TCP port: {{ .Values.port }} targetPort: {{ .Values.port }}
#支持自定义 kubernetes 资源 apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} labels: run: {{ .AppDeliver.componentName }} app: "{{ .AppDeliver.componentName }}" annotations: nginx.ingress.kubernetes.io/canary: "{{ .Values.isCanary }}" nginx.ingress.kubernetes.io/canary-by-header: "{{ .Values.headerKey }}" nginx.ingress.kubernetes.io/canary-by-header-value: "{{ .Values.headerValue }}" spec: rules: - host: "{{ .Values.host }}" http: paths: - path: "{{ .Values.ingressPath }}" pathType: "{{ .Values.ingressPathType }}" backend: service: name: {{ .AppDeliver.componentName }}-{{ .AppDeliver.envName }} port: number: {{ .Values.port }}