Просмотр исходного кода

Merge pull request #2055 from porter-dev/staging

AKS updates and ingress fix -> production
abelanger5 4 лет назад
Родитель
Сommit
24f8cfa05f

+ 12 - 0
api/server/handlers/infra/forms.go

@@ -812,6 +812,18 @@ tabs:
           value: West US 3
         - label: Norway East
           value: Norway East
+    - type: select
+      label: ⚙️ Application Machine Type
+      variable: app_machine_type
+      settings:
+        default: Standard_A2_v2
+        options:
+        - label: Standard A2
+          value: Standard_A2_v2
+        - label: Standard A4
+          value: Standard_A4_v2
+        - label: Standard D2
+          value: Standard_D2_v3
     - type: string-input
       label: 👤 Issuer Email
       required: true

+ 1 - 0
api/server/shared/config/env/envconfs.go

@@ -20,6 +20,7 @@ type ServerConf struct {
 	StaticFilePath       string        `env:"STATIC_FILE_PATH,default=/porter/static"`
 	CookieName           string        `env:"COOKIE_NAME,default=porter"`
 	CookieSecrets        []string      `env:"COOKIE_SECRETS,default=random_hash_key_;random_block_key"`
+	CookieInsecure       bool          `env:"COOKIE_INSECURE,default=false"`
 	TokenGeneratorSecret string        `env:"TOKEN_GENERATOR_SECRET,default=secret"`
 	TimeoutRead          time.Duration `env:"SERVER_TIMEOUT_READ,default=5s"`
 	TimeoutWrite         time.Duration `env:"SERVER_TIMEOUT_WRITE,default=10s"`

+ 1 - 0
api/server/shared/config/loader/loader.go

@@ -91,6 +91,7 @@ func (e *EnvConfigLoader) LoadConfig() (res *config.Config, err error) {
 		&sessionstore.NewStoreOpts{
 			SessionRepository: res.Repo.Session(),
 			CookieSecrets:     envConf.ServerConf.CookieSecrets,
+			Insecure:          envConf.ServerConf.CookieInsecure,
 		},
 	)
 

+ 3 - 1
internal/auth/sessionstore/sessionstore.go

@@ -111,6 +111,8 @@ func (store *PGStore) save(session *sessions.Session) error {
 type NewStoreOpts struct {
 	SessionRepository repository.SessionRepository
 	CookieSecrets     []string
+
+	Insecure bool
 }
 
 // NewStore takes an initialized db and session key pairs to create a session-store in postgres db.
@@ -126,7 +128,7 @@ func NewStore(opts *NewStoreOpts) (*PGStore, error) {
 		Options: &sessions.Options{
 			Path:     "/",
 			MaxAge:   86400 * 30,
-			Secure:   true,
+			Secure:   !opts.Insecure,
 			HttpOnly: true,
 			SameSite: http.SameSiteLaxMode,
 		},

+ 30 - 7
internal/kubernetes/prometheus/metrics.go

@@ -54,21 +54,44 @@ type SimpleIngress struct {
 // GetIngressesWithNGINXAnnotation gets an array of names for all ingresses controlled by
 // NGINX
 func GetIngressesWithNGINXAnnotation(clientset kubernetes.Interface) ([]SimpleIngress, error) {
-	ingressList, err := clientset.NetworkingV1beta1().Ingresses("").List(context.TODO(), metav1.ListOptions{})
+	res := make([]SimpleIngress, 0)
+	foundMap := make(map[string]bool)
 
-	if err != nil {
-		return nil, err
+	v1beta1IngressList, v1beta1Err := clientset.NetworkingV1beta1().Ingresses("").List(context.TODO(), metav1.ListOptions{})
+	v1IngressList, v1Err := clientset.NetworkingV1().Ingresses("").List(context.TODO(), metav1.ListOptions{})
+
+	if v1beta1Err != nil && v1Err != nil {
+		return nil, fmt.Errorf("List ingresses error: %s, %s", v1beta1Err.Error(), v1Err.Error())
 	}
 
-	res := make([]SimpleIngress, 0)
+	if v1beta1Err == nil && len(v1beta1IngressList.Items) > 0 {
+		for _, ingress := range v1beta1IngressList.Items {
+			ingressAnn, found := ingress.ObjectMeta.Annotations["kubernetes.io/ingress.class"]
+			uid := fmt.Sprintf("%s/%s", ingress.ObjectMeta.Namespace, ingress.ObjectMeta.Name)
+
+			if _, exists := foundMap[uid]; !exists && ((found && ingressAnn == "nginx") || *ingress.Spec.IngressClassName == "nginx") {
+				res = append(res, SimpleIngress{
+					Name:      ingress.ObjectMeta.Name,
+					Namespace: ingress.ObjectMeta.Namespace,
+				})
+
+				foundMap[uid] = true
+			}
+		}
+	}
 
-	for _, ingress := range ingressList.Items {
-		if ingressAnn, found := ingress.ObjectMeta.Annotations["kubernetes.io/ingress.class"]; found {
-			if ingressAnn == "nginx" {
+	if v1Err == nil && len(v1IngressList.Items) > 0 {
+		for _, ingress := range v1IngressList.Items {
+			ingressAnn, found := ingress.ObjectMeta.Annotations["kubernetes.io/ingress.class"]
+			uid := fmt.Sprintf("%s/%s", ingress.ObjectMeta.Namespace, ingress.ObjectMeta.Name)
+
+			if _, exists := foundMap[uid]; !exists && ((found && ingressAnn == "nginx") || *ingress.Spec.IngressClassName == "nginx") {
 				res = append(res, SimpleIngress{
 					Name:      ingress.ObjectMeta.Name,
 					Namespace: ingress.ObjectMeta.Namespace,
 				})
+
+				foundMap[uid] = true
 			}
 		}
 	}