Specific example: In a multi-zonal cluster, k8s.cluster and k8s.node entities can both have cloud.availability_zone attribute with different values.
The problem described in more detail in https://docs.google.com/document/d/1sUwKJEwPB89uA1jUrX6ea-w-mIYNk5TJ8NuMOAZfW2M/edit?tab=t.0 by @quentinmit.
We discussed this problem as part of Additional requirements for entities data model during Entities SIG meeting on Jan 16 and agreed on a solution that is closer to what's described as solution A in https://docs.google.com/document/d/1sUwKJEwPB89uA1jUrX6ea-w-mIYNk5TJ8NuMOAZfW2M/edit?tab=t.0#heading=h.ezgpqjbuutx8: do not attach both of the conflicting attributes to one resource, send the extra information in the side channel instead.
The argument against using different resource attributes (e.g. k8s.cluster.cloud.availability_zone and gcp.gce.instance.cloud.availability_zone) is that we could have the availability zone as a separate entity. In that case, we need one pre-defined identifying key (cloud.availability_zone). The information about relationships (k8s cluster -> AZ and k8s node -> AZ) can be sent separately in the entities side channel.
cc @tigrannajaryan
Specific example: In a multi-zonal cluster,
k8s.clusterandk8s.nodeentities can both havecloud.availability_zoneattribute with different values.The problem described in more detail in https://docs.google.com/document/d/1sUwKJEwPB89uA1jUrX6ea-w-mIYNk5TJ8NuMOAZfW2M/edit?tab=t.0 by @quentinmit.
We discussed this problem as part of Additional requirements for entities data model during Entities SIG meeting on Jan 16 and agreed on a solution that is closer to what's described as solution A in https://docs.google.com/document/d/1sUwKJEwPB89uA1jUrX6ea-w-mIYNk5TJ8NuMOAZfW2M/edit?tab=t.0#heading=h.ezgpqjbuutx8: do not attach both of the conflicting attributes to one resource, send the extra information in the side channel instead.
The argument against using different resource attributes (e.g. k8s.cluster.cloud.availability_zone and gcp.gce.instance.cloud.availability_zone) is that we could have the availability zone as a separate entity. In that case, we need one pre-defined identifying key (cloud.availability_zone). The information about relationships (k8s cluster -> AZ and k8s node -> AZ) can be sent separately in the entities side channel.
cc @tigrannajaryan