crossplane / oam-kubernetes-runtime

A set of libraries for building OAM runtimes
Apache License 2.0
277 stars 80 forks source link

[Question]Can different workloads be selected? #149

Open wenxinnnnn opened 4 years ago

wenxinnnnn commented 4 years ago

In order to meet the needs of each service of our microservices to mount the sidecar of consul-client.

I tried to develop a SidecarSetWorkload for the catalog, but I needed a differentiated choice of pod to mount the sidecar. I saw a related issue: #136, Do I have any other solutions?

apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
  name: myService-Sidecar
spec:
  workload:
    apiVersion: core.oam.dev/v1alpha2
    kind: SidecarSetWorkload
    metadata:
      name: sonsul-client-sidecar
    spec:
      selector:
        matchLabels:
          app: myService
      containers:
       - name: consul
         image: consul:1.3.1
         args:
         - "agent"
         - "-data-dir=/consul/data"
         - "-advertise=$(PODIP)"
         - "-client=0.0.0.0"
         - "-node=activity-system-$(PODIP)"
         - "-retry-join=consul-service"
         - "-domain=cluster.local"
         - "-disable-host-node-id"
         ...
    parameters:
        ...
wonderflow commented 4 years ago

@wenxinnnnn a better solution is to make sidecar as a trait, you can rely on patch trait mechanism to patch this sidecar into your workload.

resouer commented 4 years ago

You need to create a SidecarSet trait: https://github.com/openkruise/kruise/blob/master/docs/tutorial/sidecarset.md

wenxinnnnn commented 4 years ago

Another option is to create a SidecarSet trait: https://github.com/openkruise/kruise/blob/master/docs/tutorial/sidecarset.md

Openkruise's SidecarSet also uses selectors to select pods, and deploy sidecars in aspects. I found that ContainerizedWorkload does not support setting different labels.

wenxinnnnn commented 4 years ago

@wenxinnnnn a better solution is to make sidecar as a trait, you can rely on patch trait mechanism to patch this sidecar into your workload. I got it, thanks。 I didn’t see the corresponding implementation of this patch trait in this project. Did I miss it? Is there an example where this trait has been implemented?

resouer commented 4 years ago

@wenxinnnnn The patch trait PR is WIP: https://github.com/crossplane/oam-kubernetes-runtime/pull/134

Btw, ContainerizedWorkload will propagate its labels/annotations to Pods, see: https://github.com/crossplane/oam-kubernetes-runtime/pull/166. So the only thing you need to do is directly define a SidecarSet CR as a trait and select the labels of ContainerizedWorkload.