Compare commits

..

36 Commits

Author SHA1 Message Date
Johann Hoffmann
adb3a28c1d Set fixed PostgreSQL image version tag
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-10-27 10:19:39 +02:00
Johann Hoffmann
8ef3c912f1 Create databases with microservice role as owner
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-10-19 11:57:55 +02:00
Johann Hoffmann
8922596384 Fix typo in postgresql.env
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-10-14 14:59:11 +02:00
Johann Hoffmann
7dce187b9d Pin zookeeper Docker image version in other Compose deployments as well
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-10-05 13:47:15 +02:00
Johann Hoffmann
1572435145 Pin zookeeper Docker image version to 3.8
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-10-05 13:27:46 +02:00
TIP Automation User
03f6c336b2 Chg: update image tag in helm values to v2.6.2 2022-09-15 11:48:01 +00:00
Dmitry Dunaev
46e8676038 Merge pull request #103 from Telecominfraproject/feature/wifi-10842--docker-compose--iptocountry-2-6
[WIFI-10842] Add: docker-compose support for iptocountry
2022-09-15 14:15:10 +03:00
Dmitry Dunaev
69d942959e [WIFI-10842] Add: docker-compose support for iptocountry
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-09-15 14:13:56 +03:00
TIP Automation User
cea68fce55 Chg: update image tag in helm values to v2.6.1 2022-09-02 10:03:56 +00:00
Dmitry Dunaev
f1ecf39bdb Merge pull request #94 from Telecominfraproject/fix/wifi-10239--pgsql-svc-selectors-v2-6
[WIFI-10239] Fix: add nameOverride for pgsql so that services would point correctly
2022-08-03 15:24:56 +03:00
Dmitry Dunaev
f2f57564ea [WIFI-10239] Fix: add nameOverride for pgsql so that services would point correctly
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-08-03 14:32:21 +03:00
Johann Hoffmann
8afc726c0d [WIFI-10271] rtty does not work (#90)
* Fix websocket key path in Docker Compose deploy script

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Issues with rrty(s)

When we click on "Connect" in the dashboard, the rtty server (ucentral gw) is sending the connect request to the rtty client (AP) successfully. AP also is responding and connecting to the gw. But there are a couple of issues.

Issue # 1
Immediately after clicking on Connect, the browser takes us to a rtty server (again ucentral gw only.. but on differnt port) url for example, https://owgw.shastacloud.com:5913/connect/fca974d05e9f6b437fc091be914ef8d5, but that page says "Bad Gateway" error. So the server is missing something. Hence we cannot see the AP's connect status on the dashboard as the above page is throwing "Bad gateway" error.

Issue # 2
The rtty daemon on the client (AP) keeps timing out and keeps reconnecting.

Couple of changes to fix these.

The first change is to make the rttys dashboard url https. It will resolve the SSL exception / Bad gw error ie issue #1 in the bug description.

The second change is to set the communication between rtty on AP and rttys on GW as passthrough. The GW pushes non-tls config to the AP  hence AP tries to connect with non-tls, but the rtty server is configured with TLS. We need to make it passthrough until the rttys server supports TLS.

Signed-off-by: Venkat Chimata <venkatch@gmail.com>
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

Co-authored-by: Venkat Chimata <venkatch@gmail.com>
2022-07-26 12:46:42 +02:00
Dmitry Dunaev
c1bac7b420 [WIFI-9772] Add: owanalytics and owsub to clustersysteminfo
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-21 16:23:52 +03:00
TIP Automation User
f7277d3f5f Chg: update image tag in helm values to v2.6.0 2022-07-11 11:14:31 +00:00
TIP Automation User
962e93fb11 Chg: update image tag in helm values to v2.6.0-RC7 2022-07-11 11:02:44 +00:00
TIP Automation User
efaee1664c Chg: update image tag in helm values to v2.6.0-RC6 2022-07-09 12:18:10 +00:00
Dmitry Dunaev
c811a2c40d Merge pull request #83 from Telecominfraproject/feature/wifi-9928--pgsql-everywhere-2.6
[WIFI-9928] Chg: use external db for all microservices
2022-07-05 11:11:11 +03:00
Dmitry Dunaev
8b1c493490 [WIFI-9928] Chg: use pgsql only for owanalytics and owgw
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-05 11:10:46 +03:00
Dmitry Dunaev
48f46f02ba [WIFI-9928] Add: new possible pgsql nodes should be placed on test nodes if it is required
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-01 13:16:33 +03:00
Dmitry Dunaev
f008cfc738 [WIFI-9928] Chg: use external db for all microservices
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-01 13:00:59 +03:00
Dmitry Dunaev
3cbf83f67d [WIFI-9952] Chg: owgw CPU requests to same as limits, failureThreshold to 5 2022-07-01 12:50:28 +03:00
Dmitry Dunaev
c6ee4f9ab7 [WIFI-9828] Fix: haproxy resources limits typo
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-06-27 10:31:31 +03:00
Johann Hoffmann
749c47877b Update README.md
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-06-24 19:42:05 +02:00
Dmitry Dunaev
48f8f66a19 [WIFI-9828] Add: helm resources limits for pgsql and proxy
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-06-24 16:34:05 +03:00
TIP Automation User
e78d127505 Chg: update image tag in helm values to v2.6.0-RC5 2022-06-23 19:01:44 +00:00
TIP Automation User
fee790f57e Chg: update image tag in helm values to v2.6.0-RC4 2022-06-21 10:57:25 +00:00
Dmitry Dunaev
a998ef032d Merge pull request #78 from Telecominfraproject/fix/wifi-9472--owsub-haproxy-front-port-2.6
[WIFI-9472] Fix: haproxy owsu frontend port
2022-06-21 13:54:42 +03:00
Dmitry Dunaev
ca493f345f [WIFI-9472] Fix: missing LB TLS ports
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-06-21 13:31:13 +03:00
Dmitry Dunaev
05c098d056 [WIFI-9472] Fix: haproxy owsu frontend port
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-06-21 12:36:33 +03:00
TIP Automation User
262b572cc7 Chg: update image tag in helm values to v2.6.0-RC3 2022-06-17 13:39:39 +00:00
Johann Hoffmann
dcdfefeac1 [WIFI-7832] Create AWS CloudFormation template (#75)
* Fix typo in Traefik entrypoint name

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* [WIFI-9174] Fix: switch from deprecated bitnami charts to mirrored ones

Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>

* [WIFI-7832] Create AWS CloudFormation template (#68)

* Make default Docker Compose settings optional

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Check if variables are set before executing sed

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Replace websocket cert and key if according variables are set

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Search and replace email address for ACME registration

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Simplify Letsencrypt deployment method by switching to one hostname

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Wait for DNS record to be resolvable to ensure ACME challenge passes

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Send waiting for DNS to background

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Revert "Send waiting for DNS to background"

This reverts commit 7f1ac42d223d4c3e870aed44d8a04e42f3ac006e.

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Wait for DNS entry in Traefik container

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Revert "Wait for DNS record to be resolvable to ensure ACME challenge passes"

This reverts commit fb3423e42d4fc09ca2ed0deca2c9fe23b74745b1.

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Fix multi-line entrypoint command

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Expose prov and prov-ui ports in Letsencrypt deployment after switch to one hostname

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Restrict websocket-key.pem permissions

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

* Update README.md

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

Co-authored-by: Dmitry Dunaev <83591011+dunaev-opsfleet@users.noreply.github.com>
Co-authored-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-06-17 15:25:27 +02:00
TIP Automation User
322a6dbe39 Chg: update image tag in helm values to v2.6.0-RC2 2022-06-09 13:17:55 +00:00
Dmitry Dunaev
0edee41ad9 [WIFI-9174] Fix: switch from deprecated bitnami charts to mirrored ones
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-06-03 19:50:00 +03:00
Johann Hoffmann
6fddf78759 Fix typo in Traefik entrypoint name (#70)
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>

Co-authored-by: Dmitry Dunaev <83591011+dunaev-opsfleet@users.noreply.github.com>
2022-06-02 16:15:25 +02:00
Dmitry Dunaev
1bc18dbe85 Merge pull request #67 from Telecominfraproject/feature/wifi-8041--increase-owgw-ram
[WIFI-8041] Chg: increase resources limits for OWGW
2022-05-24 15:34:35 +03:00
TIP Automation User
85a92c8f50 Chg: update image tag in helm values to v2.6.0-RC1 2022-05-23 13:17:57 +00:00
68 changed files with 761 additions and 2908 deletions

View File

@@ -51,7 +51,7 @@ usage() {
echo " docker_compose_name: OWPROVUI # name of environment variable in docker-compose .env file containing image tag for the service"
log_notice
log_notice "List of required environment variables:"
log_notice "- RELEASE_VERSION - release version that should be applied to repositories. Should comply release nameing policy (valid example - 'v2.0.0' or 'v2.0.1')"
log_notice "- RELEASE_VERSION - release version that should be applied to repositories. Should comply release nameing policy (valid example - 'v2.0.0')"
log_notice "- TAG_TYPE - type of tag that should be created for release (supported values - RC / FINAL)"
log_notice "- GIT_PUSH_CONFIRMED - confirmation that any changes should be pushed to git (dry-run if unset, set to 'true' to enable)"
log_notice
@@ -86,21 +86,20 @@ set_log_verbosity_number() {
modify_deploy_repo_values() {
NEW_RELEASE_TAG=$1
log_debug "NEW_RELEASE_TAG - $NEW_RELEASE_TAG"
REPOSITORIES_AMOUNT=$(cat ../release.repositories.yaml | yq ".repositories[].name" -r | wc -l)
REPOSITORIES_AMOUNT=$(cat ../repositories.yaml | yq ".repositories[].name" -r | wc -l)
for REPO_INDEX in $(seq 0 $(expr $REPOSITORIES_AMOUNT - 1)); do
REPO_URL=$(cat ../release.repositories.yaml | yq ".repositories[$REPO_INDEX].url" -r)
REPO_URL=$(cat ../repositories.yaml | yq ".repositories[$REPO_INDEX].url" -r)
REPO_NAME_SUFFIXED=$(echo $REPO_URL | awk -F '/' '{print $NF}')
REPO_NAME_WITHOUT_SUFFIX=${REPO_NAME_SUFFIXED%.git}
REPO_DOCKER_COMPOSE_NAME=$(cat ../release.repositories.yaml | yq ".repositories[$REPO_INDEX].docker_compose_name" -r)
REPO_DOCKER_COMPOSE_NAME=$(cat ../repositories.yaml | yq ".repositories[$REPO_INDEX].docker_compose_name" -r)
SERVICE_TAG="${REPO_TAGS_ARRAY[$REPO_INDEX]}"
log_debug "REPO_NAME_WITHOUT_SUFFIX - $REPO_NAME_WITHOUT_SUFFIX"
sed "s/$REPO_DOCKER_COMPOSE_NAME=.*/$REPO_DOCKER_COMPOSE_NAME=$SERVICE_TAG/" -i docker-compose/.env
sed "s/$REPO_DOCKER_COMPOSE_NAME=.*/$REPO_DOCKER_COMPOSE_NAME=$SERVICE_TAG/" -i docker-compose/.env.letsencrypt
sed "s/$REPO_DOCKER_COMPOSE_NAME=.*/$REPO_DOCKER_COMPOSE_NAME=$SERVICE_TAG/" -i docker-compose/.env.selfsigned
sed "/${REPO_NAME_WITHOUT_SUFFIX#*/}@/s/ref=.*/ref=$SERVICE_TAG\"/g" -i chart/Chart.yaml
sed "/repository: tip-tip-wlan-cloud-ucentral.jfrog.io\/clustersysteminfo/!b;n;s/tag: .*/tag: $NEW_RELEASE_TAG/" -i chart/values.yaml
done
LATEST_RELEASE_TAG=$(git tag | grep $RELEASE_VERSION | tail -1)
LATEST_RELEASE_TAG=$(git tag | grep $CURRENT_RELEASE_VERSION | tail -1)
if [[ "$(git diff | wc -l)" -eq "0" ]] && [[ "$(git diff $LATEST_RELEASE_TAG)" -eq "0" ]]; then
log_info "No changes in microservices and since the latest tag are found, new release is not required"
else
@@ -136,20 +135,21 @@ push_changes() {
}
create_tag() {
CURRENT_RELEASE_VERSION=$(git rev-parse --abbrev-ref HEAD | awk -F 'release/' '{print $2}')
TAG_TYPE_LOWERED=$(echo $TAG_TYPE | tr '[:upper:]' '[:lower:]')
if [[ "$TAG_TYPE_LOWERED" == "final" ]]; then
log_debug "Creating final tag"
modify_values $RELEASE_VERSION
git tag $RELEASE_VERSION
modify_values $CURRENT_RELEASE_VERSION
git tag $CURRENT_RELEASE_VERSION
push_changes
REPO_TAGS_ARRAY+=($RELEASE_VERSION)
REPO_TAGS_ARRAY+=($CURRENT_RELEASE_VERSION)
else
log_debug "Checking if there are tags in the current release branch"
LATEST_RELEASE_TAG=$(git tag | grep $RELEASE_VERSION | tail -1)
LATEST_RELEASE_TAG=$(git tag | grep $CURRENT_RELEASE_VERSION | tail -1)
log_debug "Latest release tag found - '$LATEST_RELEASE_TAG'"
if [[ -z "$LATEST_RELEASE_TAG" ]]; then
log_info "There are no tags in the release branch, creating the first one"
NEW_RELEASE_TAG=$RELEASE_VERSION-RC1
NEW_RELEASE_TAG=$CURRENT_RELEASE_VERSION-RC1
log_debug "New tag - $NEW_RELEASE_TAG"
modify_values $NEW_RELEASE_TAG
git tag $NEW_RELEASE_TAG
@@ -160,7 +160,7 @@ create_tag() {
NEW_RC=$(echo $LATEST_RELEASE_TAG | awk -F 'RC' '{print $2}')
NEW_RC=$(expr $NEW_RC + 1)
log_debug "New RC to create - $NEW_RC"
NEW_RELEASE_TAG=$RELEASE_VERSION-RC$NEW_RC
NEW_RELEASE_TAG=$CURRENT_RELEASE_VERSION-RC$NEW_RC
modify_deploy_repo_values $NEW_RELEASE_TAG
if [[ "v$(cat chart/Chart.yaml | yq '.version' -r)" == "$NEW_RELEASE_TAG" ]]; then
git add .
@@ -186,7 +186,7 @@ create_tag() {
NEW_RC=$(echo $LATEST_RELEASE_TAG | awk -F 'RC' '{print $2}')
NEW_RC=$(expr $NEW_RC + 1)
log_debug "New RC to create - $NEW_RC"
NEW_RELEASE_TAG=$RELEASE_VERSION-RC$NEW_RC
NEW_RELEASE_TAG=$CURRENT_RELEASE_VERSION-RC$NEW_RC
modify_values $NEW_RELEASE_TAG
git tag $NEW_RELEASE_TAG
push_changes
@@ -199,51 +199,22 @@ create_tag() {
}
check_final_tag() {
log_debug "Amount of final tags found - $(git tag | grep -x $RELEASE_VERSION | wc -l)"
if [[ "$(git tag | grep -x $RELEASE_VERSION | wc -l)" -gt "0" ]]; then
log_error "Final tag $RELEASE_VERSION already exists in release branch"
CURRENT_RELEASE_VERSION=$(git rev-parse --abbrev-ref HEAD | awk -F 'release/' '{print $2}')
log_debug "Amount of final tags found - $(git tag | grep -x $CURRENT_RELEASE_VERSION | wc -l)"
if [[ "$(git tag | grep -x $CURRENT_RELEASE_VERSION | wc -l)" -gt "0" ]]; then
log_error "Final tag $CURRENT_RELEASE_VERSION already exists in release branch"
exit 1
fi
}
check_git_tags() {
if [[ "${#REPO_TAGS_ARRAY[@]}" -eq "0" ]] && [[ "$(basename $PWD)" == "deploy" ]]; then
log_info "This deploy clone run is required to get repositories tied to the release, we will make changes later."
else
RELEASE_TAGS_AMOUNT=$(git tag | grep $RELEASE_VERSION | wc -l)
log_info "Checking if there are any tags for current version ($RELEASE_VERSION)"
log_debug "Amount of tags linked with the release - $RELEASE_TAGS_AMOUNT"
if [[ "$RELEASE_TAGS_AMOUNT" -gt "0" ]]; then
log_info "Tags for release $RELEASE_VERSION are found, checking if final tag exist"
check_final_tag
create_tag
else
log_info "No tags found for current version, checking if there are any tags for release branch ($RELEASE_BRANCH_VERSION_BASE)"
RELEASE_BRANCH_TAGS_AMOUNT=$(git tag | grep $RELEASE_BRANCH_VERSION_BASE | wc -l)
log_debug "Amount of tags linked with the release branch - $RELEASE_BRANCH_TAGS_AMOUNT"
if [[ "$RELEASE_BRANCH_TAGS_AMOUNT" -gt "0" ]]; then
log_info "Tags for $RELEASE_BRANCH_VERSION_BASE are found, finding the latest one"
RELEASE_BRANCH_TAG_FINAL=$(git tag | grep $RELEASE_BRANCH_VERSION_BASE | grep -v 'RC' | tail -1)
if [[ ! -z "$RELEASE_BRANCH_TAG_FINAL" ]]; then
RELEASE_BRANCH_TAG=$RELEASE_BRANCH_TAG_FINAL
else
RELEASE_BRANCH_TAG=$(git tag | grep $RELEASE_BRANCH_VERSION_BASE | tail -1)
fi
log_info "Latest release tag in $RELEASE_BRANCH_VERSION_BASE - $RELEASE_BRANCH_TAG. Checking if there are changes since then"
DIFF_LINES_AMOUNT=$(git diff $RELEASE_BRANCH_TAG | wc -l)
if [[ "$DIFF_LINES_AMOUNT" -eq "0" ]]; then
log_info "No changes found since the latest release tag ($RELEASE_BRANCH_TAG), using it for new version"
REPO_TAGS_ARRAY+=($RELEASE_BRANCH_TAG)
else
log_info "Changes are found in the branch, creating a new tag"
create_tag
fi
else
log_info "Tags for $RELEASE_BRANCH_VERSION_BASE not found, creating new one"
create_tag
fi
fi
CURRENT_RELEASE_VERSION=$(git rev-parse --abbrev-ref HEAD | awk -F 'release/' '{print $2}')
RELEASE_TAGS_AMOUNT=$(git tag | grep $CURRENT_RELEASE_VERSION | wc -l)
log_debug "Amount of tags linked with the release - $RELEASE_TAGS_AMOUNT"
if [[ "$RELEASE_TAGS_AMOUNT" -gt "0" ]]; then
check_final_tag
fi
create_tag
}
check_release_branch() {
@@ -253,8 +224,8 @@ check_release_branch() {
}
create_release_branch() {
git checkout -b release/$RELEASE_BRANCH_VERSION -q
check_release_branch release/$RELEASE_BRANCH_VERSION
git checkout -b release/$RELEASE_VERSION -q
check_release_branch release/$RELEASE_VERSION
}
check_if_release_branch_required() {
@@ -262,22 +233,13 @@ check_if_release_branch_required() {
log_debug "Latest release branch available - $LATEST_RELEASE_BRANCH"
if [[ -z "$LATEST_RELEASE_BRANCH" ]]; then
log_info "Could not find a single release branch, creating it"
create_release_branch $RELEASE_BRANCH_VERSION
create_release_branch $RELEASE_VERSION
else
LAST_RELEASE_DIFF_LINES_AMOUNT=$(git diff $LATEST_RELEASE_BRANCH ':(exclude)helm/values.yaml' | wc -l)
if [[ "$LAST_RELEASE_DIFF_LINES_AMOUNT" -eq "0" ]]; then
log_info "There are no changes in project since the latest release branch $LATEST_RELEASE_BRANCH so we will use tag from it"
LATEST_RELEASE=$(echo $LATEST_RELEASE_BRANCH | awk -F 'origin/release/' '{print $2}')
LATEST_RELEASE_BASE=$(echo $LATEST_RELEASE | cut -f 1,2 -d '.')
LATEST_RELEASE_TAG_FINAL=$(git tag | grep $LATEST_RELEASE_BASE | grep -v 'RC' | tail -1)
if [[ ! -z "$LATEST_RELEASE_TAG_FINAL" ]]; then
LATEST_RELEASE_TAG=$LATEST_RELEASE_TAG_FINAL
else
LATEST_RELEASE=$(git tag | grep $LATEST_RELEASE_BASE | tail -1)
fi
log_debug "Latest release - $LATEST_RELEASE"
log_debug "Latest release base - $LATEST_RELEASE_BASE"
log_debug "Latest release tag - $LATEST_RELEASE_TAG"
LATEST_RELEASE=$(echo $LATEST_RELEASE_BRANCH | awk -F 'origin/' '{print $2}')
LATEST_RELEASE_TAG=$(git tag | grep -x $LATEST_RELEASE | tail -1)
if [[ -z "$LATEST_RELEASE_TAG" ]]; then
log_info "Could not find any tags for $LATEST_RELEASE release, creating it"
check_release_branch $LATEST_RELEASE
@@ -286,20 +248,11 @@ check_if_release_branch_required() {
REPO_TAGS_ARRAY+=($LATEST_RELEASE_TAG)
fi
else
log_info "New release branch for $RELEASE_BRANCH_VERSION is required, creating it"
create_release_branch $RELEASE_BRANCH_VERSION
create_release_branch $RELEASE_VERSION
fi
fi
}
get_release_branch_version() {
RELEASE_BRANCH_VERSION_BASE=$(echo $RELEASE_VERSION | cut -f 1,2 -d '.')
RELEASE_BRANCH_VERSION="$RELEASE_BRANCH_VERSION_BASE.0"
if [[ "$RELEASE_BRANCH_VERSION" != "$RELEASE_VERSION" ]]; then
log_info "Minor release version ($RELEASE_VERSION) deployment is detected, work will be checked in branch for $RELEASE_BRANCH_VERSION"
fi
}
create_repo_version() {
CWD=$PWD
REPO_NAME=$1
@@ -307,10 +260,8 @@ create_repo_version() {
rm -rf $REPO_NAME
git clone -q $REPO_URL $REPO_NAME
cd $REPO_NAME
get_release_branch_version
log_debug "Release branch version - $RELEASE_BRANCH_VERSION"
DEFAULT_BRANCH=$(git rev-parse --abbrev-ref HEAD)
RELEASE_BRANCH=$(git branch -r | grep $RELEASE_BRANCH_VERSION | awk -F 'origin/' '{print $2}' | xargs)
RELEASE_BRANCH=$(git branch -r | grep $RELEASE_VERSION | awk -F 'origin/' '{print $2}' | xargs)
log_debug "Release branch to check - '$RELEASE_BRANCH'"
if [[ ! -z "$RELEASE_BRANCH" ]]; then
log_info "Release branch $RELEASE_BRANCH exists in the repository, checking if it has tags"
@@ -322,6 +273,7 @@ create_repo_version() {
log_info "Release commit info:"
git show
cd $CWD
rm -rf $REPO_NAME
}
# Log level setup
@@ -352,34 +304,28 @@ fi
# Check variables
log_debug "Release version: ${RELEASE_VERSION}"
[ -z ${RELEASE_VERSION+x} ] && echo "RELEASE_VERSION is unset" && usage && exit 3
echo "${RELEASE_VERSION}" | grep -xP "v(\d)+\.(\d)+\.\d+" >/dev/null || (log_error "RELEASE_VERSION is not in the right notation (correct example - v2.2.0 or v2.2.2)" && usage && exit 3)
echo "${RELEASE_VERSION}" | grep -xP "v(\d)+\.(\d)+\.\d+" >/dev/null || (log_error "RELEASE_VERSION is not in the right notation (correct example - v2.2.0)" && usage && exit 3)
log_debug "Tag type: ${TAG_TYPE}"
[ -z ${TAG_TYPE+x} ] && echo "TAG_TYPE is unset" && usage && exit 3
echo "${TAG_TYPE}" | tr '[:upper:]' '[:lower:]' | grep -xP "(rc|final)" >/dev/null || (log_error "TAG_TYPE is not in the supported values ('rc' or 'final', case insensitive)" && usage && exit 3)
# Main body
REPOSITORIES_AMOUNT=$(cat repositories.yaml | yq ".repositories[].name" -r | wc -l)
DEPLOY_REPO_URL=$(cat repositories.yaml | yq ".deploy_repo_url" -r)
log_debug "DEPLOY_REPO_URL - $DEPLOY_REPO_URL"
log_info "First we need to get repository list for tied deployment version"
create_repo_version "deploy" $DEPLOY_REPO_URL
cp deploy/.github/git-release-tool/repositories.yaml release.repositories.yaml
rm -rf deploy
log_info "Checking repositories"
REPOSITORIES_AMOUNT=$(cat release.repositories.yaml | yq ".repositories[].name" -r | wc -l)
log_info "Found $REPOSITORIES_AMOUNT repos to process"
for REPO_INDEX in $(seq 0 $(expr $REPOSITORIES_AMOUNT - 1)); do
echo
REPO_NAME=$(cat release.repositories.yaml | yq ".repositories[$REPO_INDEX].name" -r)
REPO_URL=$(cat release.repositories.yaml | yq ".repositories[$REPO_INDEX].url" -r)
REPO_DOCKER_COMPOSE_NAME=$(cat release.repositories.yaml | yq ".repositories[$REPO_INDEX].docker_compose_name" -r)
REPO_NAME=$(cat repositories.yaml | yq ".repositories[$REPO_INDEX].name" -r)
REPO_URL=$(cat repositories.yaml | yq ".repositories[$REPO_INDEX].url" -r)
REPO_DOCKER_COMPOSE_NAME=$(cat repositories.yaml | yq ".repositories[$REPO_INDEX].docker_compose_name" -r)
log_debug "REPO_NAME - $REPO_NAME"
log_debug "REPO_URL - $REPO_URL"
log_debug "REPO_DOCKER_COMPOSE_NAME - $REPO_DOCKER_COMPOSE_NAME"
log_info "Processing repository '$REPO_NAME'"
create_repo_version $REPO_NAME $REPO_URL
rm -rf $REPO_NAME
done
log_debug "Tags per project: ${REPO_TAGS_ARRAY[*]}"
@@ -390,11 +336,10 @@ create_repo_version "deploy" $DEPLOY_REPO_URL
echo
log_info "Services versions:"
for REPO_INDEX in $(seq 0 $(expr $REPOSITORIES_AMOUNT - 1)); do
REPO_NAME=$(cat release.repositories.yaml | yq ".repositories[$REPO_INDEX].name" -r)
REPO_NAME=$(cat repositories.yaml | yq ".repositories[$REPO_INDEX].name" -r)
log_info "- $REPO_NAME - ${REPO_TAGS_ARRAY[$REPO_INDEX]}"
done
log_info "Deployment repo version - ${REPO_TAGS_ARRAY[-1]}"
rm release.repositories.yaml
if [[ "$GIT_PUSH_CONFIRMED" != "true" ]]; then
log_info "To apply changes described above, set GIT_PUSH_CONFIRMED to 'true' and rerun this script"
fi

View File

@@ -24,6 +24,3 @@ repositories:
- name: owsub
url: https://github.com/Telecominfraproject/wlan-cloud-userportal.git
docker_compose_name: OWSUB_TAG
- name: owrrm
url: https://github.com/Telecominfraproject/wlan-cloud-rrm.git
docker_compose_name: OWRRM_TAG

View File

@@ -9,7 +9,6 @@ on:
branches:
- main
- 'release/*'
workflow_dispatch: {}
defaults:
run:
@@ -29,19 +28,19 @@ jobs:
id: get_branch_names
if: startsWith(github.ref, 'refs/pull/')
run: |
echo "pr_branch=$(echo ${GITHUB_HEAD_REF})" >> $GITHUB_OUTPUT
echo ::set-output name=pr_branch::$(echo ${GITHUB_HEAD_REF})
- name: Get created deployment tag and set as output
id: get_deployment_upgrade_tag
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "tag=$(echo ${GITHUB_REF#refs/tags/})" >> $GITHUB_OUTPUT
echo ::set-output name=tag::$(echo ${GITHUB_REF#refs/tags/})
- name: Get previous deployment tag
id: get_deployment_tag
if: startsWith(github.ref, 'refs/tags/v')
run: |
echo "tag=$(git tag | grep -v RC | tail -2 | head -1)" >> $GITHUB_OUTPUT
echo ::set-output name=tag::$(git tag | grep -v RC | tail -2 | head -1)
trigger-docker-compose-testing:
if: startsWith(github.ref, 'refs/pull/')
@@ -49,7 +48,7 @@ jobs:
needs: envs
steps:
- name: Checkout actions repo
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
repository: Telecominfraproject/.github
path: github
@@ -72,7 +71,7 @@ jobs:
needs: envs
steps:
- name: Checkout actions repo
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
repository: Telecominfraproject/.github
path: github
@@ -95,7 +94,7 @@ jobs:
needs: envs
steps:
- name: Checkout actions repo
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
repository: Telecominfraproject/.github
path: github

View File

@@ -22,7 +22,7 @@ jobs:
DOCKER_REGISTRY_URL: tip-tip-wlan-cloud-ucentral.jfrog.io
DOCKER_REGISTRY_USERNAME: ucentral
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v2
- name: Build Docker image
working-directory: chart/docker
@@ -55,7 +55,7 @@ jobs:
- name: Log into Docker registry
if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/pull/') || github.ref == 'refs/heads/main'
uses: docker/login-action@v2
uses: docker/login-action@v1
with:
registry: ${{ env.DOCKER_REGISTRY_URL }}
username: ${{ env.DOCKER_REGISTRY_USERNAME }}

View File

@@ -9,7 +9,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout actions repo
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
repository: Telecominfraproject/.github
path: github

View File

@@ -28,7 +28,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
path: wlan-cloud-ucentral-deploy
@@ -36,7 +36,7 @@ jobs:
run: |
pip3 install yq
helm plugin install https://github.com/databus23/helm-diff
helm plugin install https://github.com/aslafy-z/helm-git --version 0.16.0
helm plugin install https://github.com/aslafy-z/helm-git
ls ~/.local/share/helm/plugins/helm-git/helm-git-plugin.sh || true
sed 's/--skip-refresh //' -i ~/.local/share/helm/plugins/helm-git/helm-git-plugin.sh
@@ -54,6 +54,6 @@ jobs:
git config --global credential.helper store
git config --global user.email "tip-automation@telecominfraproject.com"
git config --global user.name "TIP Automation User"
#helm repo add bitnami https://charts.bitnami.com/bitnami
#helm repo update
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
./git-release-tool.sh

View File

@@ -11,13 +11,13 @@ defaults:
jobs:
helm-package:
runs-on: ubuntu-latest
runs-on: ubuntu-20.04
env:
HELM_REPO_URL: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
HELM_REPO_USERNAME: ucentral
steps:
- name: Checkout uCentral assembly chart repo
uses: actions/checkout@v4
uses: actions/checkout@v2
with:
path: wlan-cloud-ucentral-deploy
repository: Telecominfraproject/wlan-cloud-ucentral-deploy
@@ -42,7 +42,9 @@ jobs:
- name: Build package
working-directory: wlan-cloud-ucentral-deploy/chart
run: |
helm plugin install https://github.com/aslafy-z/helm-git --version 0.16.0
helm plugin install https://github.com/aslafy-z/helm-git --version 0.10.0
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm dependency update
mkdir dist
helm package . -d dist
@@ -68,7 +70,7 @@ jobs:
cat Chart.yaml | yq -r '.dependencies[] | "\(.name) - \(.repository) v\(.version)"' >> release.txt
- name: Create GitHub release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v1
with:
body_path: wlan-cloud-ucentral-deploy/chart/release.txt
files: wlan-cloud-ucentral-deploy/chart/dist/*
@@ -78,7 +80,7 @@ jobs:
needs: helm-package
steps:
- name: Trigger testing of release
uses: peter-evans/repository-dispatch@v3
uses: peter-evans/repository-dispatch@v1
with:
token: ${{ secrets.WLAN_TESTING_PAT }}
repository: Telecominfraproject/wlan-testing

3
.gitignore vendored
View File

@@ -1,7 +1,6 @@
*.swp
chart/charts/*
chart/Chart.lock
chart/environment-values/wlan-cloud-ucentral-deploy/
/docker-compose/certs/
/docker-compose/*_data
/docker-compose/owls/*_data
chart/environment-values/wlan-cloud-ucentral-deploy/

3
cgw/.gitignore vendored
View File

@@ -1,3 +0,0 @@
values/certs.device.yaml
websocket-key.pem
websocket-cert.pem

View File

@@ -1,2 +0,0 @@
creation_rules:
- kms: 'arn:aws:kms:us-east-2:289708231103:alias/helm-secrets'

View File

@@ -1,47 +0,0 @@
# CGW Charts
## Pre-requisites
The following binaries are needed:
- [helmfile](https://github.com/helmfile/helmfile/releases/download/v0.165.0/helmfile_0.165.0_linux_amd64.tar.gz)
- helm
- kubectl
The following helm plugins are needed:
```bash
helm plugin install https://github.com/aslafy-z/helm-git --version 0.16.0
helm plugin install https://github.com/databus23/helm-diff
```
## Configuration
_helmfile.yaml_ contains the configuration for all the environments. External values files are used for secrets or where appropriate. Each environment needs to be created in this file before it can be deployed. The _values/certs.device.yaml_ file is generated in github workflows.
This file should contain the device cert and key for the domain you are deploying.
```
certs:
websocket-cert.pem: 5c0lvd0RRWUpLb1pJa...
websocket-key.pem: V6WEFqWEhNVFk3RGda...
```
To generate (with the two websocket pem files available):
```
echo "certs:" > values/certs.device.yaml
kubectl create secret generic certs --dry-run=client -o yaml \
--from-file=websocket-key.pem --from-file=websocket-cert.pem \
| grep websocket- >> values/certs.device.yaml
```
## Installation
To install the entire stack: `helm --environment ENVNAME apply`.
To install just cgw: `helm --environment ENVNAME -l app=cgw apply`.
To install just cgw with a specific image tag: `helm --environment ENVNAME -l app=cgw apply --state-values-set "cgw.tag=main"`.
## Removal
To remove the entire stack: `helm --environment ENVNAME delete`.
To remove just cgw: `helm --environment ENVNAME -l app=cgw delete`.
Delete the namespace manually if it is no longer required.
# Re-installation
Note that the kafka, postgres and redis charts do not want to be reinstalled so will have to be removed and installed. If you wish to upgrade these then you must follow the respective Bitnami instructions on how to upgrade these charts.

View File

@@ -1,226 +0,0 @@
environments:
default:
values:
- global:
name: devcgw
namespace: openwifi-devcgw
domain: cicd.lab.wlan.tip.build
certificateARN: arn:aws:acm:us-east-2:289708231103:certificate/299d7444-acc4-46c2-ae83-40d2cd5f49be
- kafka:
enabled: true
- redis:
enabled: true
- postgres:
enabled: true
pgUser:
password: postgres
cgwUser:
name: cgw
password: 123
- cgw:
enabled: true
tag: main
cgw01:
values:
- global:
name: cgw01
namespace: openlan-cgw01
domain: cicd.lab.wlan.tip.build
certificateARN: arn:aws:acm:ap-south-1:289708231103:certificate/2cc8c764-11fd-411d-bf7d-a93f488f3f6c
- kafka:
enabled: true
- redis:
enabled: true
- postgres:
enabled: true
pgUser:
password: openlancgw
cgwUser:
name: cgw
password: openlancgw
- cgw:
enabled: true
tag: main
---
helmDefaults:
force: false
timeout: 300
createNamespace: true
releases:
- name: kafka
version: 28.3.0
namespace: {{ .Environment.Values.global.namespace }}
condition: kafka.enabled
chart: oci://registry-1.docker.io/bitnamicharts/kafka
labels:
group: base
app: kafka
values:
- fullnameOverride: kafka
- volumePermissions:
enabled: true
- commonAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
- readinessProbe:
initialDelaySeconds: 45
- livenessProbe:
initialDelaySeconds: 60
- heapOpts: -Xmx1024m -Xms1024m
- kraft:
enabled: true
- zookeeper:
enabled: false
- provisioning:
enabled: true
topics:
- name: CnC
partitions: 1
replicationFactor: 1
- name: CnC_Res
partitions: 1
replicationFactor: 1
- controller:
persistence:
size: 80Gi
replicaCount: 1
extraConfig: |-
maxMessageBytes = 1048588
offsets.topic.replication.factor = 1
transaction.state.log.replication.factor = 1
extraEnvVars:
- name: ALLOW_PLAINTEXT_LISTENER
value: "yes"
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 750m
memory: 2Gi
- listeners:
client:
protocol: PLAINTEXT
containerPort: 9092
controller:
protocol: "PLAINTEXT"
- broker:
replicaCount: 0
persistence:
size: 80Gi
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 750m
memory: 2Gi
- name: postgres
namespace: {{ .Environment.Values.global.namespace }}
chart: oci://registry-1.docker.io/bitnamicharts/postgresql
version: 13.4.3
condition: postgres.enabled
labels:
group: base
app: postgres
values:
- fullnameOverride: pgsql
# workaround for: postgresql.conf file not detected. Generating it...
# cp: cannot create regular file '/bitnami/postgresql/conf/postgresql.conf': Permission denied
- volumePermissions:
enabled: true
- global:
postgresql:
auth:
postgresPassword: {{ .Environment.Values.postgres.pgUser.password }}
- auth:
postgresPassword: {{ .Environment.Values.postgres.pgUser.password }}
- primary:
persistence:
size: 40Gi
extendedConfiguration: |-
max_connections = 550
shared_buffers = 128MB
log_error_verbosity = verbose
tcp_keepalives_idle = 300
tcp_keepalives_interval = 30
tcp_user_timeout = 300
initdb:
scripts:
initusers.sql: |-
CREATE USER {{ .Environment.Values.postgres.cgwUser.name }};
ALTER USER cgw WITH ENCRYPTED PASSWORD '{{ .Environment.Values.postgres.cgwUser.password }}';
CREATE DATABASE cgw OWNER {{ .Environment.Values.postgres.cgwUser.name }};
\c cgw
CREATE TABLE infrastructure_groups (id INT PRIMARY KEY, reserved_size INT, actual_size INT);
ALTER TABLE infrastructure_groups OWNER TO {{ .Environment.Values.postgres.cgwUser.name }};
CREATE TABLE infras (mac MACADDR PRIMARY KEY, infra_group_id INT, FOREIGN KEY(infra_group_id) REFERENCES infrastructure_groups(id) ON DELETE CASCADE);
ALTER TABLE infras OWNER TO {{ .Environment.Values.postgres.cgwUser.name }};
- name: redis
namespace: {{ .Environment.Values.global.namespace }}
chart: oci://registry-1.docker.io/bitnamicharts/redis
version: 19.5.2
condition: redis.enabled
labels:
group: base
app: redis
values:
- architecture: standalone
- auth:
enabled: false
- master:
persistence:
size: 20Gi
extraEnvVars:
- name: ALLOW_EMPTY_PASSWORD
value: "yes"
- name: cgw
namespace: {{ .Environment.Values.global.namespace }}
chart: ../../openlan-cgw/helm
#chart: "git+https://github.com/Telecominfraproject/openlan-cgw@helm?ref=main"
version: 0.1.0
condition: cgw.enabled
labels:
group: apps
app: cgw
values:
- values/certs.tip.yaml
# this one is generated from GH secrets:
- values/certs.device.yaml
- images:
cgw:
tag: {{ .Environment.Values.cgw.tag }}
- public_env_variables:
CGW_DB_HOST: pgsql
CGW_DB_PORT: "5432"
CGW_DB_USERNAME: "{{ .Environment.Values.postgres.cgwUser.name }}"
CGW_KAFKA_HOST: kafka
CGW_KAFKA_PORT: "9092"
CGW_REDIS_HOST: redis-master
CGW_REDIS_PORT: "6379"
CGW_ALLOW_CERT_MISMATCH: "yes"
# use (#cpus * 2) - 2
DEFAULT_WSS_THREAD_NUM: "4"
# Useful for debugging:
#CGW_LOG_LEVEL: "debug"
#RUST_BACKTRACE: "full"
- secret_env_variables:
CGW_DB_PASSWORD: "{{ .Environment.Values.postgres.cgwUser.password }}"
- services:
cgw:
type: LoadBalancer
annotations:
external-dns.alpha.kubernetes.io/hostname: cgw-{{ .Environment.Values.global.name }}.{{ .Environment.Values.global.domain }}
#service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: {{ .Environment.Values.global.certificateARN }}
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "15003"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16002"
alb.ingress.kubernetes.io/healthcheck-path: /health

View File

@@ -1,6 +0,0 @@
#!/bin/bash
echo "certs:"
for f in $* ; do
echo " $f: |"
sed -e 's/^/ /' < "$f"
done

File diff suppressed because one or more lines are too long

View File

@@ -1,21 +0,0 @@
postgres:
pgUser:
password: ENC[AES256_GCM,data:QHV7Y5Jfes4=,iv:QTs0fu7behn1g2CLheoJROFHNYvN6OpS/vcQQC0NrMs=,tag:PeaRcoDsOrEjDN9KgHUEPA==,type:str]
cgwUser:
name: ENC[AES256_GCM,data:g6J6,iv:H4HxE5orLFXZFDDVD2tAS0PkOqNJ9j6SNu1ief7Snk0=,tag:Tuj9yjBcJzZBBZRtwAY33w==,type:str]
password: ENC[AES256_GCM,data:5K0f,iv:+g61dhYOOTbr8TwnwwLHgW17R+6zXpQT2PfgjvofvlI=,tag:1nSVXgkTC41d1AnDDE19Hg==,type:int]
sops:
kms:
- arn: arn:aws:kms:us-east-2:289708231103:alias/helm-secrets
created_at: "2024-06-12T13:45:13Z"
enc: AQICAHiG/4CitJjM31GdYxTw9OLz/Zs5oK+DCq0cU2fAjtAA3AEPrxIAaT+xE4C1IFYmWvmkAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMrFaPNxf0atKVKnFsAgEQgDu8uqj035qrcelG0Dq4/Ond4H5bmpUHNRVEj0C8BFxg+a4R3loIk4NBeyuA0yqC0cQeWnA5e+/SjVtGAA==
aws_profile: ""
gcp_kms: []
azure_kv: []
hc_vault: []
age: []
lastmodified: "2024-06-25T17:29:15Z"
mac: ENC[AES256_GCM,data:gbXt2MRhlx9zGcm9ZvXjWuwSPh/QHkNngGx0j0UQ61jZTINRh4ZgERuUj7Vpo1tg/blIFWbl768wB89RAGq3n1C4AcQpX3xvC33QyCT0i4pitQmnec9RnJL0L197mioOikPxl8z56WE1014EV+Vvbk7rf1CQkqrrEIJINoqSdfE=,iv:ThbvKhY0fsaXJz9rORnvxY64vMWyM/IOgSI+kuFFbAQ=,tag:fSF4tdyf3wc5+uIfoYLc5g==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.8.1

View File

@@ -1,103 +0,0 @@
certs:
root.pem: |
-----BEGIN CERTIFICATE-----
MIIDojCCAoqgAwIBAgIUPVYBpqNbcLYygF6Mx+qxSWwQyFowDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjQyNDRaFw0zMTA0MTMyMjM4NDZaMGkx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEmMCQGA1UEAxMdVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIGCibwf5u
AAwZ+1H8U0e3u2V+0d2gSctucoK86XwUmfe1V2a/qlCYZd29r80IuN1IIeB0naIm
KnK/MzXW87clF6tFd1+HzEvmlY/W4KyIXalVCTEzirFSvBEG2oZpM0yC3AefytAO
aOpA00LaM3xTfTqMKIRhJBuLy0I4ANUVG6ixVebbGuc78IodleqiLoWy2Q9QHyEO
t/7hZndJhiVogh0PveRhho45EbsACu7ymDY+JhlIleevqwlE3iQoq0YcmYADHno6
Eq8vcwLpZFxihupUafkd1T3WJYQAJf9coCjBu2qIhNgrcrGD8R9fGswwNRzMRMpX
720+GjcDW3bJAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFAJG
lmB5sVP2qfL3xZ8hQOTpkQH6MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
AAOCAQEAVjl9dm4epG9NUYnagT9sg7scVQEPfz3Lt6w1NXJXgD8mAUlK0jXmEyvM
dCPD4514n+8+lM7US8fh+nxc7jO//LwK17Wm9FblgjNFR7+anv0Q99T9fP19DLlF
PSNHL2emogy1bl1lLTAoj8nxg2wVKPDSHBGviQ5LR9fsWUIJDv9Bs5k0qWugWYSj
19S6qnHeskRDB8MqRLhKMG82oDVLerSnhD0P6HjySBHgTTU7/tYS/OZr1jI6MPbG
L+/DtiR5fDVMNdBSGU89UNTi0wHY9+RFuNlIuvZC+x/swF0V9R5mN+ywquTPtDLA
5IOM7ItsRmen6u3qu+JXros54e4juQ==
-----END CERTIFICATE-----
cas.pem: |
-----BEGIN CERTIFICATE-----
MIIEnDCCA4SgAwIBAgIUVpyCUx1MUeUwxg+7I1BvGFTz7HkwDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjUxMjZaFw0yNjA0MTMyMjM4NDZaMGwx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEpMCcGA1UEAxMgVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IElzc3VpbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtKBrq
qd2aKVSk25KfL5xHu8X7/8rJrz3IvyPuVKWhk/N1zabot3suBcGaYNKjnRHxg78R
yKwKzajKYWtiQFqztu24g16LQeAnoUxZnF6a0z3JkkRPsz14A2y8TUhdEe1tx+UU
4VGsk3n+FMmOQHL+79FO57zQC1LwylgfLSltrI6mF3jowVUQvnwzKhUzT87AJ6EO
ndK/q0T/Bgi+aI39zfVOjJjsTJwghvrmYW3iarP1THSKxeib2s02bZKrvvHa5HL4
UI8+LvREpVZl4mzt1z6Nl344Y6f+UeJlYa/Ci0jJqaXJmyVnUbAz+c0i5JfwAVn3
YQzfC4eLnZCmdF8zAgMBAAGjggE3MIIBMzAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBSzG1S44EerPfM4gOQ85f0AYW3R6DAfBgNVHSMEGDAWgBQCRpZgebFT9qny
98WfIUDk6ZEB+jAOBgNVHQ8BAf8EBAMCAYYwgYMGCCsGAQUFBwEBBHcwdTAoBggr
BgEFBQcwAYYcaHR0cDovL29jc3Aub25lLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcw
AoY9aHR0cDovL2NhY2VydHMub25lLmRpZ2ljZXJ0LmNvbS9UZWxlY29tSW5mcmFQ
cm9qZWN0Um9vdENBLmNydDBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLm9u
ZS5kaWdpY2VydC5jb20vVGVsZWNvbUluZnJhUHJvamVjdFJvb3RDQS5jcmwwDQYJ
KoZIhvcNAQELBQADggEBAFbz+K94bHIkBMJqps0dApniUmOn0pO6Q6cGh47UP/kX
IiPIsnYgG+hqYD/qtsiqJhaWi0hixRWn38UmvZxMRk27aSTGE/TWx0JTC3qDGsSe
XkUagumbSfmS0ZyiTwMPeGAjXwyzGorqZWeA95eKfImntMiOf3E7//GK0K7HpCx8
IPCnLZsZD2q/mLyBsduImFIRQJbLAhwIxpcd1qYJk+BlGFL+HtBpEbq6JxW2Xy+v
DpNWc2WIsUTle0rTc9JNJrLX4ChUJmKqf8obKHap3Xh3//qw/jDB9pOAinA33FLJ
EmCnwBvQr9mfNmPBGMYZVU8cPruDQJ57GjmmvdisbJY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDojCCAoqgAwIBAgIUPVYBpqNbcLYygF6Mx+qxSWwQyFowDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjQyNDRaFw0zMTA0MTMyMjM4NDZaMGkx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEmMCQGA1UEAxMdVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIGCibwf5u
AAwZ+1H8U0e3u2V+0d2gSctucoK86XwUmfe1V2a/qlCYZd29r80IuN1IIeB0naIm
KnK/MzXW87clF6tFd1+HzEvmlY/W4KyIXalVCTEzirFSvBEG2oZpM0yC3AefytAO
aOpA00LaM3xTfTqMKIRhJBuLy0I4ANUVG6ixVebbGuc78IodleqiLoWy2Q9QHyEO
t/7hZndJhiVogh0PveRhho45EbsACu7ymDY+JhlIleevqwlE3iQoq0YcmYADHno6
Eq8vcwLpZFxihupUafkd1T3WJYQAJf9coCjBu2qIhNgrcrGD8R9fGswwNRzMRMpX
720+GjcDW3bJAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFAJG
lmB5sVP2qfL3xZ8hQOTpkQH6MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
AAOCAQEAVjl9dm4epG9NUYnagT9sg7scVQEPfz3Lt6w1NXJXgD8mAUlK0jXmEyvM
dCPD4514n+8+lM7US8fh+nxc7jO//LwK17Wm9FblgjNFR7+anv0Q99T9fP19DLlF
PSNHL2emogy1bl1lLTAoj8nxg2wVKPDSHBGviQ5LR9fsWUIJDv9Bs5k0qWugWYSj
19S6qnHeskRDB8MqRLhKMG82oDVLerSnhD0P6HjySBHgTTU7/tYS/OZr1jI6MPbG
L+/DtiR5fDVMNdBSGU89UNTi0wHY9+RFuNlIuvZC+x/swF0V9R5mN+ywquTPtDLA
5IOM7ItsRmen6u3qu+JXros54e4juQ==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIE5DCCAsygAwIBAgIUJdCMN900+sZN4pJmZ4SVd2KRNBowDQYJKoZIhvcNAQEL
BQAwDTELMAkGA1UEAwwCQ0EwHhcNMjQwNjEzMTc1ODMwWhcNMjUwNjEzMTc1ODMw
WjANMQswCQYDVQQDDAJDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
ALHSZH2fO1ho8aETiRwJZw1dlzk4ny364TdfY35AfhocvCozxmoKTcT69RqMtUIM
dStOoHhRenKnEPKHF4SrgrebsYJeXysLVb3UMEkrV6I9sKeBbUq2neAAibv+Xq0X
KpgJM8ZSq3WugI7pJ9kRIrRbErm8FycIW+BhBTn5g/thBnwtBn0FJ4QpnBkl38bZ
vYoOp77oVSk42hijD56hJwyg9yVo4MbZRhpROkL8/rPrLXDfeM3yXKx+kvNCY01m
8IxGUMh/3UuU8wWXaGRIAcWapZpDrDaM8YdDdVfoIv6pqCU6zLhrDm2gyYABkM2q
VKNruHDvrcV6BT1ldW59RkRWWW8UqsIUYuvjHMBSgEijiCCmCcrNTdd1dg+9ycdU
p2ZHw4g5QwyGrosUMC34Hl7zz+Aj+gA3gBAyeX2Mg9E0WtDoX6as9fRZebP5fYwj
Qh4bjv3Rx+a68G8DrPE7CJAJHTmthgyjINLn8/RcPpo0MYh/r47Sy1+nWBCnibYZ
vKkDCsRjVd5mDwRAQE0YCEiissgNgVdV6LjW4pnkIsPlHpI15A7PiDRQEKHdmRYL
NaIQKrn6x7Tj+o9Bs3VEoyIR1qNEYuuRGeXgTRWT1QWGX+0oN5OMzkcEKtLzPRJR
wW+h5C+gyp2KB7pU3umk5pFMVPlT7hbAaCyzuhNWQL5fAgMBAAGjPDA6MAwGA1Ud
EwQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1UdDgQWBBTEa33fF8DibprD2kyGKfts
+Gk2QTANBgkqhkiG9w0BAQsFAAOCAgEAjad+ygI3Cp5wFHyjc9cjkU5+6qQM8qXM
g6B9QAqbsejzBC2euFfkLKGPGTxyPoX5fjNGreMFu6bYVS4MdObMPfaEgUdJeTLA
t/FGw22/zJDsKceZDFvIGoW2BvyXbqKUXXzonhE1/OXSKI1Me5cJo8GqA8J97VGh
TooDNzNXjvOeMMXzvugoFtXGXey/4tus1S1pSYglW/rB/exhBgZVrW5ElOPqLeK4
QEiP90jD303Rhw7aogrMVMcQWQ8ONyBEuQdno8/Ypil4uQXh4kYbbhgbrzT6Ux4Y
x9KIGbydYkNlqU4M/B1GPDsOfYauJmDpMvoUxPTolaPbIhrPmONudbUZVnrSEgOo
NAREI2hWRTnsqb76ugQayr7UQCzX4gQ99UllDLuvoAsc45s2pY3fJlQHkhl1JkGw
YlB1lF22Z35aWxkhXaYJHvhtZpt0oJ9vN//JJveBPOSajNsVnY6MIk4numI30BlZ
YSKHKYrYvD1yR/MSCeKVGWqsWRGfFk2bZGFjVgdlusFrjZM8JNbZtTVnKzTdoDiW
BnVJcd552gsT2yhaIvBoqoq4ufVa1gDGM4qRz0dxTW7850Qp++iWHMbwXRoJ3dow
/vreJoe6yYx8dQDw/Adl8SNV5Uo0ws36VUI/Vkuj3vG2oMP0P5DSRVQIzKxZ8FM1
0bJQwZgh3Is=
-----END CERTIFICATE-----

View File

@@ -20,7 +20,3 @@
.idea/
*.tmproj
.vscode/
# Chart dependencies
docker/
environment-values/
feature-values/

View File

@@ -2,32 +2,35 @@ apiVersion: v2
name: openwifi
appVersion: "1.0"
description: A Helm chart for Kubernetes
version: 3.2.1
version: 2.6.2
dependencies:
- name: owgw
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=v3.2.1"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=v2.6.2"
version: 0.1.0
- name: owsec
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralsec@helm?ref=v3.2.0"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralsec@helm?ref=v2.6.0"
version: 0.1.0
- name: owfms
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralfms@helm?ref=v3.2.0"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralfms@helm?ref=v2.6.0"
version: 0.1.0
- name: owprov
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov@helm?ref=v3.2.1"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov@helm?ref=v2.6.0"
version: 0.1.0
- name: owanalytics
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-analytics@helm?ref=v3.2.0"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-analytics@helm?ref=v2.6.0"
version: 0.1.0
- name: owgwui
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui@helm?ref=v3.2.1"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui@helm?ref=v2.6.0"
version: 0.1.0
- name: owprovui
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov-ui@helm?ref=v3.2.0"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov-ui@helm?ref=v2.6.0"
version: 0.1.0
- name: owsub
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-userportal@helm?ref=v3.2.0"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-userportal@helm?ref=v2.6.0"
version: 0.1.0
- name: kafka
repository: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
version: 13.0.2
- name: owls
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owls@helm?ref=main"
version: 0.1.0
@@ -36,15 +39,7 @@ dependencies:
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owls-ui@helm?ref=master"
version: 0.1.0
condition: owlsui.enabled
- name: kafka
repository: oci://registry-1.docker.io/bitnamicharts
version: 28.2.3
condition: kafka.enabled
- name: haproxy
repository: oci://registry-1.docker.io/bitnamicharts
version: 0.13.3
repository: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
version: 0.2.21
condition: haproxy.enabled
- name: postgresql
repository: oci://registry-1.docker.io/bitnamicharts
version: 13.4.3
condition: postgresql.enabled

View File

@@ -1,70 +1,18 @@
# openwifi
This Helm chart helps to deploy OpenWIFI Cloud SDK with all required dependencies to the Kubernetes clusters. The purpose of this chart is to set up the correct connections between other microservices and other dependencies with correct Values and other charts as dependencies in [chart definition](Chart.yaml)
This Helm chart helps to deploy OpenWIFI Cloud SDK with all required dependencies to the Kubernetes clusters. Purpose of this chart is to setup correct connections between other microservices and other dependencies with correct Values and other charts as dependencies in [chart definition](Chart.yaml)
## TL;DR;
[helm-git](https://github.com/aslafy-z/helm-git) is required for remote the installation as it pull charts from other repositories for the deployment, so install it if you don't have it already.
Using that you can deploy Cloud SDK with 2 setups - without TLS certificates for RESTAPI endpoints and with them.
In both cases Websocket endpoint should be exposed through LoadBalancer. In order to get IP address or DNS FQDN of that endpoint you may refer to `kubectl get svc | grep proxy | awk -F ' ' '{print $4}'`. Used port is 15002, but you would need to disable TLS check on AP side since certificate is issued for `*.wlan.local`.
### Deployment with TLS certificates
This deployment method requires usage of [cert-manager](https://cert-manager.io/docs/) (tested minimal Helm chart version is `v1.6.1`) in your Kubernetes installation in order to issue self-signed PKI for internal communication. In this case you will have to trust the self-signed certificates via your browser. Just like in previous method you still need OWGW Websocket TLS certificate, so you can use the same certificates with another values file using these commands:
[helm-git](https://github.com/aslafy-z/helm-git) is required for remote the installation as it pull charts from other repositories for the deployment, so intall it if you don't have it already.
```bash
$ helm dependency update
$ kubectl create secret generic openwifi-certs --from-file=../docker-compose/certs/
$ helm upgrade --install -f environment-values/values.base.secure.yaml openwifi .
$ helm install .
```
In order to access the UI and other RESTAPI endpoints you should run the following commands after the deployment:
```
$ kubectl port-forward deployment/proxy 5912 5913 16001 16002 16003 16004 16005 16006 16009 &
$ kubectl port-forward deployment/owgwui 8080:80 &
$ kubectl port-forward deployment/owprovui 8088:80 &
```
From here Web UI may be accessed using http://localhost:8080 and Provisioning UI may be accessed using http://localhost:8088 .
### Deployment without TLS certificates
**IMPORTANT** Currently this method is not available due to issues in current implementation on microservices side (not being able to use Web UI because of error on Websocket upgrade on OWGW connections), please use TLS method for now.
For this deployment method you will need to disable usage of TLS certificates, yet you will still need a TLS certificate for Websocket endpoint of OWGW. Here are the required steps for the deployment where websocket certificates from [docker-compose certs directory](../docker-compose/certs) and special values file to disable TLS for REST API endpoint will be used:
```bash
$ helm dependency update
$ kubectl create secret generic openwifi-certs --from-file=../docker-compose/certs/
$ helm upgrade --install -f environment-values/values.base.insecure.yaml openwifi .
```
In order to access the UI and other RESTAPI endpoints you should run the following commands after the deployment:
```
$ kubectl port-forward deployment/proxy 5912 5913 16001 16002 16003 16004 16005 16006 16009 &
$ kubectl port-forward deployment/owgwui 8080:80 &
$ kubectl port-forward deployment/owprovui 8088:80 &
```
From here Web UI may be accessed using http://localhost:8080 and Provisioning UI may be accessed using http://localhost:8088 .
During the requests through UI errors may happen - that means that you haven't added certificate exception in browser. In order to that open browser dev tools (F12), open Network tab and see what requests are failing, open them and accept the exceptions.
### Default password change
Then change the default password as described in [owsec docs](https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/tree/main#changing-default-password).
Values files passed in the installation is using default certificates that may be used for initial evaluation (same certificates are used in [docker-compose](../docker-compose/certs) method) using `*.wlan.local` domains. If you want to change those certificates, please set them in Helm values files instead of default certificates (see default values in `values.yaml` file).
If you are using default values without changing [OWSEC config properties](https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/blob/939869948f77575ba0e92c0fb12f2197802ffe71/helm/values.yaml#L212-L213) in your values file, you may access the WebUI using following credentials:
> Username: tip@ucentral.com
> Password: openwifi
## Introduction
This chart bootstraps the OpenWIFI Cloud SDK on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
@@ -123,25 +71,20 @@ The following table lists the configurable parameters that overrides microservic
|-----------|------|-------------|---------|
| `owgw.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Gateway to use Kafka for communication | `'true'` |
| `owgw.configProperties."openwifi\.kafka\.brokerlist"` | string | Sets up Kafka broker list for OpenWIFI Gateway to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owgw.certs` | map | Map with multiline string containing TLS certificates and private keys required for service (see [OWGW repo](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/) for details) | |
| `owgw.certsCAs` | map | Map with multiline string containing TLS CAs required for service (see [OWGW repo](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/) for details) | |
| `owsec.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Security to use Kafka for communication | `'true'` |
| `owsec.certs` | map | Map with multiline string containing TLS certificates and private keys required for REST API | |
| `owsec.configProperties."openwifi\.kafka\.brokerlist"` | string | Sets up Kafka broker list for OpenWIFI Security to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owfms.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Firmware to use Kafka for communication | `'true'` |
| `owfms.configProperties."openwifi\.kafka\.brokerlist"` | string | Sets up Kafka broker list for OpenWIFI Firmware to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owfms.certs` | map | Map with multiline string containing TLS certificates and private keys required for REST API | |
| `owprov.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Provisioning to use Kafka for communication | `'true'` |
| `owprov.configProperties."openwifi\.kafka\.brokerlist"` | string | Sets up Kafka broker list for OpenWIFI Provisioning to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owprov.certs` | map | Map with multiline string containing TLS certificates and private keys required for REST API | |
| `owanalytics.enabled` | boolean | Install OpenWIFI Analytics in the release | `false` |
| `owanalytics.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Analytics to use Kafka for communication | `'true'` |
| `owanalytics.configProperties."openwifi\.kafka\.brokerlist"` | string | Sets up Kafka broker list for OpenWIFI Analytics to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owanalytics.certs` | map | Map with multiline string containing TLS certificates and private keys required for REST API | |
| `owsub.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Subscription to use Kafka for communication | `'true'` |
| `owsub.configProperties."openwifi\.kafka\.brokerlist"` | string | Sets up Kafka broker list for OpenWIFI Subscription to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owsub.certs` | map | Map with multiline string containing TLS certificates and private keys required for REST API | |
| `kafka.enabled` | boolean | Enables [kafka](https://github.com/bitnami/charts/blob/master/bitnami/kafka/) deployment | `true` |
| `rttys.enabled` | boolean | Enables [rttys](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty) deployment | `True` |
| `rttys.internal` | boolean | Whether to use the built-in rttys server | `True` |
| `rttys.enabled` | boolean | Enable or disable rttys | `True` |
| `rttys.config.token` | string | Sets default rttys token | |
| `kafka.enabled` | boolean | Enables [kafka](https://github.com/bitnami/charts/blob/master/bitnami/kafka/) deployment | `True` |
| `kafka.fullnameOverride` | string | Overrides Kafka Kubernetes service name so it could be predictable and set in microservices configs | `'kafka'` |
| `kafka.image.registry` | string | Kafka Docker image registry | `'docker.io'` |
| `kafka.image.repository` | string | Kafka Docker image repository | `'bitnami/kafka'` |
@@ -163,7 +106,7 @@ The following table lists the configurable parameters that overrides microservic
| `restapiCerts.services` | array | List of services that require certificates generation | |
| `restapiCerts.clusterDomain` | string | Kubernetes cluster domain | `cluster.local` |
If required, further overrides may be passed. They will be merged with default values from this chart and other sub-charts with priority to values you'll pass.
If required, further overrides may be passed. They will be merged with default values from this chart and other subcharts with priority to values you'll pass.
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
@@ -196,7 +139,7 @@ By setting `clusterinfo.enabled` to `true` you may enable job on post-install/po
1. Change default security credentials from credentials set in OWSEC configuration file (see 'Required password changing on the first startup' block above)
2. Check if all services started responding correctly after the deployment using systeminfo REST API method
In order to do that, you need to additionally set multiple parameters:
In order to do that, you need to additionaly set multiple parameters:
1. clusterinfo.public_env_variables.OWSEC - OWSEC endpoint to use for CLI tools
2. clusterinfo.secret_env_variables.OWSEC_DEFAULT_USERNAME - username used for CLI requests (see OWSEC configuration file for details)
@@ -217,17 +160,17 @@ You may see example values to enable this feature in [values.enable-owls.yaml](.
In order to use single point of entry for all services (may be used for one cloud Load Balancer per installation) HAproxy is installed by default with other services. HAproxy is working in TCP proxy mode, so every TLS certificate is managed by services themself, while it is possible to pass requests from cloud load balancer to services using same ports (configuration of cloud load balancer may vary from cloud provider to provider).
By default, this option is enabled, but you may disable it and make per-service LoadBalancer using values in [values.disable-haproxy.yaml](./feature-values/values.disable-haproxy.yaml).
By default this option is enabled, but you may disable it and make per-service LoadBalancer using values in [values.disable-haproxy.yaml](./feature-values/values.disable-haproxy.yaml).
### OWGW unsafe sysctls
By default, Linux is using quite adequate sysctl values for TCP keepalive, but OWGW may keep disconnected APs in stuck state preventing it from connecting back. This may be changed by setting some sysctls to lower values:
By default Linux is using quite adeqate sysctl values for TCP keepalive, but OWGW may keep disconnected APs in stuck state preventing it from connecting back. This may be changed by setting some sysctls to lower values:
- net.ipv4.tcp_keepalive_intvl
- net.ipv4.tcp_keepalive_probes - 2
- net.ipv4.tcp_keepalive_time - 45
However, this change is [not considered safe by Kubernetes](https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/#enabling-unsafe-sysctls), and it requires to pass additional argument to your Kubelets services in your Kubernetes cluster:
However this change is [not considered safe by Kubernetes](https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/#enabling-unsafe-sysctls) and it requires to pass additional argument to your Kubelets services in your Kubernetes cluster:
```
--allowed-unsafe-sysctls net.ipv4.tcp_keepalive_intvl,net.ipv4.tcp_keepalive_probes,net.ipv4.tcp_keepalive_time
@@ -252,18 +195,14 @@ If you want, you may use configuration property `openwifi.security.restapi.disab
You may see example values to enable this feature in [values.restapi-disable-tls.yaml](./feature-values/values.restapi-disable-tls.yaml).
### PostgreSQL storage option for services
By default, all microservices use SQLite as default storage driver, but it is possible to use PostgreSQL for that purpose. Both [cluster-per-microservice](environment-values/values.openwifi-qa.external-db.yaml) and [cluster per installation](environment-values/values.openwifi-qa.single-external-db.yaml) deployments method may be used.
## Environment specific values
This repository contains values files that may be used in the same manner as feature values above to deploy to specific runtime environments (including different cloud deployments).
This repository contains values files that may be used in the same manner as feature values above to deploy to specific runtime envionemnts (including different cloud deployments).
Some environments are using [external-dns](https://github.com/kubernetes-sigs/external-dns) service to dynamically set DNS records, but you may manage your records manually
### AWS EKS
EKS based installation assumes that you are using [AWS Load Balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller) so that all required ALBs and NLBs are created automatically. Also, it is assumed that you have Route53 managed DNS zone, and you've issued wildcard certificate for one of your zones that may be used by Load Balancers.
EKS based installation assumes that you are using [AWS Load Balancer controller](https://kubernetes-sigs.github.io/aws-load-balancer-controller) so that all required ALBs and NLBs are created automatically. Also it is assumed that you have Route53 managed DNS zone and you've issued wildcard certificate for one of your zones that may be used by Load Balancers.
You may see example values for this environment in [values.aws.yaml](./environment-values/values.aws.yaml).

View File

@@ -61,7 +61,7 @@ then
echo "Logged in with new credentials:"
fi
else
echo "Credentials check failed with unexpected ErrorCode, please review the response body:"
echo "Credentials check failed with unexpected ErrorCode, please review the responce body:"
jq < ${result_file}
exit 2
fi

View File

@@ -1,3 +0,0 @@
_values.custom-*.yaml
certs/
env_*

View File

@@ -1,15 +0,0 @@
#!/bin/bash
[ -z "$NAMESPACE" ] && echo "No NAMESPACE set" && exit 1
ns="openwifi-$NAMESPACE"
echo "Cleaning up namespace $ns in 10 seconds..."
sleep 10
echo "- delete tip-openwifi helm release in $ns"
helm -n "$ns" delete tip-openwifi
if [[ "$1" == "full" ]] ; then
echo "- delete $ns namespace in 30 seconds..."
sleep 30
echo "- delete $ns namespace"
kubectl delete ns "$ns"
fi
echo "- cleaned up $ns namespace"
exit 0

View File

@@ -2,77 +2,78 @@
set -e
# Usage function
function usage()
{
cat <<-EOF >&2
This script is intended for OpenWIFI Cloud SDK deployment to TIP QA/Dev environments using assembly Helm chart (https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/tree/main/chart) with configuration through environment variables
Required environment variables:
- NAMESPACE - namespace suffix that will used added for the Kubernetes environment (i.e. if you pass 'test', kubernetes namespace will be named 'ucentral-test')
- DEPLOY_METHOD - deployment method for the chart deployment (supported methods - 'git' (will use helm-git from assembly chart), 'bundle' (will use chart stored in the Artifactory) or local
- CHART_VERSION - version of chart to be deployed from assembly chart (for 'git' method git ref may be passed, for 'bundle' method version of chart may be passed)
- VALUES_FILE_LOCATION - path to file with override values that may be used for deployment
- DOMAIN - Domain name. default: cicd.lab.wlan.tip.build
- OWGW_AUTH_USERNAME - username to be used for requests to OpenWIFI Security
- OWGW_AUTH_PASSWORD - hashed password for OpenWIFI Security (details on this may be found in https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/#authenticationdefaultpassword)
- OWFMS_S3_SECRET - secret key that is used for OpenWIFI Firmware access to firmwares S3 bucket
- OWFMS_S3_KEY - access key that is used for OpenWIFI Firmware access to firmwares S3 bucket
- OWSEC_NEW_PASSWORD - password that should be set to default user instead of default password from properties
- CERT_LOCATION - path to certificate in PEM format that will be used for securing all endpoint in all services
- KEY_LOCATION - path to private key in PEM format that will be used for securing all endpoint in all services
The following environmnet variables may be passed, but will be ignored if CHART_VERSION is set to release (i.e. v2.4.0):
- OWGW_VERSION - OpenWIFI Gateway version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
- OWGWUI_VERSION - OpenWIFI Web UI version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
- OWSEC_VERSION - OpenWIFI Security version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
- OWFMS_VERSION - OpenWIFI Firmware version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
- OWPROV_VERSION - OpenWIFI Provisioning version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
- OWPROVUI_VERSION - OpenWIFI Provisioning Web UI version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
- OWANALYTICS_VERSION - OpenWIFI Analytics version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
- OWSUB_VERSION - OpenWIFI Subscription (Userportal) version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)
Optional environment variables:
- EXTRA_VALUES - extra values that should be passed to Helm deployment separated by comma (,)
- DEVICE_CERT_LOCATION - path to certificate in PEM format that will be used for load simulator
- DEVICE_KEY_LOCATION - path to private key in PEM format that will be used for load simulator
- USE_SEPARATE_OWGW_LB - flag that should change split external DNS for OWGW and other services
- INTERNAL_RESTAPI_ENDPOINT_SCHEMA - what schema to use for internal RESTAPI endpoints (https by default)
- IPTOCOUNTRY_IPINFO_TOKEN - token that should be set for IPInfo support (owgw/owprov iptocountry.ipinfo.token properties), ommited if not passed
- MAILER_USERNAME - SMTP username used for OWSEC mailer
- MAILER_PASSWORD - SMTP password used for OWSEC mailer (only if both MAILER_PASSWORD and MAILER_USERNAME are set, mailer will be enabled)
- CERTIFICATE_ARN - Certificate ARN (will default to ap-south-1 certificate ARN)
EOF
usage () {
echo >&2;
echo "This script is indended for OpenWIFI Cloud SDK deployment to TIP QA/Dev environments using assembly Helm chart (https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/tree/main/chart) with configuration through environment variables" >&2;
echo >&2;
echo "Required environment variables:" >&2;
echo >&2;
echo "- NAMESPACE - namespace suffix that will used added for the Kubernetes environment (i.e. if you pass 'test', kubernetes namespace will be named 'ucentral-test')" >&2;
echo "- DEPLOY_METHOD - deployment method for the chart deployment (supported methods - 'git' (will use helm-git from assembly chart) and 'bundle' (will use chart stored in the Artifactory0" >&2;
echo "- CHART_VERSION - version of chart to be deployed from assembly chart (for 'git' method git ref may be passed, for 'bundle' method version of chart may be passed)" >&2;
echo >&2;
echo "- VALUES_FILE_LOCATION - path to file with override values that may be used for deployment" >&2;
echo "- OWGW_AUTH_USERNAME - username to be used for requests to OpenWIFI Security" >&2;
echo "- OWGW_AUTH_PASSWORD - hashed password for OpenWIFI Security (details on this may be found in https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/#authenticationdefaultpassword)" >&2;
echo "- OWFMS_S3_SECRET - secret key that is used for OpenWIFI Firmware access to firmwares S3 bucket" >&2;
echo "- OWFMS_S3_KEY - access key that is used for OpenWIFI Firmware access to firmwares S3 bucket" >&2;
echo "- OWSEC_NEW_PASSWORD - password that should be set to default user instead of default password from properties" >&2;
echo "- CERT_LOCATION - path to certificate in PEM format that will be used for securing all endpoint in all services" >&2;
echo "- KEY_LOCATION - path to private key in PEM format that will be used for securing all endpoint in all services" >&2;
echo >&2;
echo "Following environmnet variables may be passed, but will be ignored if CHART_VERSION is set to release (i.e. v2.4.0):" >&2;
echo >&2;
echo "- OWGW_VERSION - OpenWIFI Gateway version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)" >&2;
echo "- OWGWUI_VERSION - OpenWIFI Web UI version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)" >&2;
echo "- OWSEC_VERSION - OpenWIFI Security version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)" >&2;
echo "- OWFMS_VERSION - OpenWIFI Firmware version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)" >&2;
echo "- OWPROV_VERSION - OpenWIFI Provisioning version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)" >&2;
echo "- OWPROVUI_VERSION - OpenWIFI Provisioning Web UI version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)" >&2;
echo "- OWANALYTICS_VERSION - OpenWIFI Analytics version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)" >&2;
echo "- OWSUB_VERSION - OpenWIFI Subscription (Userportal) version to deploy (will be used for Docker image tag and git branch for Helm chart if git deployment is required)" >&2;
echo >&2;
echo "Optional environment variables:" >&2;
echo >&2;
echo "- EXTRA_VALUES - extra values that should be passed to Helm deployment separated by comma (,)" >&2;
echo "- DEVICE_CERT_LOCATION - path to certificate in PEM format that will be used for load simulator" >&2;
echo "- DEVICE_KEY_LOCATION - path to private key in PEM format that will be used for load simulator" >&2;
echo "- USE_SEPARATE_OWGW_LB - flag that should change split external DNS for OWGW and other services" >&2;
echo "- INTERNAL_RESTAPI_ENDPOINT_SCHEMA - what schema to use for internal RESTAPI endpoints (https by default)" >&2;
echo "- IPTOCOUNTRY_IPINFO_TOKEN - token that should be set for IPInfo support (owgw/owprov iptocountry.ipinfo.token properties), ommited if not passed" >&2;
echo "- MAILER_USERNAME - SMTP username used for OWSEC mailer" >&2;
echo "- MAILER_PASSWORD - SMTP password used for OWSEC mailer (only if both MAILER_PASSWORD and MAILER_USERNAME are set, mailer will be enabled)" >&2;
}
# Global variables
VALUES_FILE_LOCATION_SPLITTED=()
EXTRA_VALUES_SPLITTED=()
DEF_CERT_ARN="arn:aws:acm:ap-south-1:289708231103:certificate/2cc8c764-11fd-411d-bf7d-a93f488f3f6c"
# Helper functions
function check_if_chart_version_is_release()
{
[[ "$CHART_VERSION" =~ ^v[0-9]+\.[0-9]+\.[0-9]+ ]]
check_if_chart_version_is_release() {
PARSED_CHART_VERSION=$(echo $CHART_VERSION | grep -xP "v\d+\.\d+\.\d+.*")
if [[ -z "$PARSED_CHART_VERSION" ]]; then
return 1
else
return 0
fi
}
# Check if required environment variables were passed
## Deployment specifics
[ -z ${DEPLOY_METHOD+x} ] && echo "DEPLOY_METHOD is unset" >&2 && usage && exit 1
[ -z ${CHART_VERSION+x} ] && echo "CHART_VERSION is unset" >&2 && usage && exit 1
if [[ "$DEPLOY_METHOD" != "local" ]] ; then
if check_if_chart_version_is_release ; then
echo "Chart version ($CHART_VERSION) is a release version, ignoring services versions"
else
echo "Chart version ($CHART_VERSION) is not a release version, checking if services versions are set"
[ -z ${OWGW_VERSION+x} ] && echo "OWGW_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWGWUI_VERSION+x} ] && echo "OWGWUI_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWSEC_VERSION+x} ] && echo "OWSEC_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWFMS_VERSION+x} ] && echo "OWFMS_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWPROV_VERSION+x} ] && echo "OWPROV_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWPROVUI_VERSION+x} ] && echo "OWPROVUI_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWANALYTICS_VERSION+x} ] && echo "OWANALYTICS_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWSUB_VERSION+x} ] && echo "OWSUB_VERSION is unset" >&2 && usage && exit 1
fi
if check_if_chart_version_is_release; then
echo "Chart version ($CHART_VERSION) is release version, ignoring services versions"
else
echo "Chart version ($CHART_VERSION) is not release version, checking if services versions are set"
[ -z ${OWGW_VERSION+x} ] && echo "OWGW_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWGWUI_VERSION+x} ] && echo "OWGWUI_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWSEC_VERSION+x} ] && echo "OWSEC_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWFMS_VERSION+x} ] && echo "OWFMS_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWPROV_VERSION+x} ] && echo "OWPROV_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWPROVUI_VERSION+x} ] && echo "OWPROVUI_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWANALYTICS_VERSION+x} ] && echo "OWANALYTICS_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWSUB_VERSION+x} ] && echo "OWSUB_VERSION is unset" >&2 && usage && exit 1
fi
## Environment specifics
[ -z ${NAMESPACE+x} ] && echo "NAMESPACE is unset" >&2 && usage && exit 1
@@ -89,11 +90,8 @@ fi
[ -z ${DEVICE_CERT_LOCATION+x} ] && echo "DEVICE_CERT_LOCATION is unset, setting it to CERT_LOCATION" && export DEVICE_CERT_LOCATION=$CERT_LOCATION
[ -z ${DEVICE_KEY_LOCATION+x} ] && echo "DEVICE_KEY_LOCATION is unset, setting it to KEY_LOCATION" && export DEVICE_KEY_LOCATION=$KEY_LOCATION
[ -z ${INTERNAL_RESTAPI_ENDPOINT_SCHEMA+x} ] && echo "INTERNAL_RESTAPI_ENDPOINT_SCHEMA is unset, setting it to 'https'" && export INTERNAL_RESTAPI_ENDPOINT_SCHEMA=https
[ -z ${USE_SEPARATE_OWGW_LB+x} ] && echo "USE_SEPARATE_OWGW_LB is unset, setting it to false" && export USE_SEPARATE_OWGW_LB=false
export MAILER_ENABLED="false"
[ ! -z ${MAILER_USERNAME+x} ] && [ ! -z ${MAILER_PASSWORD+x} ] && echo "MAILER_USERNAME and MAILER_PASSWORD are set, mailer will be enabled" && export MAILER_ENABLED="true"
[ -z "${DOMAIN}" ] && echo "DOMAIN is unset, using cicd.lab.wlan.tip.build" && export DOMAIN="cicd.lab.wlan.tip.build"
[ -z ${CERTIFICATE_ARN+x} ] && export CERTIFICATE_ARN=$DEF_CERT_ARN
# Transform some environment variables
export OWGW_VERSION_TAG=$(echo ${OWGW_VERSION} | tr '/' '-')
@@ -105,68 +103,126 @@ export OWPROVUI_VERSION_TAG=$(echo ${OWPROVUI_VERSION} | tr '/' '-')
export OWANALYTICS_VERSION_TAG=$(echo ${OWANALYTICS_VERSION} | tr '/' '-')
export OWSUB_VERSION_TAG=$(echo ${OWSUB_VERSION} | tr '/' '-')
# Debug get bash version
bash --version >&2
# Check deployment method that's required for this environment
helm plugin install https://github.com/databus23/helm-diff || true
if [[ "$DEPLOY_METHOD" == "git" ]] ; then
helm plugin list | grep "^helm-git" || helm plugin install https://github.com/aslafy-z/helm-git || true
rm -rf wlan-cloud-ucentral-deploy || true
git clone https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy.git
cd wlan-cloud-ucentral-deploy
git checkout $CHART_VERSION
cd chart
if ! check_if_chart_version_is_release ; then
sed -i '/wlan-cloud-ucentralgw@/s/ref=.*/ref='${OWGW_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralgw-ui@/s/ref=.*/ref='${OWGWUI_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralsec@/s/ref=.*/ref='${OWSEC_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralfms@/s/ref=.*/ref='${OWFMS_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-owprov@/s/ref=.*/ref='${OWPROV_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-owprov-ui@/s/ref=.*/ref='${OWPROVUI_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-analytics@/s/ref=.*/ref='${OWANALYTICS_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-userportal@/s/ref=.*/ref='${OWSUB_VERSION}'\"/g' Chart.yaml
fi
#helm repo add bitnami https://charts.bitnami.com/bitnami && helm repo update
[ -z "$SKIP_DEPS" ] && helm dependency update
cd ../..
export DEPLOY_SOURCE="wlan-cloud-ucentral-deploy/chart"
elif [[ "$DEPLOY_METHOD" == "bundle" ]] ; then
if [[ "$DEPLOY_METHOD" == "git" ]]; then
helm plugin install https://github.com/aslafy-z/helm-git --version 0.10.0 || true
rm -rf wlan-cloud-ucentral-deploy || true
git clone https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy.git
cd wlan-cloud-ucentral-deploy
git checkout $CHART_VERSION
cd chart
if ! check_if_chart_version_is_release; then
sed -i '/wlan-cloud-ucentralgw@/s/ref=.*/ref='${OWGW_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralgw-ui@/s/ref=.*/ref='${OWGWUI_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralsec@/s/ref=.*/ref='${OWSEC_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralfms@/s/ref=.*/ref='${OWFMS_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-owprov@/s/ref=.*/ref='${OWPROV_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-owprov-ui@/s/ref=.*/ref='${OWPROVUI_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-analytics@/s/ref=.*/ref='${OWANALYTICS_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-userportal@/s/ref=.*/ref='${OWSUB_VERSION}'\"/g' Chart.yaml
fi
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm dependency update
cd ../..
export DEPLOY_SOURCE="wlan-cloud-ucentral-deploy/chart"
else
if [[ "$DEPLOY_METHOD" == "bundle" ]]; then
helm repo add tip-wlan-cloud-ucentral-helm https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/ || true
export DEPLOY_SOURCE="tip-wlan-cloud-ucentral-helm/openwifi --version $CHART_VERSION"
elif [[ "$DEPLOY_METHOD" == "local" ]] ; then
export DEPLOY_SOURCE=".."
pushd ..
[ -z "$SKIP_DEPS" ] && helm dependency update
popd
else
echo "Deploy method is not correct: $DEPLOY_METHOD. Valid values: git, bundle or local" >&2
else
echo "Deploy method is not correct: $DEPLOY_METHOD. Valid value - git or bundle" >&2
exit 1
fi
fi
VALUES_FILES_FLAGS=()
IFS=',' read -ra VALUES_FILE_LOCATION_SPLITTED <<< "$VALUES_FILE_LOCATION"
for VALUE_FILE in ${VALUES_FILE_LOCATION_SPLITTED[*]}; do
VALUES_FILES_FLAGS+=("-f" $VALUE_FILE)
VALUES_FILES_FLAGS+=("-f" $VALUE_FILE)
done
EXTRA_VALUES_FLAGS=()
IFS=',' read -ra EXTRA_VALUES_SPLITTED <<< "$EXTRA_VALUES"
for EXTRA_VALUE in ${EXTRA_VALUES_SPLITTED[*]}; do
EXTRA_VALUES_FLAGS+=("--set" $EXTRA_VALUE)
EXTRA_VALUES_FLAGS+=("--set" $EXTRA_VALUE)
done
if [[ "$USE_SEPARATE_OWGW_LB" == "true" ]] ; then
export HAPROXY_SERVICE_DNS_RECORDS="sec-${NAMESPACE}.${DOMAIN},fms-${NAMESPACE}.${DOMAIN},prov-${NAMESPACE}.${DOMAIN},analytics-${NAMESPACE}.${DOMAIN},sub-${NAMESPACE}.${DOMAIN}"
export OWGW_SERVICE_DNS_RECORDS="gw-${NAMESPACE}.${DOMAIN}"
if [[ "$USE_SEPARATE_OWGW_LB" == "true" ]]; then
export HAPROXY_SERVICE_DNS_RECORDS="sec-${NAMESPACE}.cicd.lab.wlan.tip.build\,fms-${NAMESPACE}.cicd.lab.wlan.tip.build\,prov-${NAMESPACE}.cicd.lab.wlan.tip.build\,analytics-${NAMESPACE}.cicd.lab.wlan.tip.build\,sub-${NAMESPACE}.cicd.lab.wlan.tip.build"
export OWGW_SERVICE_DNS_RECORDS="gw-${NAMESPACE}.cicd.lab.wlan.tip.build"
else
export HAPROXY_SERVICE_DNS_RECORDS="gw-${NAMESPACE}.${DOMAIN},sec-${NAMESPACE}.${DOMAIN},fms-${NAMESPACE}.${DOMAIN},prov-${NAMESPACE}.${DOMAIN},analytics-${NAMESPACE}.${DOMAIN},sub-${NAMESPACE}.${DOMAIN}"
export HAPROXY_SERVICE_DNS_RECORDS="gw-${NAMESPACE}.cicd.lab.wlan.tip.build\,sec-${NAMESPACE}.cicd.lab.wlan.tip.build\,fms-${NAMESPACE}.cicd.lab.wlan.tip.build\,prov-${NAMESPACE}.cicd.lab.wlan.tip.build\,analytics-${NAMESPACE}.cicd.lab.wlan.tip.build\,sub-${NAMESPACE}.cicd.lab.wlan.tip.build"
export OWGW_SERVICE_DNS_RECORDS=""
fi
envsubst < values.custom.tpl.yaml > _values.custom-${NAMESPACE}.yaml
# Run the deployment
helm upgrade --install --create-namespace --wait --timeout 60m \
--namespace openwifi-${NAMESPACE} \
${VALUES_FILES_FLAGS[*]} \
--set owgw.services.owgw.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=gw-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owgw.configProperties."openwifi\.fileuploader\.host\.0\.name"=gw-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owgw.configProperties."rtty\.server"=gw-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owgw.configProperties."openwifi\.system\.uri\.public"=https://gw-${NAMESPACE}.cicd.lab.wlan.tip.build:16002 \
--set owgw.configProperties."openwifi\.system\.uri\.private"=$INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owgw-owgw:17002 \
--set owgw.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owgw.configProperties."iptocountry\.ipinfo\.token"="${IPTOCOUNTRY_IPINFO_TOKEN}" \
--set owgw.public_env_variables.OWSEC=sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owsec.configProperties."authentication\.default\.username"=${OWGW_AUTH_USERNAME} \
--set owsec.configProperties."authentication\.default\.password"=${OWGW_AUTH_PASSWORD} \
--set owsec.services.owsec.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=sec-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owsec.configProperties."openwifi\.system\.uri\.public"=https://sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owsec.configProperties."openwifi\.system\.uri\.private"=$INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owsec-owsec:17001 \
--set owsec.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owsec.configProperties."mailer\.sender"=sec-${NAMESPACE}@cicd.lab.wlan.tip.build \
--set owsec.configProperties."mailer\.enabled"=$MAILER_ENABLED \
--set owsec.configProperties."mailer\.username"=$MAILER_USERNAME \
--set owsec.configProperties."mailer\.password"=$MAILER_PASSWORD \
--set owfms.configProperties."s3\.secret"=${OWFMS_S3_SECRET} \
--set owfms.configProperties."s3\.key"=${OWFMS_S3_KEY} \
--set owfms.services.owfms.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=fms-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owfms.configProperties."openwifi\.system\.uri\.public"=https://fms-${NAMESPACE}.cicd.lab.wlan.tip.build:16004 \
--set owfms.configProperties."openwifi\.system\.uri\.private"=$INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owfms-owfms:17004 \
--set owfms.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owfms.public_env_variables.OWSEC=sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owgwui.ingresses.default.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owgwui.ingresses.default.hosts={webui-${NAMESPACE}.cicd.lab.wlan.tip.build} \
--set owgwui.public_env_variables.DEFAULT_UCENTRALSEC_URL=https://sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owprov.services.owprov.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=prov-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owprov.configProperties."openwifi\.system\.uri\.public"=https://prov-${NAMESPACE}.cicd.lab.wlan.tip.build:16005 \
--set owprov.configProperties."openwifi\.system\.uri\.private"=$INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owprov-owprov:17005 \
--set owprov.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owprov.configProperties."iptocountry\.ipinfo\.token"="${IPTOCOUNTRY_IPINFO_TOKEN}" \
--set owprov.public_env_variables.OWSEC=sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owprovui.ingresses.default.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=provui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owprovui.ingresses.default.hosts={provui-${NAMESPACE}.cicd.lab.wlan.tip.build} \
--set owprovui.public_env_variables.DEFAULT_UCENTRALSEC_URL=https://sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owprovui.public_env_variables.REACT_APP_UCENTRALSEC_URL=https://sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owanalytics.services.owanalytics.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=analytics-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owanalytics.configProperties."openwifi\.system\.uri\.public"=https://analytics-${NAMESPACE}.cicd.lab.wlan.tip.build:16009 \
--set owanalytics.configProperties."openwifi\.system\.uri\.private"=$INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owanalytics-owanalytics:17009 \
--set owanalytics.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owanalytics.public_env_variables.OWSEC=sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owsub.services.owsub.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=sub-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owsub.configProperties."openwifi\.system\.uri\.public"=https://sub-${NAMESPACE}.cicd.lab.wlan.tip.build:16006 \
--set owsub.configProperties."openwifi\.system\.uri\.private"=$INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owsub-owsub:17006 \
--set owsub.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owsub.public_env_variables.OWSEC=sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set clustersysteminfo.public_env_variables.OWSEC=sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set clustersysteminfo.secret_env_variables.OWSEC_NEW_PASSWORD=${OWSEC_NEW_PASSWORD} \
--set owls.services.owls.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=ls-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owls.configProperties."openwifi\.system\.uri\.public"=https://ls-${NAMESPACE}.cicd.lab.wlan.tip.build:16007 \
--set owls.configProperties."openwifi\.system\.uri\.private"=$INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owls-owls:17007 \
--set owls.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owlsui.ingresses.default.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=lsui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owlsui.ingresses.default.hosts={lsui-${NAMESPACE}.cicd.lab.wlan.tip.build} \
--set owlsui.public_env_variables.DEFAULT_UCENTRALSEC_URL=https://sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set haproxy.service.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=$HAPROXY_SERVICE_DNS_RECORDS \
--set owgw.services.owgw.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=$OWGW_SERVICE_DNS_RECORDS \
${EXTRA_VALUES_FLAGS[*]} \
-f _values.custom-${NAMESPACE}.yaml \
--set-file owgw.certs."restapi-cert\.pem"=$CERT_LOCATION \
--set-file owgw.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owgw.certs."websocket-cert\.pem"=$CERT_LOCATION \

View File

@@ -15,11 +15,11 @@ owgwui:
ingresses:
default:
enabled: true
className: alb
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/group.name: wlan-cicd
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-south-1:289708231103:certificate/2cc8c764-11fd-411d-bf7d-a93f488f3f6c
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285 # TODO change certificate
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_302"}}'
external-dns.alpha.kubernetes.io/hostname: webui.cicd.lab.wlan.tip.build # TODO change FQDN
@@ -29,7 +29,7 @@ owgwui:
servicePort: http
public_env_variables:
REACT_APP_UCENTRALSEC_URL: https://sec.cicd.lab.wlan.tip.build:16001 # TODO change to OWSEC RESTAPI url
DEFAULT_UCENTRALSEC_URL: https://sec.cicd.lab.wlan.tip.build:16001 # TODO change to OWSEC RESTAPI url
owsec:
configProperties: # TODO change FQDNs and credentials
@@ -65,11 +65,11 @@ owprovui:
ingresses:
default:
enabled: true
className: alb
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/group.name: wlan-cicd
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-south-1:289708231103:certificate/2cc8c764-11fd-411d-bf7d-a93f488f3f6c
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285 # TODO change certificate
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_302"}}'
external-dns.alpha.kubernetes.io/hostname: provui.cicd.lab.wlan.tip.build # TODO change FQDN
@@ -99,6 +99,7 @@ haproxy:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "8080"
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285 # TODO change certificate
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16004,17004,16002,16003,17002,16005,17005,16001,17001,5912,5913,16009,16007"
service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
external-dns.alpha.kubernetes.io/hostname: "gw.cicd.lab.wlan.tip.build,sec.cicd.lab.wlan.tip.build,fms.cicd.lab.wlan.tip.build,prov.cicd.lab.wlan.tip.build,rtty.cicd.lab.wlan.tip.build,sub.cicd.lab.wlan.tip.build,analytics.cicd.lab.wlan.tip.build" # TODO change FQDNs

View File

@@ -1,95 +0,0 @@
owgw:
existingCertsSecret: openwifi-certs
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.public: http://localhost:16002
openwifi.system.uri.private: http://owgw-owgw:17002
openwifi.system.uri.ui: http://localhost
owsec:
existingCertsSecret: openwifi-certs
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.public: http://localhost:16001
openwifi.system.uri.private: http://owsec-owsec:17001
openwifi.system.uri.ui: http://localhost
owfms:
existingCertsSecret: openwifi-certs
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.public: http://localhost:16004
openwifi.system.uri.private: http://owfms-owfms:17004
openwifi.system.uri.ui: http://localhost
owprov:
existingCertsSecret: openwifi-certs
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.public: http://localhost:16005
openwifi.system.uri.private: http://owprov-owprov:17005
openwifi.system.uri.ui: http://localhost
owanalytics:
existingCertsSecret: openwifi-certs
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.public: http://localhost:16009
openwifi.system.uri.private: http://owanalytics-owanalytics:17009
openwifi.system.uri.ui: http://localhost
owsub:
existingCertsSecret: openwifi-certs
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.public: http://localhost:16006
openwifi.system.uri.private: http://owsub-owsub:17006
openwifi.system.uri.ui: http://localhost
owgwui:
public_env_variables:
REACT_APP_UCENTRALSEC_URL: http://localhost:16001
owprovui:
public_env_variables:
REACT_APP_UCENTRALSEC_URL: http://localhost:16001
kafka:
volumePermissions:
enabled: true
commonAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
readinessProbe:
initialDelaySeconds: 45
livenessProbe:
initialDelaySeconds: 60
kraft:
enabled: true
heapOpts: -Xmx1024m -Xms1024m
zookeeper:
enabled: false
controller:
replicaCount: 1
extraConfig: |-
maxMessageBytes = 1048588
offsets.topic.replication.factor = 1
transaction.state.log.replication.factor = 1
extraEnvVars:
- name: ALLOW_PLAINTEXT_LISTENER
value: "yes"
listeners:
client:
protocol: PLAINTEXT
containerPort: 9092
controller:
protocol: "PLAINTEXT"
broker:
persistence:
size: 20Gi
replicaCount: 0

View File

@@ -1,351 +0,0 @@
owgw:
public_env_variables:
SELFSIGNED_CERTS: "true"
existingCertsSecret: openwifi-certs
configProperties:
openwifi.system.uri.public: https://localhost:16002
openwifi.system.uri.private: https://owgw-owgw:17002
openwifi.system.uri.ui: http://localhost:8443
openwifi.internal.restapi.host.0.rootca: $OWGW_ROOT/certs/restapi-certs/ca.crt
openwifi.internal.restapi.host.0.cert: $OWGW_ROOT/certs/restapi-certs/tls.crt
openwifi.internal.restapi.host.0.key: $OWGW_ROOT/certs/restapi-certs/tls.key
openwifi.restapi.host.0.rootca: $OWGW_ROOT/certs/restapi-certs/ca.crt
openwifi.restapi.host.0.cert: $OWGW_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWGW_ROOT/certs/restapi-certs/tls.key
volumes:
owgw:
- name: config
mountPath: /owgw-data/owgw.properties
subPath: owgw.properties
# Template below will be rendered in template
volumeDefinition: |
secret:
secretName: {{ include "owgw.fullname" . }}-config
- name: certs
mountPath: /owgw-data/certs
volumeDefinition: |
secret:
secretName: {{ if .Values.existingCertsSecret }}{{ .Values.existingCertsSecret }}{{ else }}{{ include "owgw.fullname" . }}-certs{{ end }}
- name: certs-cas
mountPath: /owgw-data/certs/cas
volumeDefinition: |
secret:
secretName: {{ include "owgw.fullname" . }}-certs-cas
- name: persist
mountPath: /owgw-data/persist
volumeDefinition: |
persistentVolumeClaim:
claimName: {{ template "owgw.fullname" . }}-pvc
- name: restapi-certs
mountPath: /owgw-data/certs/restapi-certs
volumeDefinition: |
secret:
secretName: {{ include "owgw.fullname" . }}-owgw-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owgw.fullname" . }}-owgw-restapi-tls
owsec:
public_env_variables:
SELFSIGNED_CERTS: "true"
existingCertsSecret: openwifi-certs
configProperties:
openwifi.system.uri.public: https://localhost:16001
openwifi.system.uri.private: https://owsec-owsec:17001
openwifi.system.uri.ui: http://localhost:8080
openwifi.internal.restapi.host.0.rootca: $OWSEC_ROOT/certs/restapi-certs/ca.crt
openwifi.internal.restapi.host.0.cert: $OWSEC_ROOT/certs/restapi-certs/tls.crt
openwifi.internal.restapi.host.0.key: $OWSEC_ROOT/certs/restapi-certs/tls.key
openwifi.restapi.host.0.rootca: $OWSEC_ROOT/certs/restapi-certs/ca.crt
openwifi.restapi.host.0.cert: $OWSEC_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWSEC_ROOT/certs/restapi-certs/tls.key
volumes:
owsec:
- name: config
mountPath: /owsec-data/owsec.properties
subPath: owsec.properties
# Template below will be rendered in template
volumeDefinition: |
secret:
secretName: {{ include "owsec.fullname" . }}-config
- name: certs
mountPath: /owsec-data/certs
volumeDefinition: |
secret:
secretName: {{ if .Values.existingCertsSecret }}{{ .Values.existingCertsSecret }}{{ else }}{{ include "owsec.fullname" . }}-certs{{ end }}
- name: persist
mountPath: /owsec-data/persist
volumeDefinition: |
persistentVolumeClaim:
claimName: {{ template "owsec.fullname" . }}-pvc
- name: restapi-certs
mountPath: /owsec-data/certs/restapi-certs
volumeDefinition: |
secret:
secretName: {{ include "owsec.fullname" . }}-owsec-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owsec.fullname" . }}-owsec-restapi-tls
owfms:
public_env_variables:
SELFSIGNED_CERTS: "true"
existingCertsSecret: openwifi-certs
configProperties:
openwifi.system.uri.public: https://localhost:16004
openwifi.system.uri.private: https://owfms-owfms:17004
openwifi.system.uri.ui: http://localhost:8080
openwifi.internal.restapi.host.0.rootca: $OWFMS_ROOT/certs/restapi-certs/ca.crt
openwifi.internal.restapi.host.0.cert: $OWFMS_ROOT/certs/restapi-certs/tls.crt
openwifi.internal.restapi.host.0.key: $OWFMS_ROOT/certs/restapi-certs/tls.key
openwifi.restapi.host.0.rootca: $OWFMS_ROOT/certs/restapi-certs/ca.crt
openwifi.restapi.host.0.cert: $OWFMS_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWFMS_ROOT/certs/restapi-certs/tls.key
volumes:
owfms:
- name: config
mountPath: /owfms-data/owfms.properties
subPath: owfms.properties
# Template below will be rendered in template
volumeDefinition: |
secret:
secretName: {{ include "owfms.fullname" . }}-config
- name: certs
mountPath: /owfms-data/certs
volumeDefinition: |
secret:
secretName: {{ if .Values.existingCertsSecret }}{{ .Values.existingCertsSecret }}{{ else }}{{ include "owfms.fullname" . }}-certs{{ end }}
- name: persist
mountPath: /owfms-data/persist
volumeDefinition: |
persistentVolumeClaim:
claimName: {{ template "owfms.fullname" . }}-pvc
- name: restapi-certs
mountPath: /owfms-data/certs/restapi-certs
volumeDefinition: |
secret:
secretName: {{ include "owfms.fullname" . }}-owfms-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owfms.fullname" . }}-owfms-restapi-tls
owprov:
public_env_variables:
SELFSIGNED_CERTS: "true"
existingCertsSecret: openwifi-certs
configProperties:
openwifi.system.uri.public: https://localhost:16005
openwifi.system.uri.private: https://owprov-owprov:17005
openwifi.system.uri.ui: http://localhost:8080
openwifi.internal.restapi.host.0.rootca: $OWPROV_ROOT/certs/restapi-certs/ca.crt
openwifi.internal.restapi.host.0.cert: $OWPROV_ROOT/certs/restapi-certs/tls.crt
openwifi.internal.restapi.host.0.key: $OWPROV_ROOT/certs/restapi-certs/tls.key
openwifi.restapi.host.0.rootca: $OWPROV_ROOT/certs/restapi-certs/ca.crt
openwifi.restapi.host.0.cert: $OWPROV_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWPROV_ROOT/certs/restapi-certs/tls.key
volumes:
owprov:
- name: config
mountPath: /owprov-data/owprov.properties
subPath: owprov.properties
# Template below will be rendered in template
volumeDefinition: |
secret:
secretName: {{ include "owprov.fullname" . }}-config
- name: certs
mountPath: /owprov-data/certs
volumeDefinition: |
secret:
secretName: {{ if .Values.existingCertsSecret }}{{ .Values.existingCertsSecret }}{{ else }}{{ include "owprov.fullname" . }}-certs{{ end }}
- name: persist
mountPath: /owprov-data/persist
volumeDefinition: |
persistentVolumeClaim:
claimName: {{ template "owprov.fullname" . }}-pvc
- name: restapi-certs
mountPath: /owprov-data/certs/restapi-certs
volumeDefinition: |
secret:
secretName: {{ include "owprov.fullname" . }}-owprov-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owprov.fullname" . }}-owprov-restapi-tls
owanalytics:
public_env_variables:
SELFSIGNED_CERTS: "true"
existingCertsSecret: openwifi-certs
configProperties:
openwifi.system.uri.public: https://localhost:16009
openwifi.system.uri.private: https://owanalytics-owanalytics:17009
openwifi.system.uri.ui: http://localhost:8080
openwifi.internal.restapi.host.0.rootca: $OWANALYTICS_ROOT/certs/restapi-certs/ca.crt
openwifi.internal.restapi.host.0.cert: $OWANALYTICS_ROOT/certs/restapi-certs/tls.crt
openwifi.internal.restapi.host.0.key: $OWANALYTICS_ROOT/certs/restapi-certs/tls.key
openwifi.restapi.host.0.rootca: $OWANALYTICS_ROOT/certs/restapi-certs/ca.crt
openwifi.restapi.host.0.cert: $OWANALYTICS_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWANALYTICS_ROOT/certs/restapi-certs/tls.key
volumes:
owanalytics:
- name: config
mountPath: /owanalytics-data/owanalytics.properties
subPath: owanalytics.properties
# Template below will be rendered in template
volumeDefinition: |
secret:
secretName: {{ include "owanalytics.fullname" . }}-config
- name: certs
mountPath: /owanalytics-data/certs
volumeDefinition: |
secret:
secretName: {{ if .Values.existingCertsSecret }}{{ .Values.existingCertsSecret }}{{ else }}{{ include "owanalytics.fullname" . }}-certs{{ end }}
- name: persist
mountPath: /owanalytics-data/persist
volumeDefinition: |
persistentVolumeClaim:
claimName: {{ template "owanalytics.fullname" . }}-pvc
- name: restapi-certs
mountPath: /owanalytics-data/certs/restapi-certs
volumeDefinition: |
secret:
secretName: {{ include "owanalytics.fullname" . }}-owanalytics-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owanalytics.fullname" . }}-owanalytics-restapi-tls
owsub:
public_env_variables:
SELFSIGNED_CERTS: "true"
existingCertsSecret: openwifi-certs
configProperties:
openwifi.system.uri.public: https://localhost:16006
openwifi.system.uri.private: https://owsub-owsub:17006
openwifi.system.uri.ui: http://localhost:8080
openwifi.internal.restapi.host.0.rootca: $OWSUB_ROOT/certs/restapi-certs/ca.crt
openwifi.internal.restapi.host.0.cert: $OWSUB_ROOT/certs/restapi-certs/tls.crt
openwifi.internal.restapi.host.0.key: $OWSUB_ROOT/certs/restapi-certs/tls.key
openwifi.restapi.host.0.rootca: $OWSUB_ROOT/certs/restapi-certs/ca.crt
openwifi.restapi.host.0.cert: $OWSUB_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWSUB_ROOT/certs/restapi-certs/tls.key
volumes:
owsub:
- name: config
mountPath: /owsub-data/owsub.properties
subPath: owsub.properties
# Template below will be rendered in template
volumeDefinition: |
secret:
secretName: {{ include "owsub.fullname" . }}-config
- name: certs
mountPath: /owsub-data/certs
volumeDefinition: |
secret:
secretName: {{ if .Values.existingCertsSecret }}{{ .Values.existingCertsSecret }}{{ else }}{{ include "owsub.fullname" . }}-certs{{ end }}
- name: persist
mountPath: /owsub-data/persist
volumeDefinition: |
persistentVolumeClaim:
claimName: {{ template "owsub.fullname" . }}-pvc
- name: restapi-certs
mountPath: /owsub-data/certs/restapi-certs
volumeDefinition: |
secret:
secretName: {{ include "owsub.fullname" . }}-owsub-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owsub.fullname" . }}-owsub-restapi-tls
owgwui:
public_env_variables:
REACT_APP_UCENTRALSEC_URL: https://localhost:16001
owprovui:
public_env_variables:
REACT_APP_UCENTRALSEC_URL: https://localhost:16001
kafka:
volumePermissions:
enabled: true
commonAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
#resources:
# requests:
# cpu: 100m
# memory: 512Mi
# limits:
# cpu: 500m
# memory: 1Gi
readinessProbe:
initialDelaySeconds: 45
livenessProbe:
initialDelaySeconds: 60
kraft:
enabled: true
heapOpts: -Xmx1024m -Xms1024m
zookeeper:
enabled: false
controller:
replicaCount: 1
extraConfig: |-
maxMessageBytes = 1048588
offsets.topic.replication.factor = 1
transaction.state.log.replication.factor = 1
extraEnvVars:
- name: ALLOW_PLAINTEXT_LISTENER
value: "yes"
listeners:
client:
protocol: PLAINTEXT
containerPort: 9092
controller:
protocol: "PLAINTEXT"
broker:
persistence:
size: 20Gi
replicaCount: 0
restapiCerts:
enabled: true

View File

@@ -1,132 +0,0 @@
owgw:
services:
owgw:
annotations:
external-dns.alpha.kubernetes.io/hostname: gw-${NAMESPACE}.${DOMAIN}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}
configProperties:
openwifi.fileuploader.host.0.name: gw-${NAMESPACE}.${DOMAIN}
rtty.server: gw-${NAMESPACE}.${DOMAIN}
openwifi.system.uri.public: https://gw-${NAMESPACE}.${DOMAIN}:16002
openwifi.system.uri.private: $INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owgw-owgw:17002
openwifi.system.uri.ui: https://webui-${NAMESPACE}.${DOMAIN}
iptocountry.ipinfo.token: "${IPTOCOUNTRY_IPINFO_TOKEN}"
public_env_variables:
OWSEC: sec-${NAMESPACE}.${DOMAIN}:16001
owsec:
configProperties:
authentication.default.username: "${OWGW_AUTH_USERNAME}"
authentication.default.password: "${OWGW_AUTH_PASSWORD}"
openwifi.system.uri.public: https://sec-${NAMESPACE}.${DOMAIN}:16001
openwifi.system.uri.private: $INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owsec-owsec:17001
openwifi.ystem.uri.ui: https://webui-${NAMESPACE}.${DOMAIN}
mailer.sender: "sec-${NAMESPACE}@${DOMAIN}"
mailer.enabled: $MAILER_ENABLED
mailer.username: "$MAILER_USERNAME"
mailer.password: "$MAILER_PASSWORD"
services:
owsec:
annotations:
external-dns.alpha.kubernetes.io/hostname: sec-${NAMESPACE}.${DOMAIN}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}
owfms:
configProperties:
s3.secret: "${OWFMS_S3_SECRET}"
s3.key: "${OWFMS_S3_KEY}"
openwifi.system.uri.public: https://fms-${NAMESPACE}.${DOMAIN}:16004
openwifi.system.uri.private: $INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owfms-owfms:17004
openwifi.system.uri.ui: https://webui-${NAMESPACE}.${DOMAIN}
services:
owfms:
annotations:
external-dns.alpha.kubernetes.io/hostname: fms-${NAMESPACE}.${DOMAIN}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}
public_env_variables:
OWSEC: sec-${NAMESPACE}.${DOMAIN}:16001
owprov:
services:
owprov:
annotations:
external-dns.alpha.kubernetes.io/hostname: prov-${NAMESPACE}.${DOMAIN}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}
configProperties:
openwifi.system.uri.public: https://prov-${NAMESPACE}.${DOMAIN}:16005
openwifi.system.uri.private: $INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owprov-owprov:17005
openwifi.system.uri.ui: https://provui-${NAMESPACE}.${DOMAIN}
iptocountry.ipinfo.token: "${IPTOCOUNTRY_IPINFO_TOKEN}"
public_env_variables:
OWSEC: sec-${NAMESPACE}.${DOMAIN}:16001
owgwui:
ingresses:
default:
hosts:
- webui-${NAMESPACE}.${DOMAIN}
annotations:
external-dns.alpha.kubernetes.io/hostname: webui-${NAMESPACE}.${DOMAIN}
alb.ingress.kubernetes.io/certificate-arn: ${CERTIFICATE_ARN}
public_env_variables:
REACT_APP_UCENTRALSEC_URL: https://sec-${NAMESPACE}.${DOMAIN}:16001
owprovui:
ingresses:
default:
hosts:
- provui-${NAMESPACE}.${DOMAIN}
annotations:
external-dns.alpha.kubernetes.io/hostname: provui-${NAMESPACE}.${DOMAIN}
alb.ingress.kubernetes.io/certificate-arn: ${CERTIFICATE_ARN}
public_env_variables:
REACT_APP_UCENTRALSEC_URL: https://sec-${NAMESPACE}.${DOMAIN}:16001
owanalytics:
services:
owanalytics:
annotations:
external-dns.alpha.kubernetes.io/hostname: analytics-${NAMESPACE}.${DOMAIN}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}
configProperties:
openwifi.system.uri.public: https://analytics-${NAMESPACE}.${DOMAIN}:16009
openwifi.system.uri.private: $INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owanalytics-owanalytics:17009
openwifi.system.uri.ui: https://webui-${NAMESPACE}.${DOMAIN}
public_env_variables:
OWSEC: sec-${NAMESPACE}.${DOMAIN}:16001
owsub:
services:
owsub:
annotations:
external-dns.alpha.kubernetes.io/hostname: sub-${NAMESPACE}.${DOMAIN}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}
configProperties:
openwifi.system.uri.public: https://sub-${NAMESPACE}.${DOMAIN}:16006
openwifi.system.uri.private: $INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owsub-owsub:17006
openwifi.system.uri.ui: https://webui-${NAMESPACE}.${DOMAIN}
public_env_variables:
OWSEC: sec-${NAMESPACE}.${DOMAIN}:16001
clustersysteminfo:
public_env_variables:
OWSEC: sec-${NAMESPACE}.${DOMAIN}:16001
secret_env_variables:
OWSEC_NEW_PASSWORD: "${OWSEC_NEW_PASSWORD}"
owls:
services:
owls:
annotations:
external-dns.alpha.kubernetes.io/hostname: ls-${NAMESPACE}.${DOMAIN}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}
configProperties:
openwifi.system.uri.public: https://ls-${NAMESPACE}.${DOMAIN}:16007
openwifi.system.uri.private: $INTERNAL_RESTAPI_ENDPOINT_SCHEMA://owls-owls:17007
openwifi.system.uri.ui: https://webui-${NAMESPACE}.${DOMAIN}
owlsui:
ingresses:
default:
hosts:
- lsui-${NAMESPACE}.${DOMAIN}
annotations:
external-dns.alpha.kubernetes.io/hostname: lsui-${NAMESPACE}.${DOMAIN}
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}
public_env_variables:
REACT_APP_UCENTRALSEC_URL: https://sec-${NAMESPACE}.${DOMAIN}:16001
haproxy:
service:
annotations:
external-dns.alpha.kubernetes.io/hostname: "$HAPROXY_SERVICE_DNS_RECORDS"
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: ${CERTIFICATE_ARN}

View File

@@ -1,7 +0,0 @@
owgw:
configProperties:
radius.proxy.enable: "false"
radius.proxy.accounting.port: 1813
radius.proxy.authentication.port: 1812
radius.proxy.coa.port: 3799
radsec.keepalive: 120

View File

@@ -21,74 +21,74 @@ owgw:
cpu: 250m
memory: 1024Mi
owsec:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: owsec-pgsql
storage.type.postgresql.database: owsec
storage.type.postgresql.username: owsec
storage.type.postgresql.password: owsec
#owsec:
# configProperties:
# storage.type: postgresql
# storage.type.postgresql.host: owsec-pgsql
# storage.type.postgresql.database: owsec
# storage.type.postgresql.username: owsec
# storage.type.postgresql.password: owsec
#
# postgresql:
# enabled: true
# nameOverride: owsec-pgsql
# fullnameOverride: owsec-pgsql
# postgresqlDatabase: owsec
# postgresqlUsername: owsec
# postgresqlPassword: owsec
# resources:
# requests:
# cpu: 250m
# memory: 1024Mi
# limits:
# cpu: 250m
# memory: 1024Mi
postgresql:
enabled: true
nameOverride: owsec-pgsql
fullnameOverride: owsec-pgsql
postgresqlDatabase: owsec
postgresqlUsername: owsec
postgresqlPassword: owsec
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi
#owfms:
# configProperties:
# storage.type: postgresql
# storage.type.postgresql.host: owfms-pgsql
# storage.type.postgresql.database: owfms
# storage.type.postgresql.username: owfms
# storage.type.postgresql.password: owfms
#
# postgresql:
# enabled: true
# nameOverride: owfms-pgsql
# fullnameOverride: owfms-pgsql
# postgresqlDatabase: owfms
# postgresqlUsername: owfms
# postgresqlPassword: owfms
# resources:
# requests:
# cpu: 250m
# memory: 1024Mi
# limits:
# cpu: 250m
# memory: 1024Mi
owfms:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: owfms-pgsql
storage.type.postgresql.database: owfms
storage.type.postgresql.username: owfms
storage.type.postgresql.password: owfms
postgresql:
enabled: true
nameOverride: owfms-pgsql
fullnameOverride: owfms-pgsql
postgresqlDatabase: owfms
postgresqlUsername: owfms
postgresqlPassword: owfms
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi
owprov:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: owprov-pgsql
storage.type.postgresql.database: owprov
storage.type.postgresql.username: owprov
storage.type.postgresql.password: owprov
postgresql:
enabled: true
nameOverride: owprov-pgsql
fullnameOverride: owprov-pgsql
postgresqlDatabase: owprov
postgresqlUsername: owprov
postgresqlPassword: owprov
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi
#owprov:
# configProperties:
# storage.type: postgresql
# storage.type.postgresql.host: owprov-pgsql
# storage.type.postgresql.database: owprov
# storage.type.postgresql.username: owprov
# storage.type.postgresql.password: owprov
#
# postgresql:
# enabled: true
# nameOverride: owprov-pgsql
# fullnameOverride: owprov-pgsql
# postgresqlDatabase: owprov
# postgresqlUsername: owprov
# postgresqlPassword: owprov
# resources:
# requests:
# cpu: 250m
# memory: 1024Mi
# limits:
# cpu: 250m
# memory: 1024Mi
owanalytics:
configProperties:
@@ -113,25 +113,25 @@ owanalytics:
cpu: 250m
memory: 1024Mi
owsub:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: owsub-pgsql
storage.type.postgresql.database: owsub
storage.type.postgresql.username: owsub
storage.type.postgresql.password: owsub
postgresql:
enabled: true
nameOverride: owsub-pgsql
fullnameOverride: owsub-pgsql
postgresqlDatabase: owsub
postgresqlUsername: owsub
postgresqlPassword: owsub
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi
#owsub:
# configProperties:
# storage.type: postgresql
# storage.type.postgresql.host: owsub-pgsql
# storage.type.postgresql.database: owsub
# storage.type.postgresql.username: owsub
# storage.type.postgresql.password: owsub
#
# postgresql:
# enabled: true
# nameOverride: owsub-pgsql
# fullnameOverride: owsub-pgsql
# postgresqlDatabase: owsub
# postgresqlUsername: owsub
# postgresqlPassword: owsub
# resources:
# requests:
# cpu: 250m
# memory: 1024Mi
# limits:
# cpu: 250m
# memory: 1024Mi

View File

@@ -1,18 +1,38 @@
# This helm values file is to be used when OWLS is run in the same namespace.
owgw:
services:
owgw:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb-ip"
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16102"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16002,16003,17002"
configProperties:
simulatorid: 53494D020202
storage.type.postgresql.maxsessions: 120
# this actually disables websocket logging:
logging.websocket: true
storage.type: postgresql
storage.type.postgresql.host: owgw-pgsql
storage.type.postgresql.database: owgw
storage.type.postgresql.username: owgw
storage.type.postgresql.password: owgw
resources:
requests:
cpu: 2000m
memory: 3Gi
memory: 3000Mi
limits:
cpu: 2000m
memory: 5Gi
memory: 3000Mi
postgresql:
enabled: true
fullnameOverride: owgw-pgsql
postgresqlDatabase: owgw
postgresqlUsername: owgw
postgresqlPassword: owgw
owls:
enabled: true
@@ -24,6 +44,7 @@ owls:
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16107"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16007,17007"
external-dns.alpha.kubernetes.io/ttl: "60"
@@ -32,10 +53,10 @@ owls:
resources:
requests:
cpu: 6000m
cpu: 3000m
memory: 8000Mi
limits:
cpu: 6000m
cpu: 3000m
memory: 8000Mi
checks:
@@ -92,6 +113,7 @@ owls:
- name: config
mountPath: /owls-data/owls.properties
subPath: owls.properties
# Template below will be rendered in template
volumeDefinition: |
secret:
secretName: {{ include "owls.fullname" . }}-config
@@ -105,6 +127,7 @@ owls:
volumeDefinition: |
secret:
secretName: {{ include "owls.fullname" . }}-certs-cas
# Change this if you want to use another volume type
- name: persist
mountPath: /owls-data/persist
volumeDefinition: |
@@ -117,18 +140,19 @@ owls:
secret:
secretName: {{ include "owls.fullname" . }}-owls-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owls.fullname" . }}-owls-restapi-tls
owlsui:
enabled: true
services:
owlsui:
type: NodePort
ingresses:
default:
enabled: true
@@ -136,6 +160,7 @@ owlsui:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/group.name: wlan-cicd
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_302"}}'
external-dns.alpha.kubernetes.io/ttl: "60"

View File

@@ -1,51 +0,0 @@
# This helm values file is to be used when OWLS is run externally.
owgw:
configProperties:
# done by default for owgw now:
#simulatorid: 53494D020202
# on a host with more CPUs you may need to bump this up from default of 64
storage.type.postgresql.maxsessions: 120
# this actually disables websocket logging:
logging.websocket: true
# consider lowering the # of days to keep archives in the database
#archiver.db.0.name = healthchecks
#archiver.db.0.keep = 1
#archiver.db.1.name = statistics
#archiver.db.1.keep = 1
#archiver.db.2.name = devicelogs
#archiver.db.2.keep = 1
#archiver.db.3.name = commandlist
#archiver.db.3.keep = 1
resources:
requests:
cpu: 2000m
memory: 3Gi
limits:
cpu: 2000m
memory: 5Gi
owprov:
resources:
requests:
cpu: 10m
memory: 200Mi
limits:
cpu: 100m
memory: 4Gi
# Postgres tuning for larger # of APs
#postgresql:
# primary:
# resourcesPreset: large
# persistence:
# size: 120Gi
#kafka:
# controller:
# persistence:
# size: 80Gi
# extraConfig: |-
# # consider tuning this as otherwise kafka storage may be exceeded quickly
# # the default is 1 week!
# logRetentionHours = 24

View File

@@ -7,8 +7,8 @@ owgw:
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16102"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16002,16003,17002,5913"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16002,16003,17002,5912,5913"
owsec:
services:
@@ -19,8 +19,8 @@ owsec:
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16101"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16001,17001"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true
owfms:
services:
@@ -31,8 +31,8 @@ owfms:
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16104"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16004,17004"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true
owprov:
services:
@@ -43,8 +43,8 @@ owprov:
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16105"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16005,17005"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true
owanalytics:
services:
@@ -55,8 +55,8 @@ owanalytics:
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16109"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16009,17009"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true
owsub:
services:
@@ -67,8 +67,8 @@ owsub:
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16106"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16006,17006"
service.beta.kubernetes.io/aws-load-balancer-target-group-attributes: preserve_client_ip.enabled=true
haproxy:
enabled: false

View File

@@ -1,106 +0,0 @@
owgw:
configProperties:
simulatorid: 53494D020202
storage.type: postgresql
storage.type.postgresql.host: pgsql
storage.type.postgresql.database: owgw
storage.type.postgresql.username: owgw
storage.type.postgresql.password: owgw
owsec:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: pgsql
storage.type.postgresql.database: owsec
storage.type.postgresql.username: owsec
storage.type.postgresql.password: owsec
owfms:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: pgsql
storage.type.postgresql.database: owfms
storage.type.postgresql.username: owfms
storage.type.postgresql.password: owfms
owprov:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: pgsql
storage.type.postgresql.database: owprov
storage.type.postgresql.username: owprov
storage.type.postgresql.password: owprov
owanalytics:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: pgsql
storage.type.postgresql.database: owanalytics
storage.type.postgresql.username: owanalytics
storage.type.postgresql.password: owanalytics
owsub:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: pgsql
storage.type.postgresql.database: owsub
storage.type.postgresql.username: owsub
storage.type.postgresql.password: owsub
postgresql:
enabled: true
initDbScriptSecret:
enabled: true
initdbScriptsSecret: tip-openwifi-initdb-scripts
volumePermissions:
enabled: true
global:
postgresql:
auth:
postgresPassword: postgres
auth:
postgresPassword: postgres
primary:
# TODO: tweak this next major release - 8Gi default is a bit too low
#persistence:
# size: 30Gi
# Consider using this resource model for small installations
#resourcesPreset: medium
extendedConfiguration: |-
max_connections = 550
shared_buffers = 128MB
initdb:
scriptsSecret: tip-openwifi-initdb-scripts
# Consider using this disk size for small installations
#persistence:
# size: 30Gi
postgresql-ha:
enabled: false
initDbScriptSecret:
enabled: false
initdbScriptsSecret: tip-openwifi-initdb-scripts
pgpool:
adminPassword: admin
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi
initdbScriptsSecret: tip-openwifi-initdb-scripts
postgresql:
replicaCount: 1
password: postgres
postgresPassword: postgres
repmgrPassword: repmgr
maxConnections: 1000
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi

View File

@@ -112,7 +112,7 @@ owprovui:
owls:
nodeSelector:
env: owls
env: tests
tolerations:
- key: "tests"
operator: "Exists"
@@ -149,6 +149,7 @@ owanalytics:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
postgresql:
primary:
nodeSelector:
@@ -172,6 +173,7 @@ owsub:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
postgresql:
primary:
nodeSelector:
@@ -202,19 +204,3 @@ kafka:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
postgresql-ha:
pgpool:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
postgresql:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"

View File

@@ -15,22 +15,22 @@ owgw:
memory: 100Mi
limits:
cpu: 2000m
memory: 2Gi
memory: 500Mi
# securityContext:
# sysctls:
# - name: net.ipv4.tcp_keepalive_intvl
# value: "5"
# - name: net.ipv4.tcp_keepalive_probes
# value: "2"
# - name: net.ipv4.tcp_keepalive_time
# value: "45"
securityContext:
sysctls:
- name: net.ipv4.tcp_keepalive_intvl
value: "5"
- name: net.ipv4.tcp_keepalive_probes
value: "2"
- name: net.ipv4.tcp_keepalive_time
value: "45"
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
# podSecurityPolicy:
# enabled: true
podSecurityPolicy:
enabled: true
certs:
restapi-ca.pem: |
@@ -56,160 +56,6 @@ owgw:
L+/DtiR5fDVMNdBSGU89UNTi0wHY9+RFuNlIuvZC+x/swF0V9R5mN+ywquTPtDLA
5IOM7ItsRmen6u3qu+JXros54e4juQ==
-----END CERTIFICATE-----
clientcas.pem: |
-----BEGIN CERTIFICATE-----
MIIEnDCCA4SgAwIBAgIUVpyCUx1MUeUwxg+7I1BvGFTz7HkwDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjUxMjZaFw0yNjA0MTMyMjM4NDZaMGwx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEpMCcGA1UEAxMgVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IElzc3VpbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtKBrq
qd2aKVSk25KfL5xHu8X7/8rJrz3IvyPuVKWhk/N1zabot3suBcGaYNKjnRHxg78R
yKwKzajKYWtiQFqztu24g16LQeAnoUxZnF6a0z3JkkRPsz14A2y8TUhdEe1tx+UU
4VGsk3n+FMmOQHL+79FO57zQC1LwylgfLSltrI6mF3jowVUQvnwzKhUzT87AJ6EO
ndK/q0T/Bgi+aI39zfVOjJjsTJwghvrmYW3iarP1THSKxeib2s02bZKrvvHa5HL4
UI8+LvREpVZl4mzt1z6Nl344Y6f+UeJlYa/Ci0jJqaXJmyVnUbAz+c0i5JfwAVn3
YQzfC4eLnZCmdF8zAgMBAAGjggE3MIIBMzAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBSzG1S44EerPfM4gOQ85f0AYW3R6DAfBgNVHSMEGDAWgBQCRpZgebFT9qny
98WfIUDk6ZEB+jAOBgNVHQ8BAf8EBAMCAYYwgYMGCCsGAQUFBwEBBHcwdTAoBggr
BgEFBQcwAYYcaHR0cDovL29jc3Aub25lLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcw
AoY9aHR0cDovL2NhY2VydHMub25lLmRpZ2ljZXJ0LmNvbS9UZWxlY29tSW5mcmFQ
cm9qZWN0Um9vdENBLmNydDBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLm9u
ZS5kaWdpY2VydC5jb20vVGVsZWNvbUluZnJhUHJvamVjdFJvb3RDQS5jcmwwDQYJ
KoZIhvcNAQELBQADggEBAFbz+K94bHIkBMJqps0dApniUmOn0pO6Q6cGh47UP/kX
IiPIsnYgG+hqYD/qtsiqJhaWi0hixRWn38UmvZxMRk27aSTGE/TWx0JTC3qDGsSe
XkUagumbSfmS0ZyiTwMPeGAjXwyzGorqZWeA95eKfImntMiOf3E7//GK0K7HpCx8
IPCnLZsZD2q/mLyBsduImFIRQJbLAhwIxpcd1qYJk+BlGFL+HtBpEbq6JxW2Xy+v
DpNWc2WIsUTle0rTc9JNJrLX4ChUJmKqf8obKHap3Xh3//qw/jDB9pOAinA33FLJ
EmCnwBvQr9mfNmPBGMYZVU8cPruDQJ57GjmmvdisbJY=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDojCCAoqgAwIBAgIUPVYBpqNbcLYygF6Mx+qxSWwQyFowDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjQyNDRaFw0zMTA0MTMyMjM4NDZaMGkx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEmMCQGA1UEAxMdVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIGCibwf5u
AAwZ+1H8U0e3u2V+0d2gSctucoK86XwUmfe1V2a/qlCYZd29r80IuN1IIeB0naIm
KnK/MzXW87clF6tFd1+HzEvmlY/W4KyIXalVCTEzirFSvBEG2oZpM0yC3AefytAO
aOpA00LaM3xTfTqMKIRhJBuLy0I4ANUVG6ixVebbGuc78IodleqiLoWy2Q9QHyEO
t/7hZndJhiVogh0PveRhho45EbsACu7ymDY+JhlIleevqwlE3iQoq0YcmYADHno6
Eq8vcwLpZFxihupUafkd1T3WJYQAJf9coCjBu2qIhNgrcrGD8R9fGswwNRzMRMpX
720+GjcDW3bJAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFAJG
lmB5sVP2qfL3xZ8hQOTpkQH6MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
AAOCAQEAVjl9dm4epG9NUYnagT9sg7scVQEPfz3Lt6w1NXJXgD8mAUlK0jXmEyvM
dCPD4514n+8+lM7US8fh+nxc7jO//LwK17Wm9FblgjNFR7+anv0Q99T9fP19DLlF
PSNHL2emogy1bl1lLTAoj8nxg2wVKPDSHBGviQ5LR9fsWUIJDv9Bs5k0qWugWYSj
19S6qnHeskRDB8MqRLhKMG82oDVLerSnhD0P6HjySBHgTTU7/tYS/OZr1jI6MPbG
L+/DtiR5fDVMNdBSGU89UNTi0wHY9+RFuNlIuvZC+x/swF0V9R5mN+ywquTPtDLA
5IOM7ItsRmen6u3qu+JXros54e4juQ==
-----END CERTIFICATE-----
issuer.pem: |
-----BEGIN CERTIFICATE-----
MIIEnDCCA4SgAwIBAgIUVpyCUx1MUeUwxg+7I1BvGFTz7HkwDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjUxMjZaFw0yNjA0MTMyMjM4NDZaMGwx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEpMCcGA1UEAxMgVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IElzc3VpbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtKBrq
qd2aKVSk25KfL5xHu8X7/8rJrz3IvyPuVKWhk/N1zabot3suBcGaYNKjnRHxg78R
yKwKzajKYWtiQFqztu24g16LQeAnoUxZnF6a0z3JkkRPsz14A2y8TUhdEe1tx+UU
4VGsk3n+FMmOQHL+79FO57zQC1LwylgfLSltrI6mF3jowVUQvnwzKhUzT87AJ6EO
ndK/q0T/Bgi+aI39zfVOjJjsTJwghvrmYW3iarP1THSKxeib2s02bZKrvvHa5HL4
UI8+LvREpVZl4mzt1z6Nl344Y6f+UeJlYa/Ci0jJqaXJmyVnUbAz+c0i5JfwAVn3
YQzfC4eLnZCmdF8zAgMBAAGjggE3MIIBMzAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBSzG1S44EerPfM4gOQ85f0AYW3R6DAfBgNVHSMEGDAWgBQCRpZgebFT9qny
98WfIUDk6ZEB+jAOBgNVHQ8BAf8EBAMCAYYwgYMGCCsGAQUFBwEBBHcwdTAoBggr
BgEFBQcwAYYcaHR0cDovL29jc3Aub25lLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcw
AoY9aHR0cDovL2NhY2VydHMub25lLmRpZ2ljZXJ0LmNvbS9UZWxlY29tSW5mcmFQ
cm9qZWN0Um9vdENBLmNydDBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLm9u
ZS5kaWdpY2VydC5jb20vVGVsZWNvbUluZnJhUHJvamVjdFJvb3RDQS5jcmwwDQYJ
KoZIhvcNAQELBQADggEBAFbz+K94bHIkBMJqps0dApniUmOn0pO6Q6cGh47UP/kX
IiPIsnYgG+hqYD/qtsiqJhaWi0hixRWn38UmvZxMRk27aSTGE/TWx0JTC3qDGsSe
XkUagumbSfmS0ZyiTwMPeGAjXwyzGorqZWeA95eKfImntMiOf3E7//GK0K7HpCx8
IPCnLZsZD2q/mLyBsduImFIRQJbLAhwIxpcd1qYJk+BlGFL+HtBpEbq6JxW2Xy+v
DpNWc2WIsUTle0rTc9JNJrLX4ChUJmKqf8obKHap3Xh3//qw/jDB9pOAinA33FLJ
EmCnwBvQr9mfNmPBGMYZVU8cPruDQJ57GjmmvdisbJY=
-----END CERTIFICATE-----
root.pem: |
-----BEGIN CERTIFICATE-----
MIIDojCCAoqgAwIBAgIUPVYBpqNbcLYygF6Mx+qxSWwQyFowDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjQyNDRaFw0zMTA0MTMyMjM4NDZaMGkx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEmMCQGA1UEAxMdVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIGCibwf5u
AAwZ+1H8U0e3u2V+0d2gSctucoK86XwUmfe1V2a/qlCYZd29r80IuN1IIeB0naIm
KnK/MzXW87clF6tFd1+HzEvmlY/W4KyIXalVCTEzirFSvBEG2oZpM0yC3AefytAO
aOpA00LaM3xTfTqMKIRhJBuLy0I4ANUVG6ixVebbGuc78IodleqiLoWy2Q9QHyEO
t/7hZndJhiVogh0PveRhho45EbsACu7ymDY+JhlIleevqwlE3iQoq0YcmYADHno6
Eq8vcwLpZFxihupUafkd1T3WJYQAJf9coCjBu2qIhNgrcrGD8R9fGswwNRzMRMpX
720+GjcDW3bJAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFAJG
lmB5sVP2qfL3xZ8hQOTpkQH6MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
AAOCAQEAVjl9dm4epG9NUYnagT9sg7scVQEPfz3Lt6w1NXJXgD8mAUlK0jXmEyvM
dCPD4514n+8+lM7US8fh+nxc7jO//LwK17Wm9FblgjNFR7+anv0Q99T9fP19DLlF
PSNHL2emogy1bl1lLTAoj8nxg2wVKPDSHBGviQ5LR9fsWUIJDv9Bs5k0qWugWYSj
19S6qnHeskRDB8MqRLhKMG82oDVLerSnhD0P6HjySBHgTTU7/tYS/OZr1jI6MPbG
L+/DtiR5fDVMNdBSGU89UNTi0wHY9+RFuNlIuvZC+x/swF0V9R5mN+ywquTPtDLA
5IOM7ItsRmen6u3qu+JXros54e4juQ==
-----END CERTIFICATE-----
certsCAs:
issuer.pem: |
-----BEGIN CERTIFICATE-----
MIIEnDCCA4SgAwIBAgIUVpyCUx1MUeUwxg+7I1BvGFTz7HkwDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjUxMjZaFw0yNjA0MTMyMjM4NDZaMGwx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEpMCcGA1UEAxMgVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IElzc3VpbmcgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDtKBrq
qd2aKVSk25KfL5xHu8X7/8rJrz3IvyPuVKWhk/N1zabot3suBcGaYNKjnRHxg78R
yKwKzajKYWtiQFqztu24g16LQeAnoUxZnF6a0z3JkkRPsz14A2y8TUhdEe1tx+UU
4VGsk3n+FMmOQHL+79FO57zQC1LwylgfLSltrI6mF3jowVUQvnwzKhUzT87AJ6EO
ndK/q0T/Bgi+aI39zfVOjJjsTJwghvrmYW3iarP1THSKxeib2s02bZKrvvHa5HL4
UI8+LvREpVZl4mzt1z6Nl344Y6f+UeJlYa/Ci0jJqaXJmyVnUbAz+c0i5JfwAVn3
YQzfC4eLnZCmdF8zAgMBAAGjggE3MIIBMzAPBgNVHRMBAf8EBTADAQH/MB0GA1Ud
DgQWBBSzG1S44EerPfM4gOQ85f0AYW3R6DAfBgNVHSMEGDAWgBQCRpZgebFT9qny
98WfIUDk6ZEB+jAOBgNVHQ8BAf8EBAMCAYYwgYMGCCsGAQUFBwEBBHcwdTAoBggr
BgEFBQcwAYYcaHR0cDovL29jc3Aub25lLmRpZ2ljZXJ0LmNvbTBJBggrBgEFBQcw
AoY9aHR0cDovL2NhY2VydHMub25lLmRpZ2ljZXJ0LmNvbS9UZWxlY29tSW5mcmFQ
cm9qZWN0Um9vdENBLmNydDBKBgNVHR8EQzBBMD+gPaA7hjlodHRwOi8vY3JsLm9u
ZS5kaWdpY2VydC5jb20vVGVsZWNvbUluZnJhUHJvamVjdFJvb3RDQS5jcmwwDQYJ
KoZIhvcNAQELBQADggEBAFbz+K94bHIkBMJqps0dApniUmOn0pO6Q6cGh47UP/kX
IiPIsnYgG+hqYD/qtsiqJhaWi0hixRWn38UmvZxMRk27aSTGE/TWx0JTC3qDGsSe
XkUagumbSfmS0ZyiTwMPeGAjXwyzGorqZWeA95eKfImntMiOf3E7//GK0K7HpCx8
IPCnLZsZD2q/mLyBsduImFIRQJbLAhwIxpcd1qYJk+BlGFL+HtBpEbq6JxW2Xy+v
DpNWc2WIsUTle0rTc9JNJrLX4ChUJmKqf8obKHap3Xh3//qw/jDB9pOAinA33FLJ
EmCnwBvQr9mfNmPBGMYZVU8cPruDQJ57GjmmvdisbJY=
-----END CERTIFICATE-----
root.pem: |
-----BEGIN CERTIFICATE-----
MIIDojCCAoqgAwIBAgIUPVYBpqNbcLYygF6Mx+qxSWwQyFowDQYJKoZIhvcNAQEL
BQAwaTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG1RlbGVjb20gSW5mcmEgUHJvamVj
dCwgSW5jLjEMMAoGA1UECxMDVElQMSYwJAYDVQQDEx1UZWxlY29tIEluZnJhIFBy
b2plY3QgUm9vdCBDQTAeFw0yMTA0MTMyMjQyNDRaFw0zMTA0MTMyMjM4NDZaMGkx
CzAJBgNVBAYTAlVTMSQwIgYDVQQKExtUZWxlY29tIEluZnJhIFByb2plY3QsIElu
Yy4xDDAKBgNVBAsTA1RJUDEmMCQGA1UEAxMdVGVsZWNvbSBJbmZyYSBQcm9qZWN0
IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIGCibwf5u
AAwZ+1H8U0e3u2V+0d2gSctucoK86XwUmfe1V2a/qlCYZd29r80IuN1IIeB0naIm
KnK/MzXW87clF6tFd1+HzEvmlY/W4KyIXalVCTEzirFSvBEG2oZpM0yC3AefytAO
aOpA00LaM3xTfTqMKIRhJBuLy0I4ANUVG6ixVebbGuc78IodleqiLoWy2Q9QHyEO
t/7hZndJhiVogh0PveRhho45EbsACu7ymDY+JhlIleevqwlE3iQoq0YcmYADHno6
Eq8vcwLpZFxihupUafkd1T3WJYQAJf9coCjBu2qIhNgrcrGD8R9fGswwNRzMRMpX
720+GjcDW3bJAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFAJG
lmB5sVP2qfL3xZ8hQOTpkQH6MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF
AAOCAQEAVjl9dm4epG9NUYnagT9sg7scVQEPfz3Lt6w1NXJXgD8mAUlK0jXmEyvM
dCPD4514n+8+lM7US8fh+nxc7jO//LwK17Wm9FblgjNFR7+anv0Q99T9fP19DLlF
PSNHL2emogy1bl1lLTAoj8nxg2wVKPDSHBGviQ5LR9fsWUIJDv9Bs5k0qWugWYSj
19S6qnHeskRDB8MqRLhKMG82oDVLerSnhD0P6HjySBHgTTU7/tYS/OZr1jI6MPbG
L+/DtiR5fDVMNdBSGU89UNTi0wHY9+RFuNlIuvZC+x/swF0V9R5mN+ywquTPtDLA
5IOM7ItsRmen6u3qu+JXros54e4juQ==
-----END CERTIFICATE-----
public_env_variables:
SELFSIGNED_CERTS: "true"
@@ -253,7 +99,7 @@ owgw:
secret:
secretName: {{ include "owgw.fullname" . }}-owgw-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
@@ -314,7 +160,6 @@ owsec:
openwifi.restapi.host.0.cert: $OWSEC_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWSEC_ROOT/certs/restapi-certs/tls.key
mailer.hostname: email-smtp.us-east-2.amazonaws.com
openwifi.certificates.allowmismatch: "false"
volumes:
owsec:
@@ -342,7 +187,7 @@ owsec:
secret:
secretName: {{ include "owsec.fullname" . }}-owsec-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
@@ -357,9 +202,10 @@ owgwui:
default:
enabled: true
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/group.name: wlan-cicd
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-south-1:289708231103:certificate/2cc8c764-11fd-411d-bf7d-a93f488f3f6c
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_302"}}'
paths:
@@ -424,8 +270,6 @@ owfms:
public_env_variables:
SELFSIGNED_CERTS: "true"
# This has no effect as template based config is not enabled (see configProperties)
FIRMWAREDB_MAXAGE: "360"
configProperties:
openwifi.internal.restapi.host.0.rootca: $OWFMS_ROOT/certs/restapi-certs/ca.crt
@@ -434,7 +278,6 @@ owfms:
openwifi.restapi.host.0.rootca: $OWFMS_ROOT/certs/restapi-certs/ca.crt
openwifi.restapi.host.0.cert: $OWFMS_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWFMS_ROOT/certs/restapi-certs/tls.key
firmwaredb.maxage: 360
volumes:
owfms:
@@ -462,7 +305,7 @@ owfms:
secret:
secretName: {{ include "owfms.fullname" . }}-owfms-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
@@ -548,7 +391,7 @@ owprov:
secret:
secretName: {{ include "owprov.fullname" . }}-owprov-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
@@ -563,9 +406,10 @@ owprovui:
default:
enabled: true
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/group.name: wlan-cicd
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:ap-south-1:289708231103:certificate/2cc8c764-11fd-411d-bf7d-a93f488f3f6c
alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_302"}}'
paths:
@@ -656,7 +500,7 @@ owanalytics:
secret:
secretName: {{ include "owanalytics.fullname" . }}-owanalytics-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
@@ -736,61 +580,39 @@ owsub:
secret:
secretName: {{ include "owsub.fullname" . }}-owsub-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.crt
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owsub.fullname" . }}-owsub-restapi-tls
kafka:
volumePermissions:
enabled: true
commonAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
heapOpts: -Xmx512m -Xms512m
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
cpu: 500m
memory: 1Gi
readinessProbe:
initialDelaySeconds: 45
livenessProbe:
initialDelaySeconds: 60
heapOpts: -Xmx1024m -Xms1024m
kraft:
enabled: true
zookeeper:
enabled: false
controller:
replicaCount: 1
persistence:
size: 20Gi
extraConfig: |-
maxMessageBytes = 1048588
offsets.topic.replication.factor = 1
transaction.state.log.replication.factor = 1
extraEnvVars:
- name: ALLOW_PLAINTEXT_LISTENER
value: "yes"
commonAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
heapSize: 256
resources:
requests:
cpu: 500m
memory: 512Mi
cpu: 100m
memory: 256Mi
limits:
cpu: 750m
memory: 2Gi
listeners:
client:
protocol: PLAINTEXT
containerPort: 9092
controller:
protocol: "PLAINTEXT"
broker:
persistence:
size: 20Gi
replicaCount: 0
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 750m
memory: 2Gi
cpu: 200m
memory: 384Mi
clustersysteminfo:
enabled: true
@@ -799,17 +621,18 @@ clustersysteminfo:
haproxy:
resources:
requests:
cpu: 50m
memory: 50Mi
cpu: 10m
memory: 20Mi
limits:
cpu: 50m
memory: 50Mi
cpu: 10m
memory: 20Mi
service:
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "8080"
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16004,17004,16002,16003,17002,16005,17005,5913,16001,17001,16009,16006,17006"
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16004,17004,16002,16003,17002,16005,17005,16001,17001,5912,5913,16009,16007,16006,17006"
service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
restapiCerts:

View File

@@ -1,21 +0,0 @@
{{- define "openwifi.user_creation_script" -}}
{{- $root := . -}}
{{- $postgresqlBase := index .Values "postgresql-ha" }}
{{- $postgresqlEmulatedRoot := (dict "Values" $postgresqlBase "Chart" (dict "Name" "postgresql-ha") "Release" $.Release) }}
#!/bin/bash
export PGPASSWORD=$PGPOOL_POSTGRES_PASSWORD
until psql -h {{ include "postgresql-ha.postgresql" $postgresqlEmulatedRoot }} postgres postgres -c '\q'; do
>&2 echo "Postgres is unavailable - sleeping"
sleep 1
done
{{ range index .Values "postgresql-ha" "initDbScriptSecret" "services" }}
echo "{{ . }}"
echo "SELECT 'CREATE USER {{ index $root "Values" . "configProperties" "storage.type.postgresql.username" }}' WHERE NOT EXISTS (SELECT FROM pg_user WHERE usename = '{{ index $root "Values" . "configProperties" "storage.type.postgresql.username" }}')\gexec" | psql -h {{ include "postgresql-ha.postgresql" $postgresqlEmulatedRoot }} postgres postgres
echo "ALTER USER {{ index $root "Values" . "configProperties" "storage.type.postgresql.username" }} WITH ENCRYPTED PASSWORD '{{ index $root "Values" . "configProperties" "storage.type.postgresql.password" }}'" | psql -h {{ include "postgresql-ha.postgresql" $postgresqlEmulatedRoot }} postgres postgres
echo "SELECT 'CREATE DATABASE {{ index $root "Values" . "configProperties" "storage.type.postgresql.database" }}' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '{{ index $root "Values" . "configProperties" "storage.type.postgresql.database" }}')\gexec" | psql -h {{ include "postgresql-ha.postgresql" $postgresqlEmulatedRoot }} postgres postgres
echo "GRANT ALL PRIVILEGES ON DATABASE {{ index $root "Values" . "configProperties" "storage.type.postgresql.database" }} TO {{ index $root "Values" . "configProperties" "storage.type.postgresql.username" }}" | psql -h {{ include "postgresql-ha.postgresql" $postgresqlEmulatedRoot }} postgres postgres
{{ end }}
{{- end -}}

View File

@@ -1,13 +0,0 @@
{{- define "openwifi.user_creation_script_sql" -}}
{{- $root := . -}}
{{- $postgresqlBase := index .Values "postgresql" }}
{{- $postgresqlEmulatedRoot := (dict "Values" $postgresqlBase "Chart" (dict "Name" "postgresql") "Release" $.Release) }}
{{ range index .Values "postgresql" "initDbScriptSecret" "services" }}
CREATE USER {{ index $root "Values" . "configProperties" "storage.type.postgresql.username" }};
ALTER USER {{ index $root "Values" . "configProperties" "storage.type.postgresql.username" }} WITH ENCRYPTED PASSWORD '{{ index $root "Values" . "configProperties" "storage.type.postgresql.password" }}';
CREATE DATABASE {{ index $root "Values" . "configProperties" "storage.type.postgresql.database" }};
GRANT ALL PRIVILEGES ON DATABASE {{ index $root "Values" . "configProperties" "storage.type.postgresql.database" }} TO {{ index $root "Values" . "configProperties" "storage.type.postgresql.username" }};
ALTER DATABASE {{ index $root "Values" . "configProperties" "storage.type.postgresql.database" }} OWNER TO {{ index $root "Values" . "configProperties" "storage.type.postgresql.username" }};
{{ end }}
{{- end -}}

View File

@@ -1,31 +0,0 @@
{{- $root := . -}}
{{- if index .Values "postgresql-ha" "initDbScriptSecret" "enabled" }}
---
apiVersion: v1
metadata:
labels:
app.kubernetes.io/name: {{ include "openwifi.name" . }}
helm.sh/chart: {{ include "openwifi.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
name: {{ include "openwifi.fullname" . }}-initdb-scripts
kind: Secret
type: Opaque
data:
users_creation.sh: {{ include "openwifi.user_creation_script" . | b64enc | quote }}
{{- end }}
{{- if index .Values "postgresql" "initDbScriptSecret" "enabled" }}
---
apiVersion: v1
metadata:
labels:
app.kubernetes.io/name: {{ include "openwifi.name" . }}
helm.sh/chart: {{ include "openwifi.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
name: {{ include "openwifi.fullname" . }}-initdb-scripts
kind: Secret
type: Opaque
data:
initdb.sql: {{ include "openwifi.user_creation_script_sql" . | b64enc | quote }}
{{- end }}

View File

@@ -1,6 +1,7 @@
# OpenWIFI Gateway (https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/)
owgw:
fullnameOverride: owgw
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
@@ -8,6 +9,7 @@ owgw:
# OpenWIFI Security (https://github.com/Telecominfraproject/wlan-cloud-ucentralsec)
owsec:
fullnameOverride: owsec
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
@@ -15,6 +17,7 @@ owsec:
# OpenWIFI Firmware (https://github.com/Telecominfraproject/wlan-cloud-ucentralfms)
owfms:
fullnameOverride: owfms
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
@@ -22,13 +25,15 @@ owfms:
# OpenWIFI Provisioning (https://github.com/Telecominfraproject/wlan-cloud-owprov/)
owprov:
fullnameOverride: owprov
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
#
# OpenWIFI Analytics (https://github.com/Telecominfraproject/wlan-cloud-analytics)
owanalytics:
fullnameOverride: owanalytics
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
@@ -44,6 +49,7 @@ owprovui:
# OpenWIFI Subscription (https://github.com/Telecominfraproject/wlan-cloud-userportal/)
owsub:
fullnameOverride: owsub
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
@@ -51,16 +57,28 @@ owsub:
# kafka (https://github.com/bitnami/charts/blob/master/bitnami/kafka/)
kafka:
enabled: true
fullnameOverride: kafka
image:
registry: docker.io
repository: bitnami/kafka
tag: 2.8.0-debian-10-r43
minBrokerId: 100
zookeeper:
fullnameOverride: zookeeper
# clustersysteminfo check
clustersysteminfo:
enabled: false
delay: 0 # number of seconds to delay clustersysteminfo execution
images:
clustersysteminfo:
repository: tip-tip-wlan-cloud-ucentral.jfrog.io/clustersysteminfo
tag: v3.2.1
tag: v2.6.2
pullPolicy: Always
# regcred:
# registry: tip-tip-wlan-cloud-ucentral.jfrog.io
@@ -78,17 +96,23 @@ clustersysteminfo:
# limits:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}
public_env_variables:
FLAGS: "-s --connect-timeout 3"
OWSEC: owsec-owsec:16001
CHECK_RETRIES: 30
secret_env_variables:
OWSEC_DEFAULT_USERNAME: tip@ucentral.com
OWSEC_DEFAULT_PASSWORD: openwifi
#OWSEC_NEW_PASSWORD: "" # Set this value in order for the check to work. Password must comply https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/#authenticationvalidationexpression
activeDeadlineSeconds: 2400
backoffLimit: 5
restartPolicy: OnFailure
@@ -96,7 +120,9 @@ clustersysteminfo:
# OpenWIFI Load Simulator (https://github.com/Telecominfraproject/wlan-cloud-owls)
owls:
enabled: false
fullnameOverride: owls
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
@@ -104,13 +130,17 @@ owls:
# OpenWIFI Load Simulator UI (https://github.com/Telecominfraproject/wlan-cloud-owls-ui)
owlsui:
enabled: false
fullnameOverride: owlsui
# HAproxy (https://github.com/bitnami/charts/tree/master/bitnami/haproxy)
haproxy:
enabled: true
fullnameOverride: proxy
replicaCount: 1
replicaCount: 3
service:
type: LoadBalancer
ports:
@@ -391,6 +421,7 @@ haproxy:
# Cert-manager RESTAPI certs
restapiCerts:
enabled: false
services:
- owgw-owgw
- owsec-owsec
@@ -399,32 +430,5 @@ restapiCerts:
- owls-owls
- owanalytics-owanalytics
- owsub-owsub
clusterDomain: cluster.local
postgresql:
enabled: false
nameOverride: pgsql
fullnameOverride: pgsql
initDbScriptSecret:
enabled: false
services:
- owgw
- owsec
- owfms
- owprov
- owanalytics
- owsub
postgresql-ha:
enabled: false
nameOverride: pgsql
fullnameOverride: pgsql
initDbScriptSecret:
enabled: false
services:
- owgw
- owsec
- owfms
- owprov
- owanalytics
- owsub

View File

@@ -1,18 +1,15 @@
COMPOSE_PROJECT_NAME=openwifi
# set either default, selfsigned or letsencrypt
DEPLOY_TYPE=default
# Image tags
OWGW_TAG=v3.2.1
OWGWUI_TAG=v3.2.1
OWSEC_TAG=v3.2.0
OWFMS_TAG=v3.2.0
OWPROV_TAG=v3.2.1
OWPROVUI_TAG=v3.2.0
OWANALYTICS_TAG=v3.2.0
OWSUB_TAG=v3.2.0
KAFKA_TAG=3.7-debian-12
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.6.2
OWGWUI_TAG=v2.6.0
OWSEC_TAG=v2.6.0
OWFMS_TAG=v2.6.0
OWPROV_TAG=v2.6.0
OWPROVUI_TAG=v2.6.0
OWANALYTICS_TAG=v2.6.0
OWSUB_TAG=v2.6.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=3.8
POSTGRESQL_TAG=15.0
# Microservice root/config directories

View File

@@ -1,19 +1,17 @@
COMPOSE_PROJECT_NAME=openwifi
# Image tags
OWGW_TAG=v3.2.1
OWGWUI_TAG=v3.2.1
OWSEC_TAG=v3.2.0
OWFMS_TAG=v3.2.0
OWPROV_TAG=v3.2.1
OWPROVUI_TAG=v3.2.0
OWANALYTICS_TAG=v3.2.0
OWSUB_TAG=v3.2.0
KAFKA_TAG=3.7-debian-12
POSTGRESQL_TAG=15.0
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.6.2
OWGWUI_TAG=v2.6.0
OWSEC_TAG=v2.6.0
OWFMS_TAG=v2.6.0
OWPROV_TAG=v2.6.0
OWPROVUI_TAG=v2.6.0
OWANALYTICS_TAG=v2.6.0
OWSUB_TAG=v2.6.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=3.8
ACMESH_TAG=latest
TRAEFIK_TAG=v3.1.0
TRAEFIK_TAG=latest
# Microservice root/config directories
OWGW_ROOT=/owgw-data
@@ -40,4 +38,3 @@ INTERNAL_OWANALYTICS_HOSTNAME=owanalytics.wlan.local
INTERNAL_RTTYS_HOSTNAME=rttys.wlan.local
INTERNAL_OWSUB_HOSTNAME=owsub.wlan.local
SDKHOSTNAME=
#SDKHOSTNAME=openwifi.example.com

View File

@@ -1,17 +1,15 @@
COMPOSE_PROJECT_NAME=openwifi
# Image tags
OWGW_TAG=v3.2.1
OWGWUI_TAG=v3.2.1
OWSEC_TAG=v3.2.0
OWFMS_TAG=v3.2.0
OWPROV_TAG=v3.2.1
OWPROVUI_TAG=v3.2.0
OWANALYTICS_TAG=v3.2.0
OWSUB_TAG=v3.2.0
KAFKA_TAG=3.7-debian-12
POSTGRESQL_TAG=15.0
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.6.2
OWGWUI_TAG=v2.6.0
OWSEC_TAG=v2.6.0
OWFMS_TAG=v2.6.0
OWPROV_TAG=v2.6.0
OWPROVUI_TAG=v2.6.0
OWANALYTICS_TAG=v2.6.0
OWSUB_TAG=v2.6.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=3.8
ACMESH_TAG=latest
TRAEFIK_TAG=latest

View File

@@ -1,33 +1,91 @@
# OpenWifi SDK Docker Compose
### Overview
With the provided Docker Compose files you can instantiate a deployment of the OpenWifi microservices and related components. The repository contains a self-signed certificate and a TIP-signed gateway certificate which are valid for the `*.wlan.local` domain. You also have the possibility to either generate and use Let's Encrypt certs or provide your own certificates. Furthermore the deployments are split by whether Traefik is used as a reverse proxy/load balancer in front of the microservices or if they are exposed directly on the host. The advantage of using the deployments with Traefik is that you can use Let's Encrypt certs (automatic certificate generation and renewal) and you have the ability to scale specific containers to multiple replicas.
With the provided Docker Compose files you can instantiate a deployment of the OpenWifi microservices and related components. The repository contains a self-signed certificate and a TIP-signed gateway certificate which are valid for the `*.wlan.local` domain. You also have the possibility to either generate and use Letsencrypt certs or provide your own certificates. Furthermore the deployments are split by whether Traefik is used as a reverse proxy/load balancer in front of the microservices or if they are exposed directly on the host. The advantage of using the deployments with Traefik is that you can use Letsencrypt certs (automatic certificate generation and renewal) and you have the ability to scale specific containers to multiple replicas.
The repository also contains a separate Docker Compose deployment to set up the [OWLS microservice](https://github.com/Telecominfraproject/wlan-cloud-owls) and related components for running a load simulation test against an existing controller.
- [Non-LB deployment with self-signed certificates](#non-lb-deployment-with-self-signed-certificates)
- [Non-LB deployment with own certificates](#non-lb-deployment-with-own-certificates)
- [Non-LB deployment with PostgreSQL](#non-lb-deployment-with-postgresql)
- [LB deployment with self-signed certificates](#lb-deployment-with-self-signed-certificates)
- [LB deployment with Let's Encrypt certificates](#lb-deployment-with-letsencrypt-certificates)
- [LB deployment with Letsencrypt certificates](#lb-deployment-with-letsencrypt-certificates)
- [OWLS deployment with self-signed certificates](owls/README.md)
- [AWS CloudFormation template](cloudformation/openwifi-cloudsdk-docker-compose.yml)
### Configuration
Config files for the microservices are generated on every startup based on the environment variables in the microservice specific env files. For an overview of the supported configuration properties have a look into these files. For an explanation of the configuration properties please see the README in the respective microservice repository.
Be aware that local changes to the config files will be overwritten on every startup if `TEMPLATE_CONFIG` is set to `true` in the microservice env files. If you want to bind mount your own config file or make local changes, please set this variable to `false`.
#### Required password changing on the first startup
One important action that must be done before using the deployment is changing password for the default user in owsec as described in [owsec docs](https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/tree/main#changing-default-password). Please use these docs to find the actions that must be done **after** the deployment in order to start using your deployment.
### Ports
Every OpenWifi service is exposed via a separate port either directly on the host or through Traefik. For an overview of the exposed ports have a look into the deployment specific Docker Compose file. If you use your own certificates, you can also configure different hostnames for the microservices.
Please note that the OWProv-UI is exposed on port `8080(HTTP)/8443(HTTPS)` by default.
### owsec templates and wwwassets
On the startup of owsec directories for wwwassets and mailer templates are created from the base files included in Docker image. After the initial startup you may edit those files as you wish in the [owsec-data/persist](./owsec-data/persist) directory.
## PostgreSQL
PostgreSQL is used by default for the database for all components.
The following variables may be set in the env files. It is highly recommended that you change the DB passwords to some random string. The defaults are shown here.
## Non-LB deployment with self-signed certificates
1. Switch into the project directory with `cd docker-compose/`.
2. Add an entry for `openwifi.wlan.local` in your hosts file which points to `127.0.0.1` or whatever the IP of the host running the deployment is.
3. Spin up the deployment with `docker-compose up -d`.
4. Check if the containers are up and running with `docker-compose ps`.
5. Add SSL certificate exceptions in your browser by visiting https://openwifi.wlan.local:16001, https://openwifi.wlan.local:16002, https://openwifi.wlan.local:16004, https://openwifi.wlan.local:16005, https://openwifi.wlan.local:16006 and https://openwifi.wlan.local:16009.
6. Connect to your AP via SSH and add a static hosts entry in `/etc/hosts` for `openwifi.wlan.local`. This should point to the address of the host the Compose deployment runs on.
7. Login to the UI `https://openwifi.wlan.local` and follow the instructions to change your default password.
8. To use the curl test scripts included in the microservice repositories set the following environment variables:
```
export OWSEC="openwifi.wlan.local:16001"
export FLAGS="-s --cacert <your-wlan-cloud-ucentral-deploy-location>/docker-compose/certs/restapi-ca.pem"
```
⚠️**Note**: When deploying with self-signed certificates you can not use the 'Trace' and 'Connect' features in the UI since the AP will throw a TLS error. Please use the Letsencrypt deployment or provide your own valid certificates if you want to use these features.
## Non-LB deployment with own certificates
1. Switch into the project directory with `cd docker-compose/`. Copy your websocket and REST API certificates into the `certs/` directory. Make sure to reference the certificates accordingly in the service config if you use different file names or if you want to use different certificates for the respective microservices.
2. Adapt the following hostname and URI variables according to your environment:
### .env
| Variable | Description |
| -------------------------- | ------------------------------------------------------------------- |
| `INTERNAL_OWGW_HOSTNAME` | Set this to your OWGW hostname, for example `owgw.example.com`. |
| `INTERNAL_OWSEC_HOSTNAME` | Set this to your OWSec hostname, for example `owsec.example.com`. |
| `INTERNAL_OWFMS_HOSTNAME` | Set this to your OWFms hostname, for example `owfms.example.com`. |
| `INTERNAL_OWPROV_HOSTNAME` | Set this to your OWProv hostname, for example `owprov.example.com`. |
| `INTERNAL_OWANALYTICS_HOSTNAME` | Set this to your OWAnalytics hostname, for example `owanalytics.example.com`. |
| `INTERNAL_OWSUB_HOSTNAME` | Set this to your OWSub hostname, for example `owsub.example.com`. |
### owgw.env
| Variable | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------- |
| `FILEUPLOADER_HOST_NAME` | Set this to your OWGW fileupload hostname, for example `owgw.example.com`. |
| `FILEUPLOADER_URI` | Set this to your OWGW fileupload URL, for example `https://owgw.example.com:16003`. |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWGW REST API URL, for example `https://owgw.example.com:16002`. |
| `RTTY_SERVER` | Set this to your OWGW RTTYS hostname, for example `owgw.example.com`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owgw-ui.env
| Variable | Description |
| ------------------------- | -------------------------------------------------------------------------- |
| `DEFAULT_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
### owsec.env
| Variable | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owfms.env
| Variable | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWFms URL, for example `https://owfms.example.com:16004`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owprov.env
| Variable | Description |
| ---------------------------------------- | ------------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWProv URL, for example `https://owprov.example.com:16005`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owprov-ui.env
| Variable | Description |
| --------------------------- | -------------------------------------------------------------------------- |
| `REACT_APP_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
### owanalytics.env
| Variable | Description |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWAnalytics URL, for example `https://owanalytics.example.com:16009`. |
| `SYSTEM_URI_UI` | Set this to your OWProv-UI URL, for example `https://owprov-ui.example.com`. |
3. Spin up the deployment with `docker-compose up -d`.
4. Check if the containers are up and running with `docker-compose ps`.
5. Login to the UI and and follow the instructions to change your default password.
## Non-LB deployment with PostgreSQL
1. Switch into the project directory with `cd docker-compose/`.
2. Set the following variables in the env files and make sure to uncomment the lines. It is highly recommended that you change the DB passwords to some random string.
### owgw.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
@@ -36,7 +94,6 @@ The following variables may be set in the env files. It is highly recommended th
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owgw` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owgw` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owgw` |
### owsec.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
@@ -45,7 +102,6 @@ The following variables may be set in the env files. It is highly recommended th
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owsec` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owsec` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owsec` |
### owfms.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
@@ -54,7 +110,6 @@ The following variables may be set in the env files. It is highly recommended th
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owfms` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owfms` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owfms` |
### owprov.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
@@ -63,7 +118,6 @@ The following variables may be set in the env files. It is highly recommended th
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owprov` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owprov` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owprov` |
### owanalytics.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
@@ -72,7 +126,6 @@ The following variables may be set in the env files. It is highly recommended th
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owanalytics` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owanalytics` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owanalytics` |
### postgresql.env
| Variable | Value |
| --------------------------| ------------- |
@@ -96,91 +149,13 @@ The following variables may be set in the env files. It is highly recommended th
| `OWSUB_DB` | `owsub` |
| `OWSUB_DB_USER` | `owsub` |
| `OWSUB_DB_PASSWORD` | `owsub` |
## Non-LB deployment with self-signed certificates
1. Switch into the project directory with `cd docker-compose/`.
2. Add an entry for `openwifi.wlan.local` in your hosts file which points to `127.0.0.1` or whatever the IP of the host running the deployment is.
3. Spin up the deployment with `docker-compose up -d`.
4. Check if the containers are up and running with `docker-compose ps`.
5. Add SSL certificate exceptions in your browser by visiting https://openwifi.wlan.local:16001, https://openwifi.wlan.local:16002, https://openwifi.wlan.local:16004, https://openwifi.wlan.local:16005, https://openwifi.wlan.local:16006 and https://openwifi.wlan.local:16009.
6. Connect to your AP via SSH and add a static hosts entry in `/etc/hosts` for `openwifi.wlan.local`. This should point to the address of the host the Compose deployment runs on.
7. Login to the UI `https://openwifi.wlan.local` and follow the instructions to change your default password.
8. To use the curl test scripts included in the microservice repositories set the following environment variables:
```
export OWSEC="openwifi.wlan.local:16001"
export FLAGS="-s --cacert <your-wlan-cloud-ucentral-deploy-location>/docker-compose/certs/restapi-ca.pem"
```
⚠️**Note**: When deploying with self-signed certificates you can not use the 'Trace' and 'Connect' features in the UI since the AP will throw a TLS error. Please use the Let's Encrypt deployment or provide your own valid certificates if you want to use these features.
## Non-LB deployment with own certificates
1. Switch into the project directory with `cd docker-compose/`. Copy your websocket and REST API certificates into the `certs/` directory. Make sure to reference the certificates accordingly in the service config if you use different file names or if you want to use different certificates for the respective microservices.
2. Adapt the following hostname and URI variables according to your environment:
### .env
| Variable | Description |
| ------------------------------- | ---------------------------------------------------------------------------------- |
| `INTERNAL_OWGW_HOSTNAME` | Set this to your OWGW hostname, for example `owgw.example.com`. |
| `INTERNAL_OWSEC_HOSTNAME` | Set this to your OWSec hostname, for example `owsec.example.com`. |
| `INTERNAL_OWFMS_HOSTNAME` | Set this to your OWFms hostname, for example `owfms.example.com`. |
| `INTERNAL_OWPROV_HOSTNAME` | Set this to your OWProv hostname, for example `owprov.example.com`. |
| `INTERNAL_OWANALYTICS_HOSTNAME` | Set this to your OWAnalytics hostname, for example `owanalytics.example.com`. |
| `INTERNAL_OWSUB_HOSTNAME` | Set this to your OWSub hostname, for example `owsub.example.com`. |
### owgw.env
| Variable | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------- |
| `FILEUPLOADER_HOST_NAME` | Set this to your OWGW fileupload hostname, for example `owgw.example.com`. |
| `FILEUPLOADER_URI` | Set this to your OWGW fileupload URL, for example `https://owgw.example.com:16003`. |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWGW REST API URL, for example `https://owgw.example.com:16002`. |
| `RTTY_SERVER` | Set this to your OWGW RTTYS hostname, for example `owgw.example.com`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owgw-ui.env
| Variable | Description |
| --------------------------- | -------------------------------------------------------------------------- |
| `REACT_APP_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
### owsec.env
| Variable | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owfms.env
| Variable | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWFms URL, for example `https://owfms.example.com:16004`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owprov.env
| Variable | Description |
| ---------------------------------------- | ------------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWProv URL, for example `https://owprov.example.com:16005`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owprov-ui.env
| Variable | Description |
| --------------------------- | -------------------------------------------------------------------------- |
| `REACT_APP_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
### owanalytics.env
| Variable | Description |
| ---------------------------------------- | -------------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWAnalytics URL, for example `https://owanalytics.example.com:16009`. |
| `SYSTEM_URI_UI` | Set this to your OWProv-UI URL, for example `https://owprov-ui.example.com`. |
3. Spin up the deployment with `docker-compose up -d`.
4. Check if the containers are up and running with `docker-compose ps`.
5. Login to the UI and and follow the instructions to change your default password.
3. Depending on whether you want to use [self-signed certificates](#non-lb-deployment-with-self-signed-certificates) or [provide your own](#non-lb-deployment-with-own-certificates), follow the instructions of the according deployment model. Spin up the deployment with `docker-compose -f docker-compose.yml -f docker-compose.postgresql.yml up -d`. It is recommended to create an alias for this deployment model with `alias docker-compose-postgresql="docker-compose -f docker-compose.yml -f docker-compose.postgresql.yml"`.
## LB deployment with self-signed certificates
Follow the same instructions as for the self-signed deployment without Traefik. The only difference is that you have to spin up the deployment with `docker-compose -f docker-compose.lb.selfsigned.yml --env-file .env.selfsigned up -d`. Make sure to specify the Compose and the according .env file every time you're working with the deployment or create an alias, for example `alias docker-compose-lb-selfsigned="docker-compose -f docker-compose.lb.selfsigned.yml --env-file .env.selfsigned"`. You also have the possibility to scale specific services to a specified number of instances with `docker-compose-lb-selfsigned up -d --scale SERVICE=NUM`, where `SERVICE` is the service name as defined in the Compose file.
## LB deployment with Let's Encrypt certificates
For the Let's Encrypt challenge to work you need a public IP address. The hostname which you set in the `$SDKHOSTNAME` env variable has to resolve to this IP address to pass the HTTP-01 challenge (https://letsencrypt.org/docs/challenge-types/#http-01-challenge).
## LB deployment with Letsencrypt certificates
For the Letsencrypt challenge to work you need a public IP address. The hostname which you set in the `$SDKHOSTNAME` env variable has to resolve to this IP address to pass the HTTP-01 challenge (https://letsencrypt.org/docs/challenge-types/#http-01-challenge).
1. Switch into the project directory with `cd docker-compose/`.
2. Adapt the following hostname and URI variables according to your environment.
### .env.letsencrypt
| Variable | Description |
| ------------- | ---------------------------------------------------------------------------------------------------------- |
@@ -196,9 +171,9 @@ For the Let's Encrypt challenge to work you need a public IP address. The hostna
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://openwifi.example.com`. |
### owgw-ui.env
| Variable | Description |
| --------------------------- | ----------------------------------------------------------------------------- |
| `REACT_APP_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://openwifi.example.com:16001`. |
| Variable | Description |
| ------------------- | ----------------------------------------------------------------------------- |
| `DEFAULT_OWSEC_URL` | Set this to your OWSec URL, for example `https://openwifi.example.com:16001`. |
### owsec.env
| Variable | Description |
@@ -211,31 +186,25 @@ For the Let's Encrypt challenge to work you need a public IP address. The hostna
| ------------------- | ----------------------------------------------------------------------------- |
| `SYSTEM_URI_PUBLIC` | Set this to your OWFms URL, for example `https://openwifi.example.com:16004`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://openwifi.example.com`. |
### owprov.env
| Variable | Description |
| Variable | Description |
| -------------------- | ------------------------------------------------------------------------------ |
| `SYSTEM_URI_PUBLIC` | Set this to your OWProv URL, for example `https://openwifi.example.com:16005`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://openwifi.example.com`. |
### owprov-ui.env
| Variable | Description |
| --------------------------- | ----------------------------------------------------------------------------- |
| `REACT_APP_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://openwifi.example.com:16001`. |
### owanalytics.env
| Variable | Description |
| -------------------- | ----------------------------------------------------------------------------------- |
| `SYSTEM_URI_PUBLIC` | Set this to your OWAnalytics URL, for example `https://openwifi.example.com:16009`. |
| `SYSTEM_URI_UI` | Set this to your OWProv-UI URL, for example `https://openwifi.example.com`. |
### owsub.env
| Variable | Description |
| -------------------- | ----------------------------------------------------------------------------- |
| `SYSTEM_URI_PUBLIC` | Set this to your OWSub URL, for example `https://openwifi.example.com:16006`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://openwifi.example.com`. |
### traefik.env
| Variable | Description |
| --------------------------------------------------- | ----------------------------------------- |

View File

@@ -1,20 +0,0 @@
# OpenWiFi Cloud SDK deployment with CloudFormation
With the YAML template included in this directory you can create an OpenWiFi Cloud SDK deployment with the help of AWS CloudFormation (https://aws.amazon.com/cloudformation).
The template creates a CloudFormation stack based on the Docker Compose Let's Encrypt deployment (https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/tree/main/docker-compose#lb-deployment-with-letsencrypt-certificates). The created stack consists of an EC2 instance, and depending on the input parameters, also adds a Route53 hosted zone and a DNS record.
⚠️**Note**: Please be aware that you will be billed for the AWS resources if you create a stack from this template.
1. Login into the AWS Management Console (https://aws.amazon.com/de/console).
2. Go to the AWS Systems Manager Parameter Store page and create two parameters according to these instructions https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-create-console.html: one for your Digicert-signed websocket certificate and the other one for the corresponding key. You can leave the default parameter details: you need two standard parameters with type `String` and data type `text`. Just copy and paste your certificate and key into the `Value` field of the respective parameter and remember the parameter names.
3. Go to the CloudFormation service page and follow the instructions described here https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-using-console-create-stack-template.html to upload a template file and choose the template included in this repository.
4. In the next step you have to enter multiple input parameters required for a successful deployment. Here's an explanation of all parameters:
**InstanceType**: Choose an AWS EC2 instance type (https://aws.amazon.com/ec2/instance-types). The smallest instance type you can choose is t2.small.
**KeyName**: Specify the name of the SSH key pair you want to use to connect the instance. If you don't have a key pair yet, please create or import one according to these instructions https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html.
**SSHLocation**: If you want to restrict the IP range which is allowed to connect to the instance via SSH, please specify a valid CIDR IP range here.
**CreateRoute53Record**: To expose your SDK installation to the public you need a valid DNS entry for your SDK hostname. This is also required to pass the Let's Encrypt HTTP-01 challenge (https://letsencrypt.org/de/docs/challenge-types/#http-01-challenge). If you set this to `True`, an Amazon Route53 entry (https://aws.amazon.com/route53) for the hostname defined in the **SDKHostname** parameter is automatically created. This Route53 entry will resolve to the public IP address of the EC2 instance. You can also set this to `False` and create a DNS entry manually afterwards.
**ExistingHostedZoneId**: If you decide to create a Route53 record and already have an existing hosted zone which you want to use, please specify the according hosted zone ID. You can get the ID by listing your public hosted zones (https://docs.aws.amazon.com/Route53/latest/DeveloperGuide/ListInfoOnHostedZone.html).
**HostedZoneName**: If you didn't create the hosted zone yet which you want to use for your Route53 record, please specify the domain name of the hosted zone you want to create. Be aware that if you set **CreateRoute53Record** to `True`, you only have to specify either `ExistingHostedZoneId` or `HostedZoneName`. If you decide to create the DNS record yourself, you can leave both parameters empty.
**SDKVersion**: The SDK version you want to use for your deployment. You can either use release names (e.g. `v2.6.0`) or Git branch names (for example `release/v2.6.0`).
**SDKHostname**: Enter a valid public hostname which you want to use for your deployment. This has to resolve to the public IP address of the created EC2 instance. If you set **CreateRoute53Record** to `False`, don't forget to create a DNS entry manually afterwards.
**WebsocketCertParameter**: The name of the AWS Systems Manager parameter containing your Digicert-signed websocket certificate.
**WebsocketKeyParameter**: The name of the AWS Systems Manager parameter containing the key to your Digicert-signed websocket certificate.
**TraefikAcmeEmail**: Enter a valid email address to complete Let's Encrypt ACME registration.

View File

@@ -1,333 +0,0 @@
AWSTemplateFormatVersion: 2010-09-09
Description: |
OpenWiFi Cloud SDK Docker Compose Deployment: This template creates an
OpenWiFi Cloud SDK deployment using Docker Compose and Letsencrypt for
northbound certificates (https://github.com/Telecominfraproject/
wlan-cloud-ucentral-deploy/tree/main/docker-compose
#lb-deployment-with-letsencrypt-certificates).
**WARNING** You will be billed for the AWS resources used if you create a
stack from this template.
Metadata:
AWS::CloudFormation::Interface:
ParameterGroups:
- Label:
default: "Amazon EC2 configuration"
Parameters:
- InstanceType
- LatestUbuntuFocalAMI
- KeyName
- SSHLocation
- Label:
default: "Amazon Route53 configuration"
Parameters:
- CreateRoute53Record
- ExistingHostedZoneId
- HostedZoneName
- Label:
default: "OpenWiFi cloud SDK configuration"
Parameters:
- SDKVersion
- SDKHostname
- WebsocketCertParameter
- WebsocketKeyParameter
- TraefikAcmeEmail
Parameters:
KeyName:
Description: Name of the EC2 KeyPair to enable SSH access to the instance.
Type: AWS::EC2::KeyPair::KeyName
ConstraintDescription: Must be the name of an existing EC2 KeyPair.
SDKHostname:
Description: Hostname you want to use for your OpenWiFi Cloud SDK installation.
Default: openwifi.wlan.local
Type: String
AllowedPattern: "^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$"
TraefikAcmeEmail:
Description: Email address used for ACME registration
Type: String
CreateRoute53Record:
Description: |
Set this to "True" if you want to create a DNS record for the SDK
hostname.
This will resolve to the public IP of the created EC2 instance.
AllowedValues:
- "True"
- "False"
Default: "False"
Type: String
ExistingHostedZoneId:
Description: |
If you want to create the Route53 record in an existing hosted zone,
please specify the according hosted zone ID.
Type: String
# MinLength: 21
# MaxLength: 21
# AllowedPattern: "[A-Z0-9]+"
HostedZoneName:
Description: |
If you want to create a new hosted zone for the Route53 record, please
specify the name of the domain.
Type: String
# AllowedPattern: "^((?!-)[A-Za-z0-9-]{1,63}(?<!-)\\.)+[A-Za-z]{2,6}$"
SDKVersion:
Description: OpenWiFi Cloud SDK version to be deployed.
Default: main
Type: String
WebsocketCertParameter:
Description: |
The AWS Systems Manager parameter containing your Digicert-signed
websocket certificate.
Type: AWS::SSM::Parameter::Value<String>
WebsocketKeyParameter:
Description: |
The AWS Systems Manager parameter containing the key to your
Digicert-signed websocket certificate.
Type: AWS::SSM::Parameter::Value<String>
LatestUbuntuFocalAMI:
Type: AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>
Default: "/aws/service/canonical/ubuntu/server/focal/stable/current/amd64/hvm/ebs-gp2/ami-id"
InstanceType:
Description: Cloud SDK EC2 instance type
Type: String
Default: t2.small
AllowedValues:
- t2.small
- t2.medium
- t2.large
- m1.small
- m1.medium
- m1.large
- m1.xlarge
- m2.xlarge
- m2.2xlarge
- m2.4xlarge
- m3.medium
- m3.large
- m3.xlarge
- m3.2xlarge
- m4.large
- m4.xlarge
- m4.2xlarge
- m4.4xlarge
- m4.10xlarge
- c1.medium
- c1.xlarge
- c3.large
- c3.xlarge
- c3.2xlarge
- c3.4xlarge
- c3.8xlarge
- c4.large
- c4.xlarge
- c4.2xlarge
- c4.4xlarge
- c4.8xlarge
- g2.2xlarge
- g2.8xlarge
- r3.large
- r3.xlarge
- r3.2xlarge
- r3.4xlarge
- r3.8xlarge
- i2.xlarge
- i2.2xlarge
- i2.4xlarge
- i2.8xlarge
- d2.xlarge
- d2.2xlarge
- d2.4xlarge
- d2.8xlarge
- hi1.4xlarge
- hs1.8xlarge
- cr1.8xlarge
- cc2.8xlarge
- cg1.4xlarge
ConstraintDescription: must be a valid EC2 instance type.
SSHLocation:
Description: |
The IP address range that can be used to SSH to the EC2 instances
Type: String
MinLength: "9"
MaxLength: "18"
Default: 0.0.0.0/0
AllowedPattern: "(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})/(\\d{1,2})"
ConstraintDescription: must be a valid IP CIDR range of the form x.x.x.x/x.
Conditions:
HasExistingHostedZoneId: !Not [ !Equals [ !Ref ExistingHostedZoneId, "" ] ]
HasHostedZoneName: !Not [ !Equals [ !Ref HostedZoneName, "" ] ]
CreateRoute53Record: !Equals [ !Ref CreateRoute53Record, "True" ]
CreateRecordInExistingZone: !And [ Condition: HasExistingHostedZoneId, Condition: CreateRoute53Record ]
CreateRecordInNewZone: !And [ Condition: HasHostedZoneName, Condition: CreateRoute53Record ]
Resources:
CloudSDKInstance:
Type: "AWS::EC2::Instance"
Metadata:
"AWS::CloudFormation::Init":
configSets:
InstallDockerAndCreateDeployment:
- InstallDocker
- CreateCloudSDKDeployment
InstallDocker:
packages:
apt:
ca-certificates: []
curl: []
gnupg: []
lsb-release: []
php-mysql: []
commands:
a_add_repo_gpg_key:
command: |
curl -fsSL https://download.docker.com/linux/ubuntu/gpg \
| sudo gpg --dearmor -o \
/usr/share/keyrings/docker-archive-keyring.gpg
b_add_docker_repo:
command: |
echo "deb [arch=$(dpkg --print-architecture) \
signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] \
https://download.docker.com/linux/ubuntu $(lsb_release -cs) \
stable" | sudo tee /etc/apt/sources.list.d/docker.list \
> /dev/null
c_install_docker:
command: |
sudo apt-get update \
&& sudo apt-get install -y docker-ce docker-ce-cli \
containerd.io docker-compose-plugin docker-compose
d_enable_and_start_docker:
command: |
sudo systemctl enable docker && sudo systemctl start docker
e_add_ubuntu_user_to_docker_group:
command: "sudo usermod -aG docker ubuntu"
CreateCloudSDKDeployment:
files:
/etc/profile.d/aliases.sh:
content: |
alias docker-compose-lb-letsencrypt="docker-compose -f \
docker-compose.lb.letsencrypt.yml --env-file .env.letsencrypt"
alias docker-compose-lb-selfsigned="docker-compose -f \
docker-compose.lb.selfsigned.yml --env-file .env.selfsigned"
mode: "000644"
owner: "root"
group: "root"
commands:
a_clone_deploy_repo:
command: |
git clone https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy
cwd: "~"
b_checkout_deploy_version:
command: !Sub "git checkout ${SDKVersion}"
cwd: "~/wlan-cloud-ucentral-deploy"
c_create_deployment:
command: "./deploy.sh"
env:
DEFAULT_UCENTRALSEC_URL: !Sub "https://${SDKHostname}:16001"
SYSTEM_URI_UI: !Sub "https://${SDKHostname}"
SDKHOSTNAME: !Sub "${SDKHostname}"
WEBSOCKET_CERT: !Ref WebsocketCertParameter
WEBSOCKET_KEY: !Ref WebsocketKeyParameter
OWGW_FILEUPLOADER_HOST_NAME: !Sub "${SDKHostname}"
OWGW_FILEUPLOADER_URI: !Sub "https://${SDKHostname}:16003"
OWGW_SYSTEM_URI_PUBLIC: !Sub "https://${SDKHostname}:16002"
OWGW_RTTY_SERVER: !Sub "${SDKHostname}"
OWSEC_SYSTEM_URI_PUBLIC: !Sub "https://${SDKHostname}:16001"
OWFMS_SYSTEM_URI_PUBLIC: !Sub "https://${SDKHostname}:16004"
OWPROV_SYSTEM_URI_PUBLIC: !Sub "https://${SDKHostname}:16005"
OWANALYTICS_SYSTEM_URI_PUBLIC: !Sub "https://${SDKHostname}:16009"
OWSUB_SYSTEM_URI_PUBLIC: !Sub "https://${SDKHostname}:16006"
TRAEFIK_ACME_EMAIL: !Sub "${TraefikAcmeEmail}"
cwd: "~/wlan-cloud-ucentral-deploy/docker-compose"
Properties:
ImageId: !Ref LatestUbuntuFocalAMI
InstanceType: !Ref InstanceType
SecurityGroups:
- !Ref CloudSDKSecurityGroup
KeyName: !Ref KeyName
UserData:
Fn::Base64: !Sub |
#!/bin/bash -xe
apt-get update -y
mkdir -p /opt/aws/bin
wget https://s3.amazonaws.com/cloudformation-examples/aws-cfn-bootstrap-py3-latest.tar.gz
python3 -m easy_install --script-dir /opt/aws/bin aws-cfn-bootstrap-py3-latest.tar.gz
/opt/aws/bin/cfn-init -v \
--stack ${AWS::StackName} \
--resource CloudSDKInstance \
--configsets InstallDockerAndCreateDeployment \
--region ${AWS::Region}
/opt/aws/bin/cfn-signal -e $? \
--stack ${AWS::StackName} \
--resource CloudSDKInstance \
--region ${AWS::Region}
CreationPolicy:
ResourceSignal:
Timeout: PT5M
CloudSDKSecurityGroup:
Type: "AWS::EC2::SecurityGroup"
Properties:
GroupDescription: Enable OpenWiFi Cloud SDK and SSH access
SecurityGroupIngress:
- IpProtocol: icmp
FromPort: "-1"
ToPort: "-1"
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: "80"
ToPort: "80"
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: "443"
ToPort: "443"
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: "15002"
ToPort: "15002"
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: "16001"
ToPort: "16006"
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: "16009"
ToPort: "16009"
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: "5912"
ToPort: "5913"
CidrIp: 0.0.0.0/0
- IpProtocol: tcp
FromPort: "22"
ToPort: "22"
CidrIp: !Ref SSHLocation
CloudSDKHostedZone:
Condition: HasHostedZoneName
Type: AWS::Route53::HostedZone
Properties:
Name: !Ref HostedZoneName
CloudSDKRoute53RecordExistingHostedZone:
Condition: CreateRecordInExistingZone
Type: AWS::Route53::RecordSet
Properties:
HostedZoneId: !Ref ExistingHostedZoneId
Name: !Ref SDKHostname
Type: A
TTL: 900
ResourceRecords:
- !GetAtt CloudSDKInstance.PublicIp
CloudSDKRoute53RecordNewHostedZone:
Condition: CreateRecordInNewZone
Type: AWS::Route53::RecordSet
Properties:
HostedZoneId: !GetAtt CloudSDKHostedZone.Id
Name: !Ref SDKHostname
Type: A
TTL: 900
ResourceRecords:
- !GetAtt CloudSDKInstance.PublicIp
Outputs:
WebsiteURL:
Description: |
Visit this URL and login with user 'tip@ucentral.com' and password
'openwifi'.
Value: !Join
- ""
- - "https://"
- !Ref SDKHostname

View File

@@ -1,32 +0,0 @@
#!/bin/bash
# Wrapper around docker-compose that will use the correct command line options
# depending on what type of setup you have.
# It captures $1 == clean and performs cleanup of the volumes and data directories,
# It captures $1 == launch or l and runs: ... up -d,
# but passes everything else straight to the docker-compose command.
cmd="docker-compose"
deploy_type=$(grep "^DEPLOY_TYPE=" .env | awk -F= '{ print $2 }')
[ -z "$deploy_type" ] && deploy_type="default"
if [[ "$deploy_type" == "letsencrypt" ]] ; then
cmd="$cmd -f docker-compose.lb.letsencrypt.yml --env-file .env.letsencrypt"
elif [[ "$deploy_type" == "selfsigned" ]] ; then
cmd="$cmd -f docker-compose.lb.selfsigned.yml --env-file .env.selfsigned"
elif [[ "$deploy_type" == "default" ]] ; then
# ok
true
else
echo "Invalid DEPLOY_TYPE: $deploy_type"
echo "Should be one of: default, letsencrypt or selfsigned"
exit 1
fi
if [[ "$1" == "clean" ]] ; then
set -x
$cmd down -v
rm -rf *_data
elif [[ "$1" == "launch" || "$1" == "l" ]] ; then
set -x
$cmd up -d
else
set -x
$cmd "$@"
fi

View File

@@ -50,10 +50,7 @@ usage () {
echo "- OWFMS_S3_KEY - access key that is used for OWFms access to firmwares S3 bucket";
echo;
echo "- SDKHOSTNAME - Public hostname which is used for cert generation when using the Letsencrypt deployment method"
echo;
echo "- TRAEFIK_ACME_EMAIL - Email address used for ACME registration"
echo;
echo "- CERTIFICATES_ALLOWMISMATCH - boolean flag to allow certificates serial mismatch";
}
# Check if required environment variables were passed
@@ -139,7 +136,7 @@ if [[ ! -z "$SIMULATORID" ]]; then
sed -i "s~.*SIMULATORID=.*~SIMULATORID=$SIMULATORID~" owgw.env
fi
sed -i "s~.*REACT_APP_UCENTRALSEC_URL=.*~REACT_APP_UCENTRALSEC_URL=$DEFAULT_UCENTRALSEC_URL~" owgw-ui.env
sed -i "s~.*DEFAULT_UCENTRALSEC_URL=.*~DEFAULT_UCENTRALSEC_URL=$DEFAULT_UCENTRALSEC_URL~" owgw-ui.env
if [[ ! -z "$OWSEC_AUTHENTICATION_DEFAULT_USERNAME" ]]; then
sed -i "s~.*AUTHENTICATION_DEFAULT_USERNAME=.*~AUTHENTICATION_DEFAULT_USERNAME=$OWSEC_AUTHENTICATION_DEFAULT_USERNAME~" owsec.env
@@ -179,10 +176,6 @@ if [[ ! -z "$TRAEFIK_ACME_EMAIL" ]]; then
sed -i "s~.*TRAEFIK_CERTIFICATESRESOLVERS_OPENWIFI_ACME_EMAIL=.*~TRAEFIK_CERTIFICATESRESOLVERS_OPENWIFI_ACME_EMAIL=$TRAEFIK_ACME_EMAIL~" traefik.env
fi
if [[ ! -z "$CERTIFICATES_ALLOWMISMATCH" ]]; then
sed -i "s~.*CERTIFICATES_ALLOWMISMATCH=.*~CERTIFICATES_ALLOWMISMATCH=$CERTIFICATES_ALLOWMISMATCH~" owgw.env
fi
# Run the deployment
if [[ ! -z "$SDKHOSTNAME" ]]; then
docker-compose -f docker-compose.lb.letsencrypt.yml --env-file .env.letsencrypt up -d

View File

@@ -1,3 +1,5 @@
version: '3'
volumes:
owgw_data:
driver: local
@@ -11,9 +13,11 @@ volumes:
driver: local
owsub_data:
driver: local
kafka_data:
zookeeper_data:
driver: local
postgresql_data:
zookeeper_datalog:
driver: local
kafka_data:
driver: local
letsencrypt_certs:
driver: local
@@ -32,11 +36,7 @@ services:
- .env.letsencrypt
- owgw.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owgw"]
- kafka
restart: unless-stopped
volumes:
- owgw_data:${OWGW_ROOT}/persist
@@ -71,11 +71,7 @@ services:
- .env.letsencrypt
- owsec.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owsec"]
- kafka
restart: unless-stopped
volumes:
- owsec_data:${OWSEC_ROOT}/persist
@@ -91,11 +87,7 @@ services:
- .env.letsencrypt
- owfms.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owfms"]
- kafka
restart: unless-stopped
volumes:
- owfms_data:${OWFMS_ROOT}/persist
@@ -111,11 +103,7 @@ services:
- .env.letsencrypt
- owprov.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owprov"]
- kafka
restart: unless-stopped
volumes:
- owprov_data:${OWPROV_ROOT}
@@ -146,11 +134,7 @@ services:
- .env.letsencrypt
- owanalytics.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owanalytics"]
- kafka
restart: unless-stopped
volumes:
- owanalytics_data:${OWANALYTICS_ROOT}
@@ -166,16 +150,21 @@ services:
- .env.letsencrypt
- owsub.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owsub"]
- kafka
restart: unless-stopped
volumes:
- owsub_data:${OWSUB_ROOT}
- ./certs:/${OWSUB_ROOT}/certs
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
networks:
openwifi:
restart: unless-stopped
volumes:
- zookeeper_data:/data
- zookeeper_datalog:/datalog
kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
@@ -183,30 +172,11 @@ services:
env_file:
- kafka.env
restart: unless-stopped
depends_on:
- zookeeper
volumes:
- kafka_data:/bitnami/kafka
init-kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
openwifi:
depends_on:
- kafka
env_file:
- kafka.env
entrypoint:
- /bin/sh
- -c
- |
echo "Sleeping to allow kafka to start up..."
sleep 10
echo "Creating all required Kafka topics..."
for topic in $$TOPICS; do
/opt/bitnami/kafka/bin/kafka-topics.sh \
--create --if-not-exists --topic $$topic --replication-factor 1 \
--partitions 1 --bootstrap-server kafka:9092
done && echo "Successfully created Kafka topics, exiting." && exit 0
traefik:
image: "traefik:${TRAEFIK_TAG}"
networks:
@@ -221,8 +191,6 @@ services:
- owfms
- owprov
- owprov-ui
- owanalytics
- owsub
restart: unless-stopped
volumes:
- "./traefik/openwifi_letsencrypt.yaml:/etc/traefik/openwifi.yaml"
@@ -249,30 +217,3 @@ services:
- "16006:16006"
- "5912:5912"
- "5913:5913"
- "1812:1812/udp"
- "1813:1813/udp"
- "3799:3799/udp"
postgresql:
image: "postgres:${POSTGRESQL_TAG}"
networks:
openwifi:
command:
- "postgres"
- "-c"
- "max_connections=400"
- "-c"
- "shared_buffers=20MB"
env_file:
- postgresql.env
restart: unless-stopped
volumes:
- postgresql_data:/var/lib/postgresql/data
- ./postgresql/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
healthcheck:
# owsub is the last DB created in init-db.sh
test: ["CMD-SHELL", "pg_isready -U postgres -d owsub"]
interval: 10s
retries: 5
start_period: 30s
timeout: 10s

View File

@@ -1,3 +1,5 @@
version: '3'
volumes:
owgw_data:
driver: local
@@ -11,9 +13,11 @@ volumes:
driver: local
owsub_data:
driver: local
kafka_data:
zookeeper_data:
driver: local
postgresql_data:
zookeeper_datalog:
driver: local
kafka_data:
driver: local
networks:
@@ -30,11 +34,7 @@ services:
- .env.selfsigned
- owgw.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owgw"]
- kafka
restart: unless-stopped
volumes:
- owgw_data:${OWGW_ROOT}/persist
@@ -46,6 +46,8 @@ services:
owgw-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui:${OWGWUI_TAG}"
env_file:
- owgw-ui.env
networks:
openwifi:
aliases:
@@ -69,11 +71,7 @@ services:
- .env.selfsigned
- owsec.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owsec"]
- kafka
restart: unless-stopped
volumes:
- owsec_data:${OWSEC_ROOT}/persist
@@ -89,11 +87,7 @@ services:
- .env.selfsigned
- owfms.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owfms"]
- kafka
restart: unless-stopped
volumes:
- owfms_data:${OWFMS_ROOT}/persist
@@ -109,11 +103,7 @@ services:
- .env.selfsigned
- owprov.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owprov"]
- kafka
restart: unless-stopped
volumes:
- owprov_data:${OWPROV_ROOT}
@@ -144,11 +134,7 @@ services:
- .env.selfsigned
- owanalytics.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owanalytics"]
- kafka
restart: unless-stopped
volumes:
- owanalytics_data:${OWANALYTICS_ROOT}
@@ -164,16 +150,21 @@ services:
- .env.selfsigned
- owsub.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owsub"]
- kafka
restart: unless-stopped
volumes:
- owsub_data:${OWSUB_ROOT}
- ./certs:/${OWSUB_ROOT}/certs
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
networks:
openwifi:
restart: unless-stopped
volumes:
- zookeeper_data:/data
- zookeeper_datalog:/datalog
kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
@@ -181,30 +172,11 @@ services:
env_file:
- kafka.env
restart: unless-stopped
depends_on:
- zookeeper
volumes:
- kafka_data:/bitnami/kafka
init-kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
openwifi:
depends_on:
- kafka
env_file:
- kafka.env
entrypoint:
- /bin/sh
- -c
- |
echo "Sleeping to allow kafka to start up..."
sleep 10
echo "Creating all required Kafka topics..."
for topic in $$TOPICS; do
/opt/bitnami/kafka/bin/kafka-topics.sh \
--create --if-not-exists --topic $$topic --replication-factor 1 \
--partitions 1 --bootstrap-server kafka:9092
done && echo "Successfully created Kafka topics, exiting." && exit 0
traefik:
image: "traefik:${TRAEFIK_TAG}"
networks:
@@ -218,8 +190,6 @@ services:
- owfms
- owprov
- owprov-ui
- owanalytics
- owsub
restart: unless-stopped
volumes:
- "./traefik/openwifi_selfsigned.yaml:/etc/traefik/openwifi.yaml"
@@ -238,33 +208,5 @@ services:
- "16004:16004"
- "16005:16005"
- "16009:16009"
- "16006:16006"
- "5912:5912"
- "5913:5913"
- "1812:1812/udp"
- "1813:1813/udp"
- "3799:3799/udp"
postgresql:
image: "postgres:${POSTGRESQL_TAG}"
networks:
openwifi:
command:
- "postgres"
- "-c"
- "max_connections=400"
- "-c"
- "shared_buffers=20MB"
env_file:
- postgresql.env
restart: unless-stopped
volumes:
- postgresql_data:/var/lib/postgresql/data
- ./postgresql/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
healthcheck:
# owsub is the last DB created in init-db.sh
test: ["CMD-SHELL", "pg_isready -U postgres -d owsub"]
interval: 10s
retries: 5
start_period: 30s
timeout: 10s

View File

@@ -0,0 +1,47 @@
version: '3'
volumes:
postgresql_data:
driver: local
services:
owgw:
depends_on:
- postgresql
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owgw"]
owsec:
depends_on:
- postgresql
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owsec"]
owfms:
depends_on:
- postgresql
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owfms"]
owprov:
depends_on:
- postgresql
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owprov"]
owanalytics:
depends_on:
- postgresql
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owanalytics"]
owsub:
depends_on:
- postgresql
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owsub"]
postgresql:
image: "postgres:${POSTGRESQL_TAG}"
networks:
openwifi:
env_file:
- postgresql.env
restart: unless-stopped
volumes:
- postgresql_data:/var/lib/postgresql/data
- ./postgresql/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh

View File

@@ -1,7 +1,11 @@
version: '3'
volumes:
kafka_data:
zookeeper_data:
driver: local
postgresql_data:
zookeeper_datalog:
driver: local
kafka_data:
driver: local
networks:
@@ -17,11 +21,7 @@ services:
env_file:
- owgw.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owgw"]
- kafka
restart: unless-stopped
volumes:
- "./owgw_data:${OWGW_ROOT}"
@@ -33,9 +33,6 @@ services:
- "16003:16003"
- "5912:5912"
- "5913:5913"
- "1812:1812/udp"
- "1813:1813/udp"
- "3799:3799/udp"
sysctls:
- net.ipv4.tcp_keepalive_intvl=5
- net.ipv4.tcp_keepalive_probes=2
@@ -52,8 +49,6 @@ services:
- owgw
- owfms
- owprov
- owanalytics
- owsub
restart: unless-stopped
volumes:
- "./owgw-ui/default.conf:/etc/nginx/conf.d/default.conf"
@@ -72,11 +67,7 @@ services:
env_file:
- owsec.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owsec"]
- kafka
restart: unless-stopped
volumes:
- "./owsec_data:${OWSEC_ROOT}"
@@ -94,11 +85,7 @@ services:
env_file:
- owfms.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owfms"]
- kafka
restart: unless-stopped
volumes:
- "./owfms_data:${OWFMS_ROOT}"
@@ -116,11 +103,7 @@ services:
env_file:
- owprov.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owprov"]
- kafka
restart: unless-stopped
volumes:
- "./owprov_data:${OWPROV_ROOT}"
@@ -140,8 +123,6 @@ services:
- owgw
- owfms
- owprov
- owanalytics
- owsub
restart: unless-stopped
volumes:
- "./owprov-ui/default.conf:/etc/nginx/conf.d/default.conf"
@@ -160,11 +141,7 @@ services:
env_file:
- owanalytics.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owanalytics"]
- kafka
restart: unless-stopped
volumes:
- "./owanalytics_data:${OWANALYTICS_ROOT}"
@@ -182,11 +159,7 @@ services:
env_file:
- owsub.env
depends_on:
init-kafka:
condition: service_completed_successfully
postgresql:
condition: service_healthy
command: ["./wait-for-postgres.sh", "postgresql", "/openwifi/owsub"]
- kafka
restart: unless-stopped
volumes:
- "./owsub_data:${OWSUB_ROOT}"
@@ -195,6 +168,15 @@ services:
- "16006:16006"
- "16106:16106"
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
networks:
openwifi:
restart: unless-stopped
volumes:
- zookeeper_data:/data
- zookeeper_datalog:/datalog
kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
@@ -202,50 +184,7 @@ services:
env_file:
- kafka.env
restart: unless-stopped
depends_on:
- zookeeper
volumes:
- kafka_data:/bitnami/kafka
init-kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
openwifi:
depends_on:
- kafka
env_file:
- kafka.env
entrypoint:
- /bin/sh
- -c
- |
echo "Sleeping to allow kafka to start up..."
sleep 10
echo "Creating all required Kafka topics..."
for topic in $$TOPICS; do
/opt/bitnami/kafka/bin/kafka-topics.sh \
--create --if-not-exists --topic $$topic --replication-factor 1 \
--partitions 1 --bootstrap-server kafka:9092
done && echo "Successfully created Kafka topics, exiting." && exit 0
postgresql:
image: "postgres:${POSTGRESQL_TAG}"
networks:
openwifi:
command:
- "postgres"
- "-c"
- "max_connections=400"
- "-c"
- "shared_buffers=20MB"
env_file:
- postgresql.env
restart: unless-stopped
volumes:
- postgresql_data:/var/lib/postgresql/data
- ./postgresql/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh
healthcheck:
# owsub is the last DB created in init-db.sh
test: ["CMD-SHELL", "pg_isready -U postgres -d owsub"]
interval: 10s
retries: 5
start_period: 30s
timeout: 10s

View File

@@ -1,10 +1,2 @@
KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
ALLOW_PLAINTEXT_LISTENER=yes
TOPICS=command connection device_event_queue device_telemetry healthcheck provisioning_change service_events state wifiscan
KAFKA_CFG_NODE_ID=0
KAFKA_CFG_PROCESS_ROLES=controller,broker
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT

View File

@@ -23,19 +23,16 @@ SYSTEM_DATA=$OWANALYTICS_ROOT/persist
SYSTEM_URI_PRIVATE=https://owanalytics.wlan.local:17009
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16009
SYSTEM_URI_UI=https://openwifi.wlan.local
#SECURITY_RESTAPI_DISABLE=false
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
STORAGE_TYPE=postgresql
STORAGE_TYPE_POSTGRESQL_HOST=postgresql
STORAGE_TYPE_POSTGRESQL_USERNAME=owanalytics
STORAGE_TYPE_POSTGRESQL_PASSWORD=owanalytics
STORAGE_TYPE_POSTGRESQL_DATABASE=owanalytics
STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owanalytics
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owanalytics
#STORAGE_TYPE_POSTGRESQL_DATABASE=owanalytics
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owanalytics
#STORAGE_TYPE_MYSQL_PASSWORD=owanalytics
#STORAGE_TYPE_MYSQL_DATABASE=owanalytics
#STORAGE_TYPE_MYSQL_PORT=3306
#STORAGE_TYPE=sqlite

View File

@@ -21,7 +21,6 @@ SYSTEM_DATA=$OWFMS_ROOT/persist
SYSTEM_URI_PRIVATE=https://owfms.wlan.local:17004
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16004
SYSTEM_URI_UI=https://openwifi.wlan.local
#SECURITY_RESTAPI_DISABLE=false
#S3_BUCKETNAME=ucentral-ap-firmware
#S3_REGION=us-east-1
S3_SECRET=b0S6EiR5RLIxoe7Xvz9YXPPdxQCoZ6ze37qunTAI
@@ -29,15 +28,14 @@ S3_KEY=AKIAUG47UZG7R6SRLD7F
#S3_BUCKET_URI=ucentral-ap-firmware.s3.amazonaws.com
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
STORAGE_TYPE=postgresql
STORAGE_TYPE_POSTGRESQL_HOST=postgresql
STORAGE_TYPE_POSTGRESQL_USERNAME=owfms
STORAGE_TYPE_POSTGRESQL_PASSWORD=owfms
STORAGE_TYPE_POSTGRESQL_DATABASE=owfms
STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owfms
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owfms
#STORAGE_TYPE_POSTGRESQL_DATABASE=owfms
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owfms
#STORAGE_TYPE_MYSQL_PASSWORD=owfms
#STORAGE_TYPE_MYSQL_DATABASE=owfms
#STORAGE_TYPE_MYSQL_PORT=3306
#STORAGE_TYPE=sqlite

View File

@@ -1 +1,2 @@
REACT_APP_UCENTRALSEC_URL=https://openwifi.wlan.local:16001
DEFAULT_UCENTRALSEC_URL=https://openwifi.wlan.local:16001
ALLOW_UCENTRALSEC_CHANGE=false

View File

@@ -37,7 +37,6 @@ SYSTEM_DATA=$OWGW_ROOT/persist
SYSTEM_URI_PRIVATE=https://owgw.wlan.local:17002
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16002
SYSTEM_URI_UI=https://openwifi.wlan.local
#SECURITY_RESTAPI_DISABLE=false
#SIMULATORID=
#IPTOCOUNTRY_PROVIDER=ipinfo
#IPTOCOUNTRY_IPINFO_TOKEN=
@@ -50,23 +49,16 @@ RTTY_SERVER=openwifi.wlan.local
#RTTY_TIMEOUT=60
#RTTY_VIEWPORT=5913
#RTTY_ASSETS=$OWGW_ROOT/rtty_ui
RADIUS_PROXY_ENABLE=true
#RADIUS_PROXY_ACCOUNTING_PORT=1813
#RADIUS_PROXY_AUTHENTICATION_PORT=1812
#RADIUS_PROXY_COA_PORT=3799
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
STORAGE_TYPE=postgresql
STORAGE_TYPE_POSTGRESQL_HOST=postgresql
STORAGE_TYPE_POSTGRESQL_USERNAME=owgw
STORAGE_TYPE_POSTGRESQL_PASSWORD=owgw
STORAGE_TYPE_POSTGRESQL_DATABASE=owgw
STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owgw
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owgw
#STORAGE_TYPE_POSTGRESQL_DATABASE=owgw
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owgw
#STORAGE_TYPE_MYSQL_PASSWORD=owgw
#STORAGE_TYPE_MYSQL_DATABASE=owgw
#STORAGE_TYPE_MYSQL_PORT=3306
#STORAGE_TYPE=sqlite
#CERTIFICATES_ALLOWMISMATCH=false

View File

@@ -1,14 +1,10 @@
COMPOSE_PROJECT_NAME=owls
# Image tags
# Currently main branches don't work - owlsui is not compatible with owls.
#OWSEC_TAG=main
#OWLS_TAG=main
#OWLSUI_TAG=master
OWSEC_TAG=v2.9.0
OWLS_TAG=v2.9.0
OWLSUI_TAG=v2.9.0
KAFKA_TAG=3.7-debian-12
COMPOSE_PROJECT_NAME=owls
OWSEC_TAG=main
OWLS_TAG=main
OWLSUI_TAG=master
KAFKA_TAG=latest
ZOOKEEPER_TAG=latest
# Microservice root/config directories
OWSEC_ROOT=/owsec-data

View File

@@ -1,6 +1,6 @@
# OpenWifi OWLS Docker Compose
## Deployment with self-signed certificates
To run a load simulation you need to generate a specific Digicert-signed AP certificate which will be used to connect to the gateway. The certificate serial number has to start with the digits `53494d` since otherwise the gateway won't allow a load simulation. The rest of the serial number and the specified redirector URL can be chosen randomly. You only need to generate one AP certificate for your simulations.
To run a load simulation you need to generate a specific Digicert-signed AP certificate which will be used to connect to the gateway. The certificate serial number has to start with the digits `53494d` since otherwise the gateway won't allow a load simulation. The rest of the serial number and the specified redirector URL can be chosen randomly. You only need to generate one AP certificate for your simulations.
Be aware that since the OWLS deployment partly exposes the same ports on the host as the OpenWifi deployment, it is not intended that both run on the same host.
1. Copy or move your AP load simulation certificate into the `docker-compose/certs` directory. Don't forget to name the files `device-cert.pem` and `device-key.pem` or adapt the path names in the OWLS configuration if you're using different file names.
2. To be able to run load simulation tests against your OpenWifi SDK deployment, you'll have to [add the serial number of your generated AP certificate to the gateway configuration](https://github.com/Telecominfraproject/wlan-cloud-owls#prepare-your-openwifi-gateway). You can do that by either editing [owgw.env](../owgw.env) or doing the changes directly in your OWGW configuration file if it is exposed on your Docker host.

View File

@@ -57,7 +57,7 @@ cd wlan-cloud-ucentral-deploy/docker-compose/owls
sed -i "s~\(^INTERNAL_OWSEC_HOSTNAME=\).*~\1$INTERNAL_OWSEC_HOSTNAME~" .env
sed -i "s~\(^INTERNAL_OWLS_HOSTNAME=\).*~\1$INTERNAL_OWLS_HOSTNAME~" .env
sed -i "s~\(^REACT_APP_UCENTRALSEC_URL=\).*~\1$DEFAULT_UCENTRALSEC_URL~" owls-ui.env
sed -i "s~\(^DEFAULT_UCENTRALSEC_URL=\).*~\1$DEFAULT_UCENTRALSEC_URL~" owls-ui.env
sed -i "s~.*AUTHENTICATION_DEFAULT_USERNAME=.*~AUTHENTICATION_DEFAULT_USERNAME=$OWSEC_AUTHENTICATION_DEFAULT_USERNAME~" owsec.env
sed -i "s~.*AUTHENTICATION_DEFAULT_PASSWORD=.*~AUTHENTICATION_DEFAULT_PASSWORD=$OWSEC_AUTHENTICATION_DEFAULT_PASSWORD~" owsec.env

View File

@@ -1,4 +1,10 @@
version: '3'
volumes:
zookeeper_data:
driver: local
zookeeper_datalog:
driver: local
kafka_data:
driver: local
@@ -15,8 +21,7 @@ services:
env_file:
- owsec.env
depends_on:
init-kafka:
condition: service_completed_successfully
- kafka
restart: unless-stopped
volumes:
- "./owsec_data:${OWSEC_ROOT}"
@@ -34,10 +39,8 @@ services:
env_file:
- owls.env
depends_on:
owsec:
condition: service_started
init-kafka:
condition: service_completed_successfully
- owsec
- kafka
restart: unless-stopped
volumes:
- "./owls_data:${OWLS_ROOT}"
@@ -64,6 +67,15 @@ services:
- "80:80"
- "443:443"
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
networks:
owls:
restart: unless-stopped
volumes:
- zookeeper_data:/data
- zookeeper_datalog:/datalog
kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
@@ -71,26 +83,7 @@ services:
env_file:
- kafka.env
restart: unless-stopped
depends_on:
- zookeeper
volumes:
- kafka_data:/bitnami/kafka
init-kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
owls:
depends_on:
- kafka
env_file:
- kafka.env
entrypoint:
- /bin/sh
- -c
- |
echo "Sleeping to allow kafka to start up..."
sleep 10
echo "Creating all required Kafka topics..."
for topic in $$TOPICS; do
/opt/bitnami/kafka/bin/kafka-topics.sh \
--create --if-not-exists --topic $$topic --replication-factor 1 \
--partitions 1 --bootstrap-server kafka:9092
done && echo "Successfully created Kafka topics, exiting." && exit 0

View File

@@ -1,10 +1,2 @@
KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
ALLOW_PLAINTEXT_LISTENER=yes
TOPICS=service_events
KAFKA_CFG_NODE_ID=0
KAFKA_CFG_PROCESS_ROLES=controller,broker
KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093
KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093
KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://:9092
KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT
KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER
KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT

View File

@@ -1 +1,2 @@
REACT_APP_UCENTRALSEC_URL=https://openwifi.wlan.local:16001
DEFAULT_UCENTRALSEC_URL=https://openwifi-owls.wlan.local:16001
ALLOW_UCENTRALSEC_CHANGE=false

View File

@@ -23,18 +23,16 @@ SYSTEM_DATA=$OWPROV_ROOT/persist
SYSTEM_URI_PRIVATE=https://owprov.wlan.local:17005
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16005
SYSTEM_URI_UI=https://openwifi.wlan.local
#SECURITY_RESTAPI_DISABLE=false
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
STORAGE_TYPE=postgresql
STORAGE_TYPE_POSTGRESQL_HOST=postgresql
STORAGE_TYPE_POSTGRESQL_USERNAME=owprov
STORAGE_TYPE_POSTGRESQL_PASSWORD=owprov
STORAGE_TYPE_POSTGRESQL_DATABASE=owprov
STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owprov
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owprov
#STORAGE_TYPE_POSTGRESQL_DATABASE=owprov
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owprov
#STORAGE_TYPE_MYSQL_PASSWORD=owprov
#STORAGE_TYPE_MYSQL_DATABASE=owprov
#STORAGE_TYPE_MYSQL_PORT=3306
#STORAGE_TYPE=sqlite

View File

@@ -22,7 +22,6 @@ SYSTEM_DATA=$OWSEC_ROOT/persist
SYSTEM_URI_PRIVATE=https://owsec.wlan.local:17001
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16001
SYSTEM_URI_UI=https://openwifi.wlan.local
#SECURITY_RESTAPI_DISABLE=false
#SERVICE_KEY=$OWSEC_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
#MAILER_HOSTNAME=localhost
@@ -35,15 +34,14 @@ SYSTEM_URI_UI=https://openwifi.wlan.local
KAFKA_BROKERLIST=kafka:9092
#DOCUMENT_POLICY_ACCESS=$OWSEC_ROOT/wwwassets/access_policy.html
#DOCUMENT_POLICY_PASSWORD=$OWSEC_ROOT/wwwassets/password_policy.html
STORAGE_TYPE=postgresql
STORAGE_TYPE_POSTGRESQL_HOST=postgresql
STORAGE_TYPE_POSTGRESQL_USERNAME=owsec
STORAGE_TYPE_POSTGRESQL_PASSWORD=owsec
STORAGE_TYPE_POSTGRESQL_DATABASE=owsec
STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owsec
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owsec
#STORAGE_TYPE_POSTGRESQL_DATABASE=owsec
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owsec
#STORAGE_TYPE_MYSQL_PASSWORD=owsec
#STORAGE_TYPE_MYSQL_DATABASE=owsec
#STORAGE_TYPE_MYSQL_PORT=3306
#STORAGE_TYPE=sqlite

View File

@@ -23,18 +23,16 @@ SYSTEM_DATA=$OWSUB_ROOT/persist
SYSTEM_URI_PRIVATE=https://owsub.wlan.local:17006
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16006
SYSTEM_URI_UI=https://openwifi.wlan.local
#SECURITY_RESTAPI_DISABLE=false
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
STORAGE_TYPE=postgresql
STORAGE_TYPE_POSTGRESQL_HOST=postgresql
STORAGE_TYPE_POSTGRESQL_USERNAME=owsub
STORAGE_TYPE_POSTGRESQL_PASSWORD=owsub
STORAGE_TYPE_POSTGRESQL_DATABASE=owsub
STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owsub
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owsub
#STORAGE_TYPE_POSTGRESQL_DATABASE=owsub
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owsub
#STORAGE_TYPE_MYSQL_PASSWORD=owsub
#STORAGE_TYPE_MYSQL_DATABASE=owsub
#STORAGE_TYPE_MYSQL_PORT=3306
#STORAGE_TYPE=sqlite

View File

@@ -3,9 +3,6 @@ TRAEFIK_ENTRYPOINTS_OWGWRESTAPI_ADDRESS=:16002
TRAEFIK_ENTRYPOINTS_OWGWFILEUPLOAD_ADDRESS=:16003
TRAEFIK_ENTRYPOINTS_OWGWRTTYS_ADDRESS=:5912
TRAEFIK_ENTRYPOINTS_OWGWRTTYSVIEW_ADDRESS=:5913
TRAEFIK_ENTRYPOINTS_OWGWRADACC_ADDRESS=:1813/udp
TRAEFIK_ENTRYPOINTS_OWGWRADAUTH_ADDRESS=:1812/udp
TRAEFIK_ENTRYPOINTS_OWGWRADCOA_ADDRESS=:3799/udp
TRAEFIK_ENTRYPOINTS_OWGWUIHTTP_ADDRESS=:80
TRAEFIK_ENTRYPOINTS_OWGWUIHTTP_HTTP_REDIRECTIONS_ENTRYPOINT_TO=owgwuihttps
TRAEFIK_ENTRYPOINTS_OWPROVUIHTTP_ADDRESS=:8080

View File

@@ -137,29 +137,3 @@ tcp:
rule: "HostSNI(`*`)"
tls:
passthrough: true
udp:
services:
owgw-radius-acc:
loadBalancer:
servers:
- address: "owgw.wlan.local:1813"
owgw-radius-auth:
loadBalancer:
servers:
- address: "owgw.wlan.local:1812"
owgw-radius-coa:
loadBalancer:
servers:
- address: "owgw.wlan.local:3799"
routers:
owgw-radius-acc:
entryPoints: "owgwradacc"
service: "owgw-radius-acc"
owgw-radius-auth:
entryPoints: "owgwradauth"
service: "owgw-radius-auth"
owgw-radius-coa:
entryPoints: "owgwradcoa"
service: "owgw-radius-coa"

View File

@@ -142,29 +142,3 @@ tcp:
rule: "HostSNI(`*`)"
tls:
passthrough: true
udp:
services:
owgw-radius-acc:
loadBalancer:
servers:
- address: "owgw.wlan.local:1813"
owgw-radius-auth:
loadBalancer:
servers:
- address: "owgw.wlan.local:1812"
owgw-radius-coa:
loadBalancer:
servers:
- address: "owgw.wlan.local:3799"
routers:
owgw-radius-acc:
entryPoints: "owgwradacc"
service: "owgw-radius-acc"
owgw-radius-auth:
entryPoints: "owgwradauth"
service: "owgw-radius-auth"
owgw-radius-coa:
entryPoints: "owgwradcoa"
service: "owgw-radius-coa"