Skip to content

Commit 86b9c5e

Browse files
committed
update openshift install script
1 parent f4e55cf commit 86b9c5e

File tree

5 files changed

+116
-40
lines changed

5 files changed

+116
-40
lines changed

docs/config/.env

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
Y_APPCONTROL_DOMAIN=
2+
HELM_USERNAME=
3+
HELM_PASSWORD=
4+
SQL_SERVER=
5+
SQL_USER=
6+
SQL_PASSWORD=
7+
REDIS_PASWWORD=
8+
RABBIT_USER=
9+
RABBIT_PASSWORD=
10+
RABBIT_VHOST=/
11+
CHART_X4B_SERVICES_VERSION=
12+
CHART_APPCONTROL_VERSION=

docs/config/install-appcontrol.sh

Lines changed: 95 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,49 +2,78 @@
22

33
set -e
44

5+
if [ -f ".env" ]; then
6+
echo "Loading variables from .env..."
7+
set -o allexport
8+
source .env
9+
set +o allexport
10+
fi
11+
512
echo "🔧 AppControl Interactive Installer"
613

714
# === Detect current namespace ===
815
DEFAULT_NAMESPACE=$(oc config view --minify --output 'jsonpath={..namespace}')
9-
read -rp "📛 Namespace to install AppControl [${DEFAULT_NAMESPACE:-appcontrol}]: " NAMESPACE
10-
NAMESPACE=${NAMESPACE:-${DEFAULT_NAMESPACE:-appcontrol}}
16+
read -rp "📛 Namespace to install AppControl [${NAMESPACE:-${DEFAULT_NAMESPACE:-appcontrol}}]: " input_namespace
17+
NAMESPACE="${input_namespace:-${NAMESPACE:-${DEFAULT_NAMESPACE:-appcontrol}}}"
1118

1219
# === Prompt user input ===
13-
read -rp "🌐 Enter your main domain (e.g., mycompany.com): " MY_APPCONTROL_DOMAIN
14-
read -rp "🔑 Helm registry username: " HELM_USERNAME
15-
read -rp "🔑 Helm registry password: " HELM_PASSWORD
20+
read -rp "🌐 Enter your main domain (e.g., mycompany.com) [${MY_APPCONTROL_DOMAIN:-}]: " input_domain
21+
MY_APPCONTROL_DOMAIN="${input_domain:-${MY_APPCONTROL_DOMAIN:-}}"
22+
23+
read -rp "🔑 Helm registry username [${HELM_USERNAME:-}]: " input_helm_user
24+
HELM_USERNAME="${input_helm_user:-${HELM_USERNAME:-}}"
25+
26+
read -rp "🔑 Helm registry password [${HELM_PASSWORD:-}]: " input_helm_pass
27+
HELM_PASSWORD="${input_helm_pass:-${HELM_PASSWORD:-}}"
1628

1729
echo "🗃 SQL Server configuration:"
18-
read -rp " - Server: " SQL_SERVER
19-
read -rp " - User: " SQL_USER
20-
read -srp " - Password: " SQL_PASSWORD
30+
read -rp " - Server [${SQL_SERVER:-}]: " input_sql_server
31+
SQL_SERVER="${input_sql_server:-${SQL_SERVER:-}}"
32+
33+
read -rp " - User [${SQL_USER:-}]: " input_sql_user
34+
SQL_USER="${input_sql_user:-${SQL_USER:-}}"
35+
36+
read -srp " - Password (hidden) [hidden if already set]: " input_sql_password
2137
echo
38+
SQL_PASSWORD="${input_sql_password:-${SQL_PASSWORD:-}}"
39+
2240
SQL_CONNECTION_STRING_SERVICES="Server=$SQL_SERVER;Database=xc-x4b-db;User ID=$SQL_USER;Password=$SQL_PASSWORD;"
2341
SQL_CONNECTION_STRING_APPCONTROL="Server=$SQL_SERVER;Database=xc-appcontrol-db;User ID=$SQL_USER;Password=$SQL_PASSWORD;"
2442

25-
# Generate default salt
43+
# Generate default salt if not provided
2644
DEFAULT_SALT=$(openssl rand -base64 32)
27-
read -rp "🪙 Token salt [auto-generated]: " TOKEN_SALT
28-
TOKEN_SALT=${TOKEN_SALT:-$DEFAULT_SALT}
45+
read -rp "🪙 Token salt [${TOKEN_SALT:-auto-generated}]: " input_token_salt
46+
TOKEN_SALT="${input_token_salt:-${TOKEN_SALT:-$DEFAULT_SALT}}"
47+
48+
read -rp "🧠 Redis hostname [${REDIS_HOST:-redis-service}]: " input_redis_host
49+
REDIS_HOST="${input_redis_host:-${REDIS_HOST:-redis-service}}"
50+
51+
read -rp "🔢 Redis port [${REDIS_PORT:-6379}]: " input_redis_port
52+
REDIS_PORT="${input_redis_port:-${REDIS_PORT:-6379}}"
2953

