Exposing Shift to the Network
Exposing Shift to the Network via Istio ServiceMesh
Infrastructure requirements
- Domain ownership, Certificates/SAN for TLS-Endpoints
Integrating KOBIL Shift deployment to the ServiceMesh / network-services
Istio-Operator configuration
Once KOBIL Shift is deployed the Shift deployment with all its services is running and it is required to "expose" the Gateways by used Service Mesh. For this make use of the IstioOperator CRD to complete KOBIL Shift services to ServiceMesh integration.
Exposing KOBIL Shift services with ISTIO Service Mesh
Once the KOBIL Shift is deployed this covers created CRDs for Virtualservices, Destinationrules and Gateway(s). These objects are then honored by the Istio Service Mesh services to expose the KOBIL services for external access. For this you have to apply CRD "istiooperator" to the Istio Service Mesh services. The used CRD for this is "istiooperators.install.istio.io". In case of using RedHat OpenShift specific ServiceMesh (instead of community Istio) find more info here: Using RedHat ServiceMesh instead of community Istio
Sample CRD "istiooperator"
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
metadata:
name: {{ .Values.envSlug }} ## set here your IstioOperator object name i.e. crd-istiooperator-shift4
namespace: istio-system ## verify this NS is present - istio-default NS
spec:
components:
ingressGateways:
- enabled: true ## create the IstioGateway
k8s:
service:
type: ClusterIP ## use svc access options ClusterIP
label:
istio: {{ .Values.envSlug }} ## referencing to istio GW name - i.e. istiooperator-shift4
name: {{ .Values.envSlug }} ## unique gw-name for Istio-managed resources i.e. istiooperator-shift4
namespace: {{ .Release.Namespace }} ## specify the KOBIL Shift target NameSpace here
profile: empty
Details before applying the CRD istiooperator
During the KOBIL Shift deployment the Gateway(s) are created per
configuration in KOBIL Shift metaconfiguration file "values.yaml" -
from section: global.routing.istio.gateways
The default is to create a "admin" Gateway only. Find more info in the KOBIL Shift Configuration Guide.
kubectl get gateway -n <kobil-shift-namespace>
Create and apply CRD "istiooperator"
Download the Shift sample CRD "istiooperator" and edit as appropriate and apply.
kubectl apply -f istiooperator.yaml -n <istio-system-namespace>
Verify the Istio Gateway configuration
kubectl get gateways -n <kobil-shift-namespace> ## find established Gateways
kubectl get services -n <kobil-shift-namespace> ## find established services - here find the Gateway Service