AppManager: Support inter-cluster proxy for MongoDB
Change-Id: I2434e8d0118214447bd5ede2f6623d2d922b0a9a
diff --git a/core/installer/app_configs/app_base.cue b/core/installer/app_configs/app_base.cue
index 8a674ee..1d81e62 100644
--- a/core/installer/app_configs/app_base.cue
+++ b/core/installer/app_configs/app_base.cue
@@ -131,6 +131,13 @@
ingressClassName: string
}
+clusters: [...#Cluster] | *[]
+clusterMap: {
+ for c in clusters {
+ "\(strings.ToLower(c.name))": c
+ }
+}
+
global: #Global
release: #Release
@@ -353,15 +360,82 @@
_volumeClaimName: "\(name)-mongodb"
_initdbScripts: initdbScripts
- openPort: [for i, e in expose {
- network: networks[strings.ToLower(e.network)]
- port: input["port_mongodb_\(_name)_\(i)"]
- protocol: "TCP"
- service: {
- name: "mongodb-\(_name)"
- port: 27017
+ openPort: list.FlattenN([for i, e in expose {
+ if cluster == _|_ {
+ network: networks[strings.ToLower(e.network)]
+ port: input["port_mongodb_\(_name)_\(i)"]
+ protocol: "TCP"
+ service: {
+ name: "mongodb-\(_name)"
+ port: 27017
+ }
}
- }]
+ if cluster != _|_ {
+ if strings.ToLower(e.network) == "private" {
+ [{
+ network: #Network & {
+ name: "cluster_\(cluster.name)"
+ ingressClass: "default"
+ domain: ""
+ allocatePortAddr: "http://port-allocator.\(global.id)-cluster-\(cluster.name)-network.svc.cluster.local/api/allocate"
+ reservePortAddr: "http://port-allocator.\(global.id)-cluster-\(cluster.name)-network.svc.cluster.local/api/reserve"
+ deallocatePortAddr: "http://port-allocator.\(global.id)-cluster-\(cluster.name)-network.svc.cluster.local/api/remmove"
+ }
+ port: input["port_mongodb_\(_name)_\(i)_cluster"]
+ protocol: "TCP"
+ service: {
+ name: "mongodb-\(_name)"
+ port: 27017
+ }
+ }, {
+ cluster: _cluster.name
+ network: networks[strings.ToLower(e.network)]
+ port: input["port_mongodb_\(_name)_\(i)"]
+ protocol: "TCP"
+ service: {
+ name: "cluster-\(cluster).devices.\(global.privateDomain)"
+ port: input["port_mongodb_\(_name)_\(i)_cluster"]
+ }
+ }]
+ }
+ if strings.ToLower(e.network) != "private" {
+ [{
+ network: #Network & {
+ name: "cluster_\(cluster.name)"
+ ingressClass: "default"
+ domain: ""
+ allocatePortAddr: "http://port-allocator.\(global.id)-cluster-\(cluster.name)-network.svc.cluster.local/api/allocate"
+ reservePortAddr: "http://port-allocator.\(global.id)-cluster-\(cluster.name)-network.svc.cluster.local/api/reserve"
+ deallocatePortAddr: "http://port-allocator.\(global.id)-cluster-\(cluster.name)-network.svc.cluster.local/api/remmove"
+ }
+ port: input["port_mongodb_\(_name)_\(i)_cluster"]
+ protocol: "TCP"
+ service: {
+ name: "mongodb-\(_name)"
+ port: 27017
+ }
+ }, {
+ network: networks.private // TODO(gio): take corresponding private network
+ cluster: _cluster.name
+ port: input["port_mongodb_\(_name)_\(i)_private"]
+ protocol: "TCP"
+ service: {
+ name: "cluster-\(cluster).devices.\(global.privateDomain)"
+ port: input["port_mongodb_\(_name)_\(i)_cluster"]
+ }
+ }, {
+ network: networks[strings.ToLower(e.network)]
+ port: input["port_mongodb_\(_name)_\(i)"]
+ protocol: "TCP"
+ service: {
+ name: "\(global.id)-nginx-private-controller"
+ namespace: "\(global.namespacePrefix)ingress-private"
+ port: input["port_mongodb_\(_name)_\(i)_private"]
+ }
+ }]
+ }
+ }
+ }], -1)
images: {
mongodb: {
@@ -541,7 +615,7 @@
port: input["port_postgresql_\(_name)_\(i)"]
protocol: "TCP"
service: {
- name: "cluster-\(cluster).private-network-proxy.devices.\(global.privateDomain)"
+ name: "cluster-\(cluster).devices.\(global.privateDomain)"
port: input["port_postgresql_\(_name)_\(i)_cluster"]
}
}]
@@ -568,7 +642,7 @@
port: input["port_postgresql_\(_name)_\(i)_private"]
protocol: "TCP"
service: {
- name: "cluster-\(cluster).private-network-proxy.devices.\(global.privateDomain)"
+ name: "cluster-\(cluster).devices.\(global.privateDomain)"
port: input["port_postgresql_\(_name)_\(i)_cluster"]
}
}, {
diff --git a/core/installer/app_configs/app_global_env.cue b/core/installer/app_configs/app_global_env.cue
index 6a02df2..7c90d95 100644
--- a/core/installer/app_configs/app_global_env.cue
+++ b/core/installer/app_configs/app_global_env.cue
@@ -31,13 +31,6 @@
networks: #Networks
-clusters: [...#Cluster] | *[]
-clusterMap: {
- for c in clusters {
- "\(strings.ToLower(c.name))": c
- }
-}
-
#Ingress: #WithOut & {
name: string
auth: #Auth
diff --git a/core/installer/app_configs/dodo_app.cue b/core/installer/app_configs/dodo_app.cue
index 963421e..608d629 100644
--- a/core/installer/app_configs/dodo_app.cue
+++ b/core/installer/app_configs/dodo_app.cue
@@ -35,6 +35,12 @@
for v in _mongodb {
for i, e in v.expose {
"port_mongodb_\(v.name)_\(i)": int @role(port)
+ if input.cluster != _|_ {
+ "port_mongodb_\(v.name)_\(i)_cluster": int @role(port)
+ if strings.ToLower(e.network) == "public" {
+ "port_mongodb_\(v.name)_\(i)_private": int @role(port)
+ }
+ }
}
}
for svc in service {
diff --git a/core/installer/canvas-app.cue b/core/installer/canvas-app.cue
index 89546c0..0f54b06 100644
--- a/core/installer/canvas-app.cue
+++ b/core/installer/canvas-app.cue
@@ -25,11 +25,19 @@
}
}],
"postgresql": [{
- "name": "pgg",
+ "name": "pg",
"size": "2Gi",
"expose": [{
"network": "public",
- "subdomain": "piopio"
+ "subdomain": "pg"
+ }]
+ }],
+ "mongodb": [{
+ "name": "moo",
+ "size": "2Gi",
+ "expose": [{
+ "network": "public",
+ "subdomain": "mo"
}]
}],
"cluster": "asdc"