Version: v1.0
添加 Traits
通过 Component,KubeVela 中的所有 traits 都可以兼容原生的 K8s 对象模板。
在这个例子中,我们会添加两个 traits 到 component 中。分别是:scaler 和 virtualgroup
apiVersion: core.oam.dev/v1beta1kind: Applicationmetadata:name: myappnamespace: defaultspec:components:- name: mycomptype: kube-workerproperties:image: nginx:1.14.0traits:- type: scalerproperties:replicas: 2- type: virtualgroupproperties:group: "my-group1"type: "cluster"
验证
部署应用,验证 traits 正常运行
检查 scaler trait。
$ kubectl get manualscalertraitNAME AGEdemo-podinfo-scaler-3x1sfcd34 2m
$ kubectl get deployment mycomp -o json | jq .spec.replicas2
检查 virtualgroup trait。
$ kubectl get deployment mycomp -o json | jq .spec.template.metadata.labels{"app.cluster.virtual.group": "my-group1","app.kubernetes.io/name": "myapp"}
更新应用
在应用部署完后(同时 workloads/trait 成功地创建),你可以执行更新应用的操作,并且更新的内容会被应用到 workload 上。
下面来演示修改上面部署的应用的几个配置
apiVersion: core.oam.dev/v1beta1kind: Applicationmetadata:name: myappnamespace: defaultspec:components:- name: mycomptype: kube-workerproperties:image: nginx:1.14.1 # 1.14.0 => 1.14.1traits:- type: scalerproperties:replicas: 4 # 2 => 4- type: virtualgroupproperties:group: "my-group2" # my-group1 => my-group2type: "cluster"
应用上面的配置,几秒后检查配置。
更新配置后,workload 实例的名称会被修改成
mycomp-v2
检查新的属性值
$ kubectl get deployment mycomp -o json | jq '.spec.template.spec.containers[0].image'"nginx:1.14.1"
检查 scaler trait。
$ kubectl get deployment mycomp -o json | jq .spec.replicas4
检查 virtualgroup trait
$ kubectl get deployment mycomp -o json | jq .spec.template.metadata.labels{"app.cluster.virtual.group": "my-group2","app.kubernetes.io/name": "myapp"}