forked from Kuadrant/mcp-gateway
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdeploy_openshift.sh
More file actions
executable file
·83 lines (68 loc) · 3.38 KB
/
Copy pathdeploy_openshift.sh
File metadata and controls
executable file
·83 lines (68 loc) · 3.38 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/bin/bash
set -e
MCP_GATEWAY_HELM_VERSION="${MCP_GATEWAY_HELM_VERSION:-0.5.0}"
MCP_GATEWAY_HOST="${MCP_GATEWAY_HOST:-mcp.apps.$(oc get dns cluster -o jsonpath='{.spec.baseDomain}')}"
MCP_GATEWAY_NAMESPACE="${MCP_GATEWAY_NAMESPACE:-mcp-system}"
GATEWAY_NAMESPACE="${GATEWAY_NAMESPACE:-gateway-system}"
SCRIPT_BASE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )"
# Check prerequisites
command -v oc >/dev/null 2>&1 || { echo >&2 "OpenShift CLI is required but not installed. Aborting."; exit 1; }
command -v helm >/dev/null 2>&1 || { echo >&2 "Helm is required but not installed. Aborting."; exit 1; }
# Install Service Mesh Operator
echo "Installing Service Mesh Operator..."
oc apply -k "$SCRIPT_BASE_DIR/kustomize/service-mesh/operator/base"
echo "Waiting for Service Mesh Operator to be ready..."
until kubectl wait crd/istios.sailoperator.io --for condition=established &>/dev/null; do sleep 5; done
until kubectl wait crd/istiocnis.sailoperator.io --for condition=established &>/dev/null; do sleep 5; done
# Install Service Mesh Instance
echo "Installing Service Mesh Instance..."
oc apply -k "$SCRIPT_BASE_DIR/kustomize/service-mesh/instance/base"
# Install Connectivity Link Operator
echo "Installing Connectivity Link Operator..."
oc apply -k "$SCRIPT_BASE_DIR/kustomize/connectivity-link/operator/base"
echo "Waiting for Connectivity Link Operator to be ready..."
until kubectl wait crd/kuadrants.kuadrant.io --for condition=established &>/dev/null; do sleep 5; done
# Install Connectivity Link Instance
echo "Installing Connectivity Link Instance..."
oc apply -k "$SCRIPT_BASE_DIR/kustomize/connectivity-link/instance/base"
# Create gateway namespace
kubectl create ns $GATEWAY_NAMESPACE --dry-run=client -o yaml | kubectl apply -f -
# Install MCP Gateway Controller (cluster-wide, no broker)
echo "Installing MCP Gateway Controller..."
helm upgrade -i mcp-controller oci://ghcr.io/kuadrant/charts/mcp-gateway \
--version $MCP_GATEWAY_HELM_VERSION \
--namespace $MCP_GATEWAY_NAMESPACE \
--create-namespace \
--set controller.enabled=true \
--set broker.create=false \
--set gateway.create=false \
--set mcpGatewayExtension.create=false \
--set envoyFilter.create=false
# Install MCP Gateway Instance (broker + gateway + routes)
echo "Installing MCP Gateway Instance..."
helm upgrade -i mcp-gateway oci://ghcr.io/kuadrant/charts/mcp-gateway \
--version $MCP_GATEWAY_HELM_VERSION \
--namespace $MCP_GATEWAY_NAMESPACE \
--set controller.enabled=false \
--set broker.create=true \
--set gateway.create=true \
--set gateway.name=mcp-gateway \
--set gateway.namespace=$GATEWAY_NAMESPACE \
--set gateway.publicHost="$MCP_GATEWAY_HOST" \
--set gateway.internalHostPattern="*.mcp.local" \
--set mcpGatewayExtension.create=true \
--set mcpGatewayExtension.gatewayRef.name=mcp-gateway \
--set mcpGatewayExtension.gatewayRef.namespace=$GATEWAY_NAMESPACE \
--set envoyFilter.create=true \
--set envoyFilter.name=mcp-gateway
# Create OpenShift Route (still using ingress chart for Route only)
echo "Creating OpenShift Route..."
helm upgrade -i mcp-gateway-ingress "$SCRIPT_BASE_DIR/charts/mcp-gateway-ingress" \
--namespace $GATEWAY_NAMESPACE \
--set mcpGateway.host="$MCP_GATEWAY_HOST" \
--set gateway.name=mcp-gateway \
--set route.create=true
echo
echo "MCP Gateway deployment completed successfully."
echo "Access the MCP Gateway at: https://$MCP_GATEWAY_HOST/mcp"
echo