30-
read -rp "🧠 Redis hostname [redis-service]: " REDIS_HOST
31-
REDIS_HOST=${REDIS_HOST:-redis-service}
32-
read -rp "🔢 Redis port [6379]: " REDIS_PORT
33-
REDIS_PORT=${REDIS_PORT:-6379}
3454
REDIS_HOSTNAME="$REDIS_HOST:$REDIS_PORT"
35-
read -srp "🔐 Redis password (leave empty if none): " REDIS_PASSWORD
36-
read -rp "📬 RabbitMQ hostname [rabbitmq]: " RABBIT_HOST
37-
RABBIT_HOST=${RABBIT_HOST:-rabbitmq}
38-
read -rp "📬 RabbitMQ username: " RABBIT_USER
39-
read -rp "📬 RabbitMQ password: " RABBIT_PASSWORD
40-
read -rp "📬 RabbitMQ virtual host [/]:" RABBIT_VHOST
41-
RABBIT_VHOST=${RABBIT_VHOST:-/}
4255

43-
read -rp "📦 Helm chart X4B Services version [40.6.0]: " CHART_X4B_SERVICES_VERSION
44-
CHART_X4B_SERVICES_VERSION=${CHART_X4B_SERVICES_VERSION:-40.6.0}
56+
read -srp "🔐 Redis password (leave empty if none) [hidden if already set]: " input_redis_password
57+
echo
58+
REDIS_PASSWORD="${input_redis_password:-${REDIS_PASSWORD:-}}"
59+
60+
read -rp "📬 RabbitMQ hostname [${RABBIT_HOST:-rabbitmq}]: " input_rabbit_host
61+
RABBIT_HOST="${input_rabbit_host:-${RABBIT_HOST:-rabbitmq}}"
4562

46-
read -rp "📦 Helm chart Appcontrol version [90.3.0]: " CHART_APPCONTROL_VERSION
47-
CHART_APPCONTROL_VERSION=${CHART_APPCONTROL_VERSION:-90.3.0}
63+
read -rp "📬 RabbitMQ username [${RABBIT_USER:-}]: " input_rabbit_user
64+
RABBIT_USER="${input_rabbit_user:-${RABBIT_USER:-}}"
65+
66+
read -rp "📬 RabbitMQ password [hidden if already set]: " input_rabbit_password
67+
RABBIT_PASSWORD="${input_rabbit_password:-${RABBIT_PASSWORD:-}}"
68+
69+
read -rp "📬 RabbitMQ virtual host [${RABBIT_VHOST:-/}]: " input_rabbit_vhost
70+
RABBIT_VHOST="${input_rabbit_vhost:-${RABBIT_VHOST:-/}}"
71+
72+
read -rp "📦 Helm chart X4B Services version [${CHART_X4B_SERVICES_VERSION:-40.6.0}]: " input_x4b_version
73+
CHART_X4B_SERVICES_VERSION="${input_x4b_version:-${CHART_X4B_SERVICES_VERSION:-40.6.0}}"
74+
75+
read -rp "📦 Helm chart Appcontrol version [${CHART_APPCONTROL_VERSION:-90.3.0}]: " input_appcontrol_version
76+
CHART_APPCONTROL_VERSION="${input_appcontrol_version:-${CHART_APPCONTROL_VERSION:-90.3.0}}"
4877

4978
# === TLS prompt with detection ===
5079
echo -e "\n🔐 TLS Configuration (Let's Encrypt via cert-manager)"
@@ -54,9 +83,8 @@ ISSUER_EXISTS=$(kubectl get clusterissuer letsencrypt-issuer --no-headers 2>/dev
5483
read -rp "Do you want to enable TLS with Let's Encrypt? [Y/n]: " ENABLE_TLS
5584
ENABLE_TLS=${ENABLE_TLS:-Y}
5685

57-
APPS_EXTERNAL_URL="https://x4b.$MY_APPCONTROL_DOMAIN/apps"
58-
LOGIN_EXTERNAL_URL="https://x4b.$MY_APPCONTROL_DOMAIN/login"
59-
AUTH_INTERNAL_URL="http://x4b-services-authentication-svc:8080"
86+
EXTERNAL_URL="https://x4b.$MY_APPCONTROL_DOMAIN/"
87+
6088

6189
if [[ "$ENABLE_TLS" =~ ^[Yy]$ ]]; then
6290
TLS_ENABLED=true
@@ -71,10 +99,15 @@ if [[ "$ENABLE_TLS" =~ ^[Yy]$ ]]; then
7199
else
72100
TLS_ENABLED=false
73101
SSL_REDIRECT=false
74-
APPS_EXTERNAL_URL="http://x4b.$MY_APPCONTROL_DOMAIN/apps"
75-
LOGIN_EXTERNAL_URL="http://x4b.$MY_APPCONTROL_DOMAIN/login"
102+
EXTERNAL_URL="http://x4b.$MY_APPCONTROL_DOMAIN/"
76103
fi
77104

105+
APPS_EXTERNAL_URL="${EXTERNAL_URL}apps"
106+
AUTHENTICATION_URL="${EXTERNAL_URL}authentication"
107+
LOGIN_EXTERNAL_URL="${EXTERNAL_URL}login"
108+
AUTH_INTERNAL_URL="http://x4b-services-authentication-svc:8080"
109+
REDIRECT_REGISTRATION_URL="${LOGIN_EXTERNAL_URL}/registration"
110+
78111
MY_SECRET_NAME="jwt-keys"
79112
CONFIGMAP_NAME="appcontrol-config"
80113
REPO="oci://x4bcontainerregistry.azurecr.io/helm"
@@ -122,12 +155,25 @@ mkdir -p generated
122155

123156
# === Generate x4b-services-values.yaml ===
124157
cat <<EOF > generated/x4b-services-values.yaml
125-
externalHostname: x4b.$MY_APPCONTROL_DOMAIN
126-
jwtSecretName: $MY_SECRET_NAME
158+
externalHostname: "x4b.${MY_APPCONTROL_DOMAIN}"
159+
x4bSpecificDnszone: "x4b.${MY_APPCONTROL_DOMAIN}"
160+
jwtSecretName: "${MY_SECRET_NAME}"
161+
pullSecretName: ""
162+
devSubDomain: ""
163+
settings:
164+
appsServiceUrl: "${APPS_EXTERNAL_URL}"
165+
authenticationUrl: "${AUTHENTICATION_URL}"
127166
sql:
128-
connectionString: "$SQL_CONNECTION_STRING_SERVICES"
167+
connectionString: "${SQL_CONNECTION_STRING_SERVICES}"
129168
apps:
130-
appsConfigMapName: "$CONFIGMAP_NAME"
169+
appsConfigMapName: "${CONFIGMAP_NAME}"
170+
serverRemoteUrl: "${EXTERNAL_URL}"
171+
authentication:
172+
OtlpCollectorAddr: ''
173+
serverRemoteUrl: "${EXTERNAL_URL}"
174+
redirectRegistrationUrl: "${REDIRECT_REGISTRATION_URL}"
175+
loginPageUrl: "${LOGIN_EXTERNAL_URL}"
176+
secretName: $MY_SECRET_NAME
131177
EOF
132178

133179
# === Generate appcontrol-values.yaml ===
@@ -160,17 +206,29 @@ rabbitmq:
160206
virtualHost: "$RABBIT_VHOST"
161207
EOF
162208

209+
uninstall_if_exists() {
210+
local release=$1
211+
if helm status "$release" -n "$NAMESPACE" &>/dev/null; then
212+
echo "⛔ Uninstalling existing release: $release"
213+
helm uninstall "$release" -n "$NAMESPACE"
214+
fi
215+
}
216+
217+
echo "🔍 Checking for existing releases..."
218+
uninstall_if_exists "appcontrol-services"
219+
uninstall_if_exists "appcontrol"
220+
163221
# === Deploy Helm charts ===
164222
echo "🚀 Installing x4b-services..."
165223
helm install appcontrol-services "$REPO/x4b-services" \
166224
--namespace "$NAMESPACE" \
167225
--version "$CHART_X4B_SERVICES_VERSION" \
168-
-f generated/x4b-services-values.yaml
226+
-f generated/x4b-services-values.yaml
169227

170228
echo "🚀 Installing AppControl..."
171229
helm install appcontrol "$REPO/appcontrol" \
172230
--namespace "$NAMESPACE" \
173231
--version "$CHART_APPCONTROL_VERSION" \
174-
-f generated/appcontrol-values.yaml
232+
-f generated/appcontrol-values.yaml
175233

176234
echo "✅ AppControl platform successfully deployed!"

docs/en/openshift.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,13 @@ AppControl requires a **RabbitMQ** instance for message queuing and internal com
106106
To install RabbitMQ in your Kubernetes/OpenShift cluster without editing any files locally, run:
107107

108108
```bash
109+
NAMESPACE=$(oc config view --minify --output 'jsonpath={..namespace}')
110+
NAMESPACE=${NAMESPACE:-default}
111+
109112
RABBITMQ_USER=myuser RABBITMQ_PASS=mypassword \
110113
curl -s https://raw.githubusercontent.com/xcomponent/appcontrol-documentation/refs/heads/main/docs/config/rabbitmq.yaml | \
111-
envsubst | kubectl apply -f -
114+
envsubst | oc apply -n "$NAMESPACE" -f -
115+
112116
```
113117

114118
💡 You can omit the variables to use defaults:

site/en/openshift/index.html

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -938,7 +938,9 @@ <h2 id="what-the-script-does">📦 What the Script Does</h2>
938938
</ol>
939939
<hr/>
940940
<h2 id="usage">🟢 Usage</h2>
941-
<pre><code class="language-bash">curl -sL https://raw.githubusercontent.com/xcomponent/appcontrol-documentation/refs/heads/main/docs/config/install-appcontrol.sh | bash
941+
<pre><code class="language-bash">curl -sLO https://raw.githubusercontent.com/xcomponent/appcontrol-documentation/refs/heads/main/docs/config/install-appcontrol.sh
942+
chmod +x install-appcontrol.sh
943+
./install-appcontrol.sh
942944
</code></pre>
943945
<p>Follow the interactive prompts. The deployment takes just a few minutes.</p>
944946
<p>✅ Result</p>

site/en/search/search_index.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)