Ingress: Improve port opening
Update nginx replica counts and rollout strategy.
What proxy-backend configmap changes and reload auto proxy nginx.
Make ingress optional.
Use <PREFIX>.<CLUSTER_NAME>.clusters.p.<DOMAIN> addresses for remote
cluster services.
Change-Id: Ideb146a8c0275822ee5cd28311c00a817f4202aa
diff --git a/core/installer/cluster.go b/core/installer/cluster.go
index ac7d970..a51435f 100644
--- a/core/installer/cluster.go
+++ b/core/installer/cluster.go
@@ -2,8 +2,6 @@
import (
"bytes"
- "crypto/sha256"
- "encoding/base64"
"encoding/json"
"fmt"
"io"
@@ -152,12 +150,9 @@
return "", err
}
defer w.Close()
- h := sha256.New()
- o := io.MultiWriter(w, h)
- if err := cfg.Render(o); err != nil {
+ if err := cfg.Render(w); err != nil {
return "", err
}
- hash := base64.StdEncoding.EncodeToString(h.Sum(nil))
nginxPath := filepath.Join(filepath.Dir(c.ConfigPath), "ingress-nginx.yaml")
nginx, err := func() (map[string]any, error) {
r, err := fs.Reader(nginxPath)
@@ -178,15 +173,6 @@
if err != nil {
return "", err
}
- cv := nginx["spec"].(map[string]any)["values"].(map[string]any)["controller"].(map[string]any)
- var annotations map[string]any
- if a, ok := cv["podAnnotations"]; ok {
- annotations = a.(map[string]any)
- } else {
- annotations = map[string]any{}
- cv["podAnnotations"] = annotations
- }
- annotations["dodo.cloud/hash"] = string(hash)
buf, err := yaml.Marshal(nginx)
if err != nil {
return "", err
@@ -229,12 +215,9 @@
return "", err
}
defer w.Close()
- h := sha256.New()
- o := io.MultiWriter(w, h)
- if err := cfg.Render(o); err != nil {
+ if err := cfg.Render(w); err != nil {
return "", err
}
- hash := base64.StdEncoding.EncodeToString(h.Sum(nil))
nginxPath := filepath.Join(filepath.Dir(c.ConfigPath), "ingress-nginx.yaml")
nginx, err := func() (map[string]any, error) {
r, err := fs.Reader(nginxPath)
@@ -255,15 +238,6 @@
if err != nil {
return "", err
}
- cv := nginx["spec"].(map[string]any)["values"].(map[string]any)["controller"].(map[string]any)
- var annotations map[string]any
- if a, ok := cv["podAnnotations"]; ok {
- annotations = a.(map[string]any)
- } else {
- annotations = map[string]any{}
- cv["podAnnotations"] = annotations
- }
- annotations["dodo.cloud/hash"] = string(hash)
buf, err := yaml.Marshal(nginx)
if err != nil {
return "", err
@@ -346,12 +320,9 @@
return "", err
}
defer w.Close()
- h := sha256.New()
- o := io.MultiWriter(w, h)
- if err := cfg.Render(o); err != nil {
+ if err := cfg.Render(w); err != nil {
return "", err
}
- hash := base64.StdEncoding.EncodeToString(h.Sum(nil))
nginxPath := filepath.Join(filepath.Dir(c.ConfigPath), "ingress-nginx.yaml")
nginx, err := func() (map[string]any, error) {
r, err := fs.Reader(nginxPath)
@@ -372,15 +343,6 @@
if err != nil {
return "", err
}
- cv := nginx["spec"].(map[string]any)["values"].(map[string]any)["controller"].(map[string]any)
- var annotations map[string]any
- if a, ok := cv["podAnnotations"]; ok {
- annotations = a.(map[string]any)
- } else {
- annotations = map[string]any{}
- cv["podAnnotations"] = annotations
- }
- annotations["dodo.cloud/hash"] = string(hash)
buf, err := yaml.Marshal(nginx)
if err != nil {
return "", err
@@ -420,12 +382,9 @@
return "", err
}
defer w.Close()
- h := sha256.New()
- o := io.MultiWriter(w, h)
- if err := cfg.Render(o); err != nil {
+ if err := cfg.Render(w); err != nil {
return "", err
}
- hash := base64.StdEncoding.EncodeToString(h.Sum(nil))
nginxPath := filepath.Join(filepath.Dir(c.ConfigPath), "ingress-nginx.yaml")
nginx, err := func() (map[string]any, error) {
r, err := fs.Reader(nginxPath)
@@ -446,15 +405,6 @@
if err != nil {
return "", err
}
- cv := nginx["spec"].(map[string]any)["values"].(map[string]any)["controller"].(map[string]any)
- var annotations map[string]any
- if a, ok := cv["podAnnotations"]; ok {
- annotations = a.(map[string]any)
- } else {
- annotations = map[string]any{}
- cv["podAnnotations"] = annotations
- }
- annotations["dodo.cloud/hash"] = string(hash)
buf, err := yaml.Marshal(nginx)
if err != nil {
return "", err
@@ -489,6 +439,7 @@
type NginxProxyConfig struct {
Namespace string
+ PID string
IngressPort int
Resolvers []net.IP
Ingress map[string]string
@@ -541,6 +492,9 @@
if items[0] == "namespace:" {
ret.Namespace = items[1]
}
+ } else if items[0] == "pid" {
+
+ ret.PID = items[1]
} else if items[0] == "http" {
insideHttp = true
} else if insideHttp && items[0] == "map" {
@@ -624,6 +578,9 @@
const nginxConfigTmpl = ` worker_processes 1;
worker_rlimit_nofile 8192;
+ {{- if .PID }}
+ pid {{ .PID }};
+ {{- end }}
events {
worker_connections 1024;
}
@@ -655,7 +612,6 @@
{{- range $port, $upstream := .UDP }}
server {
listen {{ $port }} udp;
- resolver 100.100.100.100;
proxy_pass {{ $upstream }};
}
{{- end }}