AppManager: Support exposing cross-cluster ports
Change-Id: I4bdb3573209935f6777656ec2f3481e79d84a9c9
diff --git a/core/installer/cluster_test.go b/core/installer/cluster_test.go
index e315202..b2ecd99 100644
--- a/core/installer/cluster_test.go
+++ b/core/installer/cluster_test.go
@@ -7,7 +7,14 @@
)
func TestParseNginxProxyConfig(t *testing.T) {
- cfg, err := ParseNginxProxyConfig(strings.NewReader(`nginx.conf: |
+ cfg, err := ParseNginxProxyConfig(strings.NewReader(`
+apiVersion: v1
+kind: ConfigMap
+metadata:
+ name: proxy-backend-config
+ namespace: foo
+data:
+nginx.conf: |
# user www www;
worker_processes 1;
error_log /dev/null crit;
@@ -33,33 +40,66 @@
}
}
}
+stream {
+ server {
+ listen 9091;
+ proxy_pass foo:1;
+ }
+ server {
+ listen 9092 udp;
+ proxy_pass bar:2;
+ }
+ server {
+ listen 9093;
+ proxy_pass dev:3;
+ }
+}
`))
if err != nil {
t.Fatal(err)
}
- if cfg.Port != 9090 {
- t.Errorf("invalid port: expected 9090, got %d", cfg.Port)
+ if cfg.Namespace != "foo" {
+ t.Errorf("invalid namespace: expeced foo, got %s", cfg.Namespace)
+ }
+ if cfg.IngressPort != 9090 {
+ t.Errorf("invalid port: expected 9090, got %d", cfg.IngressPort)
}
if len(cfg.Resolvers) != 2 ||
!cfg.Resolvers[0].Equal(net.ParseIP("1.1.1.1")) ||
!cfg.Resolvers[1].Equal(net.ParseIP("2.2.2.2")) {
t.Errorf("invalid resolvers: expected [1.1.1.1 2.2.2.2], got %s", cfg.Resolvers)
}
- if len(cfg.Proxies) != 2 ||
- cfg.Proxies["a"] != "A" ||
- cfg.Proxies["b"] != "B" {
- t.Errorf("invalid proxies: expected map[a:A, b:B], got %s", cfg.Proxies)
+ if len(cfg.Ingress) != 2 ||
+ cfg.Ingress["a"] != "A" ||
+ cfg.Ingress["b"] != "B" {
+ t.Errorf("invalid ingress proxies: expected map[a:A, b:B], got %s", cfg.Ingress)
+ }
+ if len(cfg.TCP) != 2 ||
+ cfg.TCP[9091] != "foo:1" ||
+ cfg.TCP[9093] != "dev:3" {
+ t.Errorf("invalid TCP proxies: expected map[9091:foo:1, 9093:dev:3], got %v", cfg.TCP)
+ }
+ if len(cfg.UDP) != 1 ||
+ cfg.UDP[9092] != "bar:2" {
+ t.Errorf("invalid UDP proxies: expected map[9092:bar:2], got %v", cfg.UDP)
}
}
func TestRenderNginxProxyConfig(t *testing.T) {
cfg := NginxProxyConfig{
- Port: 8080,
- Resolvers: []net.IP{net.ParseIP("1.1.1.1"), net.ParseIP("2.2.2.2")},
- Proxies: map[string]string{
+ IngressPort: 8080,
+ Resolvers: []net.IP{net.ParseIP("1.1.1.1"), net.ParseIP("2.2.2.2")},
+ Ingress: map[string]string{
"a": "A",
"b": "B",
},
+ TCP: map[int]string{
+ 1: "foo:1",
+ 3: "dev:3",
+ },
+ UDP: map[int]string{
+ 2: "bar:2",
+ },
PreConf: []string{"line1", "line2"},
}
var buf strings.Builder