Compare commits

..

31 Commits

Author SHA1 Message Date
TIP Automation User
a45d4c68e0 Chg: update image tag in helm values to v2.4.1 2022-07-21 13:50:35 +00:00
Dmitry Dunaev
d4d79c2dc4 [WIFI-9174] Fix: switch from deprecated bitnami charts to mirrored ones
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-21 16:48:05 +03:00
Dmitry Dunaev
7c56e3d2dd [WIFI-9772] Add: git-release-tool dependencies
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-21 13:54:37 +03:00
Johann Hoffmann
54a19d0daf Adapt Docker Compose deploy script to deployment on EC2
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-04-26 15:40:06 +02:00
Johann Hoffmann
4ce63387be Add search and replace for image tags
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-04-23 19:56:47 +02:00
Johann Hoffmann
5428399705 Adapt Docker Compose deploy script to release state
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-04-22 14:15:39 +02:00
Johann Hoffmann
2695bb18e1 Add deployment scripts and values files from wlan-testing
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-04-22 14:15:25 +02:00
Johann Hoffmann
56d53fcf90 Update README.md
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-03-28 20:56:10 +02:00
Johann Hoffmann
bc2ddac0a1 Update README.md
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-03-28 14:04:40 +02:00
Johann Hoffmann
2389561aeb Update README.md
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-03-28 14:04:34 +02:00
Johann Hoffmann
cf8542efde Move OWLS deployment README into subdirectory and clarify instructions on simulator ID
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-03-07 12:10:59 +01:00
Johann Hoffmann
a0741c07e8 Increase HAProxy timeout setting (https://telecominfraproject.atlassian.net/browse/WIFI-6830)
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2022-02-04 12:52:25 +03:00
Dmitry Dunaev
979b2d9494 [WIFI-6164] Del: SVC_DOMAIN from haproxy config
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2021-12-31 13:26:28 +03:00
Dmitry Dunaev
b780d9f1ff [WIFI-6164] Del: resolver block for HAProxy config for tests
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2021-12-31 13:26:25 +03:00
Dmitry Dunaev
0abc1649f6 [WIFI-6164] Add: helm support for haproxy as optional LB
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2021-12-31 13:26:07 +03:00
Dmitry Dunaev
afcfaf31ad [WIFI-2617] Fix: owls and owls-ui should be explicitly disabled 2021-12-17 06:36:07 +03:00
Dmitry Dunaev
587585ae14 Chg: update image tag in helm values to v2.4.0
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2021-12-17 05:53:11 +03:00
Dmitry Dunaev
5798fc26f3 [WIFI-2617] Add: owls and owls-ui as optional helm dependency
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2021-12-17 05:32:13 +03:00
Johann Hoffmann
2124297ebc Fix permissions
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2021-12-16 17:45:19 +01:00
Johann Hoffmann
86cbf848f8 [WIFI-6170] Add OpenWifi Docker Compose deployment with PostgreSQL (#43)
* Add Compose override file with PostgreSQL service and related files

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

* Remove unnecessary tags

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

* Update README.md

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

* Wait for DB readiness

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

* Add root and data directory variables to microservice env files

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2021-12-16 17:38:05 +01:00
Johann Hoffmann
f6768e687a [WIFI-5721] Create docker-compose for OWLS (#36)
* Add OWLS Compose deployment

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

* Use different hostname for OWLS deployment and expose OWSec on different host ports

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

* Add OWLS-UI and switch to default ports

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

* Add env file for owls-ui

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

* Update README.md

Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2021-12-16 17:34:23 +01:00
Johann Hoffmann
fb8dc25c45 Update README.md 2021-12-16 17:33:48 +01:00
Johann Hoffmann
78b6077baa Update README.md 2021-12-16 17:33:39 +01:00
Johann Hoffmann
ee9dcc4679 Update README.md 2021-12-16 17:33:33 +01:00
TIP Automation User
ec326f6b9c Chg: update image tag in helm values to v2.4.0-RC7 2021-12-11 08:16:18 +00:00
TIP Automation User
d5c2b81553 Chg: update image tag in helm values to v2.4.0-RC6 2021-12-08 07:45:42 +00:00
TIP Automation User
26c48700bf Chg: update image tag in helm values to v2.4.0-RC5 2021-12-06 16:06:47 +00:00
TIP Automation User
6bb8c82ad8 Chg: update image tag in helm values to v2.4.0-RC4 2021-12-03 10:56:14 +00:00
Dmitry Dunaev
b3771b7f4d Chg: upgrade owgw to v2.4.0-RC3
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2021-11-30 15:50:48 +03:00
Dmitry Dunaev
57569adb97 Chg: upgrade microservices to v2.4.0-RC2 2021-11-22 15:19:57 +03:00
Dmitry Dunaev
25c9bf4727 Chg: switch to RC artifacts 2021-11-17 15:10:46 +03:00
56 changed files with 446 additions and 3349 deletions

View File

@@ -1,400 +0,0 @@
#!/bin/bash
set -e
# git-release-tool
# This script is used to manually cut releases for the TIP OpenWIFI CloudSDK 2.x repos
# For other details, see "usage" function or simply run script
# Constants
export PAGER=cat
# Internal vars
LOG_VERBOSITY_NUMBER=0
REPO_TAGS_ARRAY=()
# Helper functions
## Logging functions
log_notice() {
echo "[Notice] "$1
}
log_error() {
if [[ "$LOG_VERBOSITY_NUMBER" -ge 0 ]]; then
echo "[Error] "$1 >/dev/stderr
fi
}
log_info() {
if [[ "$LOG_VERBOSITY_NUMBER" -ge 1 ]]; then
echo "[Info] "$1
fi
}
log_debug() {
if [[ "$LOG_VERBOSITY_NUMBER" -ge 2 ]]; then
echo "[Debug] "$1
fi
}
## Usage info
usage() {
echo
log_notice "$0 - script to cut releases for TIP OpenWIFI CloudSDK 2.x repos"
log_notice
log_notice "This script requires configuration file 'repositories.yaml' near the script and list of environment variables to work"
log_notice
log_notice "repositories.yaml file format:"
echo "deploy_repo_url: git@github.com:Telecominfraproject/wlan-cloud-ucentral-deploy.git # modify if repo name changes"
echo "repositories:"
echo " - name: owgw-ui # should be the same as in image repository in helm values (i.e. tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui)"
echo " url: git@github.com:Telecominfraproject/wlan-cloud-owprov-ui.git # it's up to you to use SSH or HTTPS format and setup credentials for push/pull"
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 "- 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
log_notice "You may increase log verbosity by setting environment variable LOG_VERBOSITY to required level (ERROR/INFO/DEBUG)"
#
}
## Setting functions
set_log_verbosity_number() {
# Log verbosity levels:
# 0 - ERROR
# 1 - INFO
# 2 - DEBUG
case $LOG_VERBOSITY in
ERROR )
LOG_VERBOSITY_NUMBER=0
;;
INFO )
LOG_VERBOSITY_NUMBER=1
;;
DEBUG )
LOG_VERBOSITY_NUMBER=2
;;
* )
log_notice "Setting LOG_VERBOSITY to INFO by default"
LOG_VERBOSITY_NUMBER=1
;;
esac
}
## Git manipulation functions
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)
for REPO_INDEX in $(seq 0 $(expr $REPOSITORIES_AMOUNT - 1)); do
REPO_URL=$(cat ../release.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)
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)
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
sed 's/^version: .*/version: '${NEW_RELEASE_TAG#v}'/' chart/Chart.yaml -i
fi
git diff
}
modify_values() {
NEW_RELEASE_TAG=$1
if [[ "$(basename $PWD)" == "deploy" ]]; then
modify_deploy_repo_values $NEW_RELEASE_TAG
else
sed "/repository: tip-tip-wlan-cloud-ucentral.jfrog.io\/$(basename $PWD)/!b;n;s/tag: .*/tag: $NEW_RELEASE_TAG/" -i helm/values.yaml
fi
if [[ "$LOG_VERBOSITY_NUMBER" -ge 2 ]]; then
log_debug "Diff to me commited:"
git diff
fi
git add .
git commit -m"Chg: update image tag in helm values to $NEW_RELEASE_TAG"
}
push_changes() {
CURRENT_RELEASE=$(git rev-parse --abbrev-ref HEAD)
if [[ "$GIT_PUSH_CONFIRMED" == "true" ]]; then
log_info "Pushing branch changes and tags:"
git push -u origin $CURRENT_RELEASE
git push --tags
else
log_info "Skipping pushing of branch and tags due to GIT_PUSH_CONFIRMED not being set to 'true'"
fi
}
create_tag() {
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
push_changes
REPO_TAGS_ARRAY+=($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)
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
log_debug "New tag - $NEW_RELEASE_TAG"
modify_values $NEW_RELEASE_TAG
git tag $NEW_RELEASE_TAG
push_changes
REPO_TAGS_ARRAY+=($NEW_RELEASE_TAG)
else
if [[ "$(basename $PWD)" == "deploy" ]]; then
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
modify_deploy_repo_values $NEW_RELEASE_TAG
if [[ "v$(cat chart/Chart.yaml | yq '.version' -r)" == "$NEW_RELEASE_TAG" ]]; then
git add .
git commit -m"Chg: update image tag in helm values to $NEW_RELEASE_TAG"
git tag $NEW_RELEASE_TAG
push_changes
log_info "New tag $NEW_RELEASE_TAG was created and pushed"
REPO_TAGS_ARRAY+=($NEW_RELEASE_TAG)
else
log_info "New tag for deploy repo is not required, saving existing one ($LATEST_RELEASE_TAG)"
REPO_TAGS_ARRAY+=($LATEST_RELEASE_TAG)
fi
else
log_debug "Checking if the latest tag is on the latest commit"
LATEST_REVISION=$(git rev-parse HEAD)
LATEST_RELEASE_TAG_REVISION=$(git rev-parse $LATEST_RELEASE_TAG)
log_debug "Latest revision ----- $LATEST_REVISION"
log_debug "Latest tag revision - $LATEST_RELEASE_TAG_REVISION"
if [[ "$LATEST_REVISION" == "$LATEST_RELEASE_TAG_REVISION" ]]; then
log_info "Existing tag $LATEST_RELEASE_TAG is pointing to the latest commit in the release branch"
REPO_TAGS_ARRAY+=($LATEST_RELEASE_TAG)
else
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
modify_values $NEW_RELEASE_TAG
git tag $NEW_RELEASE_TAG
push_changes
log_info "New tag $NEW_RELEASE_TAG was created and pushed"
REPO_TAGS_ARRAY+=($NEW_RELEASE_TAG)
fi
fi
fi
fi
}
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"
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
fi
}
check_release_branch() {
RELEASE_BRANCH=$1
git checkout $RELEASE_BRANCH -q
check_git_tags
}
create_release_branch() {
git checkout -b release/$RELEASE_BRANCH_VERSION -q
check_release_branch release/$RELEASE_BRANCH_VERSION
}
check_if_release_branch_required() {
LATEST_RELEASE_BRANCH=$(git branch -r | grep 'release/' | tail -1 | xargs)
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
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"
if [[ -z "$LATEST_RELEASE_TAG" ]]; then
log_info "Could not find any tags for $LATEST_RELEASE release, creating it"
check_release_branch $LATEST_RELEASE
else
log_info "Latest release tag found - $LATEST_RELEASE_TAG"
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
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
REPO_URL=$2
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)
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"
check_release_branch $RELEASE_BRANCH
else
log_info "Release branch does not exists in the repository, checking if we need to create it"
check_if_release_branch_required $DEFAULT_BRANCH
fi
log_info "Release commit info:"
git show
cd $CWD
}
# Log level setup
set_log_verbosity_number
# Check system requirements
if ! command -v yq &> /dev/null; then
log_error "Command yq could not be found"
usage
exit 2
fi
if ! command -v sed &> /dev/null; then
log_error "Command sed could not be found"
usage
exit 2
fi
if ! command -v helm &> /dev/null; then
log_error "Command helm could not be found"
usage
exit 2
fi
if [[ "$(helm plugin list | grep -wP '(helm-git|diff)' | wc -l)" -ne "2" ]]; then
log_error "Helm plugins (helm-git and/or diff) are missing"
usage
exit 2
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)
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
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)
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[*]}"
echo
log_info "Preparing changes in deploy repo"
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)
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

@@ -12,18 +12,3 @@ repositories:
- name: owgw-ui
url: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui.git
docker_compose_name: OWGWUI_TAG
- name: owprov-ui
url: https://github.com/Telecominfraproject/wlan-cloud-owprov-ui.git
docker_compose_name: OWPROVUI_TAG
- name: owprov
url: https://github.com/Telecominfraproject/wlan-cloud-owprov.git
docker_compose_name: OWPROV_TAG
- name: owanalytics
url: https://github.com/Telecominfraproject/wlan-cloud-analytics.git
docker_compose_name: OWANALYTICS_TAG
- 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

@@ -1,113 +0,0 @@
name: CI
on:
push:
tags:
- 'v*'
- '!v*-RC*'
pull_request:
branches:
- main
- 'release/*'
defaults:
run:
shell: bash
jobs:
envs:
name: Setup environment variables for further tests
if: startsWith(github.ref, 'refs/pull/') || startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
outputs:
pr_branch: ${{ steps.get_branch_names.outputs.pr_branch }}
deployment_upgrade_tag: ${{ steps.get_deployment_upgrade_tag.outputs.tag }}
deployment_tag: ${{ steps.get_deployment_tag.outputs.tag }}
steps:
- name: Get branch names and set as outputs
id: get_branch_names
if: startsWith(github.ref, 'refs/pull/')
run: |
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 ::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 ::set-output name=tag::$(git tag | grep -v RC | tail -2 | head -1)
trigger-docker-compose-testing:
if: startsWith(github.ref, 'refs/pull/')
runs-on: ubuntu-latest
needs: envs
steps:
- name: Checkout actions repo
uses: actions/checkout@v2
with:
repository: Telecominfraproject/.github
path: github
- name: Trigger testing of OpenWifi Docker Compose deployment and wait for result
uses: ./github/composite-actions/trigger-workflow-and-wait
env:
PR_BRANCH: ${{ needs.envs.outputs.pr_branch }}
with:
owner: Telecominfraproject
repo: wlan-testing
workflow: ow_docker-compose.yml
token: ${{ secrets.WLAN_TESTING_PAT }}
ref: master
inputs: '{"deployment_version": "${{ env.PR_BRANCH }}", "microservice": "all"}'
trigger-k8s-testing:
if: startsWith(github.ref, 'refs/pull/')
runs-on: ubuntu-latest
needs: envs
steps:
- name: Checkout actions repo
uses: actions/checkout@v2
with:
repository: Telecominfraproject/.github
path: github
- name: Trigger testing of OpenWifi Docker Compose deployment and wait for result
uses: ./github/composite-actions/trigger-workflow-and-wait
env:
PR_BRANCH: ${{ needs.envs.outputs.pr_branch }}
with:
owner: Telecominfraproject
repo: wlan-testing
workflow: ow_k8s.yml
token: ${{ secrets.WLAN_TESTING_PAT }}
ref: master
inputs: '{"deployment_version": "${{ env.PR_BRANCH }}", "microservice": "all"}'
trigger-docker-compose-upgrade-testing:
if: startsWith(github.ref, 'refs/tags/v')
runs-on: ubuntu-latest
needs: envs
steps:
- name: Checkout actions repo
uses: actions/checkout@v2
with:
repository: Telecominfraproject/.github
path: github
- name: Trigger testing of OpenWifi Docker Compose deployment upgrade and wait for result
uses: ./github/composite-actions/trigger-workflow-and-wait
env:
DEPLOYMENT_TAG: ${{ needs.envs.outputs.deployment_tag }}
DEPLOYMENT_UPGRADE_TAG: ${{ needs.envs.outputs.deployment_upgrade_tag }}
with:
owner: Telecominfraproject
repo: wlan-testing
workflow: ow_docker-compose-upgrade-test.yml
token: ${{ secrets.WLAN_TESTING_PAT }}
ref: master
inputs: '{"deployment_version": "${{ env.DEPLOYMENT_TAG }}", "deployment_upgrade_version": "${{ env.DEPLOYMENT_UPGRADE_TAG }}"}'

