Feature 10884: Juju 2.9 support
- Update osm bundles (charmed)
- Update Juju version (snap and agent version) (charmed and k8s)
- Update to new mongodb charm (charmed and k8s)
- Fix ingress issue by adding an ingress_class config
- Charmed installer: point to local bundles until all charms are in
CharmHub
Change-Id: I6ff8328e5db6719bbf9d5d4c9b5490f478b2ace8
Signed-off-by: David Garcia <david.garcia@canonical.com>
diff --git a/installers/charm/bundles/osm-ha/bundle.yaml b/installers/charm/bundles/osm-ha/bundle.yaml
index 2d49421..0909160 100644
--- a/installers/charm/bundles/osm-ha/bundle.yaml
+++ b/installers/charm/bundles/osm-ha/bundle.yaml
@@ -68,22 +68,17 @@
annotations:
gui-x: 0
gui-y: 250
- mongodb-k8s:
- charm: "cs:~charmed-osm/mongodb-k8s"
- channel: "stable"
+ mongodb:
+ charm: ch:mongodb-k8s
scale: 3
series: kubernetes
storage:
- database: 50M
- options:
- replica-set: rs0
- namespace: osm
- enable-sidecar: true
+ db: 50M
annotations:
gui-x: 0
gui-y: 0
nbi:
- charm: "cs:~charmed-osm/nbi-12"
+ charm: "cs:~charmed-osm/nbi-13"
scale: 3
series: kubernetes
options:
@@ -94,7 +89,7 @@
gui-x: 0
gui-y: -250
ro:
- charm: "cs:~charmed-osm/ro-4"
+ charm: "cs:~charmed-osm/ro-5"
scale: 3
series: kubernetes
options:
@@ -103,14 +98,14 @@
gui-x: -300
gui-y: 250
ng-ui:
- charm: "cs:~charmed-osm/ng-ui-21"
+ charm: "cs:~charmed-osm/ng-ui-22"
scale: 3
series: kubernetes
annotations:
gui-x: 600
gui-y: 0
lcm:
- charm: "cs:~charmed-osm/lcm-8"
+ charm: "cs:~charmed-osm/lcm-9"
scale: 3
series: kubernetes
options:
@@ -120,7 +115,7 @@
gui-x: -300
gui-y: 0
mon:
- charm: "cs:~charmed-osm/mon-5"
+ charm: "cs:~charmed-osm/mon-6"
scale: 1
series: kubernetes
options:
@@ -131,7 +126,7 @@
gui-x: 300
gui-y: 0
pol:
- charm: "cs:~charmed-osm/pol-4"
+ charm: "cs:~charmed-osm/pol-5"
scale: 3
series: kubernetes
options:
@@ -140,7 +135,7 @@
gui-x: -300
gui-y: 500
pla:
- charm: "cs:~charmed-osm/pla-9"
+ charm: "cs:~charmed-osm/pla-10"
scale: 3
series: kubernetes
options:
@@ -149,7 +144,7 @@
gui-x: 600
gui-y: -250
prometheus:
- charm: "cs:~charmed-osm/prometheus-4"
+ charm: "cs:~charmed-osm/prometheus-5"
scale: 1
series: kubernetes
storage:
@@ -160,14 +155,14 @@
gui-x: 300
gui-y: 250
grafana:
- charm: "cs:~charmed-osm/grafana-4"
+ charm: "cs:~charmed-osm/grafana-5"
scale: 3
series: kubernetes
annotations:
gui-x: 300
gui-y: 500
keystone:
- charm: "cs:~charmed-osm/keystone-10"
+ charm: "cs:~charmed-osm/keystone-11"
scale: 1
series: kubernetes
annotations:
@@ -183,27 +178,27 @@
- - lcm:kafka
- kafka-k8s:kafka
- - lcm:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - ro:ro
- lcm:ro
- - ro:kafka
- kafka-k8s:kafka
- - ro:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - pol:kafka
- kafka-k8s:kafka
- - pol:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - mon:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - mon:kafka
- kafka-k8s:kafka
- - pla:kafka
- kafka-k8s:kafka
- - pla:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - nbi:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - nbi:kafka
- kafka-k8s:kafka
- - nbi:prometheus
diff --git a/installers/charm/bundles/osm/bundle.yaml b/installers/charm/bundles/osm/bundle.yaml
index 92e2aca..bdd4cd6 100644
--- a/installers/charm/bundles/osm/bundle.yaml
+++ b/installers/charm/bundles/osm/bundle.yaml
@@ -61,22 +61,17 @@
annotations:
gui-x: 0
gui-y: 250
- mongodb-k8s:
- charm: "cs:~charmed-osm/mongodb-k8s"
- channel: "stable"
+ mongodb:
+ charm: ch:mongodb-k8s
scale: 1
series: kubernetes
storage:
- database: 50M
- options:
- replica-set: rs0
- namespace: osm
- enable-sidecar: true
+ db: 50M
annotations:
gui-x: 0
gui-y: 0
nbi:
- charm: "cs:~charmed-osm/nbi-12"
+ charm: "cs:~charmed-osm/nbi-13"
scale: 1
series: kubernetes
options:
@@ -87,7 +82,7 @@
gui-x: 0
gui-y: -250
ro:
- charm: "cs:~charmed-osm/ro-4"
+ charm: "cs:~charmed-osm/ro-5"
scale: 1
series: kubernetes
options:
@@ -96,14 +91,14 @@
gui-x: -300
gui-y: 250
ng-ui:
- charm: "cs:~charmed-osm/ng-ui-21"
+ charm: "cs:~charmed-osm/ng-ui-22"
scale: 1
series: kubernetes
annotations:
gui-x: 600
gui-y: 0
lcm:
- charm: "cs:~charmed-osm/lcm-8"
+ charm: "cs:~charmed-osm/lcm-9"
scale: 1
series: kubernetes
options:
@@ -113,7 +108,7 @@
gui-x: -300
gui-y: 0
mon:
- charm: "cs:~charmed-osm/mon-5"
+ charm: "cs:~charmed-osm/mon-6"
scale: 1
series: kubernetes
options:
@@ -124,7 +119,7 @@
gui-x: 300
gui-y: 0
pol:
- charm: "cs:~charmed-osm/pol-4"
+ charm: "cs:~charmed-osm/pol-5"
scale: 1
series: kubernetes
options:
@@ -133,7 +128,7 @@
gui-x: -300
gui-y: 500
pla:
- charm: "cs:~charmed-osm/pla-9"
+ charm: "cs:~charmed-osm/pla-10"
scale: 1
series: kubernetes
options:
@@ -142,7 +137,7 @@
gui-x: 600
gui-y: -250
prometheus:
- charm: "cs:~charmed-osm/prometheus-4"
+ charm: "cs:~charmed-osm/prometheus-5"
scale: 1
series: kubernetes
storage:
@@ -153,14 +148,14 @@
gui-x: 300
gui-y: 250
grafana:
- charm: "cs:~charmed-osm/grafana-4"
+ charm: "cs:~charmed-osm/grafana-5"
scale: 1
series: kubernetes
annotations:
gui-x: 300
gui-y: 500
keystone:
- charm: "cs:~charmed-osm/keystone-10"
+ charm: "cs:~charmed-osm/keystone-11"
scale: 1
series: kubernetes
annotations:
@@ -176,27 +171,27 @@
- - lcm:kafka
- kafka-k8s:kafka
- - lcm:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - ro:ro
- lcm:ro
- - ro:kafka
- kafka-k8s:kafka
- - ro:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - pol:kafka
- kafka-k8s:kafka
- - pol:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - mon:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - mon:kafka
- kafka-k8s:kafka
- - pla:kafka
- kafka-k8s:kafka
- - pla:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - nbi:mongodb
- - mongodb-k8s:mongo
+ - mongodb:database
- - nbi:kafka
- kafka-k8s:kafka
- - nbi:prometheus
diff --git a/installers/charm/grafana/config.yaml b/installers/charm/grafana/config.yaml
index 19274e5..3a7e63f 100644
--- a/installers/charm/grafana/config.yaml
+++ b/installers/charm/grafana/config.yaml
@@ -27,6 +27,11 @@
of Keystone, it may need to be configured to handle the requested size.
Note: if set to 0, there is no limit.
default: 0
+ ingress_class:
+ type: string
+ description: |
+ Ingress class name. This is useful for selecting the ingress to be used
+ in case there are multiple ingresses in the underlying k8s clusters.
ingress_whitelist_source_range:
type: string
description: |
diff --git a/installers/charm/grafana/src/charm.py b/installers/charm/grafana/src/charm.py
index a7cc036..28be79a 100755
--- a/installers/charm/grafana/src/charm.py
+++ b/installers/charm/grafana/src/charm.py
@@ -51,6 +51,7 @@
osm_dashboards: bool
site_url: Optional[str]
cluster_issuer: Optional[str]
+ ingress_class: Optional[str]
ingress_whitelist_source_range: Optional[str]
tls_secret_name: Optional[str]
@@ -174,9 +175,10 @@
str(config.max_file_size) + "m"
if config.max_file_size > 0
else config.max_file_size
- ),
- "kubernetes.io/ingress.class": "public",
+ )
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
diff --git a/installers/charm/kafka-exporter/config.yaml b/installers/charm/kafka-exporter/config.yaml
index 8d3703e..706e330 100644
--- a/installers/charm/kafka-exporter/config.yaml
+++ b/installers/charm/kafka-exporter/config.yaml
@@ -20,6 +20,11 @@
##
options:
+ ingress_class:
+ type: string
+ description: |
+ Ingress class name. This is useful for selecting the ingress to be used
+ in case there are multiple ingresses in the underlying k8s clusters.
ingress_whitelist_source_range:
type: string
description: |
diff --git a/installers/charm/kafka-exporter/src/charm.py b/installers/charm/kafka-exporter/src/charm.py
index 3b599a8..a15abc8 100755
--- a/installers/charm/kafka-exporter/src/charm.py
+++ b/installers/charm/kafka-exporter/src/charm.py
@@ -49,6 +49,7 @@
class ConfigModel(ModelValidator):
site_url: Optional[str]
cluster_issuer: Optional[str]
+ ingress_class: Optional[str]
ingress_whitelist_source_range: Optional[str]
tls_secret_name: Optional[str]
@@ -194,7 +195,9 @@
# Add ingress resources to PodSpec if site url exists
if config.site_url:
parsed = urlparse(config.site_url)
- annotations = {"kubernetes.io/ingress.class": "public"}
+ annotations = {}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
diff --git a/installers/charm/keystone/config.yaml b/installers/charm/keystone/config.yaml
index 402096c..9a7acd5 100644
--- a/installers/charm/keystone/config.yaml
+++ b/installers/charm/keystone/config.yaml
@@ -20,6 +20,11 @@
If there is a reverse proxy in front of Keystone, it may
need to be configured to handle the requested size.
default: 5
+ ingress_class:
+ type: string
+ description: |
+ Ingress class name. This is useful for selecting the ingress to be used
+ in case there are multiple ingresses in the underlying k8s clusters.
ingress_whitelist_source_range:
type: string
description: |
diff --git a/installers/charm/keystone/src/charm.py b/installers/charm/keystone/src/charm.py
index 8300b88..1dd0ba5 100755
--- a/installers/charm/keystone/src/charm.py
+++ b/installers/charm/keystone/src/charm.py
@@ -78,6 +78,7 @@
token_expiration: int
max_file_size: int
site_url: Optional[str]
+ ingress_class: Optional[str]
ingress_whitelist_source_range: Optional[str]
tls_secret_name: Optional[str]
mysql_host: Optional[str]
@@ -369,9 +370,10 @@
str(config.max_file_size) + "m"
if config.max_file_size > 0
else config.max_file_size
- ),
- "kubernetes.io/ingress.class": "public",
+ )
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
diff --git a/installers/charm/mongodb-exporter/config.yaml b/installers/charm/mongodb-exporter/config.yaml
index 206bca5..727598b 100644
--- a/installers/charm/mongodb-exporter/config.yaml
+++ b/installers/charm/mongodb-exporter/config.yaml
@@ -20,6 +20,11 @@
##
options:
+ ingress_class:
+ type: string
+ description: |
+ Ingress class name. This is useful for selecting the ingress to be used
+ in case there are multiple ingresses in the underlying k8s clusters.
ingress_whitelist_source_range:
type: string
description: |
diff --git a/installers/charm/mongodb-exporter/src/charm.py b/installers/charm/mongodb-exporter/src/charm.py
index a2b9471..149940a 100755
--- a/installers/charm/mongodb-exporter/src/charm.py
+++ b/installers/charm/mongodb-exporter/src/charm.py
@@ -49,6 +49,7 @@
class ConfigModel(ModelValidator):
site_url: Optional[str]
cluster_issuer: Optional[str]
+ ingress_class: Optional[str]
ingress_whitelist_source_range: Optional[str]
tls_secret_name: Optional[str]
mongodb_uri: Optional[str]
@@ -214,7 +215,9 @@
# Add ingress resources to PodSpec if site url exists
if config.site_url:
parsed = urlparse(config.site_url)
- annotations = {"kubernetes.io/ingress.class": "public"}
+ annotations = {}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
diff --git a/installers/charm/mysqld-exporter/config.yaml b/installers/charm/mysqld-exporter/config.yaml
index f1192a1..a7702a3 100644
--- a/installers/charm/mysqld-exporter/config.yaml
+++ b/installers/charm/mysqld-exporter/config.yaml
@@ -20,6 +20,11 @@
##
options:
+ ingress_class:
+ type: string
+ description: |
+ Ingress class name. This is useful for selecting the ingress to be used
+ in case there are multiple ingresses in the underlying k8s clusters.
ingress_whitelist_source_range:
type: string
description: |
diff --git a/installers/charm/mysqld-exporter/src/charm.py b/installers/charm/mysqld-exporter/src/charm.py
index 85a1e67..bcd43b5 100755
--- a/installers/charm/mysqld-exporter/src/charm.py
+++ b/installers/charm/mysqld-exporter/src/charm.py
@@ -49,6 +49,7 @@
class ConfigModel(ModelValidator):
site_url: Optional[str]
cluster_issuer: Optional[str]
+ ingress_class: Optional[str]
ingress_whitelist_source_range: Optional[str]
tls_secret_name: Optional[str]
mysql_uri: Optional[str]
@@ -210,7 +211,9 @@
# Add ingress resources to PodSpec if site url exists
if config.site_url:
parsed = urlparse(config.site_url)
- annotations = {"kubernetes.io/ingress.class": "public"}
+ annotations = {}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
diff --git a/installers/charm/nbi/config.yaml b/installers/charm/nbi/config.yaml
index a3d94bc..7f32752 100644
--- a/installers/charm/nbi/config.yaml
+++ b/installers/charm/nbi/config.yaml
@@ -27,6 +27,11 @@
of Keystone, it may need to be configured to handle the requested size.
Note: if set to 0, there is no limit.
default: 0
+ ingress_class:
+ type: string
+ description: |
+ Ingress class name. This is useful for selecting the ingress to be used
+ in case there are multiple ingresses in the underlying k8s clusters.
ingress_whitelist_source_range:
type: string
description: |
diff --git a/installers/charm/nbi/src/charm.py b/installers/charm/nbi/src/charm.py
index 0af4104..d3a2251 100755
--- a/installers/charm/nbi/src/charm.py
+++ b/installers/charm/nbi/src/charm.py
@@ -57,6 +57,7 @@
max_file_size: int
site_url: Optional[str]
cluster_issuer: Optional[str]
+ ingress_class: Optional[str]
ingress_whitelist_source_range: Optional[str]
tls_secret_name: Optional[str]
mongodb_uri: Optional[str]
@@ -249,8 +250,9 @@
else config.max_file_size
),
"nginx.ingress.kubernetes.io/backend-protocol": "HTTPS",
- "kubernetes.io/ingress.class": "public",
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
diff --git a/installers/charm/ng-ui/config.yaml b/installers/charm/ng-ui/config.yaml
index df09698..39d3b2d 100644
--- a/installers/charm/ng-ui/config.yaml
+++ b/installers/charm/ng-ui/config.yaml
@@ -31,6 +31,11 @@
of Keystone, it may need to be configured to handle the requested size.
Note: if set to 0, there is no limit.
default: 0
+ ingress_class:
+ type: string
+ description: |
+ Ingress class name. This is useful for selecting the ingress to be used
+ in case there are multiple ingresses in the underlying k8s clusters.
ingress_whitelist_source_range:
type: string
description: |
diff --git a/installers/charm/ng-ui/src/charm.py b/installers/charm/ng-ui/src/charm.py
index 1c53163..5388466 100755
--- a/installers/charm/ng-ui/src/charm.py
+++ b/installers/charm/ng-ui/src/charm.py
@@ -51,6 +51,7 @@
max_file_size: int
site_url: Optional[str]
cluster_issuer: Optional[str]
+ ingress_class: Optional[str]
ingress_whitelist_source_range: Optional[str]
tls_secret_name: Optional[str]
@@ -148,9 +149,10 @@
str(config.max_file_size) + "m"
if config.max_file_size > 0
else config.max_file_size
- ),
- "kubernetes.io/ingress.class": "public",
+ )
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
diff --git a/installers/charm/prometheus/config.yaml b/installers/charm/prometheus/config.yaml
index a5f5e8a..c1c0fb9 100644
--- a/installers/charm/prometheus/config.yaml
+++ b/installers/charm/prometheus/config.yaml
@@ -35,6 +35,11 @@
of Keystone, it may need to be configured to handle the requested size.
Note: if set to 0, there is no limit.
default: 0
+ ingress_class:
+ type: string
+ description: |
+ Ingress class name. This is useful for selecting the ingress to be used
+ in case there are multiple ingresses in the underlying k8s clusters.
ingress_whitelist_source_range:
type: string
description: |
diff --git a/installers/charm/prometheus/src/charm.py b/installers/charm/prometheus/src/charm.py
index cf4f956..e3e0e42 100755
--- a/installers/charm/prometheus/src/charm.py
+++ b/installers/charm/prometheus/src/charm.py
@@ -56,6 +56,7 @@
max_file_size: int
site_url: Optional[str]
cluster_issuer: Optional[str]
+ ingress_class: Optional[str]
ingress_whitelist_source_range: Optional[str]
tls_secret_name: Optional[str]
enable_web_admin_api: bool
@@ -196,9 +197,10 @@
str(config.max_file_size) + "m"
if config.max_file_size > 0
else config.max_file_size
- ),
- "kubernetes.io/ingress.class": "public",
+ )
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)