Devops相关-面试-组件学习

kubevela

KubeVela 是面向关注点分离设计的系统,所以 KubeVela 的用户天然分为两种角色

  • 平台团队
    • 由平台工程师完成,他们需要准备应用部署环境,维护稳定可靠的基础设施功能(如 mysql operator),并将基础设施能力作为 KubeVela 模块定义(Definition) 注册到集群中。他们需要具备丰富的基础设施经验。
  • 最终用户
    • 最终用户即业务应用的开发者,使用平台的过程中首先选择部署环境,然后挑选能力模块,填写业务参数并组装成 KubeVela 应用(Application)也就是OAM对象。他们无需关心基础设施细节。

KubeVela 使用 CUE 配置语言作为管理用户模块化交付的核心,同时也围绕 CUE 提供了管理工具来编辑和生成 KubeVela 的模块定义对象

工具:https://github.com/kubevela/kubevela/releases

OAM模型&模块定义https://kubevela.net/zh/docs/v1.2/platform-engineers/cue/advanced

definitions模块定义官方模板:https://github.com/kubevela/kubevela/tree/master/vela-templates/definitions/internal/component

渲染oam成k8s 资源:vela dry-run 命令

definitions参考:(labels.cue)

包含:组件定义(ComponentDefinition),运维特征定义(TraitDefinition)、应用策略定义(PolicyDefinition),工作流节点定义(WorkflowStepDefinition)等

labels: {
	type: "trait"
	annotations: {}
	description: "Add labels on your workload. if it generates pod, add same label for generated pods."
	attributes: {
		podDisruptive: true
		appliesToWorkloads: ["*"]
	}
}
template: {
	// +patchStrategy=jsonMergePatch
	patch: {
		metadata: {
			labels: {
				for k, v in parameter {
					(k): v
				}
			}
		}
		if context.output.spec != _|_ && context.output.spec.template != _|_ {
			spec: template: metadata: labels: {
				for k, v in parameter {
					(k): v
				}
			}
		}
	}
	parameter: [string]: string | null
}

OAM对象application参考:

apiVersion: core.oam.dev/v1beta1
kind: Application
metadata:
  name: cicd-tools
  namespace: default
spec:
  components:
    - name: cicd-tools
      type: general
      properties:
        name: cicd-tools
        appName: cicd-tools
        containerName: cicd-tools
        image: aaa:V20231110185243-ef253db
        networkSettings:
          type: ClusterIP
          ports:
            - containerPort: 8008
              servicePort: 80
              name: http
            - containerPort: 9009
              servicePort: 9000
              name: rpc
        env:
          - name: MY_APP_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.labels['"'"'app'"'"']
          - name: TT_Sentinel_CD_AT
            value: 2023-11-10 18:57:24.180303
        labels:
          lang: go
          senv: base
          uuid: 654df804c93a098caf530c93
          env: DEVELOPMENT
          type: app
        serSltLabels:
          app: cicd-tools
        serviceAccount: vela-dryrun
        priorityClassName: prod-p4                        
      traits:        
        - type: scaler
          properties:
            replicas: 1                        
        - type: tt-resource
          properties:
            containerName: cicd-tools
            requests:
              cpu: "0.25"
              memory: 256Mi
            limits:
              cpu: "1"
              memory: 1024Mi 

# vela dry-run -n cicd-test -f /tmp/manifest.yaml  #渲染k8s资源、

# kubectl get ComponentDefinition general -n vela-system -o yaml  #查看模块定义资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值