-
Bug
-
Resolution: Done
-
Major
-
maistra-2.1.0
-
None
-
None
-
False
-
False
-
-
Sprint 10, Sprint 12, Sprint 13, Sprint 14
OSSM 2.1 Federation support different root certificates
===
Updated Description for doc:
OSSM 2.1 Federation egress gateway only sends the client certificate.
Because the federation ingress gateway only knows about the root certificate, it can not verify the client certificate without adding the ca certificate. The client egress gateway should send both the client certificate and ca certificate.
Workaround
User need to provide both of the root certificate and ca certificates when setting federation import ConfigMap.
For example,
import/configmap.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: mesh1-ca-root-cert
namespace: mesh2-system
data:
root-cert.pem: |-
{{MESH1_CERT}}
$ MESH1_CERT=$(cat cacerts/root-cert.pem cacerts/ca-cert.pem | sed ':a;N;$!ba;s/\n/\\\n /g') $ sed "s:{{MESH1_CERT}}:$MESH1_CERT:g" import/configmap.yaml | oc apply -f -
===
istiod error log
error federation watch failed: status code is not OK: 503 (503 Service Unavailable) component=federation-registry 2021-09-24T20:52:26.905022Z info federation starting watch component=federation-registry
mesh2-egress error log
[2021-09-24T20:51:44.869Z] "GET /v1/watch HTTP/1.1" 503 UF,URX upstream_reset_before_response_started{connection_failure} - "-" 0 91 38 - "10.131.0.81" "Go-http-client/1.1" "ac136c09-4f30-9c82-adc4-430fdadb9b5d" "discovery.mesh1-system.svc.mesh2.local" "172.30.130.242:8188" outbound|8188|federation-discovery-mesh2-egress|discovery.mesh1-system.svc.mesh2.local - 10.128.2.66:8188 10.131.0.81:55540 - federation-discovery-mesh2-egress
How to reproduce :
1. follow the federation example install.sh with the following modification
https://github.com/maistra/maistra-test-tool/blob/federation/testdata/examples/x86/federation/install_diff_cert.sh
a. create a secret in mesh1-system
log "Configure mesh1 smcp for using different root cert" oc1 create -n mesh1-system secret generic cacerts \ --from-file=cacerts/ca-cert.pem \ --from-file=cacerts/ca-key.pem \ --from-file=cacerts/root-cert.pem \ --from-file=cacerts/cert-chain.pem
b. Apply an export smcp yaml with the root cert spec
apiVersion: maistra.io/v2
kind: ServiceMeshControlPlane
metadata:
name: fed-export
namespace: mesh1-system
spec:
version: v2.1
runtime:
defaults:
container:
# for testing, to ensure we're always using the latest dev image
imagePullPolicy: Always
addons:
grafana:
enabled: true
kiali:
enabled: true
prometheus:
enabled: true
tracing:
type: Jaeger
sampling: 10000
proxy:
accessLogging:
file:
name: /dev/stdout
gateways:
additionalEgress:
# egress gateway definition for sending requests from mesh2
mesh2-egress:
enabled: true
requestedNetworkView:
# we want to view services on mesh2's network
- network-mesh2
routerMode: sni-dnat
service:
metadata:
labels:
# to prevent mesh2-egress's service from including default egress pods
federation.maistra.io/egress-for: mesh2
ports:
# required for sending service requests to mesh2
- port: 15443
name: tls
# required for sending discovery requests to mesh2
- port: 8188
name: http-discovery
runtime:
deployment:
autoScaling:
enabled: false
container:
# constrain resources for use in smaller environments
resources:
requests:
cpu: 10m
memory: 128Mi
limits: {}
additionalIngress:
# ingress gateway definition for handing requests from mesh2
mesh2-ingress:
enabled: true
routerMode: sni-dnat
service:
type: LoadBalancer
metadata:
labels:
# to prevent mesh2-ingress's service from including default ingress pods
federation.maistra.io/ingress-for: mesh2
annotations:
# use the network load balancer on AWS
service.beta.kubernetes.io/aws-load-balancer-type: nlb
ports:
# required for handling service requests from mesh2
- port: 15443
name: tls
# required for handing discovery requests from mesh2
- port: 8188
name: https-discovery
runtime:
deployment:
autoScaling:
enabled: false
container:
# constrain resources for use in smaller environments
resources:
requests:
cpu: 10m
memory: 128Mi
limits: {}
security:
trust:
# unique trust domain for this mesh, mesh1
domain: mesh1.local
dataPlane:
mtls: true
certificateAuthority:
type: Istiod
istiod:
type: PrivateKey
privateKey:
rootCADir: /etc/cacerts
- blocks
-
MAISTRA-2242 Support different root certificates
-
- Closed
-
- relates to
-
MAISTRA-2699 Collect list of known issues for 2.1.0 Release Notes
-
- Closed
-