feat(cos-dev): Service mesh - #343
Conversation
adhityaravi
left a comment
There was a problem hiding this comment.
First pass - we need to add the istio-k8s charm into the deployment which seems to be missing at the moment. It probably needs to be in its own model istio-system
|
@adhityaravi I would argue that this does not belong in our product, rather deployed separately. Similar to what we do with external-ca model in our itests for external-tls: However, this is up for debate because the CC008 spec does impose anything on us. I guess the question is: could COS operate without
make sense. Ref link |
Signed-off-by: Michael Thamm <mike.thamm@canonical.com>
Signed-off-by: Michael Thamm <mike.thamm@canonical.com>
| config = var.istio_beacon.config | ||
| constraints = var.istio_beacon.constraints | ||
| model_uuid = var.model_uuid | ||
| revision = local.revisions.istio_beacon |
There was a problem hiding this comment.
We need to feature resources here like in this PR for example:
This requires the beacon and istio modules to feature this as an input as well, e.g.:
Issue
COS-Dev lacked support for a service mesh (Istio) as an alternative networking layer. Users who want mTLS and configurable mesh authorization policies in COS-Dev had no way to enable it.
Solution
This PR adds service mesh support to the COS-Dev Terraform module using Istio (
istio-beacon-k8sandistio-ingress-k8s).Summary
service_mesh=true(defaultfalse) that gates all mesh-related resources.service_meshandinternal_tlsfrom both beingtrue.istio-ingressandistio-beaconmodules are conditionally deployed whenservice_mesh = true.juju_integration.istio_ingress,juju_integration.grafana_istio_ingress, andjuju_integration.istio_ingress_routemirror the existing Traefik ingress integrations but route through Istio. They replace the Traefik integrations when mesh is enabled.juju_integration.istio_beaconwires theistio-beaconcharm'sservice_meshendpoint to all COS components.provides_cmr_meshfor COS components since a user can communicate securely with a mesh-enabled COS component via Istio ingress.Testing Instructions
Run the Terraform tests:
tf -chdir=terraform/cos-dev init tf -chdir=terraform/cos-dev test