Skip to content

Submariner MCS API Conformance Report

  • MCS API Version: v0.5.0

  • Organization: CNCF

  • Project: Submariner

  • Implementation Version: v0.24.0-m0-54-g4c8c8680

Required Tests

Passed: 14/14 ✅

Conformant Labels Description
✅ Yes A ServiceImport should only exist as long as there's at least one exporting cluster
✅ Yes A service exported on two clusters with conflicting headlessness should apply the conflict resolution policy and report a Conflict condition on the ServiceExport
✅ Yes Connectivity to a service that is not exported should be inaccessible
✅ Yes ClusterIP A ClusterIP service exported on two clusters should expose the union of the constituent service ports and raise a conflict
✅ Yes ClusterIP A ClusterIP service exported on two clusters with conflicting ports should apply the conflict resolution policy and report a Conflict condition on each ServiceExport
✅ Yes ClusterIP An IP should be allocated for a ClusterSetIP ServiceImport for each IP family
✅ Yes ClusterIP Exporting a ClusterIP service should create a ServiceImport of type ClusterSetIP in the service's namespace in each cluster. Unexporting should delete the ServiceImport
✅ Yes ClusterIP The InternalTrafficPolicy for a ClusterSetIP ServiceImport should match the exported service's InternalTrafficPolicy
✅ Yes ClusterIP The SessionAffinity for a ClusterSetIP ServiceImport should match the exported service's SessionAffinity
✅ Yes ClusterIP The TrafficDistribution for a ClusterSetIP ServiceImport should match the exported service's TrafficDistribution
✅ Yes ClusterIP The ports for a ClusterSetIP ServiceImport should match those of the exported service
✅ Yes ExternalName Exporting an ExternalName service should set ServiceExport Valid condition to False
✅ Yes Headless Exporting a headless service should create a ServiceImport of type Headless in the service's namespace in each cluster. Unexporting should delete the ServiceImport
✅ Yes Headless No clusterset IP should be allocated for a Headless ServiceImport

Optional Tests

Passed: 7/13

Conformant Labels Description
⚠ Unknown ClusterIP Connectivity Connectivity to a ClusterIP service existing in two clusters but exported from one should only access the exporting cluster
⚠ Unknown ClusterIP Connectivity Connectivity to an exported ClusterIP service should be accessible through DNS
⚠ Unknown ClusterIP Connectivity StrictPortConflict Connectivity to exported services with different port name on each cluster should route traffic to each port only to the cluster that exposes it
⚠ Unknown ClusterIP Connectivity StrictPortConflict Connectivity to exported services with same port name but different port numbers on each cluster should only route traffic to the cluster that exposes the port
✅ Yes ClusterIP DNS A DNS SRV query of the <service>.<ns>.svc.clusterset.local domain for a ClusterIP service should return valid SRV records
✅ Yes ClusterIP DNS A DNS lookup of the <service>.<ns>.svc.clusterset.local domain for a ClusterIP service should resolve to the clusterset IP
✅ Yes ClusterIP DNS DNS lookups of the <service>.<ns>.svc.cluster.local domain for a ClusterIP service should only resolve local services
✅ Yes DNS EndpointSlice Headless A DNS query of the <hostname>.<clusterid>.<service>.<ns>.svc.clusterset.local domain for a headless StatefulSet service should return the requested pod's endpoint address
✅ Yes DNS Headless A DNS SRV query of the <service>.<ns>.svc.clusterset.local domain for a headless service should return valid SRV records
✅ Yes DNS Headless A DNS query of the <service>.<ns>.svc.clusterset.local domain for a headless service should return the ready endpoint addresses of all the backing pods
✅ Yes EndpointSlice Exporting a service should create an MCS EndpointSlice in the service's namespace in each cluster with the required MCS labels. Unexporting should delete the EndpointSlice.
❌ No ExportedLabels A service exported on two clusters with conflicting annotations and labels should apply the conflict resolution policy and report a Conflict condition on each ServiceExport
⚠ Unknown ExportedLabels Only labels and annotations specified as exported in the ServiceExport should be propagated to the ServiceImport