Skip to content

Commit c830ad7

Browse files
committed
[Add] External database support + alpha.1 images
1 parent 716c5bd commit c830ad7

16 files changed

+523
-232
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

88
## [Unreleased]
9+
### Added
10+
- openwisp-websocket container
11+
- pinned openwisp images to 'alpha.1'
12+
- support for external database
13+
- support for different sslmodes for database connections
914

1015
## [0.1.0-alpha.2] - 2020-02-12
1116
### Added

configmap.tf renamed to configurations.tf

+59-27
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,9 @@
11
# ConfigMap resources, find documentation in
22
# official docker-openwisp repository.
33

4-
resource "kubernetes_config_map" "kubernetes_postgres_configmap" {
5-
depends_on = [var.ow_cluster_ready]
6-
metadata { name = var.kubernetes_configmap.postgres_configmap_name }
7-
data = {
8-
POSTGRES_DB = var.kubernetes_configmap.DB_NAME
9-
POSTGRES_USER = var.kubernetes_configmap.DB_USER
10-
POSTGRES_PASSWORD = var.kubernetes_configmap.DB_PASS
11-
}
12-
}
13-
14-
resource "kubernetes_config_map" "kubernetes_nfs_configmap" {
15-
depends_on = [var.ow_cluster_ready]
16-
metadata {
17-
name = var.kubernetes_configmap.nfs_configmap_name
18-
namespace = kubernetes_namespace.nfs_server.metadata[0].name
19-
}
20-
data = {
21-
EXPORT_OPTS = var.kubernetes_configmap.EXPORT_OPTS
22-
EXPORT_DIR = var.kubernetes_configmap.EXPORT_DIR
23-
}
24-
}
25-
264
resource "kubernetes_config_map" "kubernetes_common_configmap" {
275
depends_on = [var.ow_cluster_ready]
28-
metadata { name = var.kubernetes_configmap.common_configmap_name }
6+
metadata { name = "openwisp-common-config" }
297
data = {
308
DASHBOARD_DOMAIN = var.kubernetes_configmap.DASHBOARD_DOMAIN
319
CONTROLLER_DOMAIN = var.kubernetes_configmap.CONTROLLER_DOMAIN
@@ -39,11 +17,16 @@ resource "kubernetes_config_map" "kubernetes_common_configmap" {
3917
SSL_CERT_MODE = var.kubernetes_configmap.SSL_CERT_MODE
4018
SET_RADIUS_TASKS = var.kubernetes_configmap.SET_RADIUS_TASKS
4119
SET_TOPOLOGY_TASKS = var.kubernetes_configmap.SET_TOPOLOGY_TASKS
42-
DB_NAME = var.kubernetes_configmap.DB_NAME
43-
DB_USER = var.kubernetes_configmap.DB_USER
44-
DB_PASS = var.kubernetes_configmap.DB_PASS
20+
DB_HOST = var.infrastructure.database.host
21+
DB_NAME = var.infrastructure.database.name
22+
DB_USER = var.infrastructure.database.username
23+
DB_PASS = var.infrastructure.database.password
24+
DB_SSLMODE = var.infrastructure.database.sslmode
4525
DB_ENGINE = var.kubernetes_configmap.DB_ENGINE
4626
DB_PORT = var.kubernetes_configmap.DB_PORT
27+
DB_SSLKEY = "/var/lib/postgres/ssl/clientkey"
28+
DB_SSLCERT = "/var/lib/postgres/ssl/clientcert"
29+
DB_SSLROOTCERT = "/var/lib/postgres/ssl/rootcert"
4730
DB_OPTIONS = var.kubernetes_configmap.DB_OPTIONS
4831
DJANGO_X509_DEFAULT_CERT_VALIDITY = var.kubernetes_configmap.DJANGO_X509_DEFAULT_CERT_VALIDITY
4932
DJANGO_X509_DEFAULT_CA_VALIDITY = var.kubernetes_configmap.DJANGO_X509_DEFAULT_CA_VALIDITY
@@ -53,6 +36,7 @@ resource "kubernetes_config_map" "kubernetes_common_configmap" {
5336
DJANGO_LEAFET_CENTER_X_AXIS = var.kubernetes_configmap.DJANGO_LEAFET_CENTER_X_AXIS
5437
DJANGO_LEAFET_CENTER_Y_AXIS = var.kubernetes_configmap.DJANGO_LEAFET_CENTER_Y_AXIS
5538
DJANGO_LEAFET_ZOOM = var.kubernetes_configmap.DJANGO_LEAFET_ZOOM
39+
DJANGO_LOG_LEVEL = var.kubernetes_configmap.DJANGO_LOG_LEVEL
5640
EMAIL_BACKEND = var.kubernetes_configmap.EMAIL_BACKEND
5741
EMAIL_HOST_PORT = var.kubernetes_configmap.EMAIL_HOST_PORT
5842
EMAIL_HOST_USER = var.kubernetes_configmap.EMAIL_HOST_USER
@@ -103,7 +87,6 @@ resource "kubernetes_config_map" "kubernetes_common_configmap" {
10387
X509_ORGANIZATION_UNIT_NAME = var.kubernetes_configmap.X509_ORGANIZATION_UNIT_NAME
10488
X509_EMAIL = var.kubernetes_configmap.X509_EMAIL
10589
X509_COMMON_NAME = var.kubernetes_configmap.X509_COMMON_NAME
106-
DB_HOST = var.kubernetes_configmap.DB_HOST
10790
EMAIL_HOST = var.kubernetes_configmap.EMAIL_HOST
10891
REDIS_HOST = var.kubernetes_configmap.REDIS_HOST
10992
DASHBOARD_APP_SERVICE = var.kubernetes_configmap.DASHBOARD_APP_SERVICE
@@ -119,3 +102,52 @@ resource "kubernetes_config_map" "kubernetes_common_configmap" {
119102
POSTFIX_DEBUG_MYNETWORKS = var.kubernetes_configmap.POSTFIX_DEBUG_MYNETWORKS
120103
}
121104
}
105+
106+
resource "kubernetes_config_map" "kubernetes_openwisp_postgres_configmap" {
107+
depends_on = [var.ow_cluster_ready]
108+
metadata { name = "openwisp-postgres-config" }
109+
data = {
110+
POSTGRES_DB = kubernetes_config_map.kubernetes_common_configmap.data.DB_NAME
111+
POSTGRES_USER = kubernetes_config_map.kubernetes_common_configmap.data.DB_USER
112+
POSTGRES_PASSWORD = kubernetes_config_map.kubernetes_common_configmap.data.DB_PASS
113+
}
114+
}
115+
116+
resource "kubernetes_config_map" "kubernetes_postgres_configmap" {
117+
depends_on = [var.ow_cluster_ready]
118+
metadata { name = "postgres-config" }
119+
data = {
120+
PGDATABASE = kubernetes_config_map.kubernetes_common_configmap.data.DB_NAME
121+
PGUSER = kubernetes_config_map.kubernetes_common_configmap.data.DB_USER
122+
PGPASSWORD = kubernetes_config_map.kubernetes_common_configmap.data.DB_PASS
123+
PGHOST = kubernetes_config_map.kubernetes_common_configmap.data.DB_HOST
124+
PGPORT = kubernetes_config_map.kubernetes_common_configmap.data.DB_PORT
125+
PGSSLMODE = kubernetes_config_map.kubernetes_common_configmap.data.DB_SSLMODE
126+
PGSSLCERT = kubernetes_config_map.kubernetes_common_configmap.data.DB_SSLCERT
127+
PGSSLKEY = kubernetes_config_map.kubernetes_common_configmap.data.DB_SSLKEY
128+
PGSSLROOTCERT = kubernetes_config_map.kubernetes_common_configmap.data.DB_SSLROOTCERT
129+
}
130+
}
131+
132+
resource "kubernetes_config_map" "kubernetes_nfs_configmap" {
133+
depends_on = [var.ow_cluster_ready]
134+
metadata {
135+
name = "openwisp-nfs-config"
136+
namespace = kubernetes_namespace.nfs_server.metadata[0].name
137+
}
138+
data = {
139+
EXPORT_OPTS = var.kubernetes_configmap.EXPORT_OPTS
140+
EXPORT_DIR = var.kubernetes_configmap.EXPORT_DIR
141+
}
142+
}
143+
144+
resource "kubernetes_secret" "postgresql_certificates" {
145+
metadata {
146+
name = "postgresql-certificates"
147+
}
148+
data = {
149+
clientcert = var.infrastructure.database.client_cert
150+
clientkey = var.infrastructure.database.client_key
151+
rootcert = var.infrastructure.database.ca_cert
152+
}
153+
}

docs/build/input.mdpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ The `eight` input variables are docuemented below:
44

55
!TOC
66

7-
!INCLUDE "docs/build/input/infrastructure_provider.mdpp"
7+
!INCLUDE "docs/build/input/infrastructure.mdpp"
88
!INCLUDE "docs/build/input/kubernetes_services.mdpp"
99
!INCLUDE "docs/build/input/ow_cluster_ready.mdpp"
1010
!INCLUDE "docs/build/input/ow_kubectl_ready.mdpp"

docs/build/input/infrastructure_provider.mdpp renamed to docs/build/input/infrastructure.mdpp

+11-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
### infrastructure_provider
1+
### infrastructure
22

33
Details about the infrastructure.
44

@@ -16,4 +16,14 @@ services_cidr_range : Address range for ClusterIP services.
1616
endpoint : Kubernetes cluster endpoint IP address. (example: 192.168.2.25)
1717
ca_certificate : ca_certificate of the cluster that needs to be decoded in base64 for authentication.
1818
access_token : Access token required for authentication to perform actions in the cluster.
19+
database:
20+
enabled : Flag for cloud provided database being used. (Like Google Cloud SQL)
21+
sslmode : [PSQL database sslmodes](https://www.postgresql.org/docs/9.1/libpq-ssl.html)
22+
ca_cert : Contents of the server certificate file
23+
client_cert : Contents of the client certificate file
24+
client_key : Contents of the client private key
25+
username : Username to login to database
26+
password : Password to login to database
27+
name : Name of the database to be used by openwisp
28+
host : IP address of the database server
1929
```

docs/build/input/kubes_configmap.mdpp

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
### kubernetes_configmap
22

3-
Options for common configmap avaiable in the docker-openwisp repository documentation.
3+
Options for configmaps are the same as the one available for docker-openwisp image [environment options](https://github.com/openwisp/docker-openwisp/blob/master/docs/ENV.md)
4+
5+
However, some database options are set in the infrastructure variable.

docs/build/input/openwisp_deployments.mdpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@ dashboard:
1515
controller: **Same as dashboard options
1616
radius: **Same as dashboard options
1717
topology: **Same as dashboard options
18+
celery: **Same as dashboard options
19+
celerybeat: **Same as dashboard options
1820
nginx: **Same as dashboard options
19-
postgres: **Same as dashboard options
20-
postfix: **Same as dashboard options
21+
websocket: **Same as dashboard options
2122
freeradius: **Same as dashboard options
2223
openvpn: **Same as dashboard options
23-
openvpn: **Same as dashboard options
24-
celery: **Same as dashboard options
25-
celerybeat: **Same as dashboard options
24+
postfix: **Same as dashboard options
25+
postgres: **Same as dashboard options
2626
redis: **Same as dashboard options
2727
```

docs/build/input/openwisp_services.mdpp

+2
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,6 @@ use_freeradius : (Boolean) Setup freeradius inside cluster.
88
setup_database : (Boolean) Setup database inside cluster. You would want to
99
set this as false when you have your own database server or
1010
you are using cloud SQL.
11+
setup_fresh : (Boolean) Flag to initial setup of openwisp. Only required when you
12+
are setting up openwisp & openwisp-database for the first time.
1113
```

docs/build/input/persistent_data.mdpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ type : https://www.terraform.io/docs/providers/google/r/
88
size : https://www.terraform.io/docs/providers/google/r/compute_disk.html#size
99
reclaim_policy : https://www.terraform.io/docs/providers/kubernetes/r/storage_class.html#reclaim_policy
1010
postgres_storage_size : Disk size portion to be allocated for postgres database.
11-
postfix_sslcert_storage_size : Disk size portion to be allocated for storing postfix data.
11+
sslcert_storage_size : Disk size portion to be allocated for storing postfix sslcert data.
1212
media_storage_size : Disk size portion to be allocated for user uploaded media (like floor plan).
1313
static_storage_size : Disk size portion to be allocated for static data of the website.
1414
html_storage_size : Disk size portion to be allocated for maintaince HTML.

docs/input.md

+24-10
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
The `eight` input variables are docuemented below:
44

5-
1\. [infrastructure_provider](#infrastructure_provider)
5+
1\. [infrastructure](#infrastructure)
66
2\. [kubernetes_services](#kubernetes_services)
77
3\. [ow_cluster_ready](#ow_cluster_ready)
88
4\. [ow_kubectl_ready](#ow_kubectl_ready)
@@ -11,9 +11,9 @@ The `eight` input variables are docuemented below:
1111
7\. [kubernetes_configmap](#kubernetes_configmap)
1212
8\. [openwisp_deployments](#openwisp_deployments)
1313

14-
<a name="infrastructure_provider"></a>
14+
<a name="infrastructure"></a>
1515

16-
### 1\. infrastructure_provider
16+
### 1\. infrastructure
1717

1818
Details about the infrastructure.
1919

@@ -31,6 +31,16 @@ services_cidr_range : Address range for ClusterIP services.
3131
endpoint : Kubernetes cluster endpoint IP address. (example: 192.168.2.25)
3232
ca_certificate : ca_certificate of the cluster that needs to be decoded in base64 for authentication.
3333
access_token : Access token required for authentication to perform actions in the cluster.
34+
database:
35+
enabled : Flag for cloud provided database being used. (Like Google Cloud SQL)
36+
sslmode : [PSQL database sslmodes](https://www.postgresql.org/docs/9.1/libpq-ssl.html)
37+
ca_cert : Contents of the server certificate file
38+
client_cert : Contents of the client certificate file
39+
client_key : Contents of the client private key
40+
username : Username to login to database
41+
password : Password to login to database
42+
name : Name of the database to be used by openwisp
43+
host : IP address of the database server
3444
```
3545
<a name="kubernetes_services"></a>
3646

@@ -67,6 +77,8 @@ use_freeradius : (Boolean) Setup freeradius inside cluster.
6777
setup_database : (Boolean) Setup database inside cluster. You would want to
6878
set this as false when you have your own database server or
6979
you are using cloud SQL.
80+
setup_fresh : (Boolean) Flag to initial setup of openwisp. Only required when you
81+
are setting up openwisp & openwisp-database for the first time.
7082
```
7183
<a name="persistent_data"></a>
7284

@@ -80,7 +92,7 @@ type : https://www.terraform.io/docs/providers/google/r/
8092
size : https://www.terraform.io/docs/providers/google/r/compute_disk.html#size
8193
reclaim_policy : https://www.terraform.io/docs/providers/kubernetes/r/storage_class.html#reclaim_policy
8294
postgres_storage_size : Disk size portion to be allocated for postgres database.
83-
postfix_sslcert_storage_size : Disk size portion to be allocated for storing postfix data.
95+
sslcert_storage_size : Disk size portion to be allocated for storing postfix sslcert data.
8496
media_storage_size : Disk size portion to be allocated for user uploaded media (like floor plan).
8597
static_storage_size : Disk size portion to be allocated for static data of the website.
8698
html_storage_size : Disk size portion to be allocated for maintaince HTML.
@@ -95,7 +107,9 @@ requests_memory : Minimum memory requirement for the pod
95107

96108
### 7\. kubernetes_configmap
97109

98-
Options for common configmap avaiable in the docker-openwisp repository documentation.
110+
Options for configmaps are the same as the one available for docker-openwisp image [environment options](https://github.com/openwisp/docker-openwisp/blob/master/docs/ENV.md)
111+
112+
However, some database options are set in the infrastructure variable.
99113
<a name="openwisp_deployments"></a>
100114

101115
### 8\. openwisp_deployments
@@ -115,13 +129,13 @@ dashboard:
115129
controller: **Same as dashboard options
116130
radius: **Same as dashboard options
117131
topology: **Same as dashboard options
132+
celery: **Same as dashboard options
133+
celerybeat: **Same as dashboard options
118134
nginx: **Same as dashboard options
119-
postgres: **Same as dashboard options
120-
postfix: **Same as dashboard options
135+
websocket: **Same as dashboard options
121136
freeradius: **Same as dashboard options
122137
openvpn: **Same as dashboard options
123-
openvpn: **Same as dashboard options
124-
celery: **Same as dashboard options
125-
celerybeat: **Same as dashboard options
138+
postfix: **Same as dashboard options
139+
postgres: **Same as dashboard options
126140
redis: **Same as dashboard options
127141
```

0 commit comments

Comments
 (0)