Compare commits

...

81 Commits

Author SHA1 Message Date
Dmitry Dunaev
f7d2ed5c2c [WIFI-10236] Fix: docker-compose owsec and owfms images versions
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-26 13:26:11 +03:00
Dmitry Dunaev
ce5c5afb16 [WIFI-10236] Fix: services env files
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-22 17:18:16 +03:00
Dmitry Dunaev
88b711aadf [WIFI-10236] Fix: services env files
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-22 16:55:52 +03:00
Dmitry Dunaev
c9d5cc3d53 [WIFI-6215] Add: self-signed certificate for RESTAPI endpoints
Signed-off-by: Dmitry Dunaev <dmitry@opsfleet.com>
2022-07-22 15:22:35 +03:00
TIP Automation User
ad877fa4f6 Chg: update image tag in helm values to v2.4.2 2022-07-21 15:09:01 +00:00
Dmitry Dunaev
ca839c7d7c [WIFI-9772] Add: empty commit for automated build 2022-07-21 18:07:11 +03:00
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
Johann Hoffmann
91efa38b11 Disable emitting nginx version (#35)
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2021-11-16 14:01:04 +01:00
Max
c3af438805 increase healthcheck job timeout (#34) 2021-11-16 11:31:17 +01:00
Dmitry Dunaev
1ab5ed4d54 Merge pull request #33 from Telecominfraproject/feature/wifi-5702--add-change-credentials
[WIFI-5702] Add: change_credentials script in docker image
2021-11-15 15:06:52 +03:00
Dmitry Dunaev
f1b686e90e [WIFI-5702] Add: change_credentials script in docker image 2021-11-14 22:16:55 +03:00
Dmitry Dunaev
527cb80796 Merge pull request #32 from Telecominfraproject/feature/wifi-5702--add-readme-on-password-change
[WIFI-5702] Add: README notes with link on how to change default password
2021-11-12 19:13:07 +03:00
Dmitry Dunaev
7a27d397b4 [WIFI-5702] Add: README notes with link on how to change default password 2021-11-12 14:51:56 +03:00
Johann Hoffmann
f49877caf9 Set kernel parameters in Docker Compose files (#31)
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2021-11-09 15:42:59 +01:00
Dmitry Dunaev
4e72bad880 [WIFI-3162] Add: clustersysteminfo - add prechecks on OWSEC FQDN 2021-10-29 11:47:14 +03:00
Dmitry Dunaev
fb8555eac7 Merge pull request #30 from Telecominfraproject/feature/wifi-3162--add-clustersysteminfo-check
[WIFI-3162] Add: clustersysteminfo job
2021-10-28 15:59:11 +03:00
Johann Hoffmann
70f52c14c8 [WIFI-4893] Docker support for owprov-ui (#29)
* Add owprov-ui to Docker Compose deployments

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

* Add env file for owprov-ui

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

* Add port to redirect URL

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

* Assign missing env file to service

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

* Update README.md
2021-10-27 17:45:10 +03:00
Johann Hoffmann
321979a82b [WIFI-4893] Docker support for owprov-ui (#29)
* Add owprov-ui to Docker Compose deployments

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

* Add env file for owprov-ui

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

* Add port to redirect URL

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

* Assign missing env file to service

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

* Update README.md
2021-10-15 18:39:31 +02:00
Dmitry Dunaev
0925cbe38a Merge pull request #25 from Telecominfraproject/feature/wifi-3295--helm-add-owprow
[WIFI-3295] Add: helm owprov service
2021-10-15 15:12:48 +03:00
Stephane Bourque
e95cb8bce6 Merge pull request #28 from Telecominfraproject/feature/wifi-4922--docker-add-readme-on-owsec-templates
[WIFI-4922] Add: docker-compose README on owsec mailer files
2021-10-14 07:48:54 -07:00
Dmitry Dunaev
192fede476 [WIFI-4922] Add: docker-compose README on owsec mailer files 2021-10-14 13:56:34 +03:00
Johann Hoffmann
40deb90251 Update README.md 2021-10-13 11:14:21 +02:00
Dmitry Dunaev
96e63981c4 [WIFI-4909] Add: owprovui as dependency in chart 2021-10-13 10:16:08 +03:00
Stephane Bourque
61564c13ec Merge pull request #27 from Telecominfraproject/WIFI-4686-add-non-lb-deployment
[WIFI-4686] Need ability to turn on/off load balance for docker compose deployments
2021-10-12 10:18:22 -07:00
Johann Hoffmann
01797f6f00 Update README.md 2021-10-12 13:11:02 +02:00
Johann Hoffmann
e2c8fa83e5 Bind mount whole microservice root directory
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2021-10-11 18:43:18 +02:00
Johann Hoffmann
8f79367359 Update README.md 2021-10-11 18:40:11 +02:00
Johann Hoffmann
f055387fef Add default values to .env files
Signed-off-by: Johann Hoffmann <johann.hoffmann@mailbox.org>
2021-10-11 12:26:38 +02:00
oblom0v
1fe0aeefeb Fix owgw-ui nginx config
Signed-off-by: oblom0v <johann.hoffmann@mailbox.org>
2021-10-07 20:07:12 +02:00
oblom0v
ca7dc14750 Fix owprov bind mount
Signed-off-by: oblom0v <johann.hoffmann@mailbox.org>
2021-10-07 20:05:34 +02:00
oblom0v
4676d61972 Delete obsolete Compose files and fix bind mount
Signed-off-by: oblom0v <johann.hoffmann@mailbox.org>
2021-10-07 20:04:38 +02:00
oblom0v
6a7ef00788 Add self-signed cert and key to owgw-ui
Signed-off-by: oblom0v <johann.hoffmann@mailbox.org>
2021-10-07 19:59:39 +02:00
oblom0v
61f6e83c96 Add default non-LB Compose file and related configuration
Signed-off-by: oblom0v <johann.hoffmann@mailbox.org>
2021-10-07 19:54:26 +02:00
Johann Hoffmann
ba8f5ebc77 [WIFI-3294] Docker support for Provisioning Service (#26)
* Add provisioning service to Docker Compose deployment

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

* Fix owprov image name

* Update README.md
2021-10-07 19:07:18 +02:00
Dmitry Dunaev
91900b1dde [WIFI-3295] Add: helm owprov service 2021-10-06 17:00:55 +03:00
oblom0v
53d162e4e5 Fix rttys Traefik configuration since client opens TCP connection 2021-10-01 14:44:50 +02:00
jaspreetsachdev
04e1227e7c Added a warning symbol
Added warning symbol

Signed-off-by: Jaspreet Sachdev <jaspreetsachdev@fb.com>
2021-09-30 14:54:36 -04:00
Johann Hoffmann
e008a9ff86 Update README.md 2021-09-30 19:28:42 +02:00
oblom0v
8bcd5f81cb Add rttys dev port 2021-09-29 16:57:10 +02:00
oblom0v
007218fcf3 Fix owgw fileuploader path 2021-09-29 16:23:18 +02:00
Johann Hoffmann
316dc70a45 Update README.md 2021-09-28 18:24:41 +02:00
Max
0a4546911b trigger testing workflow for new releases (#24) 2021-09-28 16:16:04 +02:00
Dmitry Dunaev
933989542b [WIFI-4240] Adapt uCentral SDK docker-compose deployment (#23)
* Adapt renaming in Docker Compose and associated config

* Update README.md

* Also adapt renaming to uCentralGW-UI

* Fix variable names

* Fix container name

* Revert owgw-ui env variables for now and add missing variable to owgw config

Co-authored-by: oblom0v <johann.hoffmann@mailbox.org>
2021-09-28 14:07:49 +02:00
Dmitry Dunaev
c776318c82 Merge pull request #22 from Telecominfraproject/feature/wifi-4240--adapt-helm
[WIFI-4240] Chg: adapt helm deployment files to 2.2 renaming
2021-09-28 13:42:29 +03:00
Dmitry Dunaev
80fc082367 [WIFI-4240] Chg: adapt helm deployment files to 2.2 renaming 2021-09-27 17:23:14 +03:00
Johann Hoffmann
3124465f18 Update README.md 2021-09-23 12:54:23 +02:00
Johann Hoffmann
0f8cb6592c Remove add-ca-cert.sh and add selfsigned option to .env files (#21)
Replace self-signed certificates since some browsers/applications require SAN to be set
2021-09-22 14:59:18 +02:00
Dmitry Dunaev
32143974dc Del: gitkeep in helm charts directory as it breaks helm dep update in newer version 2021-09-22 15:27:19 +03:00
Johann Hoffmann
6a1fd7ae0e [WIFI-1300] Use letsencrypt to rotate valid certificates for ucentral docker-compose deployment (#19)
* Add Compose file with acme.sh service and split deployments

Rename env-files

* Adapt cert paths in microservice configs

* Fix indentation

* Add Letsencrypt certs for rttys

* Fix script permissions

* Remove public and internal hostname separation since microservices will communicate over internal Docker Compose network anyway

* Add Letsencrypt cert issuing for ucentralgw-ui and enable HTTPS

* Add https port exposure

* Fix websocket cert and key name

* Fix nginx config

* Fix microservice hostnames

* Relocate SYSTEM_URI_UI variable since it is shared by all microservices

* Update README.md

* Adapt script to deployment split

* Update README.md

* Remove acme.sh container and related configuration

* Add Letsencrypt support to Traefik

* Also bind mount restapi-ca.pem in self-signed deployment

* Update README.md

* Update README.md
2021-09-22 13:02:28 +02:00
Johann Hoffmann
b3fa55a648 [WIFI-3718] Docker-compose multi-container (HA) setup (#20)
* Remove service port exposure in Compose file

Add traefik container and related configuration

* Update README.md

* Adapt service name in dependency
2021-09-16 17:45:10 +02:00
Johann Hoffmann
138730fcf8 [WIFI-3016] Add support for configuration through environment variables (#18)
* Replace config files with env variable config and adapt docker-compose.yml to use local volumes

* Update README.md
2021-09-02 19:02:51 +02:00
68 changed files with 3862 additions and 704 deletions

View File

@@ -0,0 +1,14 @@
deploy_repo_url: https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy.git
repositories:
- name: owgw
url: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw.git
docker_compose_name: OWGW_TAG
- name: owsec
url: https://github.com/Telecominfraproject/wlan-cloud-ucentralsec.git
docker_compose_name: OWSEC_TAG
- name: owfms
url: https://github.com/Telecominfraproject/wlan-cloud-ucentralfms.git
docker_compose_name: OWFMS_TAG
- name: owgw-ui
url: https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui.git
docker_compose_name: OWGWUI_TAG

View File

@@ -0,0 +1,67 @@
name: Build cluster systeminfo checker image
on:
push:
branches:
- main
tags:
- 'v*'
# TODO delete after tests
pull_request:
branches:
- main
defaults:
run:
shell: bash
jobs:
docker:
runs-on: ubuntu-20.04
env:
DOCKER_REGISTRY_URL: tip-tip-wlan-cloud-ucentral.jfrog.io
DOCKER_REGISTRY_USERNAME: ucentral
steps:
- uses: actions/checkout@v2
- name: Build Docker image
working-directory: chart/docker
run: docker build -t wlan-cloud-clustersysteminfo:${{ github.sha }} .
- name: Tag Docker image
run: |
TAGS="${{ github.sha }}"
if [[ ${GITHUB_REF} == "refs/heads/"* ]]
then
CURRENT_TAG=$(echo ${GITHUB_REF#refs/heads/} | tr '/' '-')
TAGS="$TAGS $CURRENT_TAG"
else
if [[ ${GITHUB_REF} == "refs/tags/"* ]]
then
CURRENT_TAG=$(echo ${GITHUB_REF#refs/tags/} | tr '/' '-')
TAGS="$TAGS $CURRENT_TAG"
else # PR build
CURRENT_TAG=$(echo ${GITHUB_HEAD_REF#refs/heads/} | tr '/' '-')
TAGS="$TAGS $CURRENT_TAG"
fi
fi
echo "Result tags: $TAGS"
for tag in $TAGS; do
docker tag wlan-cloud-clustersysteminfo:${{ github.sha }} ${{ env.DOCKER_REGISTRY_URL }}/clustersysteminfo:$tag
done
- name: Log into Docker registry
if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/pull/') || github.ref == 'refs/heads/main'
uses: docker/login-action@v1
with:
registry: ${{ env.DOCKER_REGISTRY_URL }}
username: ${{ env.DOCKER_REGISTRY_USERNAME }}
password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }}
- name: Push Docker images
if: startsWith(github.ref, 'refs/tags/') || startsWith(github.ref, 'refs/pull/') || github.ref == 'refs/heads/main'
run: |
docker images | grep ${{ env.DOCKER_REGISTRY_URL }}/clustersysteminfo | awk -F ' ' '{print $1":"$2}' | xargs -I {} docker push {}

View File

@@ -33,11 +33,11 @@ jobs:
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
#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
@@ -74,3 +74,15 @@ jobs:
with:
body_path: wlan-cloud-ucentral-deploy/chart/release.txt
files: wlan-cloud-ucentral-deploy/chart/dist/*
trigger-testing:
runs-on: ubuntu-latest
needs: helm-package
steps:
- name: Trigger testing of release
uses: peter-evans/repository-dispatch@v1
with:
token: ${{ secrets.WLAN_TESTING_PAT }}
repository: Telecominfraproject/wlan-testing
event-type: new-ap-release
client-payload: '{"ref": "${GITHUB_REF#refs/tags/}", "sha": "${{ github.sha }}"}'

7
.gitignore vendored
View File

@@ -1,8 +1,5 @@
*.swp
chart/charts/*
!chart/charts/.gitkeep
/docker-compose/certs/
/docker-compose/*-data/data/
/docker-compose/*-data/uploads/
/docker-compose/.env
/docker-compose/.env_*
/docker-compose/*_data
/docker-compose/owls/*_data

View File

@@ -15,6 +15,7 @@ This is a short version of [uCentral branching model](https://telecominfraprojec
1. Create release branch with next Chart version (check Git tags for the latest version - for example if latest tag was `v0.1.0`, create release branch `release/v0.1.1`), set required microservices tags in refs in Chart.yaml (for example, if we want to have this version to be tied to ucentralgw release version `v2.0.0`, we should set its repository to `"git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=v2.0.0"`).
2. Increase Helm version in [Chart.yaml](./chart/Chart.yaml) to the same version as Git tag (for example if the latest git tag is `v0.1.0`, set version `0.1.1` (**without v in it**) in Chart.yaml).
3. Also increase the microservice image tags used by the Docker Compose deployment according to the release in the [.env](./docker-compose/.env) file.
3. Also increase the microservice image tags used by the Docker Compose deployments according to the release in the 'Image tags' section of the `docker-compose/.env`, `docker-compose/.env.selfsigned` and `docker-compose/.env.letsencrypt` files.
4. Create new git tag from release branch. The Git tag should have the same name as the intended release version. Once the tag is pushed to the repo, Github will trigger a build process that will create an assembly Helm chart bundle with all version fixed to the release equal to the Git tag name and will publish it to the public Artifactory and as GitHub release asset.
5. Release to the QA namespace using the packaged Helm assembly chart to verify there are no issues related to the deployment.

View File

@@ -1,21 +0,0 @@
dependencies:
- name: ucentralgw
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=master
version: 0.1.0
- name: ucentralsec
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralsec@helm?ref=main
version: 0.1.0
- name: ucentralfms
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralfms@helm?ref=main
version: 0.1.0
- name: ucentralgwui
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui@helm?ref=main
version: 0.1.0
- name: rttys
repository: git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty@chart?ref=main
version: 0.1.0
- name: kafka
repository: https://charts.bitnami.com/bitnami
version: 13.0.2
digest: sha256:1e144681dd3b4edcb831cb37d342820dfc82ab05ccfa0be004d7c7450a402011
generated: "2021-08-04T19:26:33.071800266+03:00"

View File

@@ -1,27 +1,42 @@
apiVersion: v2
name: wlan-cloud-ucentral
name: openwifi
appVersion: "1.0"
description: A Helm chart for Kubernetes
version: 0.1.0
version: 2.4.2
dependencies:
- name: ucentralgw
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=master"
- name: owgw
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw@helm?ref=v2.4.2"
version: 0.1.0
- name: ucentralsec
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralsec@helm?ref=main"
- name: owsec
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralsec@helm?ref=v2.4.2"
version: 0.1.0
- name: ucentralfms
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralfms@helm?ref=main"
- name: owfms
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralfms@helm?ref=v2.4.2"
version: 0.1.0
- name: ucentralgwui
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui@helm?ref=main"
- 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.2"
version: 0.1.0
- name: owprovui
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owprov-ui@helm?ref=main"
version: 0.1.0
condition: ucentralgwui.enabled
- name: rttys
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty@chart?ref=main"
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty@chart?ref=v0.1.0"
version: 0.1.0
condition: rttys.enabled
- name: kafka
repository: https://charts.bitnami.com/bitnami
repository: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
version: 13.0.2
condition: kafka.enabled
- name: owls
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owls@helm?ref=main"
version: 0.1.0
condition: owls.enabled
- name: owlsui
repository: "git+https://github.com/Telecominfraproject/wlan-cloud-owls-ui@helm?ref=master"
version: 0.1.0
condition: owlsui.enabled
- name: haproxy
repository: https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/
version: 0.2.21
condition: haproxy.enabled

View File

@@ -1,6 +1,6 @@
# ucentralgw
# openwifi
This Helm chart helps to deploy uCentral with all required dependencies to the Kubernetes clusters. Purpose of this chart is to setup correct connections between other microservices and other dependencies with correct Values and other charts as dependencies in [chart definition](Chart.yaml)
This Helm chart helps to deploy OpenWIFI Cloud SDK with all required dependencies to the Kubernetes clusters. Purpose of this chart is to setup correct connections between other microservices and other dependencies with correct Values and other charts as dependencies in [chart definition](Chart.yaml)
## TL;DR;
@@ -10,9 +10,11 @@ This Helm chart helps to deploy uCentral with all required dependencies to the K
$ helm install .
```
Then change the default password as described in [owsec docs](https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/tree/main#changing-default-password).
## Introduction
This chart bootstraps an uCentral on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
This chart bootstraps the OpenWIFI Cloud SDK on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
Current dependencies may be found in [chart definition](Chart.yaml) and list will be extended when new services will be introduced.
@@ -24,7 +26,7 @@ To install the chart with the release name `my-release`:
$ helm install --name my-release git+https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/@chart?ref=main
```
The command deploys ucentralgw 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.
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.
> **Tip**: List all releases using `helm list`
@@ -34,6 +36,10 @@ If you need to update your release, it could be required to update your helm cha
helm dependency update
```
#### 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.
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
@@ -50,10 +56,12 @@ The following table lists the configurable parameters that overrides microservic
| Parameter | Type | Description | Default |
|-----------|------|-------------|---------|
| `ucentralgw.configProperties."ucentral\.kafka\.enable"` | string | Configures uCentralGW to use Kafka for communication | `'true'` |
| `ucentralgw.configProperties."ucentral\.kafka\.brokerlist"` | string | Sets up Kafka broker list for uCentralGW to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `ucentralsec.configProperties."ucentral\.kafka\.enable"` | string | Configures uCentralSec to use Kafka for communication | `'true'` |
| `ucentralsec.configProperties."ucentral\.kafka\.brokerlist"` | string | Sets up Kafka broker list for uCentralSec to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owgw.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Gateway to use Kafka for communication | `'true'` |
| `owgw.configProperties."openwifi\.kafka\.brokerlist"` | string | Sets up Kafka broker list for OpenWIFI Gateway to the predictable Kubernetes service name (see `kafka.fullnameOverride` option description for details) | `'kafka:9092'` |
| `owsec.configProperties."openwifi\.kafka\.enable"` | string | Configures OpenWIFI Security to use Kafka for communication | `'true'` |
| `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'` |
| `rttys.enabled` | boolean | Enables [rttys](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty) deployment | `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` |
@@ -62,7 +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` |
| `ucentralgwui.enabled` | boolean | Enables [uCentralGW-UI](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui) deployment | `True` |
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.
@@ -70,11 +77,11 @@ Specify each parameter using the `--set key=value[,key=value]` argument to `helm
```bash
$ helm install --name my-release \
--set ucentralgw.replicaCount=1 \
--set owgw.replicaCount=1 \
.
```
The above command sets that only 1 instance of ucentralgw to be running
The above command sets that only 1 instance of OpenWIFI Gateway to be running
Alternatively, a YAML file that specifies the values for the parameters can be provided while installing the chart. For example,

View File

46
chart/docker/Dockerfile Normal file
View File

@@ -0,0 +1,46 @@
FROM alpine:latest AS base
RUN apk add curl git jq bash
WORKDIR /cli
# OWGW
ARG OWGW_VERSION=master
RUN git clone https://github.com/Telecominfraproject/wlan-cloud-ucentralgw.git owgw \
&& cd owgw \
&& git checkout $OWGW_VERSION \
&& cd /cli \
&& cp owgw/test_scripts/curl/cli owgw_cli \
&& rm -rf owgw
# OWSEC
ARG OWSEC_VERSION=main
RUN git clone https://github.com/Telecominfraproject/wlan-cloud-ucentralsec.git owsec \
&& cd owsec \
&& git checkout $OWSEC_VERSION \
&& cd /cli \
&& cp owsec/test_scripts/curl/cli owsec_cli \
&& rm -rf owsec
# OWFMS
ARG OWFMS_VERSION=main
RUN git clone https://github.com/Telecominfraproject/wlan-cloud-ucentralfms.git owfms \
&& cd owfms \
&& git checkout $OWFMS_VERSION \
&& cd /cli \
&& cp owfms/test_scripts/curl/cli owfms_cli \
&& rm -rf owfms
# OWPROV
ARG OWPROV_VERSION=main
RUN git clone https://github.com/Telecominfraproject/wlan-cloud-owprov.git owprov \
&& cd owprov \
&& git checkout $OWPROV_VERSION \
&& cd /cli \
&& cp owprov/test_scripts/curl/cli owprov_cli \
&& rm -rf owprov
COPY clustersysteminfo clustersysteminfo
COPY change_credentials change_credentials
ENTRYPOINT ["/cli/clustersysteminfo"]

68
chart/docker/change_credentials Executable file
View File

@@ -0,0 +1,68 @@
#!/bin/bash
# Constants
export DEFAULT_CHECK_RETRIES=10
# Usage function
usage () {
echo;
echo "- OWSEC - owsec endpoint to make requests to (i.e. openwifi.wlan.local:16001)";
echo "- OWSEC_DEFAULT_USERNAME - default owsec username from properties";
echo "- OWSEC_DEFAULT_PASSWORD - default owsec password (in cleartext) from properties";
echo "- OWSEC_NEW_PASSWORD - new owsec password (in cleartext) that should be set for login";
}
# Check if required environment variables were passed
## Login specifics
[ -z ${OWSEC+x} ] && echo "OWSEC is unset" && usage && exit 1
[ -z ${OWSEC_DEFAULT_USERNAME+x} ] && echo "OWSEC_DEFAULT_USERNAME is unset" && usage && exit 1
[ -z ${OWSEC_DEFAULT_PASSWORD+x} ] && echo "OWSEC_DEFAULT_PASSWORD is unset" && usage && exit 1
[ -z ${OWSEC_NEW_PASSWORD+x} ] && echo "OWSEC_NEW_PASSWORD is unset" && usage && exit 1
# Check credentials
export result_file=result.json
# Try logging in with default credentials
payload="{ \"userId\" : \"${OWSEC_DEFAULT_USERNAME}\" , \"password\" : \"${OWSEC_DEFAULT_PASSWORD}\" }"
curl ${FLAGS} -X POST "https://${OWSEC}/api/v1/oauth2" \
-H "Content-Type: application/json" \
-d "$payload" > ${result_file}
errorCode=$(cat ${result_file} | jq -r '.ErrorCode')
# If ErrorCode == 1, we must change password
if [[ "${errorCode}" == "1" ]]
then
payload="{ \"userId\" : \"${OWSEC_DEFAULT_USERNAME}\" , \"password\" : \"${OWSEC_DEFAULT_PASSWORD}\", \"newPassword\" : \"${OWSEC_NEW_PASSWORD}\" }"
curl ${FLAGS} -X POST "https://${OWSEC}/api/v1/oauth2" \
-H "Content-Type: application/json" \
-d "$payload" > ${result_file}
# Check if password was changed correctly
token=$(cat ${result_file} | jq -r '.access_token')
if [[ "${token}" == "null" ]] || [[ "${token}" == "" ]] || [[ ! -s ${result_file} ]]
then
echo "Could not change credentials:"
jq < ${result_file}
exit 1
else
echo "Login credentials were changed:"
fi
# If ErrorCode == 2 then new credentials were applied already OR user was deleted OR credentials are wrong
elif [[ "${errorCode}" == "2" ]]
then
# Let's try logging in using new credentials
payload="{ \"userId\" : \"${OWSEC_DEFAULT_USERNAME}\" , \"password\" : \"${OWSEC_NEW_PASSWORD}\" }"
curl ${FLAGS} -X POST "https://${OWSEC}/api/v1/oauth2" \
-H "Content-Type: application/json" \
-d "$payload" > ${result_file}
token=$(cat ${result_file} | jq -r '.access_token')
# TODO check if there are any response
if [[ "${token}" == "null" ]] || [[ "${token}" == "" ]] || [[ ! -s ${result_file} ]]
then
echo "Could not login with new credentials. Probably new login credentials are wrong OR user was deleted. Since we cannot check if user is really deleted, skipping this issue:"
else
echo "Logged in with new credentials:"
fi
else
echo "Credentials check failed with unexpected ErrorCode, please review the responce body:"
jq < ${result_file}
exit 2
fi
jq < ${result_file}

109
chart/docker/clustersysteminfo Executable file
View File

@@ -0,0 +1,109 @@
#!/bin/bash
# Constants
export DEFAULT_CHECK_RETRIES=30
# Check dependencies
[[ "$(which jq)" == "" ]] && echo "You need the package jq installed to use this script." && exit 1
[[ "$(which curl)" == "" ]] && echo "You need the package curl installed to use this script." && exit 1
# Check if required environment variables were passed
[[ -z ${OWSEC+x} ]] && echo "You must set the variable OWSEC in order to use this script. Something like" && echo "OWSEC=security.isp.com:16001" && exit 1
[[ -z ${OWSEC_DEFAULT_USERNAME+x} ]] && echo "You must set the variable OWSEC_DEFAULT_USERNAME in order to use this script. Something like" && echo "OWSEC_DEFAULT_USERNAME=tip@ucentral.com" && exit 1
[[ -z ${OWSEC_DEFAULT_PASSWORD+x} ]] && echo "You must set the variable OWSEC_DEFAULT_PASSWORD in order to use this script. Something like" && echo "OWSEC_DEFAULT_PASSWORD=openwifi" && exit 1
[[ -z ${OWSEC_NEW_PASSWORD+x} ]] && echo "You must set the variable OWSEC_NEW_PASSWORD in order to use this script. Something like" && echo "OWSEC_NEW_PASSWORD=NewPass123%" && exit 1
[[ "${CHECK_RETRIES}" == "" ]] && [[ "${CHECK_RETRIES}" -eq "${CHECK_RETRIES}" ]] && echo "Environment variable CHECK_RETRIES is not set or is not number, setting it to the default value (${DEFAULT_CHECK_RETRIES})" && export CHECK_RETRIES=$DEFAULT_CHECK_RETRIES
# Make sure owsec is resolvable
export OWSEC_FQDN=$(echo $OWSEC | awk -F ':' '{print $1}')
echo "Waiting for OWSEC FQDN ($OWSEC_FQDN) to be resolvable"
exit_code=1
until [[ "$exit_code" -eq "0" ]]
do
getent hosts $OWSEC_FQDN
exit_code=$?
sleep 1
done
echo
# Change/check password for owsec AND set owsec credentials
export CHANGE_CHECK_RETRIES=${CHECK_RETRIES}
until ./change_credentials || [[ "${CHANGE_CHECK_RETRIES}" -eq "0" ]]
do
echo "Change/check failed"
let "CHANGE_CHECK_RETRIES-=1"
echo "Retries left - $CHANGE_CHECK_RETRIES"
echo
sleep 5
done
if [[ "${CHANGE_CHECK_RETRIES}" -eq "0" ]]
then
echo "Run out of retries to change/check login credentials"
exit 3
fi
# 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
# -> Configuration using env variables
export OWSEC_USERNAME=${OWSEC_DEFAULT_USERNAME}
export OWSEC_PASSWORD=${OWSEC_NEW_PASSWORD}
echo "Running systeminfo checks for all components until all of them are available OR check tries are exausted ($CHECK_RETRIES)"
exit_code_sum=1
until [[ "$exit_code_sum" -eq "0" ]] || [[ "${CHECK_RETRIES}" -eq "0" ]]
do
exit_code_sum=0
./owsec_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
./owgw_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
./owfms_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
./owprov_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"
sleep 5
echo
done
exit $exit_code_sum

View File

@@ -0,0 +1,205 @@
#!/bin/bash
set -e
# Usage function
usage () {
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
VALUES_FILE_LOCATION_SPLITTED=()
EXTRA_VALUES_SPLITTED=()
# Helper functions
check_if_chart_version_is_release() {
PARSED_CHART_VERSION=$(echo $CHART_VERSION | grep -xP "v\d+\.\d+\.\d+.*")
if [[ -z "$PARSED_CHART_VERSION" ]]; then
return 1
else
return 0
fi
}
# Check if required environment variables were passed
## Deployment specifics
[ -z ${DEPLOY_METHOD+x} ] && echo "DEPLOY_METHOD is unset" && 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" && 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" && usage && exit 1
## Variables specifics
[ -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
# Transform some environment variables
export OWGW_VERSION_TAG=$(echo ${OWGW_VERSION} | tr '/' '-')
export OWGWUI_VERSION_TAG=$(echo ${OWGWUI_VERSION} | tr '/' '-')
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 '/' '-')
# Debug get bash version
bash --version > /dev/stderr
# Check deployment method that's required for this environment
helm plugin install https://github.com/databus23/helm-diff || true
if [[ "$DEPLOY_METHOD" == "git" ]]; then
helm plugin install https://github.com/aslafy-z/helm-git --version 0.10.0 || true
rm -rf wlan-cloud-ucentral-deploy || true
git clone https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy.git
cd wlan-cloud-ucentral-deploy
git checkout $CHART_VERSION
cd chart
if ! check_if_chart_version_is_release; then
sed -i '/wlan-cloud-ucentralgw@/s/ref=.*/ref='${OWGW_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralgw-ui@/s/ref=.*/ref='${OWGWUI_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralsec@/s/ref=.*/ref='${OWSEC_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-ucentralfms@/s/ref=.*/ref='${OWFMS_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-owprov@/s/ref=.*/ref='${OWPROV_VERSION}'\"/g' Chart.yaml
sed -i '/wlan-cloud-owprov-ui@/s/ref=.*/ref='${OWPROVUI_VERSION}'\"/g' Chart.yaml
fi
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm dependency update
cd ../..
export DEPLOY_SOURCE="wlan-cloud-ucentral-deploy/chart"
else
if [[ "$DEPLOY_METHOD" == "bundle" ]]; then
helm repo add tip-wlan-cloud-ucentral-helm https://tip.jfrog.io/artifactory/tip-wlan-cloud-ucentral-helm/ || true
export DEPLOY_SOURCE="tip-wlan-cloud-ucentral-helm/openwifi --version $CHART_VERSION"
else
echo "Deploy method is not correct: $DEPLOY_METHOD. Valid value - git or bundle"
exit 1
fi
fi
VALUES_FILES_FLAGS=()
IFS=',' read -ra VALUES_FILE_LOCATION_SPLITTED <<< "$VALUES_FILE_LOCATION"
for VALUE_FILE in ${VALUES_FILE_LOCATION_SPLITTED[*]}; do
VALUES_FILES_FLAGS+=("-f" $VALUE_FILE)
done
EXTRA_VALUES_FLAGS=()
IFS=',' read -ra EXTRA_VALUES_SPLITTED <<< "$EXTRA_VALUES"
for EXTRA_VALUE in ${EXTRA_VALUES_SPLITTED[*]}; do
EXTRA_VALUES_FLAGS+=("--set" $EXTRA_VALUE)
done
# Run the deployment
helm upgrade --install --create-namespace --wait --timeout 60m \
--namespace openwifi-${NAMESPACE} \
${VALUES_FILES_FLAGS[*]} \
--set owgw.services.owgw.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=gw-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owgw.configProperties."openwifi\.fileuploader\.host\.0\.name"=gw-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owgw.configProperties."rtty\.server"=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"=https://owgw-owgw:17002 \
--set owgw.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--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"=https://owsec-owsec:17001 \
--set owsec.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--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"=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 \
--set owgwui.ingresses.default.hosts={webui-${NAMESPACE}.cicd.lab.wlan.tip.build} \
--set owgwui.public_env_variables.DEFAULT_UCENTRALSEC_URL=https://sec-${NAMESPACE}.cicd.lab.wlan.tip.build:16001 \
--set owprov.services.owprov.annotations."external-dns\.alpha\.kubernetes\.io/hostname"=prov-${NAMESPACE}.cicd.lab.wlan.tip.build \
--set owprov.configProperties."openwifi\.system\.uri\.public"=https://prov-${NAMESPACE}.cicd.lab.wlan.tip.build:16005 \
--set owprov.configProperties."openwifi\.system\.uri\.private"=https://owprov-owprov:17005 \
--set owprov.configProperties."openwifi\.system\.uri\.ui"=https://webui-${NAMESPACE}.cicd.lab.wlan.tip.build \
--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 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"=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 \
${EXTRA_VALUES_FLAGS[*]} \
--set-file owgw.certs."restapi-cert\.pem"=$CERT_LOCATION \
--set-file owgw.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owgw.certs."websocket-cert\.pem"=$CERT_LOCATION \
--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 \
--set-file owfms.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owprov.certs."restapi-cert\.pem"=$CERT_LOCATION \
--set-file owprov.certs."restapi-key\.pem"=$KEY_LOCATION \
--set-file owls.certs."restapi-cert\.pem"=$CERT_LOCATION \
--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 \
tip-openwifi $DEPLOY_SOURCE

View File

@@ -0,0 +1,14 @@
owgw:
configProperties:
storage.type: postgresql
storage.type.postgresql.host: owgw-pgsql
storage.type.postgresql.database: owgw
storage.type.postgresql.username: owgw
storage.type.postgresql.password: owgw
postgresql:
enabled: true
fullnameOverride: owgw-pgsql
postgresqlDatabase: owgw
postgresqlUsername: owgw
postgresqlPassword: owgw

View File

@@ -0,0 +1,173 @@
owgw:
services:
owgw:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb-ip"
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16102"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16002,16003,17002"
configProperties:
simulatorid: 53494D020202
storage.type: postgresql
storage.type.postgresql.host: owgw-pgsql
storage.type.postgresql.database: owgw
storage.type.postgresql.username: owgw
storage.type.postgresql.password: owgw
resources:
requests:
cpu: 2000m
memory: 3000Mi
limits:
cpu: 2000m
memory: 3000Mi
postgresql:
enabled: true
fullnameOverride: owgw-pgsql
postgresqlDatabase: owgw
postgresqlUsername: owgw
postgresqlPassword: owgw
owls:
enabled: true
services:
owls:
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: "16107"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16007,17007"
external-dns.alpha.kubernetes.io/ttl: "60"
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
resources:
requests:
cpu: 3000m
memory: 8000Mi
limits:
cpu: 3000m
memory: 8000Mi
checks:
owls:
liveness:
httpGet:
path: /
port: 16107
failureThreshold: 900
readiness:
httpGet:
path: /
port: 16107
failureThreshold: 900
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: $OWLS_ROOT/certs/restapi-certs/ca.crt
openwifi.internal.restapi.host.0.cert: $OWLS_ROOT/certs/restapi-certs/tls.crt
openwifi.internal.restapi.host.0.key: $OWLS_ROOT/certs/restapi-certs/tls.key
openwifi.restapi.host.0.rootca: $OWLS_ROOT/certs/restapi-certs/ca.crt
openwifi.restapi.host.0.cert: $OWLS_ROOT/certs/restapi-certs/tls.crt
openwifi.restapi.host.0.key: $OWLS_ROOT/certs/restapi-certs/tls.key
volumes:
owls:
- name: config
mountPath: /owls-data/owls.properties
subPath: owls.properties
# Template below will be rendered in template
volumeDefinition: |
secret:
secretName: {{ include "owls.fullname" . }}-config
- name: certs
mountPath: /owls-data/certs
volumeDefinition: |
secret:
secretName: {{ include "owls.fullname" . }}-certs
- name: certs-cas
mountPath: /owls-data/certs/cas
volumeDefinition: |
secret:
secretName: {{ include "owls.fullname" . }}-certs-cas
# Change this if you want to use another volume type
- name: persist
mountPath: /owls-data/persist
volumeDefinition: |
persistentVolumeClaim:
claimName: {{ template "owls.fullname" . }}-pvc
- name: restapi-certs
mountPath: /owls-data/certs/restapi-certs
volumeDefinition: |
secret:
secretName: {{ include "owls.fullname" . }}-owls-restapi-tls
- name: restapi-ca
mountPath: /usr/local/share/ca-certificates/restapi-ca-selfsigned.pem
subPath: ca.crt
volumeDefinition: |
secret:
secretName: {{ include "owls.fullname" . }}-owls-restapi-tls
owlsui:
enabled: true
services:
owlsui:
type: NodePort
ingresses:
default:
enabled: true
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
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_302"}}'
external-dns.alpha.kubernetes.io/ttl: "60"
paths:
- path: /*
serviceName: owlsui
servicePort: http
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"

View File

@@ -0,0 +1,62 @@
owgw:
services:
owgw:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb-ip"
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16102"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16002,16003,17002,5912,5913"
owsec:
services:
owsec:
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: "16101"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16001,17001"
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:
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: "16104"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16004,17004"
owprov:
services:
owprov:
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: "16105"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-east-2:289708231103:certificate/bfa89c7a-5b64-4a8a-bcfe-ffec655b5285"
service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "16005,17005"
haproxy:
enabled: false

View File

@@ -0,0 +1,118 @@
owgw:
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"
owsec:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owgwui:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owfms:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owprov:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owprovui:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owls:
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"
rttys:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
owlsui:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
kafka:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"
zookeeper:
nodeSelector:
env: tests
tolerations:
- key: "tests"
operator: "Exists"
effect: "NoSchedule"

View File

@@ -0,0 +1,516 @@
owgw:
services:
owgw:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16102"
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: "16002,16003"
service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
# https://telecominfraproject.atlassian.net/browse/WIFI-5840
checks:
owgw:
readiness:
exec:
command: ["true"]
resources:
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 100m
memory: 200Mi
securityContext:
sysctls:
- name: net.ipv4.tcp_keepalive_intvl
value: "5"
- name: net.ipv4.tcp_keepalive_probes
value: "2"
- name: net.ipv4.tcp_keepalive_time
value: "45"
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
podSecurityPolicy:
enabled: true
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: $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:
services:
owsec:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16101"
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: "16001"
service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
# https://telecominfraproject.atlassian.net/browse/WIFI-5840
checks:
owsec:
readiness:
exec:
command: ["true"]
resources:
requests:
cpu: 10m
memory: 15Mi
limits:
cpu: 100m
memory: 100Mi
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: $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
rttys:
services:
rttys:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "5912"
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: "5912,5913"
service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
resources:
requests:
cpu: 10m
memory: 15Mi
limits:
cpu: 100m
memory: 100Mi
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
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
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_302"}}'
paths:
- path: /*
serviceName: owgwui
servicePort: http
resources:
requests:
cpu: 10m
memory: 30Mi
limits:
cpu: 10m
memory: 30Mi
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
owfms:
services:
owfms:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16104"
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"
service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
# https://telecominfraproject.atlassian.net/browse/WIFI-5840
checks:
owfms:
readiness:
exec:
command: ["true"]
resources:
requests:
cpu: 10m
memory: 30Mi
limits:
cpu: 50m
memory: 80Mi
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: $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:
services:
owprov:
type: LoadBalancer
annotations:
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: ssl
service.beta.kubernetes.io/aws-load-balancer-healthcheck-port: "16105"
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: "16005"
service.beta.kubernetes.io/aws-load-balancer-type: nlb-ip
checks:
owprov:
readiness:
exec:
command: ["true"]
resources:
requests:
cpu: 10m
memory: 20Mi
limits:
cpu: 100m
memory: 100Mi
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: $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
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
alb.ingress.kubernetes.io/listen-ports: '[{"HTTP": 80}, {"HTTPS": 443}]'
alb.ingress.kubernetes.io/actions.ssl-redirect: '{"Type": "redirect", "RedirectConfig": { "Protocol": "HTTPS", "Port": "443", "StatusCode": "HTTP_302"}}'
paths:
- path: /*
serviceName: owprovui
servicePort: http
podAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
kafka:
commonAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
heapOpts: -Xmx512m -Xms512m
resources:
requests:
cpu: 100m
memory: 512Mi
limits:
cpu: 500m
memory: 1Gi
readinessProbe:
initialDelaySeconds: 45
livenessProbe:
initialDelaySeconds: 60
zookeeper:
commonAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
heapSize: 256
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 200m
memory: 384Mi
clustersysteminfo:
enabled: true
delay: 60 # delaying to wait for AWS Route53 DNS propagation
restapiCerts:
enabled: true

View File

@@ -2,7 +2,7 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "wlanclouducentral.name" -}}
{{- define "openwifi.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
@@ -11,7 +11,7 @@ Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "wlanclouducentral.fullname" -}}
{{- define "openwifi.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
@@ -27,6 +27,6 @@ If release name contains chart name it will be used as a full name.
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "wlanclouducentral.chart" -}}
{{- define "openwifi.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}

View File

@@ -0,0 +1,51 @@
{{- $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
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

@@ -0,0 +1,82 @@
{{- $root := . -}}
{{- if .Values.clustersysteminfo.enabled }}
---
apiVersion: batch/v1
kind: Job
metadata:
name: {{ include "openwifi.fullname" . }}-clustersysteminfo-check
annotations:
"helm.sh/hook": post-install,post-upgrade
"helm.sh/hook-weight": "10"
"helm.sh/hook-delete-policy": before-hook-creation
labels:
app.kubernetes.io/name: {{ include "openwifi.name" . }}
helm.sh/chart: {{ include "openwifi.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
{{- with .Values.clustersysteminfo.activeDeadlineSeconds }}
activeDeadlineSeconds: {{ . }}
{{- end }}
{{- with .Values.clustersysteminfo.backoffLimit }}
backoffLimit: {{ . }}
{{- end }}
template:
metadata:
name: {{ include "openwifi.fullname" . }}-clustersysteminfo-check
labels:
app.kubernetes.io/name: {{ include "openwifi.name" . }}
helm.sh/chart: {{ include "openwifi.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
spec:
containers:
- name: clustersysteminfo-check
image: "{{ .Values.clustersysteminfo.images.clustersysteminfo.repository }}:{{ .Values.clustersysteminfo.images.clustersysteminfo.tag }}"
imagePullPolicy: {{ .Values.clustersysteminfo.images.clustersysteminfo.pullPolicy }}
env:
- name: KUBERNETES_DEPLOYED
value: "{{ now }}"
{{- range $key, $value := .Values.clustersysteminfo.public_env_variables }}
- name: {{ $key }}
value: {{ $value | quote }}
{{- end }}
{{- range $key, $value := .Values.clustersysteminfo.secret_env_variables }}
- name: {{ $key }}
valueFrom:
secretKeyRef:
name: {{ include "openwifi.fullname" $root }}-clustersysteminfo-env
key: {{ $key }}
{{- end }}
{{- with .Values.clustersysteminfo.resources }}
resources:
{{- toYaml . | nindent 12 }}
{{- end }}
restartPolicy: {{ .Values.clustersysteminfo.restartPolicy }}
imagePullSecrets:
{{- range $image, $imageValue := .Values.clustersysteminfo.images }}
{{- if $imageValue.regcred }}
- name: {{ include "openwifi.fullname" $root }}-{{ $image }}-clustersysteminfo-regcred
{{- end }}
{{- end }}
{{- with .Values.clustersysteminfo.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.clustersysteminfo.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.clustersysteminfo.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,19 @@
{{- $root := . -}}
{{- if .Values.clustersysteminfo.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" . }}-clustersysteminfo-env
kind: Secret
type: Opaque
data:
# Secret env variables
{{- range $key, $value := .Values.clustersysteminfo.secret_env_variables }}
{{ $key }}: {{ $value | b64enc | quote }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,20 @@
{{- $root := . -}}
{{- if .Values.clustersysteminfo.enabled }}
{{- range $image, $imageValue := .Values.clustersysteminfo.images }}
{{- if $imageValue.regcred }}
---
apiVersion: v1
kind: Secret
type: kubernetes.io/dockerconfigjson
metadata:
labels:
app.kuberentes.io/name: {{ include "openwifi.name" $root }}
helm.sh/chart: {{ include "openwifi.chart" $root }}
app.kubernetes.io/instance: {{ $root.Release.Name }}
app.kubernetes.io/managed-by: {{ $root.Release.Service }}
name: {{ include "openwifi.fullname" $root }}-{{ $image }}-clustersysteminfo-regcred
data:
.dockerconfigjson: {{ $imageValue.regcred | quote }}
{{- end }}
{{- end }}
{{- end }}

View File

@@ -1,26 +1,42 @@
# uCentralGW (https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/)
ucentralgw:
fullnameOverride: ucentralgw
# OpenWIFI Gateway (https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/)
owgw:
fullnameOverride: owgw
configProperties:
ucentral.kafka.enable: "true"
ucentral.kafka.brokerlist: kafka:9092
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
# uCentralSec (https://github.com/Telecominfraproject/wlan-cloud-ucentralsec)
ucentralsec:
fullnameOverride: ucentralsec
# OpenWIFI Security (https://github.com/Telecominfraproject/wlan-cloud-ucentralsec)
owsec:
fullnameOverride: owsec
configProperties:
ucentral.kafka.enable: "true"
ucentral.kafka.brokerlist: kafka:9092
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
# uCentralFMS (https://github.com/Telecominfraproject/wlan-cloud-ucentralfms)
ucentralfms:
fullnameOverride: ucentralfms
# OpenWIFI Firmware (https://github.com/Telecominfraproject/wlan-cloud-ucentralfms)
owfms:
fullnameOverride: owfms
configProperties:
ucentral.kafka.enable: "true"
ucentral.kafka.brokerlist: kafka:9092
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
# OpenWIFI Provisioning (https://github.com/Telecominfraproject/wlan-cloud-owprov/)
owprov:
fullnameOverride: owprov
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
# OpenWIFI Web UI (https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui/)
owgwui:
fullnameOverride: owgwui
# OpenWIFI Provisioning Web UI (https://github.com/Telecominfraproject/wlan-cloud-owprov-ui/)
owprovui:
fullnameOverride: owprovui
# rttys (https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-rtty)
rttys:
@@ -47,8 +63,318 @@ kafka:
zookeeper:
fullnameOverride: zookeeper
# uCentral UI (https://github.com/Telecominfraproject/wlan-cloud-ucentralgw-ui/)
ucentralgwui:
enabled: true
# clustersysteminfo check
clustersysteminfo:
enabled: false
fullnameOverride: ucentralgwui
fullnameOverride: clustersysteminfo
images:
clustersysteminfo:
repository: tip-tip-wlan-cloud-ucentral.jfrog.io/clustersysteminfo
tag: v2.4.2
pullPolicy: Always
# regcred:
# registry: tip-tip-wlan-cloud-ucentral.jfrog.io
# username: username
# password: password
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# requests:
# cpu: 100m
# memory: 128Mi
# limits:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}
public_env_variables:
FLAGS: "-s --connect-timeout 3"
OWSEC: sec:16001
CHECK_RETRIES: 30
secret_env_variables:
OWSEC_DEFAULT_USERNAME: tip@ucentral.com
OWSEC_DEFAULT_PASSWORD: openwifi
#OWSEC_NEW_PASSWORD: "" # Set this value in order for the check to work. Password must comply https://github.com/Telecominfraproject/wlan-cloud-ucentralsec/#authenticationvalidationexpression
activeDeadlineSeconds: 2400
backoffLimit: 5
restartPolicy: OnFailure
# OpenWIFI Load Simulator (https://github.com/Telecominfraproject/wlan-cloud-owls)
owls:
enabled: false
fullnameOverride: owls
configProperties:
openwifi.kafka.enable: "true"
openwifi.kafka.brokerlist: kafka:9092
# OpenWIFI Load Simulator UI (https://github.com/Telecominfraproject/wlan-cloud-owls-ui)
owlsui:
enabled: false
fullnameOverride: owlsui
# HAproxy (https://github.com/bitnami/charts/tree/master/bitnami/haproxy)
haproxy:
enabled: false
fullnameOverride: proxy
replicaCount: 3
service:
type: LoadBalancer
ports:
# healthcheck
- name: health
protocol: TCP
port: 8080
targetPort: health
# owfms
- name: owfmsrest
protocol: TCP
port: 16004
targetPort: owfmsrest
- name: owfmsrestint
protocol: TCP
port: 17004
targetPort: owfmsrestint
# owgw
- name: owgwws
protocol: TCP
port: 15002
targetPort: owgwws
- name: owgwrest
protocol: TCP
port: 16002
targetPort: owgwrest
- name: owgwfileup
protocol: TCP
port: 16003
targetPort: owgwfileup
- name: owgwrestint
protocol: TCP
port: 17002
targetPort: owgwrestint
# owprov
- name: owprovrest
protocol: TCP
port: 16005
targetPort: owprovrest
- name: owprovrestint
protocol: TCP
port: 17005
targetPort: owprovrestint
# owsec
- name: owsecrest
protocol: TCP
port: 16001
targetPort: owsecrest
- name: owsecrestint
protocol: TCP
port: 17001
targetPort: owsecrestint
# rttys
- name: rttysdev
protocol: TCP
port: 5912
targetPort: rttysdev
- name: rttysuser
protocol: TCP
port: 5913
targetPort: rttysuser
- name: rttysweb
protocol: TCP
port: 5914
targetPort: rttysweb
containerPorts:
# healthcheck
- name: health
containerPort: 8080
# owfms
- name: owfmsrest
containerPort: 16004
- name: owfmsrestint
containerPort: 17004
# owgw
- name: owgwws
containerPort: 15002
- name: owgwrest
containerPort: 16002
- name: owgwfileup
containerPort: 16003
- name: owgwrestint
containerPort: 17002
# owprov
- name: owprovrest
containerPort: 16005
- name: owprovrestint
containerPort: 17005
# owsec
- name: owsecrest
containerPort: 16001
- name: owsecrestint
containerPort: 17001
# rttys
- name: rttysdev
containerPort: 5912
- name: rttysuser
containerPort: 5913
- name: rttysweb
containerPort: 5914
configuration: |
global
log stdout format raw local0
maxconn 1024
defaults
log global
timeout client 360s
timeout connect 60s
timeout server 360s
# healthcheck
frontend front_healthcheck
bind :8080
mode http
default_backend back_healthcheck
backend back_healthcheck
mode http
http-after-response set-header Access-Control-Allow-Origin "*"
http-after-response set-header Access-Control-Max-Age "31536000"
http-request return status 200 content-type "text/plain" string "Pong"
# owfms
frontend front_owfms_rest
bind :16004
mode tcp
default_backend back_owfms_rest
backend back_owfms_rest
mode tcp
server svc_owfms_rest owfms-owfms:16004
frontend front_owfms_rest_internal
bind :17004
mode tcp
default_backend back_owfms_rest_internal
backend back_owfms_rest_internal
mode tcp
server svc_owfms_rest_internal owfms-owfms:17004
# owgw
frontend front_owgw_websocket
bind :15002
mode tcp
default_backend back_owgw_websocket
backend back_owgw_websocket
mode tcp
server svc_owgw_websocket owgw-owgw:15002
frontend front_owgw_rest
bind :16002
mode tcp
default_backend back_owgw_rest
backend back_owgw_rest
mode tcp
server svc_owgw_rest owgw-owgw:16002
frontend front_owgw_fileuploader
bind :16003
mode tcp
default_backend back_owgw_fileuploader
backend back_owgw_fileuploader
mode tcp
server svc_owgw_fileuploader owgw-owgw:16003
frontend front_owgw_rest_internal
bind :17002
mode tcp
default_backend back_owgw_rest_internal
backend back_owgw_rest_internal
mode tcp
server svc_owgw_rest_internal owgw-owgw:17002
# owprov
frontend front_owprov_rest
bind :16005
mode tcp
default_backend back_owprov_rest
backend back_owprov_rest
mode tcp
server svc_owprov_rest owprov-owprov:16005
frontend front_owprov_rest_internal
bind :17005
mode tcp
default_backend back_owprov_rest_internal
backend back_owprov_rest_internal
mode tcp
server svc_owprov_rest_internal owprov-owprov:17005
# owsec
frontend front_owsec_rest
bind :16001
mode tcp
default_backend back_owsec_rest
backend back_owsec_rest
mode tcp
server svc_owsec_rest owsec-owsec:16001
frontend front_owsec_rest_internal
bind :17001
mode tcp
default_backend back_owsec_rest_internal
backend back_owsec_rest_internal
mode tcp
server svc_owsec_rest_internal owsec-owsec:17001
# rttys
frontend front_rttys_dev
bind :5912
mode tcp
default_backend back_rttys_dev
backend back_rttys_dev
mode tcp
server svc_rttys_dev rttys-rttys:5912
frontend front_rttys_user
bind :5913
mode tcp
default_backend back_rttys_user
backend back_rttys_user
mode tcp
server svc_rttys_user rttys-rttys:5913
frontend front_rttys_web
bind :5914
mode tcp
default_backend back_rttys_web
backend back_rttys_web
mode tcp
server svc_rttys_web rttys-rttys:5914
# Cert-manager RESTAPI certs
restapiCerts:
enabled: false
services:
- owgw-owgw
- owsec-owsec
- owfms-owfms
- owprov-owprov
clusterDomain: cluster.local

View File

@@ -1,8 +1,28 @@
COMPOSE_PROJECT_NAME=ucentral
UCENTRALGW_TAG=master
UCENTRALGWUI_TAG=main
UCENTRALSEC_TAG=main
UCENTRALFMS_TAG=main
# Image tags
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.4.2
OWGWUI_TAG=v2.4.2
OWSEC_TAG=v2.4.0
OWFMS_TAG=v2.4.0
OWPROV_TAG=main
OWPROVUI_TAG=main
RTTYS_TAG=3.5.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=latest
POSTGRESQL_TAG=latest
# Microservice root/config directories
OWGW_ROOT=/owgw-data
OWGW_CONFIG=/owgw-data
OWSEC_ROOT=/owsec-data
OWSEC_CONFIG=/owsec-data
OWFMS_ROOT=/owfms-data
OWFMS_CONFIG=/owfms-data
OWPROV_ROOT=/owprov-data
OWPROV_CONFIG=/owprov-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

View File

@@ -0,0 +1,40 @@
# Image tags
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.4.2
OWGWUI_TAG=v2.4.2
OWSEC_TAG=v2.4.2
OWFMS_TAG=v2.4.2
OWPROV_TAG=main
OWPROVUI_TAG=main
RTTYS_TAG=3.5.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=latest
ACMESH_TAG=latest
TRAEFIK_TAG=latest
# Microservice root/config directories
OWGW_ROOT=/owgw-data
OWGW_CONFIG=/owgw-data
OWSEC_ROOT=/owsec-data
OWSEC_CONFIG=/owsec-data
OWFMS_ROOT=/owfms-data
OWFMS_CONFIG=/owfms-data
OWPROV_ROOT=/owprov-data
OWPROV_CONFIG=/owprov-data
# Microservice hostnames
INTERNAL_OWGW_HOSTNAME=owgw.wlan.local
INTERNAL_OWGWUI_HOSTNAME=owgw-ui.wlan.local
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_RTTYS_HOSTNAME=rttys.wlan.local
OWGW_HOSTNAME=
OWGWUI_HOSTNAME=
OWGWFILEUPLOAD_HOSTNAME=
OWSEC_HOSTNAME=
OWFMS_HOSTNAME=
OWPROV_HOSTNAME=
OWPROVUI_HOSTNAME=
RTTYS_HOSTNAME=

View File

@@ -0,0 +1,32 @@
# Image tags
COMPOSE_PROJECT_NAME=openwifi
OWGW_TAG=v2.4.2
OWGWUI_TAG=v2.4.2
OWSEC_TAG=v2.4.2
OWFMS_TAG=v2.4.2
OWPROV_TAG=main
OWPROVUI_TAG=main
RTTYS_TAG=3.5.0
KAFKA_TAG=latest
ZOOKEEPER_TAG=latest
ACMESH_TAG=latest
TRAEFIK_TAG=latest
# Microservice root/config directories
OWGW_ROOT=/owgw-data
OWGW_CONFIG=/owgw-data
OWSEC_ROOT=/owsec-data
OWSEC_CONFIG=/owsec-data
OWFMS_ROOT=/owfms-data
OWFMS_CONFIG=/owfms-data
OWPROV_ROOT=/owprov-data
OWPROV_CONFIG=/owprov-data
# Microservice hostnames
INTERNAL_OWGW_HOSTNAME=owgw.wlan.local
INTERNAL_OWGWUI_HOSTNAME=owgw-ui.wlan.local
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_RTTYS_HOSTNAME=rttys.wlan.local

View File

@@ -1,3 +0,0 @@
RUN_CHOWN=true
UCENTRALFMS_ROOT=/ucentralfms-data
UCENTRALFMS_CONFIG=/ucentralfms-data

View File

@@ -1,3 +0,0 @@
RUN_CHOWN=true
UCENTRALGW_ROOT=/ucentralgw-data
UCENTRALGW_CONFIG=/ucentralgw-data

View File

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

View File

@@ -1,3 +0,0 @@
RUN_CHOWN=true
UCENTRALSEC_ROOT=/ucentralsec-data
UCENTRALSEC_CONFIG=/ucentralsec-data

View File

@@ -1,20 +1,192 @@
# Docker Compose
With the provided Docker Compose file you can instantiate a complete deployment of the uCentral microservices and related components for local development purposes. To spin up a local development environment:
# 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 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 Letsencrypt certificates](#lb-deployment-with-letsencrypt-certificates)
- [OWLS deployment with self-signed certificates](owls/README.md)
### Configuration
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 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
1. Switch into the project directory with `cd docker-compose/`.
2. This repository contains a gateway certificate signed by TIP and a self-signed certificate for the REST API and other components which are used by default in the Compose deployment. The certificates are valid for the `*.wlan.local` domain and the Docker Compose uCentral microservice configs use `ucentral.wlan.local` as a hostname, so make sure you add an entry in your hosts file (or in your local DNS solution) which points to `127.0.0.1` or whatever the IP of the host running the deployment is. Be aware that by default only port `15002` (websocket) and `16003` (fileupload) are exposed on all interfaces and the rest only on localhost. Make sure to adapt that according to your needs.
3. If you have your own certificates and want to use the deployment for anything other than local development copy your certs into the `certs/` directory and reference them in the appropriate sections of the microservice configuration files. Make sure to also adapt the sections which reference the hostname. For more information on certificates please see the [certificates section](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw#certificates) of this README and/or [CERTIFICATES.md](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/master/CERTIFICATES.md).
4. Docker Compose pulls the microservice images from the JFrog repository. If you want to change the image tag or some of the image versions which are used for the other services, have a look into the `.env` file. You'll also find service specific `.env` files in this directory. Edit them if you want to change database passwords (highly recommended!) or other configuration data. Don't forget to adapt your changes in the application configuration files.
5. Open `docker-compose/ucentralgw-data/ucentralgw.properties` to change [authentication data](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw#default-username-and-password) for uCentralGW (again highly recommended!).
6. Spin up the deployment with `docker-compose up -d`.
7. Add the self-signed certificates to the system trust store of the containers with `./add-ca-cert.sh`.
8. Add SSL certificate exceptions in your browser by visiting https://ucentral.wlan.local:16001, https://ucentral.wlan.local:16002 and https://ucentral.wlan.local:16004 (make sure to visit all and add the exceptions).
9. Connect to your AP via SSH and add a static hosts entry in `/etc/hosts` for `ucentral.wlan.local` which points to the address of the host the Compose deployment runs on.
10. Navigate to the UI `http://ucentral.wlan.local` and login with your uCentralGW authentication data.
11. To use the [curl test script](https://github.com/Telecominfraproject/wlan-cloud-ucentralgw/blob/main/TEST_CURL.md) to talk to the API set the following environment variables:
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 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:
```
export UCENTRALSEC="ucentral.wlan.local:16001"
export OWSEC="openwifi.wlan.local:16001"
export FLAGS="-s --cacert <your-wlan-cloud-ucentral-deploy-location>/docker-compose/certs/restapi-ca.pem"
```
The `--cacert` option is necessary since the REST API certificates are self-signed. Omit the option if you provide your own signed certificates.
⚠️**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`. |
### 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 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_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
### owsec.env
| Variable | Description |
| ---------------------------------------- | ----------------------------------------------------------------------------------- |
| `SYSTEM_URI_PRIVATE`,`SYSTEM_URI_PUBLIC` | Set this to your OWSec 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 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 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 |
| ------------------------- | -------------------------------------------------------------------------- |
| `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.
## Non-LB deployment with PostgreSQL
1. Switch into the project directory with `cd docker-compose/`.
2. Set the following variables in the env files and make sure to uncomment the lines. It is highly recommended that you change the DB passwords to some random string.
### owgw.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
| `STORAGE_TYPE` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_HOST` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owgw` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owgw` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owgw` |
### owsec.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
| `STORAGE_TYPE` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_HOST` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owsec` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owsec` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owsec` |
### owfms.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
| `STORAGE_TYPE` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_HOST` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owfms` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owfms` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owfms` |
### owprov.env
| Variable | Value/Description |
| ---------------------------------- | ----------------- |
| `STORAGE_TYPE` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_HOST` | `postgresql` |
| `STORAGE_TYPE_POSTGRESQL_USERNAME` | `owprov` |
| `STORAGE_TYPE_POSTGRESQL_PASSWORD` | `owprov` |
| `STORAGE_TYPE_POSTGRESQL_DATABASE` | `owprov` |
### 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` |
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 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 |
| ------------------------- | -------------------------------------------------------------------------- |
| `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`. |
PS: The deployment creates local volumes to persist mostly application and database data. In addition to that several bind mounts are created: one for the `docker-compose/certs/` directory which is used by multiple services, and the other ones mount service specific data directories and configuration files located under `docker-compose/` into the appropriate containers. Be aware that for the bind mounts the host directories and files will be owned by the user in the container. Since the files are under version control, you may have to change the ownership to your user again before pulling changes.
### 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_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://owsec.example.com:16001`. |
### owsec.env
| 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://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://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 |
| ------------------------- | -------------------------------------------------------------------------- |
| `DEFAULT_UCENTRALSEC_URL` | Set this to your OWSec URL, for example `https://owsec.example.com:16001`. |
### traefik.env
| Variable | Description |
| --------------------------------------------------- | ----------------------------------------- |
| `TRAEFIK_CERTIFICATESRESOLVERS_OPENWIFI_ACME_EMAIL` | Email address used for ACME registration. |
3. Spin up the deployment with `docker-compose -f docker-compose.lb.letsencrypt.yml --env-file .env.letsencrypt 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-letsencrypt="docker-compose -f docker-compose.lb.letsencrypt.yml --env-file .env.letsencrypt"`. You also have the possibility to scale specific services to a specified number of instances with `docker-compose-lb-letsencrypt up -d --scale SERVICE=NUM`, where `SERVICE` is the service name as defined in the Compose file.
4. Check if the containers are up and running with `docker-compose-lb-letsencrypt ps`.
5. Login to the UI and follow the instructions to change your default password.
**Note**: All deployments create local volumes to persist mostly application, database and certificate data. In addition to that the `certs/` directory is bind mounted into the microservice containers. Be aware that for the bind mounts the host directories and files will be owned by the user in the container. Since the files are under version control, you may have to change the ownership to your user again before pulling changes.

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bash
set -e
SERVICES="ucentralgw.wlan.local ucentralsec.wlan.local ucentralfms.wlan.local"
for i in $SERVICES; do
docker-compose exec -T -u root $i apk add ca-certificates
docker cp certs/restapi-ca.pem ucentral_$i\_1:/usr/local/share/ca-certificates/
docker-compose exec -T -u root $i update-ca-certificates
done

View File

@@ -1,18 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC4DCCAcgCCQC7oc+4dT4WlTANBgkqhkiG9w0BAQsFADAyMQswCQYDVQQGEwJD
QTEMMAoGA1UECgwDVElQMRUwEwYDVQQDDAwqLndsYW4ubG9jYWwwHhcNMjEwNzA3
MDkyOTAxWhcNMzEwNzA1MDkyOTAxWjAyMQswCQYDVQQGEwJDQTEMMAoGA1UECgwD
VElQMRUwEwYDVQQDDAwqLndsYW4ubG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQD67KEKKHj1xyj0Sc+/WSFeXluhp+76V/8njnGcTus8IsaHWeAj
O1T1/PnqNMNP3CSgCpAZRn7Eom33HH89pC7iIE5t3aGrFzxZ6AxFgECUCkby1j9D
j7PawapJ7XNqT4P4ZGEGOWlLGE9oUpF2pr3B3jBwmV9t9d/Zp8na23K7rnsr5kNn
RXp6iPNPpynppNQFBwzsovyhu9tzk/zz3gohSY9f6oyNNaKcZwN/yrG4B8FnRfa7
WFNvkPi5zAjJ3oEXMp+Im2/SvSqzptYwZhplb14ILZ5ClkSwAslG8FiOAzXr887r
hgEPzqP6SNIOwy/B/AMOFQl6wPvXBwz9eNW1AgMBAAEwDQYJKoZIhvcNAQELBQAD
ggEBAA8Oa8jannqNRdqOuY460Pum1B61kGmf2OK2ZiMaddlxqL3ZBdXPqF02hwSd
q6uxCVP5NgvqSm+pTHaDcODJiCBrMmGQqHT82LuoCyk1BMqH/PYm+kfazPhKF31x
Me7E47DQzk4tMyV28HBCHH6UicQ05ryT1yBfmj8JmYNx9ezmJcanu0/eyI2Lv8Ar
Y7mrgblfOUnsif2w/aUaOsoY1t6/ThgTBc3BTMtUXXAcMiPLu4mSdN6nCm75Qp5q
4zl/SNPjLnmtpHhLDtr4swf6vZw0RG7ECCf6Av8lv8mJG6g53YM8jfe0EzLqbAFf
iSuQbt5n6lMWVgv+FKwXjwAda+Q=
MIIC1zCCAb+gAwIBAgIUcvD8UKybLhglR9dt/btowLEga18wDQYJKoZIhvcNAQEL
BQAwFzEVMBMGA1UEAwwMKi53bGFuLmxvY2FsMB4XDTIxMDkyMjEwMzExNloXDTMx
MDkyMDEwMzExNlowFzEVMBMGA1UEAwwMKi53bGFuLmxvY2FsMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyFV2AbvlMx9TDgD171Q5eqT8HG5UFoZPEhTW
87EjnpRYv07sDgnlMKnql4nnZG7ljEZw9Ln+bjJj+aYnBTG3xCAvSjbBJRC7Iyoe
CqYaBIPFyjSQ3uhTXd17Yu3M5OCudV+R577O2CGBn+5HFCoz88gT06qLwq+XfpKq
GslR2JToLjAdKIDQmJtmeBJh+FJ9/tJJipxR1M1qj9miqvQxx2+AWUYLzfVQAGCN
Nuk5DjKzDQ4DU2uFbEMQobXCQsUQka5LZiqi8TgN3v5CqbqKPYV4KRiVmQ+g/ko2
/z5z1Uz9kxZz7DD4GIO/w9k2c/95eewxjGqGynVK7ibO1Grp2wIDAQABoxswGTAX
BgNVHREEEDAOggwqLndsYW4ubG9jYWwwDQYJKoZIhvcNAQELBQADggEBAMfB/psY
ivIHemtBFIPmuGZyan3Wdg5c3cbDLP8XhgS3CovH3+eMfqHfUQMEVnzvn0pb5SPG
1qEQC6BPPBJexDLQ8PUNNtIeFk9phoJmkkkTLggrCoW5FLgxPJYVU4Lc7fpVdeFd
UImExdoWQDSiWjMGYlS078c2Gd2eQSZ2So2kQGSRVUXlnr9LFGtSkrtVTXVQyfz4
oIftZ1FQguMp/a58pmzhkMLQGBm8d0gaFlfKzpnGL/nEwWV5AbvNHgVz1BZn0v5a
vv3+ex6qQ4Ftbq++G/1rfXQP+KOwOj62zUkXQIwJVVU2HMc4D1CrG98PRZqMuUrk
SxsLQQSPsKFSqTc=
-----END CERTIFICATE-----

View File

@@ -1,18 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC4DCCAcgCCQC7oc+4dT4WlTANBgkqhkiG9w0BAQsFADAyMQswCQYDVQQGEwJD
QTEMMAoGA1UECgwDVElQMRUwEwYDVQQDDAwqLndsYW4ubG9jYWwwHhcNMjEwNzA3
MDkyOTAxWhcNMzEwNzA1MDkyOTAxWjAyMQswCQYDVQQGEwJDQTEMMAoGA1UECgwD
VElQMRUwEwYDVQQDDAwqLndsYW4ubG9jYWwwggEiMA0GCSqGSIb3DQEBAQUAA4IB
DwAwggEKAoIBAQD67KEKKHj1xyj0Sc+/WSFeXluhp+76V/8njnGcTus8IsaHWeAj
O1T1/PnqNMNP3CSgCpAZRn7Eom33HH89pC7iIE5t3aGrFzxZ6AxFgECUCkby1j9D
j7PawapJ7XNqT4P4ZGEGOWlLGE9oUpF2pr3B3jBwmV9t9d/Zp8na23K7rnsr5kNn
RXp6iPNPpynppNQFBwzsovyhu9tzk/zz3gohSY9f6oyNNaKcZwN/yrG4B8FnRfa7
WFNvkPi5zAjJ3oEXMp+Im2/SvSqzptYwZhplb14ILZ5ClkSwAslG8FiOAzXr887r
hgEPzqP6SNIOwy/B/AMOFQl6wPvXBwz9eNW1AgMBAAEwDQYJKoZIhvcNAQELBQAD
ggEBAA8Oa8jannqNRdqOuY460Pum1B61kGmf2OK2ZiMaddlxqL3ZBdXPqF02hwSd
q6uxCVP5NgvqSm+pTHaDcODJiCBrMmGQqHT82LuoCyk1BMqH/PYm+kfazPhKF31x
Me7E47DQzk4tMyV28HBCHH6UicQ05ryT1yBfmj8JmYNx9ezmJcanu0/eyI2Lv8Ar
Y7mrgblfOUnsif2w/aUaOsoY1t6/ThgTBc3BTMtUXXAcMiPLu4mSdN6nCm75Qp5q
4zl/SNPjLnmtpHhLDtr4swf6vZw0RG7ECCf6Av8lv8mJG6g53YM8jfe0EzLqbAFf
iSuQbt5n6lMWVgv+FKwXjwAda+Q=
MIIC1zCCAb+gAwIBAgIUcvD8UKybLhglR9dt/btowLEga18wDQYJKoZIhvcNAQEL
BQAwFzEVMBMGA1UEAwwMKi53bGFuLmxvY2FsMB4XDTIxMDkyMjEwMzExNloXDTMx
MDkyMDEwMzExNlowFzEVMBMGA1UEAwwMKi53bGFuLmxvY2FsMIIBIjANBgkqhkiG
9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyFV2AbvlMx9TDgD171Q5eqT8HG5UFoZPEhTW
87EjnpRYv07sDgnlMKnql4nnZG7ljEZw9Ln+bjJj+aYnBTG3xCAvSjbBJRC7Iyoe
CqYaBIPFyjSQ3uhTXd17Yu3M5OCudV+R577O2CGBn+5HFCoz88gT06qLwq+XfpKq
GslR2JToLjAdKIDQmJtmeBJh+FJ9/tJJipxR1M1qj9miqvQxx2+AWUYLzfVQAGCN
Nuk5DjKzDQ4DU2uFbEMQobXCQsUQka5LZiqi8TgN3v5CqbqKPYV4KRiVmQ+g/ko2
/z5z1Uz9kxZz7DD4GIO/w9k2c/95eewxjGqGynVK7ibO1Grp2wIDAQABoxswGTAX
BgNVHREEEDAOggwqLndsYW4ubG9jYWwwDQYJKoZIhvcNAQELBQADggEBAMfB/psY
ivIHemtBFIPmuGZyan3Wdg5c3cbDLP8XhgS3CovH3+eMfqHfUQMEVnzvn0pb5SPG
1qEQC6BPPBJexDLQ8PUNNtIeFk9phoJmkkkTLggrCoW5FLgxPJYVU4Lc7fpVdeFd
UImExdoWQDSiWjMGYlS078c2Gd2eQSZ2So2kQGSRVUXlnr9LFGtSkrtVTXVQyfz4
oIftZ1FQguMp/a58pmzhkMLQGBm8d0gaFlfKzpnGL/nEwWV5AbvNHgVz1BZn0v5a
vv3+ex6qQ4Ftbq++G/1rfXQP+KOwOj62zUkXQIwJVVU2HMc4D1CrG98PRZqMuUrk
SxsLQQSPsKFSqTc=
-----END CERTIFICATE-----

View File

@@ -1,28 +1,28 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD67KEKKHj1xyj0
Sc+/WSFeXluhp+76V/8njnGcTus8IsaHWeAjO1T1/PnqNMNP3CSgCpAZRn7Eom33
HH89pC7iIE5t3aGrFzxZ6AxFgECUCkby1j9Dj7PawapJ7XNqT4P4ZGEGOWlLGE9o
UpF2pr3B3jBwmV9t9d/Zp8na23K7rnsr5kNnRXp6iPNPpynppNQFBwzsovyhu9tz
k/zz3gohSY9f6oyNNaKcZwN/yrG4B8FnRfa7WFNvkPi5zAjJ3oEXMp+Im2/SvSqz
ptYwZhplb14ILZ5ClkSwAslG8FiOAzXr887rhgEPzqP6SNIOwy/B/AMOFQl6wPvX
Bwz9eNW1AgMBAAECggEAZdJT3u1heEqjAc5Z8QnYEpUzlbuxrAC9V23kCEu2BScP
bKk53NIcvd00BKf4gZWRfygKJVeH5X8MJHR55aeUJsp5SPfgvK6nHMye/iz3B5vM
AoqSDXZow2JHGcyzQvaVVNxWytHNOl3ZCzpGMOGkquDgwzBZmyNk/Muri5X1TtbH
DgeYdht2YiHqHdGWsLNU1vZAgzlwD8fXg65XOmNehjWnowhpNRCgpcDeJCtEuNzt
6iXFWffjO6YTbVnoM5xhLROjLv6gYP4wxsQSZc/NGz9Jow7VxlYZg9wCE75bduFn
7D5O4OgVgPgYbyCutpB/o4PMNURb4V/5p2OAEgLX2QKBgQD+kHYRAaawRbaY4jGf
isj0oh2C/Z99Mqf/nnpPwmUwrhpmnQ+pRdWBw940tPrEpVoOcCPWQ5hO1zUET18d
xQqs3zd6lEhJogmMqkjOT670YBEX/wyALd3M5F3HT/K2aixL1XaCCpAl97JB9RyB
zGIr5c+mIOVK/uYrlFO28thXzwKBgQD8VumZIYZpWeE7pTyCg0PcDYlNATA/VKoD
9YrGqEEHGgFNJEWj8Xj8aqBzaPoUk+eGp7NfSoOchVM+Bf3ktWy5doZCmNuxlOyq
Ix5yrB2jyYceaSf2nxHqlD2VhKB/YJx0yTU1UkB5dG4nYnqiUg7c5JeQOVzwFKm1
t6/Hk/cXOwKBgGT+yWjL3+cVcXFMZGWouTudSdobZ3hTbaWTqXEVbfIXUPAfJgSB
aUi3feQpXUhBVe5efUlXvgihhy4zk0gLUcXuNWOTiu5ztBgzwvjfUkkwB/geP0Zn
bBULEU2vIVtP2k0n3oGPUUtO71ENvwacIOLLpUuCx5WudYEasu/lfwGvAoGBAOiE
manuF3HaTU3tu20z0YLiwkK/tpqUxDjzuBXIEmudzdcsdjNUHbzR79mIwO/XPf95
ZjKHcfD3dbXwRXzKpE3dZmfVfJMM/GrmA3d9G67B04z1Lsr01siGIp004cOd3W1L
vojMqvZ/j8Ug3InX/TQUO4i9IuNi1uLISOQpdwTjAoGAG33swIFnH/mz7ubu8wfE
9nwe8NNf56kbFBG2FMuHvo8GYj0sqylwtZnh4TCwlTzqUO8e6oFdK8Ot6z7H9Fa3
vnDD2WRwEFydRP5fbW5eFmGbzLfHlzUY+Do81qrUMF47LEN94X7yaXdb/vNW57lp
K9hGF1Bdk8089Knm3l1Fc4w=
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDIVXYBu+UzH1MO
APXvVDl6pPwcblQWhk8SFNbzsSOelFi/TuwOCeUwqeqXiedkbuWMRnD0uf5uMmP5
picFMbfEIC9KNsElELsjKh4KphoEg8XKNJDe6FNd3Xti7czk4K51X5Hnvs7YIYGf
7kcUKjPzyBPTqovCr5d+kqoayVHYlOguMB0ogNCYm2Z4EmH4Un3+0kmKnFHUzWqP
2aKq9DHHb4BZRgvN9VAAYI026TkOMrMNDgNTa4VsQxChtcJCxRCRrktmKqLxOA3e
/kKpuoo9hXgpGJWZD6D+Sjb/PnPVTP2TFnPsMPgYg7/D2TZz/3l57DGMaobKdUru
Js7UaunbAgMBAAECggEBAMFh9dMArORnhYYMGVuY4w9n+dH8EoHXzrY2lbSRtz+a
Ff0+UxHOLYaHT2RPA6Xogv+g8+LZNCjtzaIs6JfUAX96TgwGxPVhrDPqsSs4Yf8f
sKtbiMkUXX1LkpLR2KrL1LyKr86UWxk5ZuaaXdSyVIosBi+Z/uXFGKlfLINE+RPm
HNxahajMoNJFqgf3kQKD6hmuPSO/BGAdDk/c8J2adTRz3cjEqaqfxwOxUNnHx0hC
CGkw/Eszibnl/7KhbsKBcVcCKKcwbifwXb2H4h9yJl1YEzXALhunWhCT6/QQ1F9b
XV7iVSXYt5QAxFTgGbGHmzfXMq7s2evYodMe87OEl+ECgYEA5qNUa6ol/WkvFy6O
gnouswspQcR9yuKIIrYuORPI+85HfZEJQvdLyoIQgkDCl14SZRmProFBXXUGZU1D
9VxW2TIftlFH9wwFhrWMBFPcRvNL3PSFQTzWwsF3IFcXQOlAwxr9KF741OFnSLWh
LXFXXfQq9wQbBUwbrZDl4PKaGesCgYEA3l0KgRxzQHKnxfSGqk7V21mqYv8XNuVh
ZhUukJoASQh59zbk2Jthu3HfQPmi83IBbR39QD5FLwNftNMeZf3GSHba8nSYYvtw
faUMD2far7mDR8wuBPqRWBbNgpiL2Bp93K8kUFqujjZo5E6cVPdvKi9/9oVRZnew
8AZwVPFqA9ECgYB0/9otm+0Vtqw62FVW/2B9V2YghOtDZtOkuEKOlejZRHWjz1Wh
cQ4ztvNlADE21HQEcYkf/1YHcPxDm4SkDanJGNJZjLYzLxgGlEZpU5llLLsJZcnL
pG9V8QrbjxKuzSUbVK+kMTmN1KKukeUnxl2JvfmlwaFreIZ58A2NpcRi7QKBgQDI
fhWhklhsjLSvbSoa1xhGPhO+TQjOa4YleAXTRbfqIeVuvKUclQVK8IJ+4FdHr8yP
aVHWIg9ZM26Q6SZoiafF4LzLjct0vAeSkkVMgrSQavFuxC/eN1rjlTPZg9fbkw9W
8ugIN6tZ+L8c07Brf+pQnCGB0nUxscvsr7GLNV0EcQKBgEo51BY0PFEKcKjSZp0i
excPcHdSQV3/BLOhc7rzmmQyRUXFTGbiE0lKvu0Y54NLHnb2WP1H8M45mIUH5YTh
tOKvBtlh/4vbCAGWv8OJzN+sV9Ef/0odCHiWr//prkpdGs2jFS3VDiJALj3hxpox
oThwxq1WTyi9ln3MJCWUqAQ9
-----END PRIVATE KEY-----

125
docker-compose/deploy.sh Executable file
View File

@@ -0,0 +1,125 @@
#!/bin/bash
set -e
# Usage function
usage () {
echo;
echo "This script is intended for OpenWiFi cloud SDK deployment using Docker Compose (https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/tree/main/docker-compose). Configuration is done based on shell environment variables.";
echo;
echo "Required environment variables:"
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;
echo "- OWGW_FILEUPLOADER_HOST_NAME - hostname to be used for OWGW fileupload";
echo "- OWGW_FILEUPLOADER_URI - URL to be used for OWGW fileupload";
# echo "- OWGW_SYSTEM_URI_PRIVATE - private URL to be used for OWGW";
echo "- OWGW_SYSTEM_URI_PUBLIC - public URL to be used for OWGW";
echo "- OWGW_RTTY_SERVER - public hostname of the RTTY server";
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 "- 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 "- 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
## 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
#[ -z ${OWGW_SYSTEM_URI_PRIVATE+x} ] && echo "OWGW_SYSTEM_URI_PRIVATE is unset" && usage && exit 1
[ -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
# Search and replace image version tags if set
if [[ ! -z "$OWGW_VERSION" ]]; then
sed -i "s~.*OWGW_TAG=.*~OWGW_TAG=$OWGW_VERSION~" .env
fi
if [[ ! -z "$OWSEC_VERSION" ]]; then
sed -i "s~.*OWSEC_TAG=.*~OWSEC_TAG=$OWSEC_VERSION~" .env
fi
if [[ ! -z "$OWFMS_VERSION" ]]; then
sed -i "s~.*OWFMS_TAG=.*~OWFMS_TAG=$OWFMS_VERSION~" .env
fi
if [[ ! -z "$OWPROV_VERSION" ]]; then
sed -i "s~.*OWPROV_TAG=.*~OWPROV_TAG=$OWPROV_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~.*FILEUPLOADER_HOST_NAME=.*~FILEUPLOADER_HOST_NAME=$OWGW_FILEUPLOADER_HOST_NAME~" owgw.env
sed -i "s~.*FILEUPLOADER_URI=.*~FILEUPLOADER_URI=$OWGW_FILEUPLOADER_URI~" owgw.env
sed -i "s~.*SYSTEM_URI_PUBLIC=.*~SYSTEM_URI_PUBLIC=$OWGW_SYSTEM_URI_PUBLIC~" owgw.env
#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
fi
sed -i "s~.*DEFAULT_UCENTRALSEC_URL=.*~DEFAULT_UCENTRALSEC_URL=$DEFAULT_UCENTRALSEC_URL~" owgw-ui.env
sed -i "s~.*AUTHENTICATION_DEFAULT_USERNAME=.*~AUTHENTICATION_DEFAULT_USERNAME=$OWSEC_AUTHENTICATION_DEFAULT_USERNAME~" owsec.env
sed -i "s~.*AUTHENTICATION_DEFAULT_PASSWORD=.*~AUTHENTICATION_DEFAULT_PASSWORD=$OWSEC_AUTHENTICATION_DEFAULT_PASSWORD~" owsec.env
#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
#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
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~.*DEFAULT_UCENTRALSEC_URL=.*~DEFAULT_UCENTRALSEC_URL=$DEFAULT_UCENTRALSEC_URL~" owprov-ui.env
sed -i "s~\(^token:\).*~\1 $RTTY_TOKEN~" rttys/rttys.conf
# Run the deployment
docker-compose up -d

View File

@@ -0,0 +1,187 @@
version: '3'
volumes:
owgw_data:
driver: local
owsec_data:
driver: local
owfms_data:
driver: local
owprov_data:
driver: local
zookeeper_data:
driver: local
zookeeper_datalog:
driver: local
kafka_data:
driver: local
letsencrypt_certs:
driver: local
networks:
openwifi:
services:
owgw:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owgw:${OWGW_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWGW_HOSTNAME}
env_file:
- .env.letsencrypt
- owgw.env
depends_on:
- kafka
- rttys
restart: unless-stopped
volumes:
- owgw_data:${OWGW_ROOT}/persist
- ./certs:/${OWGW_ROOT}/certs
sysctls:
- net.ipv4.tcp_keepalive_intvl=5
- net.ipv4.tcp_keepalive_probes=2
- net.ipv4.tcp_keepalive_time=45
owgw-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui:${OWGWUI_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWGWUI_HOSTNAME}
env_file:
- owgw-ui.env
depends_on:
- owsec
- owgw
- owfms
- owprov
restart: unless-stopped
owsec:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owsec:${OWSEC_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWSEC_HOSTNAME}
env_file:
- .env.letsencrypt
- owsec.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- owsec_data:${OWSEC_ROOT}/persist
- ./certs:/${OWSEC_ROOT}/certs
owfms:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owfms:${OWFMS_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWFMS_HOSTNAME}
env_file:
- .env.letsencrypt
- owfms.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- owfms_data:${OWFMS_ROOT}/persist
- ./certs:/${OWFMS_ROOT}/certs
owprov:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owprov:${OWPROV_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWPROV_HOSTNAME}
env_file:
- .env.letsencrypt
- owprov.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- owprov_data:${OWPROV_ROOT}
- ./certs:/${OWPROV_ROOT}/certs
owprov-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owprov-ui:${OWPROVUI_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWPROVUI_HOSTNAME}
env_file:
- owprov-ui.env
depends_on:
- owsec
- owgw
- owfms
- owprov
restart: unless-stopped
rttys:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/rttys:${RTTYS_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_RTTYS_HOSTNAME}
restart: unless-stopped
volumes:
- "./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}"
networks:
openwifi:
restart: unless-stopped
volumes:
- zookeeper_data:/data
- zookeeper_datalog:/datalog
kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
openwifi:
env_file:
- kafka.env
restart: unless-stopped
depends_on:
- zookeeper
volumes:
- kafka_data:/bitnami/kafka
traefik:
image: "traefik:${TRAEFIK_TAG}"
networks:
openwifi:
env_file:
- .env.letsencrypt
- traefik.env
depends_on:
- owsec
- owgw
- owgw-ui
- owfms
- owprov
- owprov-ui
- rttys
restart: unless-stopped
volumes:
- "./traefik/openwifi_letsencrypt.yaml:/etc/traefik/openwifi.yaml"
- "./certs/restapi-ca.pem:/certs/restapi-ca.pem"
- "letsencrypt_certs:/letsencrypt"
ports:
- "15002:15002"
- "16002:16002"
- "16003:16003"
- "80:80"
- "443:443"
- "16001:16001"
- "16004:16004"
- "16005:16005"
- "5912:5912"
- "5913:5913"

View File

@@ -0,0 +1,189 @@
version: '3'
volumes:
owgw_data:
driver: local
owsec_data:
driver: local
owfms_data:
driver: local
owprov_data:
driver: local
zookeeper_data:
driver: local
zookeeper_datalog:
driver: local
kafka_data:
driver: local
networks:
openwifi:
services:
owgw:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owgw:${OWGW_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWGW_HOSTNAME}
env_file:
- .env.selfsigned
- owgw.env
depends_on:
- kafka
- rttys
restart: unless-stopped
volumes:
- owgw_data:${OWGW_ROOT}/persist
- ./certs:/${OWGW_ROOT}/certs
sysctls:
- net.ipv4.tcp_keepalive_intvl=5
- net.ipv4.tcp_keepalive_probes=2
- net.ipv4.tcp_keepalive_time=45
owgw-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui:${OWGWUI_TAG}"
env_file:
- owgw-ui.env
networks:
openwifi:
aliases:
- ${INTERNAL_OWGWUI_HOSTNAME}
env_file:
- owgw-ui.env
depends_on:
- owsec
- owgw
- owfms
- owprov
restart: unless-stopped
owsec:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owsec:${OWSEC_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWSEC_HOSTNAME}
env_file:
- .env.selfsigned
- owsec.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- owsec_data:${OWSEC_ROOT}/persist
- ./certs:/${OWSEC_ROOT}/certs
owfms:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owfms:${OWFMS_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWFMS_HOSTNAME}
env_file:
- .env.selfsigned
- owfms.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- owfms_data:${OWFMS_ROOT}/persist
- ./certs:/${OWFMS_ROOT}/certs
owprov:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owprov:${OWPROV_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWPROV_HOSTNAME}
env_file:
- .env.selfsigned
- owprov.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- owprov_data:${OWPROV_ROOT}
- ./certs:/${OWPROV_ROOT}/certs
owprov-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owprov-ui:${OWPROVUI_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWPROVUI_HOSTNAME}
env_file:
- owprov-ui.env
depends_on:
- owsec
- owgw
- owfms
- owprov
restart: unless-stopped
rttys:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/rttys:${RTTYS_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_RTTYS_HOSTNAME}
restart: unless-stopped
volumes:
- "./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}"
networks:
openwifi:
restart: unless-stopped
volumes:
- zookeeper_data:/data
- zookeeper_datalog:/datalog
kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
openwifi:
env_file:
- kafka.env
restart: unless-stopped
depends_on:
- zookeeper
volumes:
- kafka_data:/bitnami/kafka
traefik:
image: "traefik:${TRAEFIK_TAG}"
networks:
openwifi:
env_file:
- traefik.env
depends_on:
- owsec
- owgw
- owgw-ui
- owfms
- owprov
- owprov-ui
- rttys
restart: unless-stopped
volumes:
- "./traefik/openwifi_selfsigned.yaml:/etc/traefik/openwifi.yaml"
- "./certs/restapi-ca.pem:/certs/restapi-ca.pem"
- "./certs/restapi-cert.pem:/certs/restapi-cert.pem"
- "./certs/restapi-key.pem:/certs/restapi-key.pem"
ports:
- "15002:15002"
- "16002:16002"
- "16003:16003"
- "80:80"
- "8080:8080"
- "443:443"
- "8443:8443"
- "16001:16001"
- "16004:16004"
- "16005:16005"
- "5912:5912"
- "5913:5913"

View File

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

View File

@@ -8,77 +8,146 @@ volumes:
kafka_data:
driver: local
networks:
openwifi:
services:
ucentralgw.wlan.local:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/ucentralgw:${UCENTRALGW_TAG}"
owgw:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owgw:${OWGW_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWGW_HOSTNAME}
env_file:
- .env_ucentralgw
depends_on:
- owgw.env
depends_on:
- kafka
- rttys
restart: unless-stopped
volumes:
- "./owgw_data:${OWGW_ROOT}"
- "./certs:/${OWGW_ROOT}/certs"
ports:
- "15002:15002"
- "127.0.0.1:16002:16002"
- "16002:16002"
- "16102:16102"
- "16003:16003"
- "127.0.0.1:16102:16102"
volumes:
- ./ucentralgw-data:/ucentralgw-data
- ./certs:/ucentralgw-data/certs
sysctls:
- net.ipv4.tcp_keepalive_intvl=5
- net.ipv4.tcp_keepalive_probes=2
- net.ipv4.tcp_keepalive_time=45
ucentralgw-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/ucentralgw-ui:${UCENTRALGWUI_TAG}"
owgw-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owgw-ui:${OWGWUI_TAG}"
networks:
openwifi:
env_file:
- .env_ucentralgw-ui
- owgw-ui.env
depends_on:
- ucentralsec.wlan.local
- ucentralgw.wlan.local
- ucentralfms.wlan.local
- owsec
- owgw
- owfms
- owprov
restart: unless-stopped
ports:
- "127.0.0.1:80:80"
ucentralsec.wlan.local:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/ucentralsec:${UCENTRALSEC_TAG}"
env_file:
- .env_ucentralsec
depends_on:
- kafka
restart: unless-stopped
ports:
- "127.0.0.1:16001:16001"
- "127.0.0.1:16101:16101"
volumes:
- ./ucentralsec-data:/ucentralsec-data
- ./certs:/ucentralsec-data/certs
- "./owgw-ui/default.conf:/etc/nginx/conf.d/default.conf"
- "./certs/restapi-cert.pem:/etc/nginx/restapi-cert.pem"
- "./certs/restapi-key.pem:/etc/nginx/restapi-key.pem"
ports:
- "80:80"
- "443:443"
ucentralfms.wlan.local:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/ucentralfms:${UCENTRALFMS_TAG}"
owsec:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owsec:${OWSEC_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWSEC_HOSTNAME}
env_file:
- .env_ucentralfms
- owsec.env
depends_on:
- kafka
restart: unless-stopped
ports:
- "127.0.0.1:16004:16004"
- "127.0.0.1:16104:16104"
volumes:
- ./ucentralfms-data:/ucentralfms-data
- ./certs:/ucentralfms-data/certs
- "./owsec_data:${OWSEC_ROOT}"
- "./certs:/${OWSEC_ROOT}/certs"
ports:
- "16001:16001"
- "16101:16101"
owfms:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owfms:${OWFMS_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWFMS_HOSTNAME}
env_file:
- owfms.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- "./owfms_data:${OWFMS_ROOT}"
- "./certs:/${OWFMS_ROOT}/certs"
ports:
- "16004:16004"
- "16104:16104"
owprov:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owprov:${OWPROV_TAG}"
networks:
openwifi:
aliases:
- ${INTERNAL_OWPROV_HOSTNAME}
env_file:
- owprov.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- "./owprov_data:${OWPROV_ROOT}"
- "./certs:/${OWPROV_ROOT}/certs"
ports:
- "16005:16005"
- "16105:16105"
owprov-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owprov-ui:${OWPROVUI_TAG}"
networks:
openwifi:
env_file:
- owprov-ui.env
depends_on:
- owsec
- owgw
- owfms
- owprov
restart: unless-stopped
volumes:
- "./owprov-ui/default.conf:/etc/nginx/conf.d/default.conf"
- "./certs/restapi-cert.pem:/etc/nginx/restapi-cert.pem"
- "./certs/restapi-key.pem:/etc/nginx/restapi-key.pem"
ports:
- "8080:8080"
- "8443:8443"
rttys:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/rttys:${RTTYS_TAG}"
restart: unless-stopped
ports:
- "127.0.0.1:5912:5912"
- "127.0.0.1:5913:5913"
networks:
openwifi:
volumes:
- ./certs/restapi-cert.pem:/etc/rttys/restapi-cert.pem
- ./certs/restapi-key.pem:/etc/rttys/restapi-key.pem
- ./rttys/rttys.conf:/rttys/rttys.conf
- "./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:
- "5912:5912"
- "5913:5913"
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
networks:
openwifi:
restart: unless-stopped
volumes:
- zookeeper_data:/data
@@ -86,8 +155,10 @@ services:
kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
openwifi:
env_file:
- .env_kafka
- kafka.env
restart: unless-stopped
depends_on:
- zookeeper

41
docker-compose/owfms.env Normal file
View File

@@ -0,0 +1,41 @@
RUN_CHOWN=true
TEMPLATE_CONFIG=true
SELFSIGNED_CERTS=true
OWFMS_ROOT=/owfms-data
OWFMS_CONFIG=/owfms-data
#RESTAPI_HOST_ROOTCA=$OWFMS_ROOT/certs/restapi-ca.pem
#RESTAPI_HOST_PORT=16004
#RESTAPI_HOST_CERT=$OWFMS_ROOT/certs/restapi-cert.pem
#RESTAPI_HOST_KEY=$OWFMS_ROOT/certs/restapi-key.pem
#RESTAPI_HOST_KEY_PASSWORD=mypassword
#INTERNAL_RESTAPI_HOST_ROOTCA=$OWFMS_ROOT/certs/restapi-ca.pem
#INTERNAL_RESTAPI_HOST_PORT=17004
#INTERNAL_RESTAPI_HOST_CERT=$OWFMS_ROOT/certs/restapi-cert.pem
#INTERNAL_RESTAPI_HOST_KEY=$OWFMS_ROOT/certs/restapi-key.pem
#INTERNAL_RESTAPI_HOST_KEY_PASSWORD=mypassword
#SERVICE_KEY=$OWFMS_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
SYSTEM_DATA=$OWFMS_ROOT/persist
SYSTEM_URI_PRIVATE=https://owfms.wlan.local:17004
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16004
SYSTEM_URI_UI=https://openwifi.wlan.local
#S3_BUCKETNAME=ucentral-ap-firmware
#S3_REGION=us-east-1
S3_SECRET=b0S6EiR5RLIxoe7Xvz9YXPPdxQCoZ6ze37qunTAI
S3_KEY=AKIAUG47UZG7R6SRLD7F
#S3_BUCKET_URI=ucentral-ap-firmware.s3.amazonaws.com
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owfms
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owfms
#STORAGE_TYPE_POSTGRESQL_DATABASE=owfms
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owfms
#STORAGE_TYPE_MYSQL_PASSWORD=owfms
#STORAGE_TYPE_MYSQL_DATABASE=owfms
#STORAGE_TYPE_MYSQL_PORT=3306

View File

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

View File

@@ -0,0 +1,32 @@
server {
listen 80;
listen [::]:80;
# Disable emitting nginx version
server_tokens off;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
# Disable emitting nginx version
server_tokens off;
ssl_certificate /etc/nginx/restapi-cert.pem;
ssl_certificate_key /etc/nginx/restapi-key.pem;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

59
docker-compose/owgw.env Normal file
View File

@@ -0,0 +1,59 @@
RUN_CHOWN=true
TEMPLATE_CONFIG=true
SELFSIGNED_CERTS=true
OWGW_ROOT=/owgw-data
OWGW_CONFIG=/owgw-data
#WEBSOCKET_HOST_ROOTCA=$OWGW_ROOT/certs/root.pem
#WEBSOCKET_HOST_ISSUER=$OWGW_ROOT/certs/issuer.pem
#WEBSOCKET_HOST_CERT=$OWGW_ROOT/certs/websocket-cert.pem
#WEBSOCKET_HOST_KEY=$OWGW_ROOT/certs/websocket-key.pem
#WEBSOCKET_HOST_CLIENTCAS=$OWGW_ROOT/certs/clientcas.pem
#WEBSOCKET_HOST_CAS=$OWGW_ROOT/certs/cas
#WEBSOCKET_HOST_PORT=15002
#WEBSOCKET_HOST_KEY_PASSWORD=mypassword
#RESTAPI_HOST_ROOTCA=$OWGW_ROOT/certs/restapi-ca.pem
#RESTAPI_HOST_PORT=16002
#RESTAPI_HOST_CERT=$OWGW_ROOT/certs/restapi-cert.pem
#RESTAPI_HOST_KEY=$OWGW_ROOT/certs/restapi-key.pem
#RESTAPI_HOST_KEY_PASSWORD=mypassword
#INTERNAL_RESTAPI_HOST_ROOTCA=$OWGW_ROOT/certs/restapi-ca.pem
#INTERNAL_RESTAPI_HOST_PORT=17002
#INTERNAL_RESTAPI_HOST_CERT=$OWGW_ROOT/certs/restapi-cert.pem
#INTERNAL_RESTAPI_HOST_KEY=$OWGW_ROOT/certs/restapi-key.pem
#INTERNAL_RESTAPI_HOST_KEY_PASSWORD=mypassword
#FILEUPLOADER_HOST_ROOTCA=$OWGW_ROOT/certs/restapi-ca.pem
FILEUPLOADER_HOST_NAME=openwifi.wlan.local
#FILEUPLOADER_HOST_PORT=16003
#FILEUPLOADER_HOST_CERT=$OWGW_ROOT/certs/restapi-cert.pem
#FILEUPLOADER_HOST_KEY=$OWGW_ROOT/certs/restapi-key.pem
#FILEUPLOADER_HOST_KEY_PASSWORD=mypassword
FILEUPLOADER_PATH=$OWGW_ROOT/persist/uploads
FILEUPLOADER_URI=https://openwifi.wlan.local:16003
#SERVICE_KEY=$OWGW_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
SYSTEM_DATA=$OWGW_ROOT/persist
SYSTEM_URI_PRIVATE=https://owgw.wlan.local:17002
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16002
SYSTEM_URI_UI=https://openwifi.wlan.local
#SIMULATORID=
RTTY_ENABLED=true
RTTY_SERVER=openwifi.wlan.local
#RTTY_PORT=5912
#RTTY_TOKEN=96181c567b4d0d98c50f127230068fa8
#RTTY_TIMEOUT=60
#RTTY_VIEWPORT=5913
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owgw
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owgw
#STORAGE_TYPE_POSTGRESQL_DATABASE=owgw
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owgw
#STORAGE_TYPE_MYSQL_PASSWORD=owgw
#STORAGE_TYPE_MYSQL_DATABASE=owgw
#STORAGE_TYPE_MYSQL_PORT=3306

17
docker-compose/owls/.env Normal file
View File

@@ -0,0 +1,17 @@
# Image tags
COMPOSE_PROJECT_NAME=owls
OWSEC_TAG=main
OWLS_TAG=main
OWLSUI_TAG=master
KAFKA_TAG=latest
ZOOKEEPER_TAG=latest
# Microservice root/config directories
OWSEC_ROOT=/owsec-data
OWSEC_CONFIG=/owsec-data
OWLS_ROOT=/owls-data
OWLS_CONFIG=/owls-data
# Microservice hostnames
INTERNAL_OWSEC_HOSTNAME=owsec.wlan.local
INTERNAL_OWLS_HOSTNAME=owls.wlan.local

View File

@@ -0,0 +1,16 @@
# OpenWifi OWLS Docker Compose
## Deployment with self-signed certificates
To run a load simulation you need to generate a specific Digicert-signed AP certificate which will be used to connect to the gateway. The certificate serial number has to start with the digits `53494d` since otherwise the gateway won't allow a load simulation. The rest of the serial number and the specified redirector URL can be chosen randomly. You only need to generate one AP certificate for your simulations.
Be aware that since the OWLS deployment partly exposes the same ports on the host as the OpenWifi deployment, it is not intended that both run on the same host.
1. Copy or move your AP load simulation certificate into the `docker-compose/certs` directory. Don't forget to name the files `device-cert.pem` and `device-key.pem` or adapt the path names in the OWLS configuration if you're using different file names.
2. To be able to run load simulation tests against your OpenWifi SDK deployment, you'll have to [add the serial number of your generated AP certificate to the gateway configuration](https://github.com/Telecominfraproject/wlan-cloud-owls#prepare-your-openwifi-gateway). You can do that by either editing [owgw.env](../owgw.env) or doing the changes directly in your OWGW configuration file if it is exposed on your Docker host.
3. Switch into the project directory with `cd docker-compose/owls`.
4. Add an entry for `openwifi-owls.wlan.local` in your hosts file which points to `127.0.0.1` or whatever the IP of the host running the OWLS deployment is.
5. Spin up the deployment with `docker-compose up -d`.
6. Check if the containers are up and running with `docker-compose ps`.
7. Add SSL certificate exceptions in your browser by visiting https://openwifi-owls.wlan.local:16001 and https://openwifi-owls.wlan.local:16007.
8. If you're using an OpenWifi deployment with self-signed certificates, you'll have to add a custom hosts entry for `openwifi.wlan.local` on the machine running the OWLS deployment pointing to the remote IP of your OpenWifi host.
9. Login to the UI by visiting https://openwifi-owls.wlan.local and follow the instructions to change your default password.
10. In the Simulation tab, click on the + sign on the right side to add a load simulation.
11. Fill out the required fields. MAC prefix is used for the MAC addresses of the simulated devices, so you can use any six-digit hexadecimal number. Specify the remote address of your OpenWifi gateway in the Gateway field, for example `https://openwifi.wlan.local:15002`. Adapt the rest of the settings according to your needs.
12. Click on the floppy disk icon to save your load simulation. You can run it by clicking the play symbol in the table view.

View File

@@ -0,0 +1,74 @@
#!/bin/bash
set -e
# Usage function
usage () {
echo;
echo "This script is intended for OpenWifi OWLS deployment using Docker Compose (https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy/tree/main/docker-compose) in a Kubernetes pod";
echo;
echo "Required environment variables:"
echo;
echo "- DEPLOY_VERSION - version of the wlan-cloud-ucentral-deploy repo to be used";
echo;
echo "- DEFAULT_UCENTRALSEC_URL - public URL of the OWSec service"
echo "- SYSTEM_URI_UI - public URL of the OWGW-UI service"
echo;
echo "- INTERNAL_OWSEC_HOSTNAME - OWSec microservice hostname for Docker internal communication"
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 "- 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 "- OWLS_SYSTEM_URI_PRIVATE - private URL to be used for OWLS";
echo "- OWLS_SYSTEM_URI_PUBLIC - public URL to be used for OWLS";
echo;
echo "- DEVICE_CERT - path to the device certificate";
echo "- DEVICE_KEY - path to the device key";
}
# Check if required environment variables were passed
## Deployment specifics
[ -z ${DEPLOY_VERSION+x} ] && echo "DEPLOY_VERSION is unset" && usage && exit 1
## 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
## Internal microservice hostnames
[ -z ${INTERNAL_OWSEC_HOSTNAME+x} ] && echo "INTERNAL_OWSEC_HOSTNAME 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
# OWLS configuration variables
[ -z ${OWLS_SYSTEM_URI_PRIVATE+x} ] && echo "OWLS_SYSTEM_URI_PRIVATE is unset" && usage && exit 1
[ -z ${OWLS_SYSTEM_URI_PUBLIC+x} ] && echo "OWLS_SYSTEM_URI_PUBLIC is unset" && usage && exit 1
## cert related variables
[ -z ${DEVICE_CERT+x} ] && echo "DEVICE_CERT is unset" && usage && exit 1
[ -z ${DEVICE_KEY+x} ] && echo "DEVICE_KEY is unset" && usage && exit 1
# Clone repo and copy certificates
mkdir wlan-cloud-ucentral-deploy-tmp
git clone --branch $DEPLOY_VERSION https://github.com/Telecominfraproject/wlan-cloud-ucentral-deploy.git /wlan-cloud-ucentral-deploy-tmp
mv -f /wlan-cloud-ucentral-deploy-tmp/* /wlan-cloud-ucentral-deploy/ && rm -r wlan-cloud-ucentral-deploy-tmp
cd wlan-cloud-ucentral-deploy/docker-compose/owls
# Search and replace variable values in env files
sed -i "s~\(^INTERNAL_OWSEC_HOSTNAME=\).*~\1$INTERNAL_OWSEC_HOSTNAME~" .env
sed -i "s~\(^INTERNAL_OWLS_HOSTNAME=\).*~\1$INTERNAL_OWLS_HOSTNAME~" .env
sed -i "s~\(^DEFAULT_UCENTRALSEC_URL=\).*~\1$DEFAULT_UCENTRALSEC_URL~" owls-ui.env
sed -i "s~.*AUTHENTICATION_DEFAULT_USERNAME=.*~AUTHENTICATION_DEFAULT_USERNAME=$OWSEC_AUTHENTICATION_DEFAULT_USERNAME~" owsec.env
sed -i "s~.*AUTHENTICATION_DEFAULT_PASSWORD=.*~AUTHENTICATION_DEFAULT_PASSWORD=$OWSEC_AUTHENTICATION_DEFAULT_PASSWORD~" owsec.env
sed -i "s~\(^SYSTEM_URI_PRIVATE=\).*~\1$OWSEC_SYSTEM_URI_PRIVATE~" owsec.env
sed -i "s~\(^SYSTEM_URI_PUBLIC=\).*~\1$OWSEC_SYSTEM_URI_PUBLIC~" owsec.env
sed -i "s~\(^SYSTEM_URI_UI=\).*~\1$SYSTEM_URI_UI~" owsec.env
sed -i "s~\(^SYSTEM_URI_PRIVATE=\).*~\1$OWLS_SYSTEM_URI_PRIVATE~" owls.env
sed -i "s~\(^SYSTEM_URI_PUBLIC=\).*~\1$OWLS_SYSTEM_URI_PUBLIC~" owls.env
# Run the deployment and attach to logs
cat $DEVICE_CERT > ../certs/device-cert.pem
cat $DEVICE_KEY > ../certs/device-key.pem
exec docker-compose up --attach-dependencies

View File

@@ -0,0 +1,89 @@
version: '3'
volumes:
zookeeper_data:
driver: local
zookeeper_datalog:
driver: local
kafka_data:
driver: local
networks:
owls:
services:
owsec:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owsec:${OWSEC_TAG}"
networks:
owls:
aliases:
- ${INTERNAL_OWSEC_HOSTNAME}
env_file:
- owsec.env
depends_on:
- kafka
restart: unless-stopped
volumes:
- "./owsec_data:${OWSEC_ROOT}"
- "../certs:/${OWSEC_ROOT}/certs"
ports:
- "16001:16001"
- "16101:16101"
owls:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owls:${OWLS_TAG}"
networks:
owls:
aliases:
- ${INTERNAL_OWLS_HOSTNAME}
env_file:
- owls.env
depends_on:
- owsec
- kafka
restart: unless-stopped
volumes:
- "./owls_data:${OWLS_ROOT}"
- "../certs:/${OWLS_ROOT}/certs"
ports:
- "16007:16007"
- "16107:16107"
owls-ui:
image: "tip-tip-wlan-cloud-ucentral.jfrog.io/owls-ui:${OWLSUI_TAG}"
networks:
owls:
env_file:
- owls-ui.env
depends_on:
- owsec
- owls
restart: unless-stopped
volumes:
- "./owls-ui/default.conf:/etc/nginx/conf.d/default.conf"
- "../certs/restapi-cert.pem:/etc/nginx/restapi-cert.pem"
- "../certs/restapi-key.pem:/etc/nginx/restapi-key.pem"
ports:
- "80:80"
- "443:443"
zookeeper:
image: "zookeeper:${ZOOKEEPER_TAG}"
networks:
owls:
restart: unless-stopped
volumes:
- zookeeper_data:/data
- zookeeper_datalog:/datalog
kafka:
image: "docker.io/bitnami/kafka:${KAFKA_TAG}"
networks:
owls:
env_file:
- kafka.env
restart: unless-stopped
depends_on:
- zookeeper
volumes:
- kafka_data:/bitnami/kafka

View File

@@ -0,0 +1,2 @@
KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
ALLOW_PLAINTEXT_LISTENER=yes

View File

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

View File

@@ -0,0 +1,32 @@
server {
listen 80;
listen [::]:80;
# Disable emitting nginx version
server_tokens off;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
listen [::]:443 ssl;
# Disable emitting nginx version
server_tokens off;
ssl_certificate /etc/nginx/restapi-cert.pem;
ssl_certificate_key /etc/nginx/restapi-key.pem;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

View File

@@ -0,0 +1,43 @@
RUN_CHOWN=true
TEMPLATE_CONFIG=true
SELFSIGNED_CERTS=true
OWLS_ROOT=/owls-data
OWLS_CONFIG=/owls-data
#ROOTCA=$OWLS_ROOT/certs/root.pem
#ISSUER=$OWLS_ROOT/certs/issuer.pem
#CERT=$OWLS_ROOT/certs/device-cert.pem
#KEY=$OWLS_ROOT/certs/device-key.pem
#CLIENTCAS=$OWLS_ROOT/certs/clientcas.pem
#CAS=$OWLS_ROOT/certs/cas
#KEY_PASSWORD=mypassword
#RESTAPI_HOST_ROOTCA=$OWLS_ROOT/certs/restapi-ca.pem
#RESTAPI_HOST_PORT=16007
#RESTAPI_HOST_CERT=$OWLS_ROOT/certs/restapi-cert.pem
#RESTAPI_HOST_KEY=$OWLS_ROOT/certs/restapi-key.pem
#RESTAPI_HOST_KEY_PASSWORD=mypassword
#INTERNAL_RESTAPI_HOST_ROOTCA=$OWLS_ROOT/certs/restapi-ca.pem
#INTERNAL_RESTAPI_HOST_PORT=17007
#INTERNAL_RESTAPI_HOST_CERT=$OWLS_ROOT/certs/restapi-cert.pem
#INTERNAL_RESTAPI_HOST_KEY=$OWLS_ROOT/certs/restapi-key.pem
#INTERNAL_RESTAPI_HOST_KEY_PASSWORD=mypassword
#SERVICE_KEY=$OWLS_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
SYSTEM_DATA=$OWLS_ROOT/persist
SYSTEM_URI_PRIVATE=https://owls.wlan.local:17007
SYSTEM_URI_PUBLIC=https://openwifi-owls.wlan.local:16007
SYSTEM_URI_UI=https://openwifi-owls.wlan.local
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owls
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owls
#STORAGE_TYPE_POSTGRESQL_DATABASE=owls
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owls
#STORAGE_TYPE_MYSQL_PASSWORD=owls
#STORAGE_TYPE_MYSQL_DATABASE=owls
#STORAGE_TYPE_MYSQL_PORT=3306

View File

@@ -0,0 +1,47 @@
RUN_CHOWN=true
TEMPLATE_CONFIG=true
SELFSIGNED_CERTS=true
OWSEC_ROOT=/owsec-data
OWSEC_CONFIG=/owsec-data
#RESTAPI_HOST_ROOTCA=$OWSEC_ROOT/certs/restapi-ca.pem
#RESTAPI_HOST_PORT=16001
#RESTAPI_HOST_CERT=$OWSEC_ROOT/certs/restapi-cert.pem
#RESTAPI_HOST_KEY=$OWSEC_ROOT/certs/restapi-key.pem
#RESTAPI_HOST_KEY_PASSWORD=mypassword
#RESTAPI_WWWASSETS=$OWSEC_ROOT/wwwassets
#INTERNAL_RESTAPI_HOST_ROOTCA=$OWSEC_ROOT/certs/restapi-ca.pem
#INTERNAL_RESTAPI_HOST_PORT=17001
#INTERNAL_RESTAPI_HOST_CERT=$OWSEC_ROOT/certs/restapi-cert.pem
#INTERNAL_RESTAPI_HOST_KEY=$OWSEC_ROOT/certs/restapi-key.pem
#INTERNAL_RESTAPI_HOST_KEY_PASSWORD=mypassword
#AUTHENTICATION_DEFAULT_USERNAME=tip@ucentral.com
#AUTHENTICATION_DEFAULT_PASSWORD=13268b7daa751240369d125e79c873bd8dd3bef7981bdfd38ea03dbb1fbe7dcf
SYSTEM_DATA=$OWSEC_ROOT/persist
SYSTEM_URI_PRIVATE=https://owsec.wlan.local:17001
SYSTEM_URI_PUBLIC=https://openwifi-owls.wlan.local:16001
SYSTEM_URI_UI=https://openwifi-owls.wlan.local
#SERVICE_KEY=$OWSEC_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
#MAILER_HOSTNAME=localhost
#MAILER_USERNAME=************************
#MAILER_PASSWORD=************************
#MAILER_SENDER=OpenWIFI
#MAILER_PORT=587
#MAILER_TEMPLATES=$OWSEC_ROOT/templates
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#DOCUMENT_POLICY_ACCESS=$OWSEC_ROOT/wwwassets/access_policy.html
#DOCUMENT_POLICY_PASSWORD=$OWSEC_ROOT/wwwassets/password_policy.html
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owsec
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owsec
#STORAGE_TYPE_POSTGRESQL_DATABASE=owsec
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owsec
#STORAGE_TYPE_MYSQL_PASSWORD=owsec
#STORAGE_TYPE_MYSQL_DATABASE=owsec
#STORAGE_TYPE_MYSQL_PORT=3306

View File

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

View File

@@ -0,0 +1,32 @@
server {
listen 8080;
listen [::]:8080;
# Disable emitting nginx version
server_tokens off;
return 301 https://$host:8443$request_uri;
}
server {
listen 8443 ssl;
listen [::]:8443 ssl;
# Disable emitting nginx version
server_tokens off;
ssl_certificate /etc/nginx/restapi-cert.pem;
ssl_certificate_key /etc/nginx/restapi-key.pem;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

38
docker-compose/owprov.env Normal file
View File

@@ -0,0 +1,38 @@
RUN_CHOWN=true
TEMPLATE_CONFIG=true
SELFSIGNED_CERTS=true
OWPROV_ROOT=/owprov-data
OWPROV_CONFIG=/owprov-data
#RESTAPI_HOST_ROOTCA=$OWPROV_ROOT/certs/restapi-ca.pem
#RESTAPI_HOST_PORT=16005
#RESTAPI_HOST_CERT=$OWPROV_ROOT/certs/restapi-cert.pem
#RESTAPI_HOST_KEY=$OWPROV_ROOT/certs/restapi-key.pem
#RESTAPI_HOST_KEY_PASSWORD=mypassword
#INTERNAL_RESTAPI_HOST_ROOTCA=$OWPROV_ROOT/certs/restapi-ca.pem
#INTERNAL_RESTAPI_HOST_PORT=17005
#INTERNAL_RESTAPI_HOST_CERT=$OWPROV_ROOT/certs/restapi-cert.pem
#INTERNAL_RESTAPI_HOST_KEY=$OWPROV_ROOT/certs/restapi-key.pem
#INTERNAL_RESTAPI_HOST_KEY_PASSWORD=mypassword
#FIRMWARE_UPDATER_UPGRADE=yes
#FIRMWARE_UPDATER_RCONLY=no
#SERVICE_KEY=$OWPROV_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
SYSTEM_DATA=$OWPROV_ROOT/persist
SYSTEM_URI_PRIVATE=https://owprov.wlan.local:17005
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16005
SYSTEM_URI_UI=https://openwifi.wlan.local
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owprov
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owprov
#STORAGE_TYPE_POSTGRESQL_DATABASE=owprov
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owprov
#STORAGE_TYPE_MYSQL_PASSWORD=owprov
#STORAGE_TYPE_MYSQL_DATABASE=owprov
#STORAGE_TYPE_MYSQL_PORT=3306

47
docker-compose/owsec.env Normal file
View File

@@ -0,0 +1,47 @@
RUN_CHOWN=true
TEMPLATE_CONFIG=true
SELFSIGNED_CERTS=true
OWSEC_ROOT=/owsec-data
OWSEC_CONFIG=/owsec-data
#RESTAPI_HOST_ROOTCA=$OWSEC_ROOT/certs/restapi-ca.pem
#RESTAPI_HOST_PORT=16001
#RESTAPI_HOST_CERT=$OWSEC_ROOT/certs/restapi-cert.pem
#RESTAPI_HOST_KEY=$OWSEC_ROOT/certs/restapi-key.pem
#RESTAPI_HOST_KEY_PASSWORD=mypassword
#RESTAPI_WWWASSETS=$OWSEC_ROOT/wwwassets
#INTERNAL_RESTAPI_HOST_ROOTCA=$OWSEC_ROOT/certs/restapi-ca.pem
#INTERNAL_RESTAPI_HOST_PORT=17001
#INTERNAL_RESTAPI_HOST_CERT=$OWSEC_ROOT/certs/restapi-cert.pem
#INTERNAL_RESTAPI_HOST_KEY=$OWSEC_ROOT/certs/restapi-key.pem
#INTERNAL_RESTAPI_HOST_KEY_PASSWORD=mypassword
#AUTHENTICATION_DEFAULT_USERNAME=tip@ucentral.com
#AUTHENTICATION_DEFAULT_PASSWORD=13268b7daa751240369d125e79c873bd8dd3bef7981bdfd38ea03dbb1fbe7dcf
SYSTEM_DATA=$OWSEC_ROOT/persist
SYSTEM_URI_PRIVATE=https://owsec.wlan.local:17001
SYSTEM_URI_PUBLIC=https://openwifi.wlan.local:16001
SYSTEM_URI_UI=https://openwifi.wlan.local
#SERVICE_KEY=$OWSEC_ROOT/certs/restapi-key.pem
#SERVICE_KEY_PASSWORD=mypassword
#MAILER_HOSTNAME=localhost
#MAILER_USERNAME=************************
#MAILER_PASSWORD=************************
#MAILER_SENDER=OpenWIFI
#MAILER_PORT=587
#MAILER_TEMPLATES=$OWSEC_ROOT/templates
#KAFKA_ENABLE=true
KAFKA_BROKERLIST=kafka:9092
#DOCUMENT_POLICY_ACCESS=$OWSEC_ROOT/wwwassets/access_policy.html
#DOCUMENT_POLICY_PASSWORD=$OWSEC_ROOT/wwwassets/password_policy.html
#STORAGE_TYPE=sqlite
#STORAGE_TYPE_POSTGRESQL_HOST=localhost
#STORAGE_TYPE_POSTGRESQL_USERNAME=owsec
#STORAGE_TYPE_POSTGRESQL_PASSWORD=owsec
#STORAGE_TYPE_POSTGRESQL_DATABASE=owsec
#STORAGE_TYPE_POSTGRESQL_PORT=5432
#STORAGE_TYPE_MYSQL_HOST=localhost
#STORAGE_TYPE_MYSQL_USERNAME=owsec
#STORAGE_TYPE_MYSQL_PASSWORD=owsec
#STORAGE_TYPE_MYSQL_DATABASE=owsec
#STORAGE_TYPE_MYSQL_PORT=3306

View File

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

View File

@@ -0,0 +1,17 @@
#!/bin/bash
set -e
psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" <<-EOSQL
CREATE USER $OWGW_DB_USER WITH ENCRYPTED PASSWORD '$OWGW_DB_PASSWORD';
CREATE DATABASE $OWGW_DB;
GRANT ALL PRIVILEGES ON DATABASE $OWGW_DB TO $OWGW_DB_USER;
CREATE USER $OWSEC_DB_USER WITH ENCRYPTED PASSWORD '$OWSEC_DB_PASSWORD';
CREATE DATABASE $OWSEC_DB;
GRANT ALL PRIVILEGES ON DATABASE $OWSEC_DB TO $OWSEC_DB_USER;
CREATE USER $OWFMS_DB_USER WITH ENCRYPTED PASSWORD '$OWFMS_DB_PASSWORD';
CREATE DATABASE $OWFMS_DB;
GRANT ALL PRIVILEGES ON DATABASE $OWFMS_DB TO $OWFMS_DB_USER;
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;
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,20 @@
TRAEFIK_ENTRYPOINTS_OWGWWEBSOCKET_ADDRESS=:15002
TRAEFIK_ENTRYPOINTS_OWGWRESTAPI_ADDRESS=:16002
TRAEFIK_ENTRYPOINTS_OWGWFILEUPLOAD_ADDRESS=:16003
TRAEFIK_ENTRYPOINTS_OWGWUIHTTP_ADDRESS=:80
TRAEFIK_ENTRYPOINTS_OWGWUIHTTP_HTTP_REDIRECTIONS_ENTRYPOINT_TO=owgwuihttps
TRAEFIK_ENTRYPOINTS_OWPROVUIHTTP_ADDRESS=:8080
TRAEFIK_ENTRYPOINTS_OWPROVUIHTTP_HTTP_REDIRECTIONS_ENTRYPOINT_TO=owprovuihttps
TRAEFIK_ENTRYPOINTS_OWGWUIHTTPS_ADDRESS=:443
TRAEFIK_ENTRYPOINTS_OWPROVUIHTTPS_ADDRESS=:8443
TRAEFIK_ENTRYPOINTS_OWSECRESTAPI_ADDRESS=:16001
TRAEFIK_ENTRYPOINTS_OWFMSRESTAPI_ADDRESS=:16004
TRAEFIK_ENTRYPOINTS_OWPROVRESTAPI_ADDRESS=:16005
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
TRAEFIK_CERTIFICATESRESOLVERS_OPENWIFI_ACME_HTTPCHALLENGE_ENTRYPOINT=owgwuihttp
TRAEFIK_CERTIFICATESRESOLVERS_OPENWIFI_ACME_STORAGE=/letsencrypt/acme.json
TRAEFIK_SERVERSTRANSPORT_ROOTCAS=/certs/restapi-ca.pem

View File

@@ -0,0 +1,119 @@
http:
services:
owgw-ui:
loadBalancer:
servers:
- url: "http://owgw-ui.wlan.local:80/"
owgw-restapi:
loadBalancer:
servers:
- url: "https://owgw.wlan.local:16002/"
owgw-fileupload:
loadBalancer:
servers:
- url: "https://owgw.wlan.local:16003/"
owsec-restapi:
loadBalancer:
servers:
- url: "https://owsec.wlan.local:16001/"
owfms-restapi:
loadBalancer:
servers:
- url: "https://owfms.wlan.local:16004/"
owprov-restapi:
loadBalancer:
servers:
- url: "https://owprov.wlan.local:16005/"
owprov-ui:
loadBalancer:
servers:
- url: "http://owprov-ui.wlan.local:80/"
rttys-user:
loadBalancer:
servers:
- url: "http://rttys.wlan.local:5913/"
routers:
owgw-ui-http:
entryPoints: "owgwuihttp"
service: "owgw-ui"
rule: "Host(`{{ env "OWGWUI_HOSTNAME" }}`)"
owgw-ui-https:
entryPoints: "owgwuihttps"
service: "owgw-ui"
rule: "Host(`{{ env "OWGWUI_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owgw-fileupload:
entryPoints: "owgwfileupload"
service: "owgw-fileupload"
rule: "Host(`{{ env "OWGWFILEUPLOAD_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owgw-restapi:
entryPoints: "owgwrestapi"
service: "owgw-restapi"
rule: "Host(`{{ env "OWGW_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owsec-restapi:
entryPoints: "owsecrestapi"
service: "owsec-restapi"
rule: "Host(`{{ env "OWSEC_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
owfms-restapi:
entryPoints: "owfmsrestapi"
service: "owfms-restapi"
rule: "Host(`{{env "OWFMS_HOSTNAME"}}`)"
tls:
certResolver: "openwifi"
owprov-restapi:
entryPoints: "owprovrestapi"
service: "owprov-restapi"
rule: "Host(`{{env "OWPROV_HOSTNAME"}}`)"
tls:
certResolver: "openwifi"
owprov-ui-http:
entryPoints: "owgwuihttp"
service: "owprov-ui"
rule: "Host(`{{ env "OWPROVUI_HOSTNAME" }}`)"
owprov-ui-https:
entryPoints: "owgwuihttps"
service: "owprov-ui"
rule: "Host(`{{ env "OWPROVUI_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
rttys-user:
entryPoints: "rttysuser"
service: "rttys-user"
rule: "Host(`{{ env "RTTYS_HOSTNAME" }}`)"
tls:
certResolver: "openwifi"
tcp:
services:
owgw-websocket:
loadBalancer:
servers:
- address: "owgw.wlan.local:15002"
rttys-dev:
loadBalancer:
servers:
- address: "rttys.wlan.local:5912"
routers:
owgw-websocket:
entryPoints: "owgwwebsocket"
service: "owgw-websocket"
rule: "HostSNI(`*`)"
tls:
passthrough: true
rttys-dev:
entryPoints: "rttysdev"
service: "rttys-dev"
rule: "HostSNI(`{{ env "RTTYS_HOSTNAME" }}`)"
tls:
certResolver: openwifi

View File

@@ -0,0 +1,124 @@
tls:
certificates:
- certFile: /certs/restapi-cert.pem
keyFile: /certs/restapi-key.pem
http:
services:
owgw-ui:
loadBalancer:
servers:
- url: "http://owgw-ui.wlan.local:80/"
owprov-ui:
loadBalancer:
servers:
- url: "http://owprov-ui.wlan.local:80/"
routers:
owgw-ui-http:
entryPoints: "owgwuihttp"
service: "owgw-ui"
rule: "PathPrefix(`/`)"
owgw-ui-https:
entryPoints: "owgwuihttps"
service: "owgw-ui"
rule: "PathPrefix(`/`)"
tls: {}
owprov-ui-http:
entryPoints: "owprovuihttp"
service: "owprov-ui"
rule: "PathPrefix(`/`)"
owprov-ui-https:
entryPoints: "owprovuihttps"
service: "owprov-ui"
rule: "PathPrefix(`/`)"
tls: {}
tcp:
services:
owgw-websocket:
loadBalancer:
servers:
- address: "owgw.wlan.local:15002"
owgw-restapi:
loadBalancer:
servers:
- address: "owgw.wlan.local:16002"
owgw-fileupload:
loadBalancer:
servers:
- address: "owgw.wlan.local:16003"
owsec-restapi:
loadBalancer:
servers:
- address: "owsec.wlan.local:16001"
owfms-restapi:
loadBalancer:
servers:
- address: "owfms.wlan.local:16004"
owprov-restapi:
loadBalancer:
servers:
- address: "owprov.wlan.local:16005"
rttys-dev:
loadBalancer:
servers:
- address: "rttys.wlan.local:5912"
rttys-user:
loadBalancer:
servers:
- address: "rttys.wlan.local:5913"
routers:
owgw-websocket:
entryPoints: "owgwwebsocket"
service: "owgw-websocket"
rule: "HostSNI(`*`)"
tls:
passthrough: true
owgw-restapi:
entryPoints: "owgwrestapi"
service: "owgw-restapi"
rule: "HostSNI(`*`)"
tls:
passthrough: true
owgw-fileupload:
entryPoints: "owgwfileupload"
service: "owgw-fileupload"
rule: "HostSNI(`*`)"
tls:
passthrough: true
owsec-restapi:
entryPoints: "owsecrestapi"
service: "owsec-restapi"
rule: "HostSNI(`*`)"
tls:
passthrough: true
owfms-restapi:
entryPoints: "owfmsrestapi"
service: "owfms-restapi"
rule: "HostSNI(`*`)"
tls:
passthrough: true
owprov-restapi:
entryPoints: "owprovrestapi"
service: "owprov-restapi"
rule: "HostSNI(`*`)"
tls:
passthrough: true
rttys-dev:
entryPoints: "rttysdev"
service: "rttys-dev"
rule: "HostSNI(`*`)"
tls:
passthrough: true
rttys-user:
entryPoints: "rttysuser"
service: "rttys-user"
rule: "HostSNI(`*`)"
tls:
passthrough: true

View File

@@ -1,141 +0,0 @@
#
# uCentral protocol server for devices. This is where you point
# all your devices. You can replace the * for address by the specific
# address of one of your interfaces
#
#
# REST API access
#
ucentralfws.restapi.host.0.backlog = 100
ucentralfws.restapi.host.0.security = relaxed
ucentralfws.restapi.host.0.rootca = $UCENTRALFMS_ROOT/certs/restapi-ca.pem
ucentralfws.restapi.host.0.address = *
ucentralfws.restapi.host.0.port = 16004
ucentralfws.restapi.host.0.cert = $UCENTRALFMS_ROOT/certs/restapi-cert.pem
ucentralfws.restapi.host.0.key = $UCENTRALFMS_ROOT/certs/restapi-key.pem
ucentralfws.restapi.host.0.key.password = mypassword
ucentral.internal.restapi.host.0.backlog = 100
ucentral.internal.restapi.host.0.security = relaxed
ucentral.internal.restapi.host.0.rootca = $UCENTRALFMS_ROOT/certs/restapi-ca.pem
ucentral.internal.restapi.host.0.address = *
ucentral.internal.restapi.host.0.port = 17004
ucentral.internal.restapi.host.0.cert = $UCENTRALFMS_ROOT/certs/restapi-cert.pem
ucentral.internal.restapi.host.0.key = $UCENTRALFMS_ROOT/certs/restapi-key.pem
ucentral.internal.restapi.host.0.key.password = mypassword
#
# Generic section that all microservices must have
#
ucentral.service.key = $UCENTRALFMS_ROOT/certs/restapi-key.pem
ucentral.service.key.password = mypassword
ucentral.system.data = $UCENTRALFMS_ROOT/data
ucentral.system.debug = false
ucentral.system.uri.private = https://ucentralfms.wlan.local:17004
ucentral.system.uri.public = https://ucentral.wlan.local:16004
ucentral.system.commandchannel = /tmp/app.ucentralfms
ucentral.system.uri.ui = ucentral.wlan.local
#
# Firmware Microservice Specific Section
#
s3.bucketname = ucentral-ap-firmware
s3.region = us-east-1
s3.secret = b0S6EiR5RLIxoe7Xvz9YXPPdxQCoZ6ze37qunTAI
s3.key = AKIAUG47UZG7R6SRLD7F
s3.retry = 60
s3.bucket.uri = ucentral-ap-firmware.s3.amazonaws.com
firmwaredb.refresh = 1800
#############################
# Generic information for all micro services
#############################
#
# NLB Support
#
alb.enable = true
alb.port = 16104
#
# Kafka
#
ucentral.kafka.group.id = firmware
ucentral.kafka.client.id = firmware1
ucentral.kafka.enable = true
ucentral.kafka.brokerlist = kafka:9092
ucentral.kafka.auto.commit = false
ucentral.kafka.queue.buffering.max.ms = 50
#
# This section select which form of persistence you need
# Only one selected at a time. If you select multiple, this service will die if a horrible
# death and might make your beer flat.
#
storage.type = sqlite
#storage.type = postgresql
#storage.type = mysql
#storage.type = odbc
storage.type.sqlite.db = firmware.db
storage.type.sqlite.idletime = 120
storage.type.sqlite.maxsessions = 128
storage.type.postgresql.maxsessions = 64
storage.type.postgresql.idletime = 60
storage.type.postgresql.host = localhost
storage.type.postgresql.username = stephb
storage.type.postgresql.password = snoopy99
storage.type.postgresql.database = ucentral
storage.type.postgresql.port = 5432
storage.type.postgresql.connectiontimeout = 60
storage.type.mysql.maxsessions = 64
storage.type.mysql.idletime = 60
storage.type.mysql.host = localhost
storage.type.mysql.username = stephb
storage.type.mysql.password = snoopy99
storage.type.mysql.database = ucentral
storage.type.mysql.port = 3306
storage.type.mysql.connectiontimeout = 60
########################################################################
########################################################################
#
# Logging: please leave as is for now.
#
########################################################################
logging.formatters.f1.class = PatternFormatter
logging.formatters.f1.pattern = %Y-%m-%d %H:%M:%S %s: [%p] %t
logging.formatters.f1.times = UTC
logging.channels.c1.class = ConsoleChannel
logging.channels.c1.formatter = f1
# This is where the logs will be written. This path MUST exist
logging.channels.c2.class = FileChannel
logging.channels.c2.path = $UCENTRALFMS_ROOT/logs/log
logging.channels.c2.formatter.class = PatternFormatter
logging.channels.c2.formatter.pattern = %Y-%m-%d %H:%M:%S %s: [%p] %t
logging.channels.c2.rotation = 20 M
logging.channels.c2.archive = timestamp
logging.channels.c2.purgeCount = 20
logging.channels.c3.class = ConsoleChannel
logging.channels.c3.pattern = %s: [%p] %t
# External Channel
logging.loggers.root.channel = c1
logging.loggers.root.level = debug
# Inline Channel with PatternFormatter
# logging.loggers.l1.name = logger1
# logging.loggers.l1.channel.class = ConsoleChannel
# logging.loggers.l1.channel.pattern = %s: [%p] %t
# logging.loggers.l1.level = information
# SplitterChannel
# logging.channels.splitter.class = SplitterChannel
# logging.channels.splitter.channels = l1,l2
# logging.loggers.l2.name = logger2
# logging.loggers.l2.channel = splitter

View File

@@ -1,194 +0,0 @@
#
# uCentral protocol server for devices. This is where you point
# all your devices. You can replace the * for address by the specific
# address of one of your interfaces
#
ucentral.websocket.host.0.backlog = 500
ucentral.websocket.host.0.rootca = $UCENTRALGW_ROOT/certs/root.pem
ucentral.websocket.host.0.issuer = $UCENTRALGW_ROOT/certs/issuer.pem
ucentral.websocket.host.0.cert = $UCENTRALGW_ROOT/certs/websocket-cert.pem
ucentral.websocket.host.0.key = $UCENTRALGW_ROOT/certs/websocket-key.pem
ucentral.websocket.host.0.clientcas = $UCENTRALGW_ROOT/certs/clientcas.pem
ucentral.websocket.host.0.cas = $UCENTRALGW_ROOT/certs/cas
ucentral.websocket.host.0.address = *
ucentral.websocket.host.0.port = 15002
ucentral.websocket.host.0.security = strict
ucentral.websocket.host.0.key.password = mypassword
ucentral.websocket.maxreactors = 20
#
# REST API access
#
ucentral.restapi.host.0.backlog = 100
ucentral.restapi.host.0.security = relaxed
ucentral.restapi.host.0.rootca = $UCENTRALGW_ROOT/certs/restapi-ca.pem
ucentral.restapi.host.0.address = *
ucentral.restapi.host.0.port = 16002
ucentral.restapi.host.0.cert = $UCENTRALGW_ROOT/certs/restapi-cert.pem
ucentral.restapi.host.0.key = $UCENTRALGW_ROOT/certs/restapi-key.pem
ucentral.restapi.host.0.key.password = mypassword
ucentral.internal.restapi.host.0.backlog = 100
ucentral.internal.restapi.host.0.security = relaxed
ucentral.internal.restapi.host.0.rootca = $UCENTRALGW_ROOT/certs/restapi-ca.pem
ucentral.internal.restapi.host.0.address = *
ucentral.internal.restapi.host.0.port = 17002
ucentral.internal.restapi.host.0.cert = $UCENTRALGW_ROOT/certs/restapi-cert.pem
ucentral.internal.restapi.host.0.key = $UCENTRALGW_ROOT/certs/restapi-key.pem
ucentral.internal.restapi.host.0.key.password = mypassword
#
# Used to upload files to the service.
# You should replace the 'name' vaalue with the IP address of your gateway or an FQDN
# that your devices can reach
#
ucentral.fileuploader.host.0.backlog = 100
ucentral.fileuploader.host.0.rootca = $UCENTRALGW_ROOT/certs/restapi-ca.pem
ucentral.fileuploader.host.0.security = relaxed
ucentral.fileuploader.host.0.address = *
ucentral.fileuploader.host.0.name = ucentral.wlan.local
ucentral.fileuploader.host.0.port = 16003
ucentral.fileuploader.host.0.cert = $UCENTRALGW_ROOT/certs/restapi-cert.pem
ucentral.fileuploader.host.0.key = $UCENTRALGW_ROOT/certs/restapi-key.pem
ucentral.fileuploader.host.0.key.password = mypassword
ucentral.fileuploader.path = $UCENTRALGW_ROOT/uploads
ucentral.fileuploader.maxsize = 10000
#
# Generic section that all microservices must have
#
ucentral.service.key = $UCENTRALGW_ROOT/certs/restapi-key.pem
ucentral.system.data = $UCENTRALGW_ROOT/data
ucentral.system.debug = true
#ucentral.system.uri.private = https://localhost:17002
#ucentral.system.uri.public = https://local.dpaas.arilia.com:16002
#ucentral.system.uri.ui = https://ucentral-ui.arilia.com
ucentral.system.uri.private = https://ucentralgw.wlan.local:17002
ucentral.system.uri.public = https://ucentral.wlan.local:16002
ucentral.system.uri.ui = http://127.0.0.1
ucentral.system.commandchannel = /tmp/app.ucentralgw
#
# Gateway Microservice Specific Section
#
ucentral.autoprovisioning = true
ucentral.devicetypes.0 = AP:linksys_ea8300,edgecore_eap101,linksys_e8450-ubi
ucentral.devicetypes.1 = SWITCH:edgecore_ecs4100-12ph
ucentral.devicetypes.2 = IOT:esp32
oui.download.uri = https://linuxnet.ca/ieee/oui.txt
firmware.autoupdate.policy.default = auto
#
# rtty
#
rtty.enabled = true
rtty.server = ucentral.wlan.local
rtty.port = 5912
rtty.token = 96181c567b4d0d98c50f127230068fa8
rtty.timeout = 60
rtty.viewport = 5913
#############################
# Generic information for all micro services
#############################
#
# NLB Support
#
alb.enable = true
alb.port = 16102
#
# Kafka
#
ucentral.kafka.group.id = gateway
ucentral.kafka.client.id = gateway1
ucentral.kafka.enable = true
ucentral.kafka.brokerlist = kafka:9092
# ucentral.kafka.brokerlist = debfarm1-node-c.arilia.com:9092
ucentral.kafka.auto.commit = false
ucentral.kafka.queue.buffering.max.ms = 50
#
# This section select which form of persistence you need
# Only one selected at a time. If you select multiple, this service will die if a horrible
# death and might make your beer flat.
#
storage.type = sqlite
#storage.type = postgresql
#storage.type = mysql
#storage.type = odbc
storage.type.sqlite.db = devices.db
storage.type.sqlite.idletime = 120
storage.type.sqlite.maxsessions = 128
storage.type.postgresql.maxsessions = 64
storage.type.postgresql.idletime = 60
storage.type.postgresql.host = postgresql
storage.type.postgresql.username = ucentralgw
storage.type.postgresql.password = ucentralgw
storage.type.postgresql.database = ucentralgw
storage.type.postgresql.port = 5432
storage.type.postgresql.connectiontimeout = 60
storage.type.mysql.maxsessions = 64
storage.type.mysql.idletime = 60
storage.type.mysql.host = localhost
storage.type.mysql.username = stephb
storage.type.mysql.password = snoopy99
storage.type.mysql.database = ucentral
storage.type.mysql.port = 3306
storage.type.mysql.connectiontimeout = 60
archiver.enabled = true
archiver.schedule = 03:00
archiver.db.0.name = healthchecks
archiver.db.0.keep = 7
archiver.db.1.name = statistics
archiver.db.1.keep = 7
archiver.db.2.name = devicelogs
archiver.db.2.keep = 7
archiver.db.3.name = commandlist
archiver.db.3.keep = 7
########################################################################
########################################################################
#
# Logging: please leave as is for now.
#
########################################################################
logging.formatters.f1.class = PatternFormatter
logging.formatters.f1.pattern = %Y-%m-%d %H:%M:%S %s: [%p] %t
logging.formatters.f1.times = UTC
logging.channels.c1.class = ConsoleChannel
logging.channels.c1.formatter = f1
# This is where the logs will be written. This path MUST exist
logging.channels.c2.class = FileChannel
logging.channels.c2.path = $UCENTRALGW_ROOT/logs/log
logging.channels.c2.formatter.class = PatternFormatter
logging.channels.c2.formatter.pattern = %Y-%m-%d %H:%M:%S %s: [%p] %t
logging.channels.c2.rotation = 20 M
logging.channels.c2.archive = timestamp
logging.channels.c2.purgeCount = 20
logging.channels.c3.class = ConsoleChannel
logging.channels.c3.pattern = %s: [%p] %t
# External Channel
logging.loggers.root.channel = c1
logging.loggers.root.level = debug
# Inline Channel with PatternFormatter
# logging.loggers.l1.name = logger1
# logging.loggers.l1.channel.class = ConsoleChannel
# logging.loggers.l1.channel.pattern = %s: [%p] %t
# logging.loggers.l1.level = information
# SplitterChannel
# logging.channels.splitter.class = SplitterChannel
# logging.channels.splitter.channels = l1,l2
# logging.loggers.l2.name = logger2
# logging.loggers.l2.channel = splitter

View File

@@ -1,145 +0,0 @@
#
# uCentral protocol server for devices. This is where you point
# all your devices. You can replace the * for address by the specific
# address of one of your interfaces
#
#
# REST API access
#
ucentral.restapi.host.0.backlog = 100
ucentral.restapi.host.0.security = relaxed
ucentral.restapi.host.0.rootca = $UCENTRALSEC_ROOT/certs/restapi-ca.pem
ucentral.restapi.host.0.address = *
ucentral.restapi.host.0.port = 16001
ucentral.restapi.host.0.cert = $UCENTRALSEC_ROOT/certs/restapi-cert.pem
ucentral.restapi.host.0.key = $UCENTRALSEC_ROOT/certs/restapi-key.pem
ucentral.restapi.host.0.key.password = mypassword
ucentral.restapi.wwwassets = $UCENTRALSEC_ROOT/wwwassets
ucentral.internal.restapi.host.0.backlog = 100
ucentral.internal.restapi.host.0.security = relaxed
ucentral.internal.restapi.host.0.rootca = $UCENTRALSEC_ROOT/certs/restapi-ca.pem
ucentral.internal.restapi.host.0.address = *
ucentral.internal.restapi.host.0.port = 17001
ucentral.internal.restapi.host.0.cert = $UCENTRALSEC_ROOT/certs/restapi-cert.pem
ucentral.internal.restapi.host.0.key = $UCENTRALSEC_ROOT/certs/restapi-key.pem
ucentral.internal.restapi.host.0.key.password = mypassword
#
# Generic section that all microservices must have
#
authentication.enabled = true
authentication.default.username = tip@ucentral.com
authentication.default.password = 13268b7daa751240369d125e79c873bd8dd3bef7981bdfd38ea03dbb1fbe7dcf
ucentral.system.data = $UCENTRALSEC_ROOT/data
ucentral.system.uri.private = https://ucentralsec.wlan.local:17001
ucentral.system.uri.public = https://ucentral.wlan.local:16001
ucentral.system.uri.ui = http://127.0.0.1
ucentral.system.commandchannel = /tmp/app.ucentralsec
ucentral.service.key = $UCENTRALSEC_ROOT/certs/restapi-key.pem
#
# Security Microservice Specific Section
#
mailer.hostname = smtp.gmail.com
mailer.username = no-reply@arilia.com
mailer.password = pink-elephants-play-hockey
mailer.loginmethod = login
mailer.port = 587
mailer.templates = $UCENTRALSEC_ROOT/templates
#############################
# Generic information for all micro services
#############################
#
# NLB Support
#
alb.enable = true
alb.port = 16101
#
# Kafka
#
ucentral.kafka.group.id = security
ucentral.kafka.client.id = security1
ucentral.kafka.enable = true
# ucentral.kafka.brokerlist = a1.arilia.com:9092
ucentral.kafka.brokerlist = kafka:9092
ucentral.kafka.auto.commit = false
ucentral.kafka.queue.buffering.max.ms = 50
#
# This section select which form of persistence you need
# Only one selected at a time. If you select multiple, this service will die if a horrible
# death and might make your beer flat.
#
storage.type = sqlite
#storage.type = postgresql
#storage.type = mysql
#storage.type = odbc
storage.type.sqlite.db = security.db
storage.type.sqlite.idletime = 120
storage.type.sqlite.maxsessions = 128
storage.type.postgresql.maxsessions = 64
storage.type.postgresql.idletime = 60
storage.type.postgresql.host = postgresql
storage.type.postgresql.username = ucentralsec
storage.type.postgresql.password = ucentralsec
storage.type.postgresql.database = ucentralsec
storage.type.postgresql.port = 5432
storage.type.postgresql.connectiontimeout = 60
storage.type.mysql.maxsessions = 64
storage.type.mysql.idletime = 60
storage.type.mysql.host = localhost
storage.type.mysql.username = stephb
storage.type.mysql.password = snoopy99
storage.type.mysql.database = ucentral
storage.type.mysql.port = 3306
storage.type.mysql.connectiontimeout = 60
########################################################################
########################################################################
#
# Logging: please leave as is for now.
#
########################################################################
logging.formatters.f1.class = PatternFormatter
logging.formatters.f1.pattern = %Y-%m-%d %H:%M:%S %s: [%p] %t
logging.formatters.f1.times = UTC
logging.channels.c1.class = ConsoleChannel
logging.channels.c1.formatter = f1
# This is where the logs will be written. This path MUST exist
logging.channels.c2.class = FileChannel
logging.channels.c2.path = $UCENTRALSEC_ROOT/logs/log
logging.channels.c2.formatter.class = PatternFormatter
logging.channels.c2.formatter.pattern = %Y-%m-%d %H:%M:%S %s: [%p] %t
logging.channels.c2.rotation = 20 M
logging.channels.c2.archive = timestamp
logging.channels.c2.purgeCount = 20
logging.channels.c3.class = ConsoleChannel
logging.channels.c3.pattern = %s: [%p] %t
# External Channel
logging.loggers.root.channel = c1
logging.loggers.root.level = debug
# Inline Channel with PatternFormatter
# logging.loggers.l1.name = logger1
# logging.loggers.l1.channel.class = ConsoleChannel
# logging.loggers.l1.channel.pattern = %s: [%p] %t
# logging.loggers.l1.level = information
# SplitterChannel
# logging.channels.splitter.class = SplitterChannel
# logging.channels.splitter.channels = l1,l2
# logging.loggers.l2.name = logger2
# logging.loggers.l2.channel = splitter