Kubernetes с Istio Ingress не работает на стандартных HTTP-портах 443/80

Преобразовать формы в JSON LIKE A BOSS

Источник тока находится на GitHub и bower.

$ bower install jquery- serialize-object


Следующий код теперь устарел.

Следующий код может работать со всеми типами имен ввода; и обрабатывать их так, как вы ожидали.

Например:









// output
{
  "honey":{
    "badger":"a"
  },
  "wombat":["b"],
  "hello":{
    "panda":["c"]
  },
  "animals":[
    {
      "name":"d",
      "breed":"e"
    }
  ],
  "crazy":[
    null,
    [
      {"wonky":"f"}
    ]
  ],
  "dream":{
    "as":{
      "vividly":{
        "as":{
          "you":{
            "can":"g"
          }
        }
      }
    }
  }
}

Использование

$('#my-form').serializeObject();

Колдовство (JavaScript)

(function($){
    $.fn.serializeObject = function(){

        var self = this,
            json = {},
            push_counters = {},
            patterns = {
                "validate": /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\])*$/,
                "key":      /[a-zA-Z0-9_]+|(?=\[\])/g,
                "push":     /^$/,
                "fixed":    /^\d+$/,
                "named":    /^[a-zA-Z0-9_]+$/
            };


        this.build = function(base, key, value){
            base[key] = value;
            return base;
        };

        this.push_counter = function(key){
            if(push_counters[key] === undefined){
                push_counters[key] = 0;
            }
            return push_counters[key]++;
        };

        $.each($(this).serializeArray(), function(){

            // skip invalid keys
            if(!patterns.validate.test(this.name)){
                return;
            }

            var k,
                keys = this.name.match(patterns.key),
                merge = this.value,
                reverse_key = this.name;

            while((k = keys.pop()) !== undefined){

                // adjust reverse_key
                reverse_key = reverse_key.replace(new RegExp("\\[" + k + "\\]$"), '');

                // push
                if(k.match(patterns.push)){
                    merge = self.build([], self.push_counter(reverse_key), merge);
                }

                // fixed
                else if(k.match(patterns.fixed)){
                    merge = self.build([], k, merge);
                }

                // named
                else if(k.match(patterns.named)){
                    merge = self.build({}, k, merge);
                }
            }

            json = $.extend(true, json, merge);
        });

        return json;
    };
})(jQuery);

1
задан leeman24 13 July 2018 в 19:43
поделиться

1 ответ

Если для работы на 443/80 требуется маршрутизация вашего приложения, ваш кластер Kubernetes должен иметь развернутый внешний балансировщик нагрузки. Если его нет, трафик будет перенаправлен на порт узла входа.

См. - https://istio.io/docs/tasks/traffic-management/ingress/#determining-the-ingress-ip-and-ports (Определение входной IP и порты):

"Если установлено значение EXTERNAL-IP, в вашей среде есть внешний балансировщик нагрузки, который вы можете использовать для входного шлюза. Если значение EXTERNAL-IP равно ( или постоянно), ваша среда не обеспечивает внешний балансировщик нагрузки для входного шлюза. В этом случае вы можете получить доступ к шлюзу с помощью порта узла службы. "

Пример для моего голого экрана, Металлический экземпляр без внешнего балансировщика нагрузки:

[admin@master1 ~]$ kubectl get svc -n istio-system | grep istio-ingress
istio-ingress              LoadBalancer   10.114.107.196   <pending>     80:32400/TCP,443:31564/TCP                                            5d
istio-ingressgateway       LoadBalancer   10.99.1.148      <pending>     80:31380/TCP,443:31390/TCP,31400:31400/TCP                            5d

Если вы развертываете веб-провайдера облачных вычислений, таких как IBM Bluemix (вероятно, AWS / Azure / etc.), у вас уже должна быть одна конфигурация. Если ваша конфигурация находится на голом, у вас, вероятно, нет настроенного балансира нагрузки.

Пример моего экземпляра Bluemix с внешним балансировщиком нагрузки:

λ kubectl get svc -n istio-system | grep istio-ingress
istio-ingress              LoadBalancer   172.21.26.25     123.45.67.195   80:32000/TCP,443:31694/TCP                                            6h
istio-ingressgateway       LoadBalancer   172.21.139.142   123.45.67.196   80:31380/TCP,443:31390/TCP,31400:31400/TCP                            6h

У меня есть еще не вернулся, чтобы развернуть балансировщик нагрузки на голый металл, поэтому хотелось бы услышать, есть ли у кого-нибудь. Я кратко посмотрел на Металл, но не потратил много времени на это.

1
ответ дан leeman24 17 August 2018 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: