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:
gui-x: 0
gui-y: -250
ro:
- charm: "cs:~charmed-osm/ro-4"
+ charm: "cs:~charmed-osm/ro-5"
scale: 3
series: kubernetes
options:
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:
gui-x: -300
gui-y: 0
mon:
- charm: "cs:~charmed-osm/mon-5"
+ charm: "cs:~charmed-osm/mon-6"
scale: 1
series: kubernetes
options:
gui-x: 300
gui-y: 0
pol:
- charm: "cs:~charmed-osm/pol-4"
+ charm: "cs:~charmed-osm/pol-5"
scale: 3
series: kubernetes
options:
gui-x: -300
gui-y: 500
pla:
- charm: "cs:~charmed-osm/pla-9"
+ charm: "cs:~charmed-osm/pla-10"
scale: 3
series: kubernetes
options:
gui-x: 600
gui-y: -250
prometheus:
- charm: "cs:~charmed-osm/prometheus-4"
+ charm: "cs:~charmed-osm/prometheus-5"
scale: 1
series: kubernetes
storage:
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-9"
+ charm: "cs:~charmed-osm/keystone-11"
scale: 1
series: kubernetes
annotations:
- - 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
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:
gui-x: 0
gui-y: -250
ro:
- charm: "cs:~charmed-osm/ro-4"
+ charm: "cs:~charmed-osm/ro-5"
scale: 1
series: kubernetes
options:
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:
gui-x: -300
gui-y: 0
mon:
- charm: "cs:~charmed-osm/mon-5"
+ charm: "cs:~charmed-osm/mon-6"
scale: 1
series: kubernetes
options:
gui-x: 300
gui-y: 0
pol:
- charm: "cs:~charmed-osm/pol-4"
+ charm: "cs:~charmed-osm/pol-5"
scale: 1
series: kubernetes
options:
gui-x: -300
gui-y: 500
pla:
- charm: "cs:~charmed-osm/pla-9"
+ charm: "cs:~charmed-osm/pla-10"
scale: 1
series: kubernetes
options:
gui-x: 600
gui-y: -250
prometheus:
- charm: "cs:~charmed-osm/prometheus-4"
+ charm: "cs:~charmed-osm/prometheus-5"
scale: 1
series: kubernetes
storage:
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-9"
+ charm: "cs:~charmed-osm/keystone-11"
scale: 1
series: kubernetes
annotations:
- - 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
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: |
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]
str(config.max_file_size) + "m"
if config.max_file_size > 0
else config.max_file_size
- ),
+ )
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
##
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: |
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]
if config.site_url:
parsed = urlparse(config.site_url)
annotations = {}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
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: |
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]
str(config.max_file_size) + "m"
if config.max_file_size > 0
else config.max_file_size
- ),
+ )
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
##
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: |
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]
if config.site_url:
parsed = urlparse(config.site_url)
annotations = {}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
##
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: |
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]
if config.site_url:
parsed = urlparse(config.site_url)
annotations = {}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
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: |
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]
),
"nginx.ingress.kubernetes.io/backend-protocol": "HTTPS",
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
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: |
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]
str(config.max_file_size) + "m"
if config.max_file_size > 0
else config.max_file_size
- ),
+ )
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
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: |
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
str(config.max_file_size) + "m"
if config.max_file_size > 0
else config.max_file_size
- ),
+ )
}
+ if config.ingress_class:
+ annotations["kubernetes.io/ingress.class"] = config.ingress_class
ingress_resource_builder = IngressResourceV3Builder(
f"{self.app.name}-ingress", annotations
)
# set -eux
LXD_VERSION=4.0
-JUJU_VERSION=2.8
-JUJU_AGENT_VERSION=2.8.13
+JUJU_VERSION=2.9
+JUJU_AGENT_VERSION=2.9.22
K8S_CLOUD_NAME="k8s-cloud"
KUBECTL="microk8s.kubectl"
MICROK8S_VERSION=1.20
MODEL_NAME=osm
-OSM_BUNDLE=cs:osm-66
-OSM_HA_BUNDLE=cs:osm-ha-51
+# Latest bundles using old mongodb-k8s
+# OSM_BUNDLE=cs:osm-68
+# OSM_HA_BUNDLE=cs:osm-ha-54
+# The charm store does not support referencing charms from CharmHub,
+# therefore we will point to the local bundles until we migrate all
+# charms to CharmHub.
+OSM_BUNDLE=/usr/share/osm-devops/installers/charm/bundles/osm/bundle.yaml
+OSM_HA_BUNDLE=/usr/share/osm-devops/installers/charm/bundles/osm-ha/bundle.yaml
TAG=10
function check_arguments(){
hostname=`cat /etc/hostname`
echo "Use the following command to register the installed VCA to your OSM:"
- echo -e " osm vca-add --endpoints $vca_host:$vca_port \ \n --user $vca_user \ \n --secret $vca_secret \ \n --cacert $vca_cacert \ \n --lxd-cloud lxd-cloud \ \n --lxd-credentials lxd-cloud \ \n --k8s-cloud microk8s \ \n --k8s-credentials microk8s\ \n $hostname-vca"
+ echo -e " osm vca-add --endpoints $vca_host:$vca_port \\\n --user $vca_user \\\n --secret $vca_secret \\\n --cacert $vca_cacert \\\n --lxd-cloud lxd-cloud \\\n --lxd-credentials lxd-cloud \\\n --k8s-cloud microk8s \\\n --k8s-credentials microk8s\\\n $hostname-vca"
else
deploy_charmed_osm
install_osmclient
#deploy charmed services
function deploy_charmed_services() {
juju add-model $OSM_STACK_NAME $OSM_VCA_K8S_CLOUDNAME
- # deploy mongodb charm
- namespace=$OSM_STACK_NAME
- juju deploy cs:~charmed-osm/mongodb-k8s \
- --config enable-sidecar=true \
- --config replica-set=rs0 \
- --config namespace=$namespace \
- -m $namespace
+ juju deploy ch:mongodb-k8s -m $OSM_STACK_NAME
}
function deploy_osm_pla_service() {
}
LXD_VERSION=4.0
-JUJU_VERSION=2.8
-JUJU_AGENT_VERSION=2.8.13
+JUJU_VERSION=2.9
+JUJU_AGENT_VERSION=2.9.22
UNINSTALL=""
DEVELOP=""
UPDATE=""