AppManager: Support exposing ports on public networks
Sets up [public ingress -> private ingress -> remote cluster] proxy chain
Change-Id: I6376a006b2692c31f3cb895bbfd6e373182e8824
diff --git a/core/installer/dodo_app_test.go b/core/installer/dodo_app_test.go
index eaad590..6c4df1f 100644
--- a/core/installer/dodo_app_test.go
+++ b/core/installer/dodo_app_test.go
@@ -213,7 +213,7 @@
t.Log(string(r.Raw))
}
-const exposeRemoteCluster = `
+const exposeRemoteClusterPrivateNetwork = `
{
"cluster": "remote",
"postgresql": [{
@@ -227,9 +227,9 @@
}
`
-func TestExposeRemoteCluster(t *testing.T) {
+func TestExposeRemoteClusterPrivateNetwork(t *testing.T) {
var buf bytes.Buffer
- if _, err := buf.WriteString(exposeRemoteCluster); err != nil {
+ if _, err := buf.WriteString(exposeRemoteClusterPrivateNetwork); err != nil {
t.Fatal(err)
}
clusters := []Cluster{{
@@ -270,3 +270,62 @@
}
t.Log(string(r.Raw))
}
+
+const exposeRemoteClusterPublicNetwork = `
+{
+ "cluster": "remote",
+ "postgresql": [{
+ "name": "db",
+ "size": "1Gi",
+ "expose": [{
+ "network": "Public",
+ "subdomain": "pg"
+ }]
+ }],
+}
+`
+
+func TestExposeRemoteClusterPublicNetwork(t *testing.T) {
+ var buf bytes.Buffer
+ if _, err := buf.WriteString(exposeRemoteClusterPublicNetwork); err != nil {
+ t.Fatal(err)
+ }
+ clusters := []Cluster{{
+ Name: "remote",
+ Kubeconfig: "<KUBECONFIG>",
+ IngressClassName: "<INGRESS_CLASS_NAME>",
+ }}
+ if err := json.NewEncoder(&buf).Encode(struct {
+ Clusters []Cluster `json:"clusters"`
+ }{
+ clusters,
+ }); err != nil {
+ t.Fatal(err)
+ }
+ app, err := NewDodoApp(buf.Bytes())
+ if err != nil {
+ for _, e := range errors.Errors(err) {
+ t.Log(e)
+ }
+ t.Fatal(err)
+ }
+ release := Release{
+ Namespace: "foo",
+ AppInstanceId: "foo-bar",
+ RepoAddr: "ssh://192.168.100.210:22/config",
+ AppDir: "/foo/bar",
+ }
+ keyGen := testKeyGen{}
+ r, err := app.Render(release, env, networks, clusters, map[string]any{
+ "managerAddr": "",
+ "appId": "",
+ "sshPrivateKey": "",
+ "port_postgresql_db_0": 1,
+ "port_postgresql_db_0_cluster": 2,
+ "port_postgresql_db_0_private": 3,
+ }, nil, keyGen)
+ if err != nil {
+ t.Fatal(err)
+ }
+ t.Log(string(r.Raw))
+}