Skip to content
This repository has been archived by the owner on Jul 11, 2023. It is now read-only.

In permissive traffic mode (allow-all) only pods with services can communicate; not individual pods w/ service #2064

Closed
draychev opened this issue Nov 16, 2020 · 4 comments · Fixed by #2619
Assignees
Labels
kind/bug Something isn't working priority/P1 P1 priority size/L 14 days (~2.5 weeks)
Milestone

Comments

@draychev
Copy link
Contributor

draychev commented Nov 16, 2020

While in SMI-mode (not permissive traffic mode) with #1932 we added the ability for have a pod, not backed by a service to make calls to other pods -- as long as there are TrafficTarget policies permitting the 2 service accounts to communicate.

On the other hand, in permissive traffic mode, a pod without a backing service is not able to communicate w/ other pods.

This is well illustrate by this PR #1570, which fails in CI for permissive traffic mode.


Bug description:

Affected area (please mark with X where applicable):

  • Install [ ]
  • SMI Traffic Access Policy [ ]
  • SMI Traffic Specs Policy [ ]
  • SMI Traffic Split Policy [ ]
  • Permissive Traffic Policy [ X ]
  • Ingress [ ]
  • Egress [ ]
  • Envoy Control Plane [ ]
  • CLI Tool [ ]
  • Metrics [ ]
  • Certificate Management [ ]
  • Sidecar Injection [ ]
  • Logging [ ]
  • Debugging [ ]
  • Tests [ ]
  • CI System [ ]

Expected behavior:
-- Pods without a backing service, in permissive traffic policy mode, should be able to cURL bookstore -- this PR should pass CI: #1570

Steps to reproduce the bug (as precisely as possible):
-- See #1570
How was OSM installed?:

Anything else we need to know?:

Environment:

  • OSM version (use osm version): v0.5 and earlier
  • Kubernetes version (use kubectl version): n/a
  • Size of cluster (number of worker nodes in the cluster): n/a
  • Others:
@draychev
Copy link
Contributor Author

This may get resolved with #2035

@michelleN michelleN added this to the v0.7.0 milestone Dec 9, 2020
@draychev draychev added the size/L 14 days (~2.5 weeks) label Dec 10, 2020
@shashankram
Copy link
Member

This may get resolved with #2035

This isn't related to the routes refactor as much as more having to do with how certificates are issued to proxies. I discussed with @michelleN a proposed solution for this without needing to hack with synthetic services. I'll try to prototype a solution for this.

@shashankram shashankram self-assigned this Dec 23, 2020
@shashankram
Copy link
Member

I did a POC where client proxies can connect to services without needing the client to be a service. The idea is to refactor how certificates are provisioned via SDS such that clients certificates are not based on a service reference.

This will obviate the need to create a synthetic service for the client inside the controller.

The ability to not rely on synthetic service depends on #2034, which removes the need to lookup routes/traffic policies based on a service.

@shashankram
Copy link
Member

shashankram commented Jan 26, 2021

Moving this to v0.8 since this depends on routesV2 (https://github.com/openservicemesh/osm/issues?q=is%3Aissue+is%3Aopen+label%3A%22routes+v2%22) to work end-to-end.

@shashankram shashankram modified the milestones: v0.7.0, v0.8.0 Jan 26, 2021
@michelleN michelleN removed their assignment Feb 11, 2021
@michelleN michelleN added the priority/P1 P1 priority label Feb 11, 2021
shashankram added a commit to shashankram/osm that referenced this issue Feb 25, 2021
This change adds support to allow downstream clients
without services to connect to upstream services while
removing the need for synethetic services completely.

At a high level, this is accomplished by assigning
client proxies certificates based on their identities
(service account) instead of services associated with
the proxies. This is possible because the certificates
for a proxy does not have any service metadata in them.

Some XDS tls_context related utility structs and helpers
have been made generic enough to not depend on the SDS
secret being associated with a service.

Resolves openservicemesh#2064

Signed-off-by: Shashank Ram <shashr2204@gmail.com>
shashankram added a commit to shashankram/osm that referenced this issue Feb 25, 2021
This change adds support to allow downstream clients
without services to connect to upstream services while
removing the need for synthetic services completely.

At a high level, this is accomplished by assigning
client proxies certificates based on their identities
(service account) instead of services associated with
the proxies. This is possible because the certificates
for a proxy does not have any service metadata in them.

Some XDS tls_context related utility structs and helpers
have been made generic enough to not depend on the SDS
secret being associated with a service.

Resolves openservicemesh#2064

Signed-off-by: Shashank Ram <shashr2204@gmail.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
kind/bug Something isn't working priority/P1 P1 priority size/L 14 days (~2.5 weeks)
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants