Skip to content

Commit 65a106b

Browse files
authored
feat: add a config when deploy sealos cloud in sealos-system (labring#5421)
* feat: sealos cloud deploy add a config in sealos-system
1 parent c5091d7 commit 65a106b

File tree

5 files changed

+123
-0
lines changed

5 files changed

+123
-0
lines changed

deploy/admin/Kubefile

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM scratch
2+
3+
USER 65532:65532
4+
5+
COPY tars tars
6+
COPY scripts scripts
7+
8+
CMD ["bash scripts/init.sh"]

deploy/admin/init.sh

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#!/bin/bash
2+
set -e
3+
export readonly ARCH=${1:-amd64}
4+
mkdir -p tars
5+
6+
RetryPullImageInterval=3
7+
RetrySleepSeconds=3
8+
9+
retryPullImage() {
10+
local image=$1
11+
local retry=0
12+
local retryMax=3
13+
set +e
14+
while [ $retry -lt $RetryPullImageInterval ]; do
15+
sealos pull --policy=always --platform=linux/"${ARCH}" $image >/dev/null && break
16+
retry=$(($retry + 1))
17+
echo "retry pull image $image, retry times: $retry"
18+
sleep $RetrySleepSeconds
19+
done
20+
set -e
21+
if [ $retry -eq $retryMax ]; then
22+
echo "pull image $image failed"
23+
exit 1
24+
fi
25+
}
26+
27+
retryPullImage ghcr.io/labring/sealos-cloud-admin:latest
28+
29+
sealos save -o tars/frontend-admin.tar ghcr.io/labring/sealos-cloud-admin:latest

deploy/admin/scripts/init.sh

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# get sealos config
2+
function get_sealos_config {
3+
# get cloudDomain from sealos-config configmap
4+
cloudDomain=$(kubectl get configmap sealos-config -o jsonpath='{.data.cloudDomain}')
5+
cloudPort=$(kubectl get configmap sealos-config -o jsonpath='{.data.cloudPort}')
6+
certSecretName=$(kubectl get configmap sealos-config -o jsonpath='{.data.certSecretName}')
7+
regionUID=$(kubectl get configmap sealos-config -o jsonpath='{.data.regionUID}')
8+
databaseMongodbURI=$(kubectl get configmap sealos-config -o jsonpath='{.data.databaseMongodbURI}')
9+
databaseGlobalCockroachdbURI=$(kubectl get configmap sealos-config -o jsonpath='{.data.databaseGlobalCockroachdbURI}')
10+
databaseRegionalCockroachdbURI=$(kubectl get configmap sealos-config -o jsonpath='{.data.databaseRegionalCockroachdbURI}')
11+
passwordEnabled=$(kubectl get configmap sealos-config -o jsonpath='{.data.passwordEnabled}')
12+
passwordSalt=$(kubectl get configmap sealos-config -o jsonpath='{.data.passwordSalt}')
13+
jwtInternal=$(kubectl get configmap sealos-config -o jsonpath='{.data.jwtInternal}')
14+
jwtGlobal=$(kubectl get configmap sealos-config -o jsonpath='{.data.jwtGlobal}')
15+
jwtRegional=$(kubectl get configmap sealos-config -o jsonpath='{.data.jwtRegional}')
16+
}
17+
18+
function install_admin {
19+
# get sealos config
20+
get_sealos_config
21+
22+
# install admin
23+
echo "run sealos admin frontend"
24+
sealos run tars/frontend-admin.tar \
25+
--env cloudDomain=$cloudDomain \
26+
--env cloudPort=$cloudPort \
27+
--env certSecretName=$certSecretName \
28+
--env regionUid=$regionUID \
29+
--env databaseMongodbURI="${databaseMongodbURI}/sealos-auth?authSource=admin" \
30+
--env databaseGlobalCockroachdbURI=$databaseGlobalCockroachdbURI \
31+
--env databaseRegionalCockroachdbURI=$databaseRegionalCockroachdbURI \
32+
--env jwtInternal=$jwtInternal \
33+
--env jwtGlobal=$jwtGlobal
34+
}
+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: sealos-config
5+
namespace: sealos-system
6+
data:
7+
cloudDomain: "<cloud-domain-placeholder>"
8+
cloudPort: "<cloud-port-placeholder>"
9+
certSecretName: "<cert-secret-placeholder>"
10+
regionUID: "<region-uid-placeholder>"
11+
databaseMongodbURI: "<mongodb-uri-placeholder>"
12+
databaseLocalCockroachdbURI: "<local-cockroachdb-uri-placeholder>"
13+
databaseGlobalCockroachdbURI: "<global-cockroachdb-uri-placeholder>"
14+
passwordEnabled: "<password-enabled-placeholder>"
15+
passwordSalt: "<password-salt-placeholder>"
16+
jwtInternal: "<jwt-internal-placeholder>"
17+
jwtRegional: "<jwt-regional-placeholder>"
18+
jwtGlobal: "<jwt-global-placeholder>"

deploy/cloud/scripts/init.sh

+34
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,19 @@ localRegionUID=""
1111

1212
tlsCrtPlaceholder="<tls-crt-placeholder>"
1313
acmednsSecretPlaceholder="<acmedns-secret-placeholder>"
14+
cloudDomainPlaceholder="<cloud-domain-placeholder>"
15+
cloudPortPlaceholder="<cloud-port-placeholder>"
16+
certSecretNamePlaceholder="<cert-secret-placeholder>"
17+
regionUIDPlaceholder="<region-uid-placeholder>"
18+
databaseMongodbURIPlaceholder="<mongodb-uri-placeholder>"
19+
databaseLocalCockroachdbURIPlaceholder="<local-cockroachdb-uri-placeholder>"
20+
databaseGlobalCockroachdbURIPlaceholder="<global-cockroachdb-uri-placeholder>"
21+
passwordEnabledPlaceholder="<password-enabled-placeholder>"
22+
passwordSaltPlaceholder="<password-salt-placeholder>"
23+
jwtInternalPlaceholder="<jwt-internal-placeholder>"
24+
jwtRegionalPlaceholder="<jwt-regional-placeholder>"
25+
jwtGlobalPlaceholder="<jwt-global-placeholder>"
26+
1427

1528
saltKey=""
1629
jwtInternal=""
@@ -43,6 +56,9 @@ function prepare {
4356

4457
# create tls secret
4558
create_tls_secret
59+
60+
# update sealos-config configmap
61+
update_sealos_config
4662
}
4763

4864
# Function to retry `kubectl apply -f` command until it succeeds or reaches a maximum number of attempts
@@ -193,6 +209,24 @@ function create_tls_secret {
193209
fi
194210
}
195211

212+
function update_sealos_config {
213+
# use generated values to update sealos-config configmap
214+
sed -i "s/$cloudDomainPlaceholder/$cloudDomain/g" manifests/sealos-config.yaml
215+
sed -i "s/$cloudPortPlaceholder/$cloudPort/g" manifests/sealos-config.yaml
216+
sed -i "s/$certSecretNamePlaceholder/$certSecretName/g" manifests/sealos-config.yaml
217+
sed -i "s/$regionUIDPlaceholder/$localRegionUID/g" manifests/sealos-config.yaml
218+
sed -i "s/$databaseMongodbURIPlaceholder/$mongodbUri/g" manifests/sealos-config.yaml
219+
sed -i "s/$databaseLocalCockroachdbURIPlaceholder/$cockroachdbLocalUri/g" manifests/sealos-config.yaml
220+
sed -i "s/$databaseGlobalCockroachdbURIPlaceholder/$cockroachdbGlobalUri/g" manifests/sealos-config.yaml
221+
sed -i "s/$passwordEnabledPlaceholder/$passwordEnabled/g" manifests/sealos-config.yaml
222+
sed -i "s/$passwordSaltPlaceholder/$saltKey/g" manifests/sealos-config.yaml
223+
sed -i "s/$jwtInternalPlaceholder/$jwtInternal/g" manifests/sealos-config.yaml
224+
sed -i "s/$jwtRegionalPlaceholder/$jwtRegional/g" manifests/sealos-config.yaml
225+
sed -i "s/$jwtGlobalPlaceholder/$jwtGlobal/g" manifests/sealos-config.yaml
226+
kubectl apply -f manifests/sealos-config.yaml
227+
}
228+
229+
196230
function sealos_run_desktop {
197231
echo "run desktop frontend"
198232
sealos run tars/frontend-desktop.tar \

0 commit comments

Comments
 (0)