Given a microservice application deployed in k8s cluster, I need to reflect it's structure on a UML deployment diagram.
In my case, the deployment diagram has to display:
- Physical devices, nodes and their high-level network relation
- High-level components/packages relation to nodes
Technically, it's the k8s deployed on a cluster of nodes, and my application is upon it. The concrete microservice container is not guaranteed to be placed on a concrete node, which makes it unclear how to relate UML components to the cluster of nodes.
Possible options I think of (none of them sound good):
- Split the diagram into two views: physical infrastructure view and deployment view. This solves potential diagram overwhelming.
- Create an "abstraction layer" block (component/package), representing a
<<pod environment>>
. The physical nodes could be related to this "abstraction layer" with aggregation -<> arrow; the microservice components are contained within the latter. This overwhelms and confuses the diagram a lot. - Do not depict individual pods, only show the k8s cluster physical nodes (worst option)
The best outcome is a single diagram without excessive elements (like kubernetes components, -- ingress, services, configmaps, ..., which obviously exist in any k8s deployment), showing physical nodes and the related application components.