Version: v1.0

添加 Traits

通过 Component,KubeVela 中的所有 traits 都可以兼容原生的 K8s 对象模板。

在这个例子中,我们会添加两个 traits 到 component 中。分别是:scalervirtualgroup

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: myapp
  5. namespace: default
  6. spec:
  7. components:
  8. - name: mycomp
  9. type: kube-worker
  10. properties:
  11. image: nginx:1.14.0
  12. traits:
  13. - type: scaler
  14. properties:
  15. replicas: 2
  16. - type: virtualgroup
  17. properties:
  18. group: "my-group1"
  19. type: "cluster"

验证

部署应用,验证 traits 正常运行

检查 scaler trait。

  1. $ kubectl get manualscalertrait
  2. NAME AGE
  3. demo-podinfo-scaler-3x1sfcd34 2m
  1. $ kubectl get deployment mycomp -o json | jq .spec.replicas
  2. 2

检查 virtualgroup trait。

  1. $ kubectl get deployment mycomp -o json | jq .spec.template.metadata.labels
  2. {
  3. "app.cluster.virtual.group": "my-group1",
  4. "app.kubernetes.io/name": "myapp"
  5. }

更新应用

在应用部署完后(同时 workloads/trait 成功地创建),你可以执行更新应用的操作,并且更新的内容会被应用到 workload 上。

下面来演示修改上面部署的应用的几个配置

  1. apiVersion: core.oam.dev/v1beta1
  2. kind: Application
  3. metadata:
  4. name: myapp
  5. namespace: default
  6. spec:
  7. components:
  8. - name: mycomp
  9. type: kube-worker
  10. properties:
  11. image: nginx:1.14.1 # 1.14.0 => 1.14.1
  12. traits:
  13. - type: scaler
  14. properties:
  15. replicas: 4 # 2 => 4
  16. - type: virtualgroup
  17. properties:
  18. group: "my-group2" # my-group1 => my-group2
  19. type: "cluster"

应用上面的配置,几秒后检查配置。

更新配置后,workload 实例的名称会被修改成 mycomp-v2

检查新的属性值

  1. $ kubectl get deployment mycomp -o json | jq '.spec.template.spec.containers[0].image'
  2. "nginx:1.14.1"

检查 scaler trait。

  1. $ kubectl get deployment mycomp -o json | jq .spec.replicas
  2. 4

检查 virtualgroup trait

  1. $ kubectl get deployment mycomp -o json | jq .spec.template.metadata.labels
  2. {
  3. "app.cluster.virtual.group": "my-group2",
  4. "app.kubernetes.io/name": "myapp"
  5. }