View File

@@ -1,22 +0,0 @@
name: Ensure Jira issue is linked
on:
pull_request:
types: [opened, edited, reopened, synchronize]
jobs:
check_for_issue_key:
runs-on: ubuntu-latest
steps:
- name: Checkout actions repo
uses: actions/checkout@v2
with:
repository: Telecominfraproject/.github
path: github
- name: Run JIRA check
uses: ./github/composite-actions/enforce-jira-issue-key
with:
jira_base_url: ${{ secrets.TIP_JIRA_URL }}
jira_user_email: ${{ secrets.TIP_JIRA_USER_EMAIL }}
jira_api_token: ${{ secrets.TIP_JIRA_API_TOKEN }}

View File

@@ -1,59 +0,0 @@
name: Create new release for OpenWIFI 2.x services
on:
workflow_dispatch:
inputs:
release_version:
description: 'Release version to create (i.e. v2.4.0)'
required: true
tag_type:
default: 'rc'
description: 'Tag type to create (final OR rc)'
required: true
push_confirm:
default: ''
description: 'Set to "true" if changes should be pushed (dry-run enabled by default)'
required: false
log_level:
default: 'INFO'
description: 'Log level for the script (ERROR/INFO/DEBUG)'
required: false
defaults:
run:
shell: bash
jobs:
create_release:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
with:
path: wlan-cloud-ucentral-deploy
- name: Install system dependencies
run: |
pip3 install yq
helm plugin install https://github.com/databus23/helm-diff
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
- name: Run release creation script
working-directory: wlan-cloud-ucentral-deploy/.github/git-release-tool
run: |
export RELEASE_VERSION=${{ github.event.inputs.release_version }}
export TAG_TYPE=${{ github.event.inputs.tag_type }}
export GIT_PUSH_CONFIRMED=${{ github.event.inputs.push_confirm }}
export LOG_VERBOSITY=${{ github.event.inputs.log_level }}
mkdir -p ~/.ssh
chmod -R 700 ~/.ssh
ssh-keyscan -H github.com >> ~/.ssh/known_hosts
echo https://tip-automation:${{ secrets.GIT_PUSH_PAT }}@github.com > ~/.git-credentials
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
./git-release-tool.sh

View File

@@ -22,22 +22,22 @@ jobs:
path: wlan-cloud-ucentral-deploy
repository: Telecominfraproject/wlan-cloud-ucentral-deploy
# - name: Run pre-checks
# working-directory: wlan-cloud-ucentral-deploy/chart
# run: |
# pip3 install yq -q
# export CHART_VERSION=$(cat Chart.yaml | yq .version -r)
# export GIT_TAG=$(echo ${GITHUB_REF} | sed -e 's/refs\/tags\/[v]//' | tr '/' '-')
# if [ "$CHART_VERSION" != "$GIT_TAG" ]; then
# echo "Chart version in Chart.yaml ($CHART_VERSION) is different from Git tag ($GIT_TAG)";
# exit 1
# fi
#
# if [ "$(cat Chart.yaml | yq '.dependencies[].repository' -r | grep -E 'ref=(main|master)' | wc -l)" != "0" ]; then
# echo "Some of the dependencies does not have a fixed version set. List of affected dependencies:";
# cat Chart.yaml | yq '.dependencies[].repository' -r | grep -E 'ref=(main|master)';
# exit 1
# fi
- name: Run pre-checks
working-directory: wlan-cloud-ucentral-deploy/chart
run: |
pip3 install yq -q
export CHART_VERSION=$(cat Chart.yaml | yq .version -r)
export GIT_TAG=$(echo ${GITHUB_REF} | sed -e 's/refs\/tags\/[v]//' | tr '/' '-')
if [ "$CHART_VERSION" != "$GIT_TAG" ]; then
echo "Chart version in Chart.yaml ($CHART_VERSION) is different from Git tag ($GIT_TAG)";
exit 1
fi
#if [ "$(cat Chart.yaml | yq '.dependencies[].repository' -r | grep -E 'ref=(main|master)' | wc -l)" != "0" ]; then
# echo "Some of the dependencies does not have a fixed version set. List of affected dependencies:";
# cat Chart.yaml | yq '.dependencies[].repository' -r | grep -E 'ref=(main|master)';
# exit 1
#fi
- name: Build package
working-directory: wlan-cloud-ucentral-deploy/chart

2
.gitignore vendored
View File

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

33
chart/Chart.lock Normal file
View File

@@ -0,0 +1,33 @@
dependencies:
- name: owgw
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=v2.4.0
version: 0.1.0
- name: owsec
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralsec@helm?ref=v2.4.0
version: 0.1.0
- name: owfms
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralfms@helm?ref=v2.4.0
version: 0.1.0
- name: owprov
repository: git+https://github.com/Telecominfraproject/wlan-cloud-owprov@helm?ref=main
version: 0.1.0
- name: owgwui
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui@helm?ref=v2.4.0
version: 0.1.0
- name: owprovui
repository: git+https://github.com/Telecominfraproject/wlan-cloud-owprov-ui@helm?ref=main
version: 0.1.0
- name: rttys
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty@chart?ref=v0.1.0
version: 0.1.0
- name: kafka
repository: https://charts.bitnami.com/bitnami
version: 13.0.2
- name: owls
repository: git+https://github.com/Telecominfraproject/wlan-cloud-owls@helm?ref=main
version: 0.1.0
- name: owlsui
repository: git+https://github.com/Telecominfraproject/wlan-cloud-owls-ui@helm?ref=master
version: 0.1.0
digest: sha256:3a71cf3bac846757ed3c60cce296c73c7ecdb31bef474126d4205053019f842e
generated: "2021-12-17T05:46:32.701924621+03:00"

View File

@@ -2,34 +2,28 @@ apiVersion: v2
name: openwifi
appVersion: "1.0"
description: A Helm chart for Kubernetes
version: 2.7.0-RC2
version: 2.4.1
dependencies:
- name: owgw
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=v2.7.0-RC2"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=v2.4.1"
version: 0.1.0
- name: owsec
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralsec@helm?ref=v2.7.0-RC2"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralsec@helm?ref=v2.4.1"
version: 0.1.0
- name: owfms
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralfms@helm?ref=v2.7.0-RC2"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralfms@helm?ref=v2.4.1"
version: 0.1.0
- name: owprov
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov@helm?ref=v2.7.0-RC2"
version: 0.1.0
- name: owanalytics
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-analytics@helm?ref=v2.7.0-RC2"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov@helm?ref=main"
version: 0.1.0
- name: owgwui
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui@helm?ref=v2.7.0-RC2"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui@helm?ref=v2.4.0"
version: 0.1.0
- name: owprovui
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov-ui@helm?ref=v2.7.0-RC2"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov-ui@helm?ref=main"
version: 0.1.0
- name: owsub
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-userportal@helm?ref=v2.7.0-RC2"
version: 0.1.0
- name: owrrm
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-rrm@helm?ref=v2.7.0-RC2"
- name: rttys
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty@chart?ref=v0.1.0"
version: 0.1.0
- name: kafka
repository: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
@@ -46,7 +40,3 @@ dependencies:
repository: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
version: 0.2.21
condition: haproxy.enabled
- name: postgresql-ha
repository: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
version: 8.6.13
condition: postgresql-ha.enabled

View File

