You need to enable JavaScript to run this app.
导航
预置组件模板
最近更新时间:2024.07.24 17:42:44首次发布时间:2023.12.28 21:22:02

应用交付提供组件模板功能,帮助快速生成 OAM 应用中的组件。本文为您介绍系统预置的组件模板。

空白模板

系统预置的空白模板。适用于有明确需求,希望自行编写组件内容的场景。

预置 Deployment 服务模版

系统预置的 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 }}

预置 MSE 灰度服务模板

系统预置的 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 }}

预置 MSE 灰度服务和 Ingress 网关路由模板

系统预置的 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 }}