@@ -7,7 +7,6 @@ This Helm chart helps to deploy OpenWIFI Cloud SDK with all required dependencie
[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
$ helm install .
```
@@ -21,35 +20,23 @@ Current dependencies may be found in [chart definition](Chart.yaml) and list wil
## Installing the Chart
There are multiple ways to install this chart. Described commands will deploy the OpenWIFI Cloud SDK on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that will be overwritten above default values from dependent charts.
### Installation using local git repo
To install the chart from local git repo with the release name `my-release` you need to first update dependencies as it is required with dependencies deployed by helm-git:
To install the chart with the release name `my-release`:
```bash
$ helm dependency update
$ helm install .
$ helm install --name my-release git+https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/@chart?ref=main
```
### Installation using remote chart
The command deploys the OpenWIFI Cloud SDK on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that will be overwritten above default values from dependent charts.
To install the chart with the release name `my-release` you need to first update dependencies as it is required with dependencies deployed by helm-git:
> **Tip**: List all releases using `helm list`
If you need to update your release, it could be required to update your helm charts dependencies before installation:
```bash
$ helm install --name my-release git+https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy@chart/openwifi-0.1.0.tgz?ref=main
helm dependency update
```
### Installation using external repo
This approach requires adding external helm repo and new versions are build for every [release](https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/releases):
```bash
helm repo add tip-wlan https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
helm install my-release tip-wlan/openwifi
```
## Required password changing on the first startup
#### 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.
@@ -75,14 +62,7 @@ The following table lists the configurable parameters that overrides microservic
| `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'` |
| `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'` |
| `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'` |
| `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'` |
@@ -90,21 +70,6 @@ The following table lists the configurable parameters that overrides microservic
| `kafka.image.repository` | string | Kafka Docker image repository | `'bitnami/kafka'` |
| `kafka.image.tag` | string | Kafka Docker image tag | `'2.8.0-debian-10-r43'` |
| `kafka.minBrokerId` | number | Sets Kafka minimal broker ID (useful for multi-node Kafka installations) | `100` |
| `clustersysteminfo.enabled` | boolean | Enables post-install check that makes sure that all services are working correctly using systeminfo RESTAPI method | `false` |
| `clustersysteminfo.delay` | integer | Number of seconds to delay clustersysteminfo execution | `0` |
| `clustersysteminfo.public_env_variables` | hash | Map of public environment variables that will be passed to the script (required for configuration) | |
| `clustersysteminfo.secret_env_variables` | hash | Map of secret environment variables that will be passed to the script (for example, password) | |
| `clustersysteminfo.activeDeadlineSeconds` | integer | Number of seconds that are allowed for job to run before failing with Dealine Exceeded error | `2400` |
| `clustersysteminfo.backoffLimit` | integer | Number of jobs retries before job failure | `5` |
| `owls.enabled` | boolean | Install OpenWIFI Load Simulator in the release | `false` |
| `owls.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Load Simulator to use Kafka for communication | `'true'` |
| `owls.configProperties."openwifi\.kafka\.brokerlist"` | string | Sets up Kafka broker list for OpenWIFI Load Simulator to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owlsui.enabled` | boolean | Install OpenWIFI Load Simulator Web UI in the release | `false` |
| `haproxy.enabled` | boolean | Install HAproxy as a unified TCP proxy for services | `true` |
| `haproxy.replicaCount` | Integer | Amount of HAproxy pods to start | `3` |
| `restapiCerts.enabled` | boolean | Enable generation of self-signed certificates for REST API private endpoints (see details below) | `false` |
| `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 subcharts with priority to values you'll pass.
@@ -125,84 +90,3 @@ $ helm install --name my-release -f values.yaml .
```
> **Tip**: You can use the default [values.yaml](values.yaml) as a base for customization.
## Optional features
Some features of the SDK are not enabled by default, but you may enable them by changing your values file. Below you may find information about supported features and values that may be used as a base to enable these changes. As an example of used values you may check values files in [wlan-testing](https://github.com/Telecominfraproject/wlan-testing/tree/master/helm/ucentral) repository that are used for different automated testing pipelines.
If you want to enable different features, you may try passing additional values files using `-f` flag during `helm install/upgrade` commands.
### Cluster systeminfo check
By setting `clusterinfo.enabled` to `true` you may enable job on post-install/post-upgrade step that will do the following:
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 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)
3. clusterinfo.secret_env_variables.OWSEC_DEFAULT_PASSWORD - default password stored in OWSEC configuration that is required for initial password change
4. clusterinfo.secret_env_variables.OWSEC_NEW_PASSWORD - new password that should be set instead of default OWSEC password. It is set only once, then used all the time. Password must comply https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/#authenticationvalidationexpression
If you are interested in script itself, see [script](https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/blob/main/chart/docker/clustersysteminfo).
You may see example values to enable this feature in [values.enable-clustersysteminfo.yaml](./feature-values/values.enable-clustersysteminfo.yaml).
### Load simulation
Chart also allows to install [OWLS](https://github.com/Telecominfraproject/wlan-cloud-owls) and [OWLS-UI](https://github.com/Telecominfraproject/wlan-cloud-owls-ui) alongside your installation if you are interested in load testing your installation. See services repositories for available options and configuration details.
You may see example values to enable this feature in [values.enable-owls.yaml](./feature-values/values.enable-owls.yaml).
### HAproxy
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).
### OWGW unsafe sysctls
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:
```
--allowed-unsafe-sysctls net.ipv4.tcp_keepalive_intvl,net.ipv4.tcp_keepalive_probes,net.ipv4.tcp_keepalive_time
```
After this change you may pass additional parameters to OWGW helm chart. You may see example values in [values.owgw-unsafe-sysctl.yaml](./feature-values/values.owgw-unsafe-sysctl.yaml)
### Private REST API cert-manager managed certificates
All services have 2 REST API endpoints - private and public one. Private endpoint is used for inter-service communication and should not be exposed to the world, but since it also requires TLS in order to work correctly, additional optional logic was implemented that allows to manage TLS certificates for such endpoints to be managed by [cert-manager](https://github.com/jetstack/cert-manager). In order to activate this feature following steps are required:
0. Install and configure [cert-manager](https://cert-manager.io/docs/) in your cluster
1. Enable option by setting `restapiCerts.enabled`
2. If you have a different Kubernetes cluster domain, adapt `restapiCerts.clusterDomain` to your cluster domain
3. Add additional parameters for services in order to mount certificates secrets in pods, use certificates by service and add public environment variable that will add cert-manager managed CA certificate to pod's trusted chain (see [OWGW docker-entrypoint.sh](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/master/docker-entrypoint.sh) as example of how it is done)
You may see example values to enable this feature in [values.restapi-certmanager-certs.yaml](./feature-values/values.restapi-certmanager-certs.yaml).
### Unsecure REST API endpoints
If you want, you may use configuration property `openwifi.security.restapi.disable=true` in order to disable TLS requirements on REST API endpoints which basically only requires OWGW Websocket TLS certificate in order to deploy the whole environment. If you will pass certificates into the container they will be ignored.
You may see example values to enable this feature in [values.restapi-disable-tls.yaml](./feature-values/values.restapi-disable-tls.yaml).
## 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 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.
You may see example values for this environment in [values.aws.yaml](./environment-values/values.aws.yaml).

View File

@@ -40,24 +40,6 @@ RUN git clone https://github.com/Telecominfraproject/wlan-cloud-owprov.git owpro
&& cp owprov/test_scripts/curl/cli owprov_cli \
&& rm -rf owprov
# OWAnalytics
ARG OWANALYTICS_VERSION=main
RUN git clone https://github.com/Telecominfraproject/wlan-cloud-analytics.git owanalytics \
&& cd owanalytics \
&& git checkout $OWANALYTICS_VERSION \
&& cd /cli \
&& cp owanalytics/test_scripts/curl/cli owanalytics_cli \
&& rm -rf owanalytics
# OWSub
ARG OWSUB_VERSION=main
RUN git clone https://github.com/Telecominfraproject/wlan-cloud-userportal.git owsub \
&& cd owsub \
&& git checkout $OWSUB_VERSION \
&& cd /cli \
&& cp owsub/test_scripts/curl/cli owsub_cli \
&& rm -rf owsub
COPY clustersysteminfo clustersysteminfo
COPY change_credentials change_credentials

View File

@@ -38,20 +38,23 @@ do
sleep 5
done
if [[ "$ONLY_CHANGE_CREDENTIALS" == "true" ]]; then
echo "Flag ONLY_CHANGE_CREDENTIALS was set to true, exiting without services checks";
exit 0
fi
if [[ "${CHANGE_CHECK_RETRIES}" -eq "0" ]]
then
echo "Run out of retries to change/check login credentials"
exit 3
fi
# Prepare security credentials for cli usage
export OWSEC_USERNAME=${OWSEC_DEFAULT_USERNAME}
export OWSEC_PASSWORD=${OWSEC_NEW_PASSWORD}
# Adapt scripts for the security credentials
# -> Username
sed '/^username/s/username=.*/username="'$OWSEC_DEFAULT_USERNAME'"/' owsec_cli -i
sed '/^username/s/username=.*/username="'$OWSEC_DEFAULT_USERNAME'"/' owgw_cli -i
sed '/^username/s/username=.*/username="'$OWSEC_DEFAULT_USERNAME'"/' owfms_cli -i
sed '/^username/s/username=.*/username="'$OWSEC_DEFAULT_USERNAME'"/' owprov_cli -i
# -> Password
sed '/^password/s/password=.*/password="'$OWSEC_NEW_PASSWORD'"/' owsec_cli -i
sed '/^password/s/password=.*/password="'$OWSEC_NEW_PASSWORD'"/' owgw_cli -i
sed '/^password/s/password=.*/password="'$OWSEC_NEW_PASSWORD'"/' owfms_cli -i
sed '/^password/s/password=.*/password="'$OWSEC_NEW_PASSWORD'"/' owprov_cli -i
echo "Running systeminfo checks for all components until all of them are available OR check tries are exausted ($CHECK_RETRIES)"
exit_code_sum=1
@@ -94,24 +97,6 @@ do
let "exit_code_sum+=$(grep ErrorCode result.json | wc -l)"
sleep 1
./owanalytics_cli systeminfo
let "exit_code_sum+=$?"
if [[ ! -s result.json ]]
then
let "exit_code_sum+=1"
fi
let "exit_code_sum+=$(grep ErrorCode result.json | wc -l)"
sleep 1
./owsub_cli systeminfo
let "exit_code_sum+=$?"
if [[ ! -s result.json ]]
then
let "exit_code_sum+=1"
fi
let "exit_code_sum+=$(grep ErrorCode result.json | wc -l)"
sleep 1
let "CHECK_RETRIES-=1"
echo "Exit code sum: $exit_code_sum"
echo "Left retries: $CHECK_RETRIES"

View File

@@ -3,46 +3,40 @@ set -e
# Usage function
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 "- OWRRM_VERSION - OpenWIFI radio resource management service (RRM) 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;
echo;
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";
echo;
echo "Required environment variables:"
echo;
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')";
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";
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)";
echo;
echo "- VALUES_FILE_LOCATION - path to file with override values that may be used for deployment";
echo "- RTTY_TOKEN - token to be used for rttys and OpenWIFI Gateway for remote tty sessions";
echo "- OWGW_AUTH_USERNAME - username to be used for requests to OpenWIFI Security";
echo "- OWGW_AUTH_PASSWORD - hashed password for OpenWIFI Security (details on this may be found in https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/#authenticationdefaultpassword)";
echo "- OWFMS_S3_SECRET - secret key that is used for OpenWIFI Firmware access to firmwares S3 bucket";
echo "- OWFMS_S3_KEY - access key that is used for OpenWIFI Firmware access to firmwares S3 bucket";
echo "- OWSEC_NEW_PASSWORD - password that should be set to default user instead of default password from properties";
echo "- CERT_LOCATION - path to certificate in PEM format that will be used for securing all endpoint in all services";
echo "- KEY_LOCATION - path to private key in PEM format that will be used for securing all endpoint in all services";
echo;
echo "Following environmnet variables may be passed, but will be ignored if CHART_VERSION is set to release (i.e. v2.4.0):"
echo;
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)";
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)";
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)";
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)";
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)";
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)";
echo;
echo "Optional environment variables:"
echo;
echo "- EXTRA_VALUES - extra values that should be passed to Helm deployment separated by comma (,)"
echo "- DEVICE_CERT_LOCATION - path to certificate in PEM format that will be used for load simulator";
echo "- DEVICE_KEY_LOCATION - path to private key in PEM format that will be used for load simulator";
echo "- USE_SEPARATE_OWGW_LB - flag that should change split external DNS for OWGW and other services"
}
# Global variables
@@ -61,39 +55,34 @@ check_if_chart_version_is_release() {
# 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
[ -z ${DEPLOY_METHOD+x} ] && echo "DEPLOY_METHOD is unset" && usage && exit 1
[ -z ${CHART_VERSION+x} ] && echo "CHART_VERSION is unset" && usage && exit 1
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
[ -z ${OWRRM_VERSION+x} ] && echo "OWRRM_VERSION is unset" >&2 && usage && exit 1
[ -z ${OWGW_VERSION+x} ] && echo "OWGW_VERSION is unset" && usage && exit 1
[ -z ${OWGWUI_VERSION+x} ] && echo "OWGWUI_VERSION is unset" && usage && exit 1
[ -z ${OWSEC_VERSION+x} ] && echo "OWSEC_VERSION is unset" && usage && exit 1
[ -z ${OWFMS_VERSION+x} ] && echo "OWFMS_VERSION is unset" && usage && exit 1
[ -z ${OWPROV_VERSION+x} ] && echo "OWPROV_VERSION is unset" && usage && exit 1
[ -z ${OWPROVUI_VERSION+x} ] && echo "OWPROVUI_VERSION is unset" && usage && exit 1
fi
## Environment specifics
[ -z ${NAMESPACE+x} ] && echo "NAMESPACE is unset" >&2 && usage && exit 1
[ -z ${NAMESPACE+x} ] && echo "NAMESPACE is unset" && usage && exit 1
## Variables specifics
[ -z ${VALUES_FILE_LOCATION+x} ] && echo "VALUES_FILE_LOCATION is unset" >&2 && usage && exit 1
[ -z ${OWGW_AUTH_USERNAME+x} ] && echo "OWGW_AUTH_USERNAME is unset" >&2 && usage && exit 1
[ -z ${OWGW_AUTH_PASSWORD+x} ] && echo "OWGW_AUTH_PASSWORD is unset" >&2 && usage && exit 1
[ -z ${OWFMS_S3_SECRET+x} ] && echo "OWFMS_S3_SECRET is unset" >&2 && usage && exit 1
[ -z ${OWFMS_S3_KEY+x} ] && echo "OWFMS_S3_KEY is unset" >&2 && usage && exit 1
[ -z ${OWSEC_NEW_PASSWORD+x} ] && echo "OWSEC_NEW_PASSWORD is unset" >&2 && usage && exit 1
[ -z ${CERT_LOCATION+x} ] && echo "CERT_LOCATION is unset" >&2 && usage && exit 1
[ -z ${KEY_LOCATION+x} ] && echo "KEY_LOCATION is unset" >&2 && usage && exit 1
[ -z ${VALUES_FILE_LOCATION+x} ] && echo "VALUES_FILE_LOCATION is unset" && usage && exit 1
[ -z ${RTTY_TOKEN+x} ] && echo "RTTY_TOKEN is unset" && usage && exit 1
[ -z ${OWGW_AUTH_USERNAME+x} ] && echo "OWGW_AUTH_USERNAME is unset" && usage && exit 1
[ -z ${OWGW_AUTH_PASSWORD+x} ] && echo "OWGW_AUTH_PASSWORD is unset" && usage && exit 1
[ -z ${OWFMS_S3_SECRET+x} ] && echo "OWFMS_S3_SECRET is unset" && usage && exit 1
[ -z ${OWFMS_S3_KEY+x} ] && echo "OWFMS_S3_KEY is unset" && usage && exit 1
[ -z ${OWSEC_NEW_PASSWORD+x} ] && echo "OWSEC_NEW_PASSWORD is unset" && usage && exit 1
[ -z ${CERT_LOCATION+x} ] && echo "CERT_LOCATION is unset" && usage && exit 1
[ -z ${KEY_LOCATION+x} ] && echo "KEY_LOCATION is unset" && usage && exit 1
[ -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
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"
# Transform some environment variables
export OWGW_VERSION_TAG=$(echo ${OWGW_VERSION} | tr '/' '-')
@@ -102,12 +91,9 @@ export OWSEC_VERSION_TAG=$(echo ${OWSEC_VERSION} | tr '/' '-')
export OWFMS_VERSION_TAG=$(echo ${OWFMS_VERSION} | tr '/' '-')
export OWPROV_VERSION_TAG=$(echo ${OWPROV_VERSION} | tr '/' '-')
export OWPROVUI_VERSION_TAG=$(echo ${OWPROVUI_VERSION} | tr '/' '-')
export OWANALYTICS_VERSION_TAG=$(echo ${OWANALYTICS_VERSION} | tr '/' '-')
export OWSUB_VERSION_TAG=$(echo ${OWSUB_VERSION} | tr '/' '-')
export OWRRM_VERSION_TAG=$(echo ${OWRRM_VERSION} | tr '/' '-')
# Debug get bash version
bash --version >&2
bash --version > /dev/stderr
# Check deployment method that's required for this environment
helm plugin install https://github.com/databus23/helm-diff || true
@@ -125,9 +111,6 @@ if [[ "$DEPLOY_METHOD" == "git" ]]; then
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
sed -i '/wlan-cloud-rrm@/s/ref=.*/ref='${OWRRM_VERSION}'\"/g' Chart.yaml
fi
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
@@ -139,7 +122,7 @@ else
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"
else
echo "Deploy method is not correct: $DEPLOY_METHOD. Valid value - git or bundle" >&2
echo "Deploy method is not correct: $DEPLOY_METHOD. Valid value - git or bundle"
exit 1
fi
fi
@@ -156,10 +139,10 @@ for EXTRA_VALUE in ${EXTRA_VALUES_SPLITTED[*]}; do
done
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 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\,rtty-${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}.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 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\,rtty-${NAMESPACE}.cicd.lab.wlan.tip.build"
export OWGW_SERVICE_DNS_RECORDS=""
fi
@@ -169,27 +152,23 @@ helm upgrade --install --create-namespace --wait --timeout 60m \
${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."rtty\.server"=rtty-${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\.private"=https://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.configProperties."rtty\.token"=${RTTY_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\.private"=https://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\.private"=https://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 \
@@ -197,35 +176,23 @@ helm upgrade --install --create-namespace --wait --timeout 60m \
--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\.private"=https://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 rttys.config.token=${RTTY_TOKEN} \
--set rttys.services.rttys.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=rtty-${NAMESPACE}.cicd.lab.wlan.tip.build \
--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\.private"=https://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 owrrm.public_env_variables.SERVICECONFIG_PUBLICENDPOINT=https://rrm-${NAMESPACE}.cicd.lab.wlan.tip.build:16789 \
--set owrrm.services.owrrm.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=rrm-${NAMESPACE}.cicd.lab.wlan.tip.build \
--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[*]} \
@@ -233,6 +200,8 @@ helm upgrade --install --create-namespace --wait --timeout 60m \
--set-file owgw.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owgw.certs."websocket-cert\.pem"=$CERT_LOCATION \
--set-file owgw.certs."websocket-key\.pem"=$KEY_LOCATION \
--set-file rttys.certs."restapi-cert\.pem"=$CERT_LOCATION \
--set-file rttys.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owsec.certs."restapi-cert\.pem"=$CERT_LOCATION \
--set-file owsec.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owfms.certs."restapi-cert\.pem"=$CERT_LOCATION \
@@ -243,8 +212,4 @@ helm upgrade --install --create-namespace --wait --timeout 60m \
--set-file owls.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owls.certs."device-cert\.pem"=$DEVICE_CERT_LOCATION \
--set-file owls.certs."device-key\.pem"=$DEVICE_KEY_LOCATION \
--set-file owanalytics.certs."restapi-cert\.pem"=$CERT_LOCATION \
--set-file owanalytics.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owsub.certs."restapi-cert\.pem"=$CERT_LOCATION \
--set-file owsub.certs."restapi-key\.pem"=$KEY_LOCATION \
tip-openwifi $DEPLOY_SOURCE

View File

@@ -1,106 +0,0 @@
# TODO adapt config for your environments - change FQDNs, certificates and security credentials
owgw:
configProperties: # TODO change FQDNs
openwifi.fileuploader.host.0.name: gw.cicd.lab.wlan.tip.build
openwifi.system.uri.public: https://gw.cicd.lab.wlan.tip.build:16002
openwifi.system.uri.private: https://gw.cicd.lab.wlan.tip.build:17002
openwifi.system.uri.ui: https://webui.cicd.lab.wlan.tip.build
rtty.server: rtty.cicd.lab.wlan.tip.build
owgwui:
services:
owgwui:
type: NodePort
ingresses:
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: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
paths:
- path: /*
serviceName: owgwui
servicePort: http
public_env_variables:
DEFAULT_UCENTRALSEC_URL: https://sec.cicd.lab.wlan.tip.build:16001 # TODO change to OWSEC RESTAPI url
owsec:
configProperties: # TODO change FQDNs and credentials
authentication.default.username: tip@ucentral.com
authentication.default.password: TOFILL # TODO change password to default hashed password (see OWSEC readme for details)
openwifi.system.uri.public: https://sec.cicd.lab.wlan.tip.build:16001
openwifi.system.uri.private: https://sec.cicd.lab.wlan.tip.build:17001
openwifi.system.uri.ui: https://webui.cicd.lab.wlan.tip.build
owfms:
configProperties: # TODO change FQDNs and credentials
s3.key: TOFILL # TODO change these values to S3 credentials to get firmwares from bucket
s3.secret: TOFILL
# TODO uncomment and change these values if you are using your own S3 bucket with firmwares
#s3.bucketname: ucentral-ap-firmware
#s3.region: us-east-1
#s3.bucket.uri: ucentral-ap-firmware.s3.amazonaws.com
openwifi.system.uri.public: https://fms.cicd.lab.wlan.tip.build:16004
openwifi.system.uri.private: https://fms.cicd.lab.wlan.tip.build:17004
openwifi.system.uri.ui: https://webui.cicd.lab.wlan.tip.build
owprov:
configProperties: # TODO change FQDNs
openwifi.system.uri.public: https://prov.cicd.lab.wlan.tip.build:16005
openwifi.system.uri.private: https://prov.cicd.lab.wlan.tip.build:17005
openwifi.system.uri.ui: https://webui.cicd.lab.wlan.tip.build
owprovui:
services:
owprovui:
type: NodePort
ingresses:
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: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
paths:
- path: /*
serviceName: owprovui
servicePort: http
public_env_variables:
REACT_APP_UCENTRALSEC_URL: https://sec.cicd.lab.wlan.tip.build:16001 # TODO change to OWSEC RESTAPI url
owsub:
configProperties: # TODO change FQDNs
openwifi.system.uri.public: https://sub.cicd.lab.wlan.tip.build:16007
openwifi.system.uri.private: https://sub.cicd.lab.wlan.tip.build:17007
openwifi.system.uri.ui: https://webui.cicd.lab.wlan.tip.build
owanalytics:
configProperties: # TODO change FQDNs
openwifi.system.uri.public: https://analytics.cicd.lab.wlan.tip.build:16009
openwifi.system.uri.private: https://analytics.cicd.lab.wlan.tip.build:17009
openwifi.system.uri.ui: https://webui.cicd.lab.wlan.tip.build
haproxy:
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-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,rrm.cicd.lab.wlan.tip.build" # TODO change FQDNs

View File

@@ -1,29 +0,0 @@
# NOTE: using of this values files will require you to use http schema in 'openwifi.system.uri.private' (and maybe 'openwifi.system.uri.public') configuration properties (i.e. http://owgw-owgw:17002)
owgw:
configProperties:
openwifi.security.restapi.disable: "true"
owsec:
configProperties:
openwifi.security.restapi.disable: "true"
owfms:
configProperties:
openwifi.security.restapi.disable: "true"
owprov:
configProperties:
openwifi.security.restapi.disable: "true"
owanalytics:
configProperties:
openwifi.security.restapi.disable: "true"
owsub:
configProperties:
openwifi.security.restapi.disable: "true"
haproxy:
service:
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp

View File

@@ -8,130 +8,7 @@ owgw:
postgresql:
enabled: true
nameOverride: owgw-pgsql
fullnameOverride: owgw-pgsql
postgresqlDatabase: owgw
postgresqlUsername: owgw
postgresqlPassword: owgw
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
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
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
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:
storage.type: postgresql
storage.type.postgresql.host: owanalytics-pgsql
storage.type.postgresql.database: owanalytics
storage.type.postgresql.username: owanalytics
storage.type.postgresql.password: owanalytics
postgresql:
enabled: true
nameOverride: owanalytics-pgsql
fullnameOverride: owanalytics-pgsql
postgresqlDatabase: owanalytics
postgresqlUsername: owanalytics
postgresqlPassword: owanalytics
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

@@ -22,6 +22,18 @@ owsec:
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"
rttys:
services:
rttys:
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: "5914"
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: "5912,5913"
owfms:
services:
owfms:
@@ -46,29 +58,5 @@ owprov:
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"
owanalytics:
services:
owanalytics:
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: "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"
owsub:
services:
owsub:
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: "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"
haproxy:
enabled: false

View File

@@ -1,74 +0,0 @@
owgw:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: pgsql-pgpool
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-pgpool
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-pgpool
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-pgpool
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-pgpool
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-pgpool
storage.type.postgresql.database: owsub
storage.type.postgresql.username: owsub
storage.type.postgresql.password: owsub
postgresql-ha:
enabled: true
initDbScriptSecret:
enabled: true
pgpool:
adminPassword: admin
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi
initdbScriptsSecret: tip-openwifi-initdb-scripts
postgresql:
replicaCount: 1 # TODO change after tests
password: password
postgresPassword: postgres
repmgrPassword: repmgr
resources:
requests:
cpu: 250m
memory: 1024Mi
limits:
cpu: 250m
memory: 1024Mi

View File

@@ -30,22 +30,6 @@ owsec:
operator: "Exists"
effect: "NoSchedule"
postgresql:
primary:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
readReplicas:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owgwui:
nodeSelector:
env: tests
@@ -62,22 +46,6 @@ owfms:
operator: "Exists"
effect: "NoSchedule"
postgresql:
primary:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
readReplicas:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owprov:
nodeSelector:
env: tests
@@ -86,22 +54,6 @@ owprov:
operator: "Exists"
effect: "NoSchedule"
postgresql:
primary:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
readReplicas:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owprovui:
nodeSelector:
env: tests
@@ -134,6 +86,14 @@ owls:
operator: "Exists"
effect: "NoSchedule"
rttys:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owlsui:
nodeSelector:
env: tests
@@ -142,67 +102,6 @@ owlsui:
operator: "Exists"
effect: "NoSchedule"
owanalytics:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
postgresql:
primary:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
readReplicas:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owsub:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
postgresql:
primary:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
readReplicas:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owrrm:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
mysql:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
kafka:
nodeSelector:
env: tests
@@ -217,19 +116,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

@@ -5,17 +5,14 @@ owgw:
readiness:
exec:
command: ["true"]
failureThreshold: 5
readiness:
failureThreshold: 5
resources:
requests:
cpu: 2000m
cpu: 100m
memory: 100Mi
limits:
cpu: 2000m
memory: 500Mi
cpu: 100m
memory: 200Mi
securityContext:
sysctls:
@@ -159,7 +156,6 @@ owsec:
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
mailer.hostname: email-smtp.us-east-2.amazonaws.com
volumes:
owsec:
@@ -193,11 +189,19 @@ owsec:
secret:
secretName: {{ include "owsec.fullname" . }}-owsec-restapi-tls
owgwui:
services:
owgwui:
type: NodePort
rttys:
resources:
requests:
cpu: 10m
memory: 15Mi
limits:
cpu: 100m
memory: 100Mi
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
owgwui:
ingresses:
default:
enabled: true
@@ -235,10 +239,10 @@ owfms:
resources:
requests:
cpu: 10m
memory: 80Mi
memory: 30Mi
limits:
cpu: 100m
memory: 160Mi
cpu: 50m
memory: 80Mi
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
@@ -398,10 +402,6 @@ owprov:
secretName: {{ include "owprov.fullname" . }}-owprov-restapi-tls
owprovui:
services:
owprovui:
type: NodePort
ingresses:
default:
enabled: true
@@ -420,235 +420,6 @@ owprovui:
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
owanalytics:
checks:
owanalytics:
readiness:
exec:
command: ["true"]
resources:
requests:
cpu: 10m
memory: 100Mi
limits:
cpu: 100m
memory: 500Mi
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
certs:
restapi-ca.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"
configProperties:
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: {{ include "owanalytics.fullname" . }}-certs
- 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.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owanalytics.fullname" . }}-owanalytics-restapi-tls
owsub:
resources:
requests:
cpu: 10m
memory: 100Mi
limits:
cpu: 100m
memory: 500Mi
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
certs:
restapi-ca.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"
configProperties:
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: {{ include "owsub.fullname" . }}-certs
- 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.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owsub.fullname" . }}-owsub-restapi-tls
owrrm:
fullnameOverride: owrrm
services:
owrrm:
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: "16789"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
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: "16789,17007"
resources:
requests:
cpu: 1000m
memory: 2048Mi
limits:
cpu: 1000m
memory: 2048Mi
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
public_env_variables:
SELFSIGNED_CERTS: "true"
SERVICECONFIG_PRIVATEENDPOINT: http://owrrm-owrrm:16789
KAFKACONFIG_BOOTSTRAPSERVER: kafka:9092
DATABASECONFIG_SERVER: owrrm-mysql:3306
DATABASECONFIG_DBNAME: owrrm
DATABASECONFIG_DATARETENTIONINTERVALDAYS: "1"
secret_env_variables:
DATABASECONFIG_USER: root
DATABASECONFIG_PASSWORD: openwifi
volumes:
owrrm:
- name: persist
mountPath: /owrrm-data/
volumeDefinition: |
persistentVolumeClaim:
claimName: {{ template "owrrm.fullname" . }}-pvc
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owrrm.fullname" . }}-owrrm-restapi-tls
mysql:
enabled: true
fullnameOverride: "owrrm-mysql"
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
cpu: 100m
memory: 512Mi
kafka:
commonAnnotations:
@@ -682,20 +453,13 @@ clustersysteminfo:
delay: 60 # delaying to wait for AWS Route53 DNS propagation
haproxy:
resources:
requests:
cpu: 10m
memory: 20Mi
limits:
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-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-ssl-ports: "16004,17004,16002,16003,17002,16005,17005,16001,17001,5912,5913,16009"
service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
restapiCerts:

View File

@@ -1,27 +0,0 @@
owgw:
services:
owgw:
type: LoadBalancer
owsec:
services:
owsec:
type: LoadBalancer
rttys:
services:
rttys:
type: LoadBalancer
owfms:
services:
owfms:
type: LoadBalancer
owprov:
services:
owprov:
type: LoadBalancer
haproxy:
enabled: false

View File

@@ -1,15 +0,0 @@
clustersysteminfo:
enabled: true
delay: 0 # you may change this if you need to wait for DNS propogation or other things
public_env_variables:
OWSEC: owsec-owsec:16001
# Uncomment these options if you want to run systeminfo checks inside of cluster
#OWGW_OVERRIDE: owgw-owgw:16002
#OWFMS_OVERRIDE: owfms-owfms:16004
#OWPROV_OVERRIDE: owprov-owprov:16005
secret_env_variables:
OWSEC_DEFAULT_USERNAME: tip@ucentral.com
OWSEC_DEFAULT_PASSWORD: openwifi
OWSEC_NEW_PASSWORD: TOFILL # TODO adapt password to your new password with password policy in mind

View File

@@ -1,9 +0,0 @@
owgw:
configProperties:
simulatorid: 53494D020202 # This value should be set to serial number of certificate that was provided to OWLS
owls:
enabled: true
owlsui:
enabled: true

View File

@@ -1,12 +0,0 @@
owgw:
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"
podSecurityPolicy:
enabled: true

View File

@@ -1,271 +0,0 @@
owgw:
public_env_variables:
SELFSIGNED_CERTS: "true"
configProperties:
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: {{ include "owgw.fullname" . }}-certs
- 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.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owgw.fullname" . }}-owgw-restapi-tls
owsec:
public_env_variables:
SELFSIGNED_CERTS: "true"
configProperties:
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: {{ include "owsec.fullname" . }}-certs
- 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.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owsec.fullname" . }}-owsec-restapi-tls
owfms:
public_env_variables:
SELFSIGNED_CERTS: "true"
configProperties:
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: {{ include "owfms.fullname" . }}-certs
- 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.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owfms.fullname" . }}-owfms-restapi-tls
owprov:
public_env_variables:
SELFSIGNED_CERTS: "true"
configProperties:
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: {{ include "owprov.fullname" . }}-certs
- 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.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owprov.fullname" . }}-owprov-restapi-tls
owanalytics:
public_env_variables:
SELFSIGNED_CERTS: "true"
configProperties:
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: {{ include "owanalytics.fullname" . }}-certs
- 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.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owanalytics.fullname" . }}-owanalytics-restapi-tls
owsub:
public_env_variables:
SELFSIGNED_CERTS: "true"
configProperties:
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: {{ include "owsub.fullname" . }}-certs
- 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.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owsub.fullname" . }}-owsub-restapi-tls
restapiCerts:
enabled: true

View File

@@ -1,30 +0,0 @@
# NOTE: using of this values files will require you to use http schema in 'openwifi.system.uri.public' configuration properties (i.e. "openwifi.system.uri.public=http://owgw.openwifi.local:16002")
owgw:
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.private: http://owsec-owsec:17002
owsec:
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.private: http://owsec-owsec:17001
owfms:
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.private: http://owsec-owsec:17004
owprov:
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.private: http://owsec-owsec:17005
owanalytics:
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.private: http://owsec-owsec:17009
owsub:
configProperties:
openwifi.security.restapi.disable: "true"
openwifi.system.uri.private: http://owsec-owsec:17006

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,52 +0,0 @@
{{- $root := . -}}
{{- if .Values.restapiCerts.enabled }}
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: selfsigned-issuer
spec:
selfSigned: {}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: ow-wildcard
spec:
secretName: ow-wildcard-tls
commonName: {{ .Release.Namespace }}.svc.{{ .Values.restapiCerts.clusterDomain }}
isCA: true
duration: 87600h
usages:
- server auth
- client auth
issuerRef:
name: selfsigned-issuer
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
name: ow-ca-issuer
spec:
ca:
secretName: ow-wildcard-tls
{{ range .Values.restapiCerts.services }}
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: {{ . }}-restapi
spec:
secretName: {{ . }}-restapi-tls
isCA: false
usages:
- server auth
- client auth
dnsNames:
- "{{ . }}"
- "{{ . }}.{{ $root.Release.Namespace }}.svc"
- "{{ . }}.{{ $root.Release.Namespace }}.svc.{{ $root.Values.restapiCerts.clusterDomain }}"
issuerRef:
name: ow-ca-issuer
{{- end }}
{{- end }}

View File

@@ -30,10 +30,6 @@ spec:
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
initContainers:
- name: delay
image: "alpine:latest"
command: ["/bin/sleep","{{ default 0 .Values.clustersysteminfo.delay }}"]
containers:
- name: clustersysteminfo-check
image: "{{ .Values.clustersysteminfo.images.clustersysteminfo.repository }}:{{ .Values.clustersysteminfo.images.clustersysteminfo.tag }}"

View File

@@ -1,16 +0,0 @@
{{- $root := . -}}
{{- if index .Values "postgresql-ha" "initDbScriptSecret" "enabled" }}
---
apiVersion: v1
metadata:
labels:
app.kuberentes.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 }}

View File

@@ -26,14 +26,6 @@ owfms:
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
@@ -46,23 +38,14 @@ owgwui:
owprovui:
fullnameOverride: owprovui
# OpenWIFI Subscription (https://github.com/Telecominfraproject/wlan-cloud-userportal/)
owsub:
fullnameOverride: owsub
# rttys (https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty)
rttys:
enabled: true
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
fullnameOverride: rttys
# OpenWIFI radio resource management (https://github.com/Telecominfraproject/wlan-cloud-rrm/)
owrrm:
fullnameOverride: owrrm
public_env_variables:
UCENTRALCONFIG_PRIVATEENDPOINT: http://owrrm-owrrm:17007
mysql:
enabled: true
config:
token: 96181c567b4d0d98c50f127230068fa8
# kafka (https://github.com/bitnami/charts/blob/master/bitnami/kafka/)
kafka:
@@ -83,12 +66,13 @@ kafka:
# clustersysteminfo check
clustersysteminfo:
enabled: false
delay: 0 # number of seconds to delay clustersysteminfo execution
fullnameOverride: clustersysteminfo
images:
clustersysteminfo:
repository: tip-tip-wlan-cloud-ucentral.jfrog.io/clustersysteminfo
tag: v2.7.0-RC2
tag: v2.4.1
pullPolicy: Always
# regcred:
# registry: tip-tip-wlan-cloud-ucentral.jfrog.io
@@ -115,7 +99,7 @@ clustersysteminfo:
public_env_variables:
FLAGS: "-s --connect-timeout 3"
OWSEC: owsec-owsec:16001
OWSEC: sec:16001
CHECK_RETRIES: 30
secret_env_variables:
@@ -145,7 +129,7 @@ owlsui:
# HAproxy (https://github.com/bitnami/charts/tree/master/bitnami/haproxy)
haproxy:
enabled: true
enabled: false
fullnameOverride: proxy
@@ -185,14 +169,6 @@ haproxy:
protocol: TCP
port: 17002
targetPort: owgwrestint
- name: owgwrttys
protocol: TCP
port: 5912
targetPort: owgwrttys
- name: owgwrttysview
protocol: TCP
port: 5913
targetPort: owgwrttysview
# owprov
- name: owprovrest
protocol: TCP
@@ -211,24 +187,19 @@ haproxy:
protocol: TCP
port: 17001
targetPort: owsecrestint
# owanalytics
- name: owanalyticsrest
# rttys
- name: rttysdev
protocol: TCP
port: 16009
targetPort: owanalyticsrest
- name: owanalyticsrint
port: 5912
targetPort: rttysdev
- name: rttysuser
protocol: TCP
port: 17009
targetPort: owanalyticsrint
# owsub
- name: owsubrest
port: 5913
targetPort: rttysuser
- name: rttysweb
protocol: TCP
port: 16006
targetPort: owsubrest
- name: owsubrint
protocol: TCP
port: 17006
targetPort: owsubrint
port: 5914
targetPort: rttysweb
containerPorts:
# healthcheck
@@ -248,10 +219,6 @@ haproxy:
containerPort: 16003
- name: owgwrestint
containerPort: 17002
- name: owgwrttys
containerPort: 5912
- name: owgwrttysview
containerPort: 5913
# owprov
- name: owprovrest
containerPort: 16005
@@ -262,16 +229,13 @@ haproxy:
containerPort: 16001
- name: owsecrestint
containerPort: 17001
# owanalytics
- name: owanalyticsrest
containerPort: 16009
- name: owanalyticsrint
containerPort: 17009
# owsub
- name: owsubrest
containerPort: 16006
- name: owsubrint
containerPort: 17006
# rttys
- name: rttysdev
containerPort: 5912
- name: rttysuser
containerPort: 5913
- name: rttysweb
containerPort: 5914
configuration: |
global
@@ -344,22 +308,6 @@ haproxy:
mode tcp
server svc_owgw_rest_internal owgw-owgw:17002
frontend front_owgw_rttys
bind :5912
mode tcp
default_backend back_owgw_rttys
backend back_owgw_rttys
mode tcp
server svc_owgw_rttys owgw-owgw:5912
frontend front_owgw_rttys_view
bind :5913
mode tcp
default_backend back_owgw_rttys_view
backend back_owgw_rttys_view
mode tcp
server svc_owgw_rttys_view owgw-owgw:5913
# owprov
frontend front_owprov_rest
bind :16005
@@ -394,66 +342,27 @@ haproxy:
mode tcp
server svc_owsec_rest_internal owsec-owsec:17001
# owanalytics
frontend front_owanalytics_rest
bind :16009
# rttys
frontend front_rttys_dev
bind :5912
mode tcp
default_backend back_owanalytics_rest
backend back_owanalytics_rest
default_backend back_rttys_dev
backend back_rttys_dev
mode tcp
server svc_owanalytics_rest owanalytics-owanalytics:16009
server svc_rttys_dev rttys-rttys:5912
frontend front_owanalytics_rest_internal
bind :17009
frontend front_rttys_user
bind :5913
mode tcp
default_backend back_owanalytics_rest_internal
backend back_owanalytics_rest_internal
default_backend back_rttys_user
backend back_rttys_user
mode tcp
server svc_owanalytics_rest_internal owanalytics-owanalytics:17009
server svc_rttys_user rttys-rttys:5913
# owsub
frontend front_owsub_rest
bind :16006
frontend front_rttys_web
bind :5914
mode tcp
default_backend back_owsub_rest
backend back_owsub_rest
default_backend back_rttys_web
backend back_rttys_web
mode tcp
server svc_owsub_rest owsub-owsub:16006
frontend front_owsub_rest_internal
bind :17006
mode tcp
default_backend back_owsub_rest_internal
backend back_owsub_rest_internal
mode tcp
server svc_owsub_rest_internal owsub-owsub:17006
# Cert-manager RESTAPI certs
restapiCerts:
enabled: false
services:
- owgw-owgw
- owsec-owsec
- owfms-owfms
- owprov-owprov
- owls-owls
- owanalytics-owanalytics
- owsub-owsub
- owrrm-owrrm
clusterDomain: cluster.local
postgresql-ha:
enabled: false
nameOverride: pgsql
fullnameOverride: pgsql
initDbScriptSecret:
enabled: false
services:
- owgw
- owsec
- owfms
- owprov
- owanalytics
- owsub
server svc_rttys_web rttys-rttys:5914

View File

@@ -1,19 +1,15 @@
# Image tags
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.7.0-RC2
OWGWUI_TAG=v2.7.0-RC2
OWSEC_TAG=v2.7.0-RC2
OWFMS_TAG=v2.7.0-RC2
OWPROV_TAG=v2.7.0-RC2
OWPROVUI_TAG=v2.7.0-RC2
OWANALYTICS_TAG=v2.7.0-RC2
OWSUB_TAG=v2.7.0-RC2
OWGW_TAG=v2.4.1
OWGWUI_TAG=v2.4.0
OWSEC_TAG=v2.4.1
OWFMS_TAG=v2.4.1
OWPROV_TAG=main
OWPROVUI_TAG=main
RTTYS_TAG=3.5.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=3.8
ZOOKEEPER_TAG=latest
POSTGRESQL_TAG=latest
MYSQL_TAG=latest
# NOTE currently OWRRM is only supported in LB installations
#OWRRM_TAG=v2.7.0-RC2
# Microservice root/config directories
OWGW_ROOT=/owgw-data
@@ -24,16 +20,9 @@ OWFMS_ROOT=/owfms-data
OWFMS_CONFIG=/owfms-data
OWPROV_ROOT=/owprov-data
OWPROV_CONFIG=/owprov-data
OWANALYTICS_ROOT=/owanalytics-data
OWANALYTICS_CONFIG=/owanalytics-data
OWSUB_ROOT=/owsub-data
OWSUB_CONFIG=/owsub-data
# Microservice hostnames
INTERNAL_OWGW_HOSTNAME=owgw.wlan.local
INTERNAL_OWSEC_HOSTNAME=owsec.wlan.local
INTERNAL_OWFMS_HOSTNAME=owfms.wlan.local
INTERNAL_OWPROV_HOSTNAME=owprov.wlan.local
INTERNAL_OWANALYTICS_HOSTNAME=owanalytics.wlan.local
INTERNAL_OWSUB_HOSTNAME=owsub.wlan.local
#INTERNAL_OWRRM_HOSTNAME=owrrm.wlan.local

View File

@@ -1,19 +1,16 @@
# Image tags
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.7.0-RC2
OWGWUI_TAG=v2.7.0-RC2
OWSEC_TAG=v2.7.0-RC2
OWFMS_TAG=v2.7.0-RC2
OWPROV_TAG=v2.7.0-RC2
OWPROVUI_TAG=v2.7.0-RC2
OWANALYTICS_TAG=v2.7.0-RC2
OWSUB_TAG=v2.7.0-RC2
OWRRM_TAG=v2.7.0-RC2
OWGW_TAG=v2.4.1
OWGWUI_TAG=v2.4.0
OWSEC_TAG=v2.4.1
OWFMS_TAG=v2.4.1
OWPROV_TAG=main
OWPROVUI_TAG=main
RTTYS_TAG=3.5.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=latest
ACMESH_TAG=latest
TRAEFIK_TAG=latest
MYSQL_TAG=latest
# Microservice root/config directories
OWGW_ROOT=/owgw-data
@@ -24,10 +21,6 @@ OWFMS_ROOT=/owfms-data
OWFMS_CONFIG=/owfms-data
OWPROV_ROOT=/owprov-data
OWPROV_CONFIG=/owprov-data
OWANALYTICS_ROOT=/owanalytics-data
OWANALYTICS_CONFIG=/owanalytics-data
OWSUB_ROOT=/owsub-data
OWSUB_CONFIG=/owsub-data
# Microservice hostnames
INTERNAL_OWGW_HOSTNAME=owgw.wlan.local
@@ -36,8 +29,12 @@ INTERNAL_OWSEC_HOSTNAME=owsec.wlan.local
INTERNAL_OWFMS_HOSTNAME=owfms.wlan.local
INTERNAL_OWPROV_HOSTNAME=owprov.wlan.local
INTERNAL_OWPROVUI_HOSTNAME=owprov-ui.wlan.local
INTERNAL_OWANALYTICS_HOSTNAME=owanalytics.wlan.local
INTERNAL_RTTYS_HOSTNAME=rttys.wlan.local
INTERNAL_OWSUB_HOSTNAME=owsub.wlan.local
INTERNAL_OWRRM_HOSTNAME=owrrm.wlan.local
SDKHOSTNAME=
OWGW_HOSTNAME=
OWGWUI_HOSTNAME=
OWGWFILEUPLOAD_HOSTNAME=
OWSEC_HOSTNAME=
OWFMS_HOSTNAME=
OWPROV_HOSTNAME=
OWPROVUI_HOSTNAME=
RTTYS_HOSTNAME=

View File

@@ -1,19 +1,16 @@
# Image tags
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.7.0-RC2
OWGWUI_TAG=v2.7.0-RC2
OWSEC_TAG=v2.7.0-RC2
OWFMS_TAG=v2.7.0-RC2
OWPROV_TAG=v2.7.0-RC2
OWPROVUI_TAG=v2.7.0-RC2
OWANALYTICS_TAG=v2.7.0-RC2
OWSUB_TAG=v2.7.0-RC2
OWRRM_TAG=v2.7.0-RC2
OWGW_TAG=v2.4.1
OWGWUI_TAG=v2.4.0
OWSEC_TAG=v2.4.1
OWFMS_TAG=v2.4.1
OWPROV_TAG=main
OWPROVUI_TAG=main
RTTYS_TAG=3.5.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=latest
ACMESH_TAG=latest
TRAEFIK_TAG=latest
MYSQL_TAG=latest
# Microservice root/config directories
OWGW_ROOT=/owgw-data
@@ -24,10 +21,6 @@ OWFMS_ROOT=/owfms-data
OWFMS_CONFIG=/owfms-data
OWPROV_ROOT=/owprov-data
OWPROV_CONFIG=/owprov-data
OWANALYTICS_ROOT=/owanalytics-data
OWANALYTICS_CONFIG=/owanalytics-data
OWSUB_ROOT=/owsub-data
OWSUB_CONFIG=/owsub-data
# Microservice hostnames
INTERNAL_OWGW_HOSTNAME=owgw.wlan.local
@@ -36,6 +29,4 @@ INTERNAL_OWSEC_HOSTNAME=owsec.wlan.local
INTERNAL_OWFMS_HOSTNAME=owfms.wlan.local
INTERNAL_OWPROV_HOSTNAME=owprov.wlan.local
INTERNAL_OWPROVUI_HOSTNAME=owprov-ui.wlan.local
INTERNAL_OWANALYTICS_HOSTNAME=owanalytics.wlan.local
INTERNAL_OWSUB_HOSTNAME=owsub.wlan.local
INTERNAL_OWRRM_HOSTNAME=owrrm.wlan.local
INTERNAL_RTTYS_HOSTNAME=rttys.wlan.local

View File

@@ -1,23 +1,21 @@
# 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`.
If you don't bind mount your own config files they 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 the microservice specific env files. For an explanation of the configuration properties please see the README in the respective microservice repository.
Be aware that the non-LB deployment exposes the generated config files on the host. So if you want to make configuration changes afterwards, please do them directly in the config files located in the microservice data directories.
#### 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.
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 or make use of the [Letsencrypt LB deployment](#lb-deployment-with-letsencrypt-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 except for the Letsencrypt LB deployment, where the service listens on the default `80/443` HTTP(S) ports.
### 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.
## Non-LB deployment with self-signed certificates
@@ -25,7 +23,7 @@ On the startup of owsec directories for wwwassets and mailer templates are creat
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.
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 and https://openwifi.wlan.local:16005.
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:
@@ -33,27 +31,24 @@ On the startup of owsec directories for wwwassets and mailer templates are creat
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.
⚠️**Note**: When deploying with self-signed certificates you can not make use of the trace functionality in the UI since the AP will throw a TLS error when uploading the trace to OWGW. Please use the Letsencrypt deployment or provide your own valid certificates if you want to use this function.
## 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`. |
| `INTERNAL_OWRRM_HOSTNAME` | Set this to your OWRRM hostname, for example `owrrm.example.com`. |
| 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`. |
### 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`. |
| `RTTY_SERVER` | Set this to your RTTY server hostname, for example `rttys.example.com`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://owgw-ui.example.com`. |
### owgw-ui.env
| Variable | Description |
@@ -62,37 +57,22 @@ export FLAGS="-s --cacert <your-wlan-cloud-ucentral-deploy-location>/docker-comp
### 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_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWSec REST API 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_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWFms REST API 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_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWProv REST API 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`. |
### owrrm.env
| Variable | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------------------- |
| `SERVICECONFIG_PRIVATEENDPOINT`, `SERVICECONFIG_PUBLICENDPOINT` | Set this to your OWRRM URL, for example https://owrrm.example.com:16789. |
| `DATABASECONFIG_PASSWORD` | Set this to a random and safe password. |
### mysql.env
| Variable | Description |
| ---------------- | ------------------------------------------------------------------------ |
| `MYSQL_PASSWORD` | Set this to the same value as `$DATABASECONFIG_PASSWORD` in `owrrm.env`. |
| Variable | Description |
| ------------------------- | -------------------------------------------------------------------------- |
| `DEFAULT_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
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.
@@ -131,102 +111,76 @@ export FLAGS="-s --cacert <your-wlan-cloud-ucentral-deploy-location>/docker-comp
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owprov` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owprov` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owprov` |
### owanalytics.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
| `STORAGE_TYPE` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_HOST` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owanalytics` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owanalytics` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owanalytics` |
### postgresql.env
| Variable | Value |
| --------------------------| ------------- |
| `POSTGRES_PASSWORD` | `postgres` |
| `POSTGRES_USER` | `postgres` |
| `OWGW_DB` | `owgw` |
| `OWGW_DB_USER` | `owgw` |
| `OWGW_DB_PASSWORD` | `owgw` |
| `OWSEC_DB` | `owsec` |
| `OWSEC_DB_USER` | `owsec` |
| `OWSEC_DB_PASSWORD` | `owsec` |
| `OWFMS_DB` | `owfms` |
| `OWFMS_DB_USER` | `owfms` |
| `OWFMS_DB_PASSWORD` | `owfms` |
| `OWPROV_DB` | `owprov` |
| `OWPROV_DB_USER` | `owprov` |
| `OWPROV_DB_PASSWORD` | `owprov` |
| `OWANALYTICS_DB` | `owanalytics` |
| `OWANALYTICS_DB_USER` | `owanalytics` |
| `OWANALYTICS_DB_PASSWORD` | `owanalytics` |
| `OWSUB_DB` | `owsub` |
| `OWSUB_DB_USER` | `owsub` |
| `OWSUB_DB_PASSWORD` | `owsub` |
| Variable | Value |
| -------------------- | ---------- |
| `POSTGRES_PASSWORD` | `postgres` |
| `POSTGRES_USER` | `postgres` |
| `OWGW_DB` | `owgw` |
| `OWGW_DB_USER` | `owgw` |
| `OWGW_DB_PASSWORD` | `owgw` |
| `OWSEC_DB` | `owsec` |
| `OWSEC_DB_USER` | `owsec` |
| `OWSEC_DB_PASSWORD` | `owsec` |
| `OWFMS_DB` | `owfms` |
| `OWFMS_DB_USER` | `owfms` |
| `OWFMS_DB_PASSWORD` | `owfms` |
| `OWPROV_DB` | `owprov` |
| `OWPROV_DB_USER` | `owprov` |
| `OWPROV_DB_PASSWORD` | `owprov` |
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 hostnames which you set for the microservices have 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 |
| ------------- | ---------------------------------------------------------------------------------------------------------- |
| `SDKHOSTNAME` | Set this to the public hostname you want to use for all microservices, for example `openwifi.example.com`. |
| Variable | Description |
| ------------------------- | -------------------------------------------------------------------------- |
| `OWGW_HOSTNAME` | Set this to your OWGW hostname, for example `owgw.example.com`. |
| `OWGWUI_HOSTNAME` | Set this to your OWGW-UI hostname, for example `owgw-ui.example.com`. |
| `OWGWFILEUPLOAD_HOSTNAME` | Set this to your OWGW fileupload hostname, for example `owgw.example.com`. |
| `OWSEC_HOSTNAME` | Set this to your OWSec hostname, for example `owsec.example.com`. |
| `OWFMS_HOSTNAME` | Set this to your OWFms hostname, for example `owfms.example.com`. |
| `OWPROV_HOSTNAME` | Set this to your OWProv hostname, for example `owprov.example.com`. |
| `OWPROVUI_HOSTNAME` | Set this to your OWProv-UI hostname, for example `owprov-ui.example.com`. |
| `RTTYS_HOSTNAME` | Set this to your RTTYS hostname, for example `rttys.example.com`. |
### owgw.env
| Variable | Description |
| ----------------------- | --------------------------------------------------------------------------------------- |
| `FILEUPLOADER_HOST_NAME` | Set this to your OWGW fileupload hostname, for example `openwifi.example.com`. |
| `FILEUPLOADER_URI` | Set this to your OWGW fileupload URL, for example `https://openwifi.example.com:16003`. |
| `SYSTEM_URI_PUBLIC` | Set this to your OWGW REST API URL, for example `https://openwifi.example.com:16002`. |
| `RTTY_SERVER` | Set this to your OWGW RTTYS hostname, for example `openwifi.example.com`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://openwifi.example.com`. |
| 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_PUBLIC` | Set this to your OWGW REST API URL, for example `https://owgw.example.com:16002`. |
| `RTTY_SERVER` | Set this to your public RTTY server hostname, for example `rttys.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_OWSEC_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://owsec.example.com:16001`. |
### owsec.env
| Variable | Description |
| ------------------- | ----------------------------------------------------------------------------- |
| `SYSTEM_URI_PUBLIC` | Set this to your OWSec URL, for example `https://openwifi.example.com:16001`. |
| `SYSTEM_URI_UI` | Set this to your OWGW-UI URL, for example `https://openwifi.example.com`. |
| Variable | Description |
| ------------------- | -------------------------------------------------------------------------- |
| `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_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`. |
| Variable | Description |
| ------------------- | -------------------------------------------------------------------------- |
| `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_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`. |
| Variable | Description |
| -------------------- | ---------------------------------------------------------------------------- |
| `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://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`. |
### owrrm.env
| Variable | Description |
| ---------------------------------------- | ------------------------------- |
| `SERVICECONFIG_PUBLICENDPOINT` | Set this to your OWRRM URL, for example https://openwifi.example.com:16789. |
| `DATABASECONFIG_PASSWORD` | Set this to a random and safe password. |
### mysql.env
| Variable | Description |
| ---------------- | ------------------------------------------------------------------------ |
| `MYSQL_PASSWORD` | Set this to the same value as `$DATABASECONFIG_PASSWORD` in `owrrm.env`. |
| Variable | Description |
| ------------------------- | -------------------------------------------------------------------------- |
| `DEFAULT_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
### 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,341 +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"
alias docker-compose-postgresql="docker-compose -f \
docker-compose.yml -f docker-compose.postgresql.yml"
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"
OWRRM_SERVICECONFIG_PRIVATEENDPOINT: !Sub "http://owrrm.wlan.local:17007"
OWRRM_SERVICECONFIG_PUBLICENDPOINT: !Sub "https://${SDKHostname}:16789"
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: "16789"
ToPort: "16789"
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

@@ -10,13 +10,12 @@ usage () {
echo;
echo "- DEFAULT_UCENTRALSEC_URL - public URL of the OWSec service"
echo "- SYSTEM_URI_UI - public URL of the OWGW-UI service"
echo "- RTTY_TOKEN - token to be used for rttys and OWGW for remote tty sessions"
echo;
# echo "- INTERNAL_OWGW_HOSTNAME - OWGW microservice hostname for Docker internal communication"
# echo "- INTERNAL_OWSEC_HOSTNAME - OWSec microservice hostname for Docker internal communication"
# echo "- INTERNAL_OWFMS_HOSTNAME - OWFms microservice hostname for Docker internal communication"
# echo "- INTERNAL_OWPROV_HOSTNAME - OWProv microservice hostname for Docker internal communication"
# echo "- INTERNAL_OWANALYTICS_HOSTNAME - OWAnalytics microservice hostname for Docker internal communication"
# echo "- INTERNAL_OWSUB_HOSTNAME - OWSub microservice hostname for Docker internal communication"
# echo;
echo "- OWGW_FILEUPLOADER_HOST_NAME - hostname to be used for OWGW fileupload";
echo "- OWGW_FILEUPLOADER_URI - URL to be used for OWGW fileupload";
@@ -26,47 +25,28 @@ usage () {
echo;
# echo "- OWSEC_SYSTEM_URI_PRIVATE - private URL to be used for OWSec";
echo "- OWSEC_SYSTEM_URI_PUBLIC - public URL to be used for OWSec";
echo;
# echo "- OWFMS_SYSTEM_URI_PRIVATE - private URL to be used for OWFms";
echo "- OWFMS_SYSTEM_URI_PUBLIC - public URL to be used for OWFms";
echo;
# echo "- OWPROV_SYSTEM_URI_PRIVATE - private URL to be used for OWProv";
echo "- OWPROV_SYSTEM_URI_PUBLIC - public URL to be used for OWProv";
echo;
# echo "- OWANALYTICS_SYSTEM_URI_PRIVATE - private URL to be used for OWAnalytics";
echo "- OWANALYTICS_SYSTEM_URI_PUBLIC - public URL to be used for OWAnalytics";
echo;
# echo "- OWSUB_SYSTEM_URI_PRIVATE - private URL to be used for OWSub";
echo "- OWSUB_SYSTEM_URI_PUBLIC - public URL to be used for OWSub";
echo;
echo "- OWRRM_SERVICECONFIG_PRIVATEENDPOINT - private URL to be used for OWRRM";
echo "- OWRRM_SERVICECONFIG_PUBLICENDPOINT - public URL to be used for OWRRM";
echo;
echo "Optional environment variables:"
echo "- WEBSOCKET_CERT - Your Digicert-signed websocket certificate"
echo "- WEBSOCKET_KEY - The key to your Digicert-signed websocket certificate"
echo;
echo "- OWSEC_AUTHENTICATION_DEFAULT_USERNAME - username to be used for requests to OWSec";
echo "- OWSEC_AUTHENTICATION_DEFAULT_PASSWORD - hashed password for OWSec (details on this may be found in https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/#authenticationdefaultpassword)";
echo;
# echo "- OWFMS_SYSTEM_URI_PRIVATE - private URL to be used for OWFms";
echo "- OWFMS_SYSTEM_URI_PUBLIC - public URL to be used for OWFms";
echo "- OWFMS_S3_SECRET - secret key that is used for OWFms access to firmwares S3 bucket";
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 "- TRAEFIK_ACME_EMAIL - Email address used for ACME registration"
# echo "- OWPROV_SYSTEM_URI_PRIVATE - private URL to be used for OWProv";
echo "- OWPROV_SYSTEM_URI_PUBLIC - public URL to be used for OWProv";
}
# Check if required environment variables were passed
## Configuration variables applying to multiple microservices
[ -z ${DEFAULT_UCENTRALSEC_URL+x} ] && echo "DEFAULT_UCENTRALSEC_URL is unset" && usage && exit 1
[ -z ${SYSTEM_URI_UI+x} ] && echo "SYSTEM_URI_UI is unset" && usage && exit 1
[ -z ${RTTY_TOKEN+x} ] && echo "RTTY_TOKEN is unset" && usage && exit 1
## Internal microservice hostnames
#[ -z ${INTERNAL_OWGW_HOSTNAME+x} ] && echo "INTERNAL_OWGW_HOSTNAME is unset" && usage && exit 1
#[ -z ${INTERNAL_OWSEC_HOSTNAME+x} ] && echo "INTERNAL_OWSEC_HOSTNAME is unset" && usage && exit 1
#[ -z ${INTERNAL_OWFMS_HOSTNAME+x} ] && echo "INTERNAL_OWFMS_HOSTNAME is unset" && usage && exit 1
#[ -z ${INTERNAL_OWPROV_HOSTNAME+x} ] && echo "INTERNAL_OWPROV_HOSTNAME is unset" && usage && exit 1
#[ -z ${INTERNAL_OWANALYTICS_HOSTNAME+x} ] && echo "INTERNAL_OWANALYTICS_HOSTNAME is unset" && usage && exit 1
#[ -z ${INTERNAL_OWSUB_HOSTNAME+x} ] && echo "INTERNAL_OWSUB_HOSTNAME is unset" && usage && exit 1
## OWGW configuration variables
[ -z ${OWGW_FILEUPLOADER_HOST_NAME+x} ] && echo "OWGW_FILEUPLOADER_HOST_NAME is unset" && usage && exit 1
[ -z ${OWGW_FILEUPLOADER_URI+x} ] && echo "OWGW_FILEUPLOADER_URI is unset" && usage && exit 1
@@ -74,23 +54,18 @@ usage () {
[ -z ${OWGW_SYSTEM_URI_PUBLIC+x} ] && echo "OWGW_SYSTEM_URI_PUBLIC is unset" && usage && exit 1
[ -z ${OWGW_RTTY_SERVER+x} ] && echo "OWGW_RTTY_SERVER is unset" && usage && exit 1
## OWSec configuration variables
[ -z ${OWSEC_AUTHENTICATION_DEFAULT_USERNAME+x} ] && echo "OWSEC_AUTHENTICATION_DEFAULT_USERNAME is unset" && usage && exit 1
[ -z ${OWSEC_AUTHENTICATION_DEFAULT_PASSWORD+x} ] && echo "OWSEC_AUTHENTICATION_DEFAULT_PASSWORD is unset" && usage && exit 1
#[ -z ${OWSEC_SYSTEM_URI_PRIVATE+x} ] && echo "OWSEC_SYSTEM_URI_PRIVATE is unset" && usage && exit 1
[ -z ${OWSEC_SYSTEM_URI_PUBLIC+x} ] && echo "OWSEC_SYSTEM_URI_PUBLIC is unset" && usage && exit 1
## OWFms configuration variables
#[ -z ${OWFMS_SYSTEM_URI_PRIVATE+x} ] && echo "OWFMS_SYSTEM_URI_PRIVATE is unset" && usage && exit 1
[ -z ${OWFMS_SYSTEM_URI_PUBLIC+x} ] && echo "OWFMS_SYSTEM_URI_PUBLIC is unset" && usage && exit 1
[ -z ${OWFMS_S3_SECRET+x} ] && echo "OWFMS_S3_SECRET is unset" && usage && exit 1
[ -z ${OWFMS_S3_KEY+x} ] && echo "OWFMS_S3_KEY is unset" && usage && exit 1
## OWProv configuration variables
#[ -z ${OWPROV_SYSTEM_URI_PRIVATE+x} ] && echo "OWPROV_SYSTEM_URI_PRIVATE is unset" && usage && exit 1
[ -z ${OWPROV_SYSTEM_URI_PUBLIC+x} ] && echo "OWPROV_SYSTEM_URI_PUBLIC is unset" && usage && exit 1
## OWAnalytics configuration variables
#[ -z ${OWANALYTICS_SYSTEM_URI_PRIVATE+x} ] && echo "OWANALYTICS_SYSTEM_URI_PRIVATE is unset" && usage && exit 1
[ -z ${OWANALYTICS_SYSTEM_URI_PUBLIC+x} ] && echo "OWANALYTICS_SYSTEM_URI_PUBLIC is unset" && usage && exit 1
## OWSub configuration variables
#[ -z ${OWSUB_SYSTEM_URI_PRIVATE+x} ] && echo "OWSUB_SYSTEM_URI_PRIVATE is unset" && usage && exit 1
[ -z ${OWSUB_SYSTEM_URI_PUBLIC+x} ] && echo "OWSUB_SYSTEM_URI_PUBLIC is unset" && usage && exit 1
## OWRRM configuration variables
[ -z ${OWRRM_SERVICECONFIG_PRIVATEENDPOINT+x} ] && echo "OWRRM_SERVICECONFIG_PRIVATEENDPOINT is unset" && usage && exit 1
[ -z ${OWRRM_SERVICECONFIG_PUBLICENDPOINT+x} ] && echo "OWRRM_SERVICECONFIG_PUBLICENDPOINT is unset" && usage && exit 1
# Search and replace image version tags if set
if [[ ! -z "$OWGW_VERSION" ]]; then
@@ -105,31 +80,12 @@ fi
if [[ ! -z "$OWPROV_VERSION" ]]; then
sed -i "s~.*OWPROV_TAG=.*~OWPROV_TAG=$OWPROV_VERSION~" .env
fi
if [[ ! -z "$OWANALYTICS_VERSION" ]]; then
sed -i "s~.*OWANALYTICS_TAG=.*~OWANALYTICS_TAG=$OWANALYTICS_VERSION~" .env
fi
if [[ ! -z "$OWSUB_VERSION" ]]; then
sed -i "s~.*OWSUB_TAG=.*~OWSUB_TAG=$OWSUB_VERSION~" .env
fi
# Search and replace variable values in env files
#sed -i "s~\(^INTERNAL_OWGW_HOSTNAME=\).*~\1$INTERNAL_OWGW_HOSTNAME~" .env
#sed -i "s~\(^INTERNAL_OWSEC_HOSTNAME=\).*~\1$INTERNAL_OWSEC_HOSTNAME~" .env
#sed -i "s~\(^INTERNAL_OWFMS_HOSTNAME=\).*~\1$INTERNAL_OWFMS_HOSTNAME~" .env
#sed -i "s~\(^INTERNAL_OWPROV_HOSTNAME=\).*~\1$INTERNAL_OWPROV_HOSTNAME~" .env
#sed -i "s~\(^INTERNAL_OWANALYTICS_HOSTNAME=\).*~\1$INTERNAL_OWANALYTICS_HOSTNAME~" .env
#sed -i "s~\(^INTERNAL_OWSUB_HOSTNAME=\).*~\1$INTERNAL_OWSUB_HOSTNAME~" .env
if [[ ! -z "$SDKHOSTNAME" ]]; then
sed -i "s~.*SDKHOSTNAME=.*~SDKHOSTNAME=$SDKHOSTNAME~" .env.letsencrypt
fi
if [[ ! -z "$WEBSOCKET_CERT" ]]; then
echo "$WEBSOCKET_CERT" > certs/websocket-cert.pem
fi
if [[ ! -z "$WEBSOCKET_KEY" ]]; then
echo "$WEBSOCKET_KEY" > certs/websocket-key.pem && chmod 600 certs/websocket-key.pem
fi
sed -i "s~.*FILEUPLOADER_HOST_NAME=.*~FILEUPLOADER_HOST_NAME=$OWGW_FILEUPLOADER_HOST_NAME~" owgw.env
sed -i "s~.*FILEUPLOADER_URI=.*~FILEUPLOADER_URI=$OWGW_FILEUPLOADER_URI~" owgw.env
@@ -137,6 +93,7 @@ sed -i "s~.*SYSTEM_URI_PUBLIC=.*~SYSTEM_URI_PUBLIC=$OWGW_SYSTEM_URI_PUBLIC~" owg
#sed -i "s~.*SYSTEM_URI_PRIVATE=.*~SYSTEM_URI_PRIVATE=$OWGW_SYSTEM_URI_PRIVATE~" owgw.env
sed -i "s~.*SYSTEM_URI_UI=.*~SYSTEM_URI_UI=$SYSTEM_URI_UI~" owgw.env
sed -i "s~.*RTTY_SERVER=.*~RTTY_SERVER=$OWGW_RTTY_SERVER~" owgw.env
sed -i "s~.*RTTY_TOKEN=.*~RTTY_TOKEN=$RTTY_TOKEN~" owgw.env
if [[ ! -z "$SIMULATORID" ]]; then
sed -i "s~.*SIMULATORID=.*~SIMULATORID=$SIMULATORID~" owgw.env
@@ -144,12 +101,8 @@ fi
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
fi
if [[ ! -z "$OWSEC_AUTHENTICATION_DEFAULT_PASSWORD" ]]; then
sed -i "s~.*AUTHENTICATION_DEFAULT_PASSWORD=.*~AUTHENTICATION_DEFAULT_PASSWORD=$OWSEC_AUTHENTICATION_DEFAULT_PASSWORD~" owsec.env
fi
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
#sed -i "s~.*SYSTEM_URI_PRIVATE=.*~SYSTEM_URI_PRIVATE=$OWSEC_SYSTEM_URI_PRIVATE~" owsec.env
sed -i "s~.*SYSTEM_URI_PUBLIC=.*~SYSTEM_URI_PUBLIC=$OWSEC_SYSTEM_URI_PUBLIC~" owsec.env
sed -i "s~.*SYSTEM_URI_UI=.*~SYSTEM_URI_UI=$SYSTEM_URI_UI~" owsec.env
@@ -157,37 +110,16 @@ sed -i "s~.*SYSTEM_URI_UI=.*~SYSTEM_URI_UI=$SYSTEM_URI_UI~" owsec.env
#sed -i "s~.*SYSTEM_URI_PRIVATE=.*~SYSTEM_URI_PRIVATE=$OWFMS_SYSTEM_URI_PRIVATE~" owfms.env
sed -i "s~.*SYSTEM_URI_PUBLIC=.*~SYSTEM_URI_PUBLIC=$OWFMS_SYSTEM_URI_PUBLIC~" owfms.env
sed -i "s~.*SYSTEM_URI_UI=.*~SYSTEM_URI_UI=$SYSTEM_URI_UI~" owfms.env
if [[ ! -z "$OWFMS_S3_SECRET" ]]; then
sed -i "s~.*S3_SECRET=.*~S3_SECRET=$OWFMS_S3_SECRET~" owfms.env
fi
if [[ ! -z "$OWFMS_S3_KEY" ]]; then
sed -i "s~.*S3_KEY=.*~S3_KEY=$OWFMS_S3_KEY~" owfms.env
fi
sed -i "s~.*S3_SECRET=.*~S3_SECRET=$OWFMS_S3_SECRET~" owfms.env
sed -i "s~.*S3_KEY=.*~S3_KEY=$OWFMS_S3_KEY~" owfms.env
#sed -i "s~.*SYSTEM_URI_PRIVATE=.*~SYSTEM_URI_PRIVATE=$OWPROV_SYSTEM_URI_PRIVATE~" owprov.env
sed -i "s~.*SYSTEM_URI_PUBLIC=.*~SYSTEM_URI_PUBLIC=$OWPROV_SYSTEM_URI_PUBLIC~" owprov.env
sed -i "s~.*SYSTEM_URI_UI=.*~SYSTEM_URI_UI=$SYSTEM_URI_UI~" owprov.env
sed -i "s~.*REACT_APP_UCENTRALSEC_URL=.*~REACT_APP_UCENTRALSEC_URL=$DEFAULT_UCENTRALSEC_URL~" owprov-ui.env
sed -i "s~.*DEFAULT_UCENTRALSEC_URL=.*~DEFAULT_UCENTRALSEC_URL=$DEFAULT_UCENTRALSEC_URL~" owprov-ui.env
#sed -i "s~.*SYSTEM_URI_PRIVATE=.*~SYSTEM_URI_PRIVATE=$OWANALYTICS_SYSTEM_URI_PRIVATE~" owanalytics.env
sed -i "s~.*SYSTEM_URI_PUBLIC=.*~SYSTEM_URI_PUBLIC=$OWANALYTICS_SYSTEM_URI_PUBLIC~" owanalytics.env
sed -i "s~.*SYSTEM_URI_UI=.*~SYSTEM_URI_UI=$SYSTEM_URI_UI~" owanalytics.env
#sed -i "s~.*SYSTEM_URI_PRIVATE=.*~SYSTEM_URI_PRIVATE=$OWSUB_SYSTEM_URI_PRIVATE~" owsub.env
sed -i "s~.*SYSTEM_URI_PUBLIC=.*~SYSTEM_URI_PUBLIC=$OWSUB_SYSTEM_URI_PUBLIC~" owsub.env
sed -i "s~.*SYSTEM_URI_UI=.*~SYSTEM_URI_UI=$SYSTEM_URI_UI~" owsub.env
sed -i "s~.*SERVICECONFIG_PRIVATEENDPOINT=.*~SERVICECONFIG_PRIVATEENDPOINT=$OWRRM_SERVICECONFIG_PRIVATEENDPOINT~" owrrm.env
sed -i "s~.*SERVICECONFIG_PUBLICENDPOINT=.*~SERVICECONFIG_PUBLICENDPOINT=$OWRRM_SERVICECONFIG_PUBLICENDPOINT~" owrrm.env
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
sed -i "s~\(^token:\).*~\1 $RTTY_TOKEN~" rttys/rttys.conf
# Run the deployment
if [[ ! -z "$SDKHOSTNAME" ]]; then
docker-compose -f docker-compose.lb.letsencrypt.yml --env-file .env.letsencrypt up -d
else
docker-compose up -d
fi
docker-compose up -d

View File

@@ -9,20 +9,12 @@ volumes:
driver: local
owprov_data:
driver: local
owanalytics_data:
driver: local
owsub_data:
driver: local
owrrm_data:
driver: local
zookeeper_data:
driver: local
zookeeper_datalog:
driver: local
kafka_data:
driver: local
mysql_data:
driver: local
letsencrypt_certs:
driver: local
@@ -41,6 +33,7 @@ services:
- owgw.env
depends_on:
- kafka
- rttys
restart: unless-stopped
volumes:
- owgw_data:${OWGW_ROOT}/persist
@@ -128,52 +121,17 @@ services:
- owprov
restart: unless-stopped
owanalytics:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owanalytics:${OWANALYTICS_TAG}"
rttys:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/rttys:${RTTYS_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWANALYTICS_HOSTNAME}
env_file:
- .env.letsencrypt
- owanalytics.env
depends_on:
- kafka
- ${INTERNAL_RTTYS_HOSTNAME}
restart: unless-stopped
volumes:
- owanalytics_data:${OWANALYTICS_ROOT}
- ./certs:/${OWANALYTICS_ROOT}/certs
owsub:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owsub:${OWSUB_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWSUB_HOSTNAME}
env_file:
- .env.letsencrypt
- owsub.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- owsub_data:${OWSUB_ROOT}
- ./certs:/${OWSUB_ROOT}/certs
owrrm:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owrrm:${OWRRM_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWRRM_HOSTNAME}
env_file:
- owrrm.env
depends_on:
- mysql
- kafka
restart: unless-stopped
volumes:
- owrrm_data:/owrrm-data
- "./certs/restapi-cert.pem:/etc/rttys/restapi-cert.pem"
- "./certs/restapi-key.pem:/etc/rttys/restapi-key.pem"
- "./rttys/rttys_letsencrypt.conf:/rttys/rttys.conf"
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
@@ -196,35 +154,6 @@ services:
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 "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
mysql:
image: "mysql:${MYSQL_TAG}"
networks:
openwifi:
env_file:
- mysql.env
restart: unless-stopped
volumes:
- mysql_data:/var/lib/mysql
traefik:
image: "traefik:${TRAEFIK_TAG}"
networks:
@@ -239,33 +168,20 @@ services:
- owfms
- owprov
- owprov-ui
- owanalytics
- owsub
- owrrm
- rttys
restart: unless-stopped
volumes:
- "./traefik/openwifi_letsencrypt.yaml:/etc/traefik/openwifi.yaml"
- "./certs/restapi-ca.pem:/certs/restapi-ca.pem"
- "letsencrypt_certs:/letsencrypt"
entrypoint:
- /bin/sh
- -c
- |
timeout 10m sh -c 'until [[ "$$(getent hosts $SDKHOSTNAME)" ]]; do echo "Waiting until DNS record for $SDKHOSTNAME is resolvable"; sleep 5; done' \
&& ./entrypoint.sh traefik
ports:
- "15002:15002"
- "16002:16002"
- "16003:16003"
- "80:80"
- "8080:8080"
- "443:443"
- "8443:8443"
- "16001:16001"
- "16004:16004"
- "16005:16005"
- "16009:16009"
- "16006:16006"
- "5912:5912"
- "5913:5913"
- "16789:16789"

View File

@@ -9,20 +9,12 @@ volumes:
driver: local
owprov_data:
driver: local
owanalytics_data:
driver: local
owsub_data:
driver: local
owrrm_data:
driver: local
zookeeper_data:
driver: local
zookeeper_datalog:
driver: local
kafka_data:
driver: local
mysql_data:
driver: local
networks:
openwifi:
@@ -39,6 +31,7 @@ services:
- owgw.env
depends_on:
- kafka
- rttys
restart: unless-stopped
volumes:
- owgw_data:${OWGW_ROOT}/persist
@@ -128,52 +121,17 @@ services:
- owprov
restart: unless-stopped
owanalytics:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owanalytics:${OWANALYTICS_TAG}"
rttys:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/rttys:${RTTYS_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWANALYTICS_HOSTNAME}
env_file:
- .env.selfsigned
- owanalytics.env
depends_on:
- kafka
- ${INTERNAL_RTTYS_HOSTNAME}
restart: unless-stopped
volumes:
- owanalytics_data:${OWANALYTICS_ROOT}
- ./certs:/${OWANALYTICS_ROOT}/certs
owsub:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owsub:${OWSUB_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWSUB_HOSTNAME}
env_file:
- .env.selfsigned
- owsub.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- owsub_data:${OWSUB_ROOT}
- ./certs:/${OWSUB_ROOT}/certs
owrrm:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owrrm:${OWRRM_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWRRM_HOSTNAME}
env_file:
- owrrm.env
depends_on:
- mysql
- kafka
restart: unless-stopped
volumes:
- owrrm_data:/owrrm-data
- "./certs/restapi-cert.pem:/etc/rttys/restapi-cert.pem"
- "./certs/restapi-key.pem:/etc/rttys/restapi-key.pem"
- "./rttys/rttys.conf:/rttys/rttys.conf"
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
@@ -196,35 +154,6 @@ services:
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 "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
mysql:
image: "mysql:${MYSQL_TAG}"
networks:
openwifi:
env_file:
- mysql.env
restart: unless-stopped
volumes:
- mysql_data:/var/lib/mysql
traefik:
image: "traefik:${TRAEFIK_TAG}"
networks:
@@ -238,9 +167,7 @@ services:
- owfms
- owprov
- owprov-ui
- owanalytics
- owsub
- owrrm
- rttys
restart: unless-stopped
volumes:
- "./traefik/openwifi_selfsigned.yaml:/etc/traefik/openwifi.yaml"
@@ -258,8 +185,5 @@ services:
- "16001:16001"
- "16004:16004"
- "16005:16005"
- "16009:16009"
- "16006:16006"
- "5912:5912"
- "5913:5913"
- "16789:16789"

View File

@@ -25,16 +25,6 @@ services:
- 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:

View File

@@ -1,16 +1,12 @@
version: '3'
volumes:
# owrrm_data:
# driver: local
zookeeper_data:
driver: local
zookeeper_datalog:
driver: local
kafka_data:
driver: local
mysql_data:
driver: local
networks:
openwifi:
@@ -26,6 +22,7 @@ services:
- owgw.env
depends_on:
- kafka
- rttys
restart: unless-stopped
volumes:
- "./owgw_data:${OWGW_ROOT}"
@@ -35,8 +32,6 @@ services:
- "16002:16002"
- "16102:16102"
- "16003:16003"
- "5912:5912"
- "5913:5913"
sysctls:
- net.ipv4.tcp_keepalive_intvl=5
- net.ipv4.tcp_keepalive_probes=2
@@ -53,8 +48,6 @@ services:
- owgw
- owfms
- owprov
- owanalytics
- owsub
restart: unless-stopped
volumes:
- "./owgw-ui/default.conf:/etc/nginx/conf.d/default.conf"
@@ -129,8 +122,6 @@ services:
- owgw
- owfms
- owprov
- owanalytics
- owsub
restart: unless-stopped
volumes:
- "./owprov-ui/default.conf:/etc/nginx/conf.d/default.conf"
@@ -140,59 +131,18 @@ services:
- "8080:8080"
- "8443:8443"
owanalytics:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owanalytics:${OWANALYTICS_TAG}"
rttys:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/rttys:${RTTYS_TAG}"
restart: unless-stopped
networks:
openwifi:
aliases:
- ${INTERNAL_OWANALYTICS_HOSTNAME}
env_file:
- owanalytics.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- "./owanalytics_data:${OWANALYTICS_ROOT}"
- "./certs:/${OWANALYTICS_ROOT}/certs"
- "./certs/restapi-cert.pem:/etc/rttys/restapi-cert.pem"
- "./certs/restapi-key.pem:/etc/rttys/restapi-key.pem"
- "./rttys/rttys.conf:/rttys/rttys.conf"
ports:
- "16009:16009"
- "16109:16109"
owsub:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owsub:${OWSUB_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWSUB_HOSTNAME}
env_file:
- owsub.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- "./owsub_data:${OWSUB_ROOT}"
- "./certs:/${OWSUB_ROOT}/certs"
ports:
- "16006:16006"
- "16106:16106"
# NOTE currently OWRRM is only supported in LB installations
# owrrm:
# image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owrrm:${OWRRM_TAG}"
# networks:
# openwifi:
# aliases:
# - ${INTERNAL_OWRRM_HOSTNAME}
# env_file:
# - owrrm.env
# depends_on:
# - mysql
# - kafka
# restart: unless-stopped
# volumes:
# - owrrm_data:/owrrm-data
# ports:
# - "16789:16789"
- "5912:5912"
- "5913:5913"
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
@@ -214,32 +164,3 @@ services:
- 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 "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
mysql:
image: "mysql:${MYSQL_TAG}"
networks:
openwifi:
env_file:
- mysql.env
restart: unless-stopped
volumes:
- mysql_data:/var/lib/mysql

View File

@@ -1,3 +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

View File

@@ -1,5 +0,0 @@
#MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_ROOT_PASSWORD=openwifi
MYSQL_DATABASE=owrrm
#MYSQL_USER=owrrm
#MYSQL_PASSWORD=openwifi

View File

@@ -1,38 +0,0 @@
RUN_CHOWN=true
TEMPLATE_CONFIG=true
SELFSIGNED_CERTS=true
OWANALYTICS_ROOT=/owanalytics-data
OWANALYTICS_CONFIG=/owanalytics-data
#RESTAPI_HOST_ROOTCA=$OWANALYTICS_ROOT/certs/restapi-ca.pem
#RESTAPI_HOST_PORT=16009
#RESTAPI_HOST_CERT=$OWANALYTICS_ROOT/certs/restapi-cert.pem
#RESTAPI_HOST_KEY=$OWANALYTICS_ROOT/certs/restapi-key.pem
#RESTAPI_HOST_KEY_PASSWORD=mypassword
#INTERNAL_RESTAPI_HOST_ROOTCA=$OWANALYTICS_ROOT/certs/restapi-ca.pem
#INTERNAL_RESTAPI_HOST_PORT=17009
#INTERNAL_RESTAPI_HOST_CERT=$OWANALYTICS_ROOT/certs/restapi-cert.pem
#INTERNAL_RESTAPI_HOST_KEY=$OWANALYTICS_ROOT/certs/restapi-key.pem
#INTERNAL_RESTAPI_HOST_KEY_PASSWORD=mypassword
#FIRMWARE_UPDATER_UPGRADE=yes
#FIRMWARE_UPDATER_RCONLY=no
#SERVICE_KEY=$OWANALYTICS_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
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
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#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

View File

@@ -38,17 +38,12 @@ SYSTEM_URI_PRIVATE=https://owgw.wlan.local:17002
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16002
SYSTEM_URI_UI=https://openwifi.wlan.local
#SIMULATORID=
#IPTOCOUNTRY_PROVIDER=ipinfo
#IPTOCOUNTRY_IPINFO_TOKEN=
#IPTOCOUNTRY_IPDATA_APIKEY=
#RTTY_INTERNAL=true
#RTTY_ENABLED=true
RTTY_ENABLED=true
RTTY_SERVER=openwifi.wlan.local
#RTTY_PORT=5912
#RTTY_TOKEN=
#RTTY_TOKEN=96181c567b4d0d98c50f127230068fa8
#RTTY_TIMEOUT=60
#RTTY_VIEWPORT=5913
#RTTY_ASSETS=$OWGW_ROOT/rtty_ui
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#STORAGE_TYPE=sqlite

View File

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

View File

@@ -1,8 +0,0 @@
SELFSIGNED_CERTS=true
SERVICECONFIG_PRIVATEENDPOINT=https://owrrm.wlan.local:16789
SERVICECONFIG_PUBLICENDPOINT=https://openwifi.wlan.local:16789
KAFKACONFIG_BOOTSTRAPSERVER=kafka:9092
DATABASECONFIG_SERVER=mysql:3306
DATABASECONFIG_USER=root
#DATABASECONFIG_PASSWORD=openwifi
DATABASECONFIG_DBNAME=owrrm

View File

@@ -1,38 +0,0 @@
RUN_CHOWN=true
TEMPLATE_CONFIG=true
SELFSIGNED_CERTS=true
OWSUB_ROOT=/owsub-data
OWSUB_CONFIG=/owsub-data
#RESTAPI_HOST_ROOTCA=$OWSUB_ROOT/certs/restapi-ca.pem
#RESTAPI_HOST_PORT=16006
#RESTAPI_HOST_CERT=$OWSUB_ROOT/certs/restapi-cert.pem
#RESTAPI_HOST_KEY=$OWSUB_ROOT/certs/restapi-key.pem
#RESTAPI_HOST_KEY_PASSWORD=mypassword
#INTERNAL_RESTAPI_HOST_ROOTCA=$OWSUB_ROOT/certs/restapi-ca.pem
#INTERNAL_RESTAPI_HOST_PORT=17006
#INTERNAL_RESTAPI_HOST_CERT=$OWSUB_ROOT/certs/restapi-cert.pem
#INTERNAL_RESTAPI_HOST_KEY=$OWSUB_ROOT/certs/restapi-key.pem
#INTERNAL_RESTAPI_HOST_KEY_PASSWORD=mypassword
#FIRMWARE_UPDATER_UPGRADE=yes
#FIRMWARE_UPDATER_RCONLY=no
#SERVICE_KEY=$OWSUB_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
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
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#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

View File

@@ -12,9 +12,3 @@ OWFMS_DB_PASSWORD=owfms
OWPROV_DB=owprov
OWPROV_DB_USER=owprov
OWPROV_DB_PASSWORD=owprov
OWANALYTICS_DB=owanalytics
OWANALYTICS_DB_USER=owanalytics
OWANALYTICS_DB_PASSWORD=owanalytics
OWUSB_DB=owsub
OWUSB_DB_USER=owsub
OWUSB_DB_PASSWORD=owsub

View File

@@ -14,10 +14,4 @@ psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER $OWPROV_DB_USER WITH ENCRYPTED PASSWORD '$OWPROV_DB_PASSWORD';
CREATE DATABASE $OWPROV_DB;
GRANT ALL PRIVILEGES ON DATABASE $OWPROV_DB TO $OWPROV_DB_USER;
CREATE USER $OWANALYTICS_DB_USER WITH ENCRYPTED PASSWORD '$OWANALYTICS_DB_PASSWORD';
CREATE DATABASE $OWANALYTICS_DB;
GRANT ALL PRIVILEGES ON DATABASE $OWANALYTICS_DB TO $OWANALYTICS_DB_USER;
CREATE USER $OWSUB_DB_USER WITH ENCRYPTED PASSWORD '$OWSUB_DB_PASSWORD';
CREATE DATABASE $OWSUB_DB;
GRANT ALL PRIVILEGES ON DATABASE $OWSUB_DB TO $OWSUB_DB_USER;
EOSQL

View File

@@ -0,0 +1,16 @@
addr-dev: :5912
addr-user: :5913
#addr-web: :5914
#web-redir-url:# Auth for http
http-username: rttys
http-password: rttys
ssl-cert: /etc/rttys/restapi-cert.pem
ssl-key: /etc/rttys/restapi-key.pem
token: 96181c567b4d0d98c50f127230068fa8
# font-size: 16
# No login required to connect device.
# Values can be device IDs separated by spaces,
# or a "*" indicates that all devices do not require login
# http://localhost:5913/connect/rtty1
white-list: "*"
#white-list: rtty1 rtty2

View File

@@ -0,0 +1,16 @@
addr-dev: :5912
addr-user: :5913
#addr-web: :5914
#web-redir-url:# Auth for http
http-username: rttys
http-password: rttys
#ssl-cert: /etc/rttys/restapi-cert.pem
#ssl-key: /etc/rttys/restapi-key.pem
token: 96181c567b4d0d98c50f127230068fa8
# font-size: 16
# No login required to connect device.
# Values can be device IDs separated by spaces,
# or a "*" indicates that all devices do not require login
# http://localhost:5913/connect/rtty1
white-list: "*"
#white-list: rtty1 rtty2

View File

@@ -1,8 +1,6 @@
TRAEFIK_ENTRYPOINTS_OWGWWEBSOCKET_ADDRESS=:15002
TRAEFIK_ENTRYPOINTS_OWGWRESTAPI_ADDRESS=:16002
TRAEFIK_ENTRYPOINTS_OWGWFILEUPLOAD_ADDRESS=:16003
TRAEFIK_ENTRYPOINTS_OWGWRTTYS_ADDRESS=:5912
TRAEFIK_ENTRYPOINTS_OWGWRTTYSVIEW_ADDRESS=:5913
TRAEFIK_ENTRYPOINTS_OWGWUIHTTP_ADDRESS=:80
TRAEFIK_ENTRYPOINTS_OWGWUIHTTP_HTTP_REDIRECTIONS_ENTRYPOINT_TO=owgwuihttps
TRAEFIK_ENTRYPOINTS_OWPROVUIHTTP_ADDRESS=:8080
@@ -12,9 +10,8 @@ TRAEFIK_ENTRYPOINTS_OWPROVUIHTTPS_ADDRESS=:8443
TRAEFIK_ENTRYPOINTS_OWSECRESTAPI_ADDRESS=:16001
TRAEFIK_ENTRYPOINTS_OWFMSRESTAPI_ADDRESS=:16004
TRAEFIK_ENTRYPOINTS_OWPROVRESTAPI_ADDRESS=:16005
TRAEFIK_ENTRYPOINTS_OWANALYTICSRESTAPI_ADDRESS=:16009
TRAEFIK_ENTRYPOINTS_OWSUBRESTAPI_ADDRESS=:16006
TRAEFIK_ENTRYPOINTS_OWRRMOPENAPI_ADDRESS=:16789
TRAEFIK_ENTRYPOINTS_RTTYSDEV_ADDRESS=:5912
TRAEFIK_ENTRYPOINTS_RTTYSUSER_ADDRESS=:5913
TRAEFIK_PROVIDERS_FILE_FILENAME=/etc/traefik/openwifi.yaml
TRAEFIK_CERTIFICATESRESOLVERS_OPENWIFI_ACME_EMAIL=
TRAEFIK_CERTIFICATESRESOLVERS_OPENWIFI_ACME_HTTPCHALLENGE=true

View File

@@ -28,96 +28,66 @@ http:
loadBalancer:
servers:
- url: "http://owprov-ui.wlan.local:80/"
owanalytics-restapi:
rttys-user:
loadBalancer:
servers:
- url: "https://owanalytics.wlan.local:16009/"
owsub-restapi:
loadBalancer:
servers:
- url: "https://owsub.wlan.local:16006/"
owgw-rttys-view:
loadBalancer:
servers:
- url: "https://owgw.wlan.local:5913/"
owrrm-openapi:
loadBalancer:
servers:
- url: "http://owrrm.wlan.local:16789/"
- url: "http://rttys.wlan.local:5913/"
routers:
owgw-ui-http:
entryPoints: "owgwuihttp"
service: "owgw-ui"
rule: "Host(`{{ env "SDKHOSTNAME" }}`)"
rule: "Host(`{{ env "OWGWUI_HOSTNAME" }}`)"
owgw-ui-https:
entryPoints: "owgwuihttps"
service: "owgw-ui"
rule: "Host(`{{ env "SDKHOSTNAME" }}`)"
rule: "Host(`{{ env "OWGWUI_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owgw-fileupload:
entryPoints: "owgwfileupload"
service: "owgw-fileupload"
rule: "Host(`{{ env "SDKHOSTNAME" }}`)"
rule: "Host(`{{ env "OWGWFILEUPLOAD_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owgw-restapi:
entryPoints: "owgwrestapi"
service: "owgw-restapi"
rule: "Host(`{{ env "SDKHOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owgw-rttys-view:
entryPoints: "owgwrttysview"
service: "owgw-rttys-view"
rule: "Host(`{{ env "SDKHOSTNAME" }}`)"
rule: "Host(`{{ env "OWGW_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owsec-restapi:
entryPoints: "owsecrestapi"
service: "owsec-restapi"
rule: "Host(`{{ env "SDKHOSTNAME" }}`)"
rule: "Host(`{{ env "OWSEC_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owfms-restapi:
entryPoints: "owfmsrestapi"
service: "owfms-restapi"
rule: "Host(`{{env "SDKHOSTNAME"}}`)"
rule: "Host(`{{env "OWFMS_HOSTNAME"}}`)"
tls:
certResolver: "openwifi"
owprov-restapi:
entryPoints: "owprovrestapi"
service: "owprov-restapi"
rule: "Host(`{{env "SDKHOSTNAME"}}`)"
rule: "Host(`{{env "OWPROV_HOSTNAME"}}`)"
tls:
certResolver: "openwifi"
owprov-ui-http:
entryPoints: "owprovuihttp"
entryPoints: "owgwuihttp"
service: "owprov-ui"
rule: "Host(`{{ env "SDKHOSTNAME" }}`)"
rule: "Host(`{{ env "OWPROVUI_HOSTNAME" }}`)"
owprov-ui-https:
entryPoints: "owprovuihttps"
entryPoints: "owgwuihttps"
service: "owprov-ui"
rule: "Host(`{{ env "SDKHOSTNAME" }}`)"
rule: "Host(`{{ env "OWPROVUI_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owanalytics-restapi:
entryPoints: "owanalyticsrestapi"
service: "owanalytics-restapi"
rule: "Host(`{{env "SDKHOSTNAME"}}`)"
tls:
certResolver: "openwifi"
owsub-restapi:
entryPoints: "owsubrestapi"
service: "owsub-restapi"
rule: "Host(`{{env "SDKHOSTNAME"}}`)"
tls:
certResolver: "openwifi"
owrrm-openapi:
entryPoints: "owrrmopenapi"
service: "owrrm-openapi"
rule: "Host(`{{env "SDKHOSTNAME"}}`)"
rttys-user:
entryPoints: "rttysuser"
service: "rttys-user"
rule: "Host(`{{ env "RTTYS_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
@@ -128,10 +98,10 @@ tcp:
servers:
- address: "owgw.wlan.local:15002"
owgw-rttys:
rttys-dev:
loadBalancer:
servers:
- address: "owgw.wlan.local:5912"
- address: "rttys.wlan.local:5912"
routers:
owgw-websocket:
@@ -141,9 +111,9 @@ tcp:
tls:
passthrough: true
owgw-rttys:
entryPoints: "owgwrttys"
service: "owgw-rttys"
rule: "HostSNI(`*`)"
rttys-dev:
entryPoints: "rttysdev"
service: "rttys-dev"
rule: "HostSNI(`{{ env "RTTYS_HOSTNAME" }}`)"
tls:
passthrough: true
certResolver: openwifi

View File

@@ -15,11 +15,6 @@ http:
servers:
- url: "http://owprov-ui.wlan.local:80/"
owrrm-openapi:
loadBalancer:
servers:
- url: "http://owrrm.wlan.local:16789/"
routers:
owgw-ui-http:
entryPoints: "owgwuihttp"
@@ -43,12 +38,6 @@ http:
rule: "PathPrefix(`/`)"
tls: {}
owrrm-openapi:
entryPoints: "owrrmopenapi"
service: "owrrm-openapi"
rule: "PathPrefix(`/`)"
tls: {}
tcp:
services:
owgw-websocket:
@@ -63,14 +52,6 @@ tcp:
loadBalancer:
servers:
- address: "owgw.wlan.local:16003"
owgw-rttys:
loadBalancer:
servers:
- address: "owgw.wlan.local:5912"
owgw-rttys-view:
loadBalancer:
servers:
- address: "owgw.wlan.local:5913"
owsec-restapi:
loadBalancer:
servers:
@@ -83,14 +64,14 @@ tcp:
loadBalancer:
servers:
- address: "owprov.wlan.local:16005"
owanalytics-restapi:
rttys-dev:
loadBalancer:
servers:
- address: "owanalytics.wlan.local:16009"
owsub-restapi:
- address: "rttys.wlan.local:5912"
rttys-user:
loadBalancer:
servers:
- address: "owsub.wlan.local:16006"
- address: "rttys.wlan.local:5913"
routers:
owgw-websocket:
@@ -111,18 +92,6 @@ tcp:
rule: "HostSNI(`*`)"
tls:
passthrough: true
owgw-rttys:
entryPoints: "owgwrttys"
service: "owgw-rttys"
rule: "HostSNI(`*`)"
tls:
passthrough: true
owgw-rttys-view:
entryPoints: "owgwrttysview"
service: "owgw-rttys-view"
rule: "HostSNI(`*`)"
tls:
passthrough: true
owsec-restapi:
entryPoints: "owsecrestapi"
service: "owsec-restapi"
@@ -141,15 +110,15 @@ tcp:
rule: "HostSNI(`*`)"
tls:
passthrough: true
owanalytics-restapi:
entryPoints: "owanalyticsrestapi"
service: "owanalytics-restapi"
rttys-dev:
entryPoints: "rttysdev"
service: "rttys-dev"
rule: "HostSNI(`*`)"
tls:
passthrough: true
owsub-restapi:
entryPoints: "owsubrestapi"
service: "owsub-restapi"
rttys-user:
entryPoints: "rttysuser"
service: "rttys-user"
rule: "HostSNI(`*`)"
tls:
passthrough: true