<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      k8s~為服務添加ingress的實現

      ingress產生的原因

      ClusterIP的方式只能在集群內部訪問
      NodePort方式的話,測試環境使用還行,當有幾十上百的服務在集群中運行時,NodePort的端口管理是災難。
      LoadBalance方式受限于云平臺,且通常在云平臺部署ELB還需要額外的費用。
      所幸k8s還提供了一種集群維度暴露服務的方式,也就是ingress。ingress可以簡單理解為service的service,他通過獨立的ingress對象來制定請求轉發的規則,把請求路由到一個或多個service中。這樣就把服務與請求規則解耦了,可以從業務維度統一考慮業務的暴露,而不用為每個service單獨考慮,下面是一個簡單的ingress應用圖,實現了簡單的請求轉發

       ingress和ingress-controller

      ingress對象:
      指的是k8s中的一個api對象,一般用yaml配置。作用是定義請求如何轉發到service的規則,可以理解為配置模板。
      ingress-controller:
      具體實現反向代理及負載均衡的程序,對ingress定義的規則進行解析,根據配置的規則來實現請求轉發。
      簡單來說,ingress-controller才是負責具體轉發的組件,通過各種方式將它暴露在集群入口,外部對集群的請求流量會先到ingress-controller,而ingress對象是用來告訴ingress-controller該如何轉發請求,比如哪些域名哪些path要轉發到哪些服務等等。

      ingress-controller并不是k8s自帶的組件,實際上ingress-controller只是一個統稱,用戶可以選擇不同的ingress-controller實現,目前,由k8s維護的ingress-controller只有google云的GCE與ingress-nginx兩個,其他還有很多第三方維護的ingress-controller,具體可以參考官方文檔。但是不管哪一種ingress-controller,實現的機制都大同小異,只是在具體配置上有差異。一般來說,ingress-controller的形式都是一個pod,里面跑著daemon程序和反向代理程序。daemon負責不斷監控集群的變化,根據ingress對象生成配置并應用新配置到反向代理,比如nginx-ingress就是動態生成nginx配置,動態更新upstream,并在需要的時候reload程序應用新配置。為了方便,后面的例子都以k8s官方維護的nginx-ingress為例。

      為服務添加ingress的實現

      1 當我們為指定的項目添加ingress支持之后,它會在“負載均衡”標簽頁出現,并顯示出你的域名解析到的服務。

       

      2 我們的ingress是支持https的,所以需要為你的域名配置對應的證書,我們在配置文件里添加

       

       

      3 自動為ingress-controller里的配置文件添加nginx配置項,然后自動reload它,讓它生效

       

      當有新的ingress服務注冊之后,配置文件會發生變化

       

       4 你的服務對應的nginx是在自己服務的ymal里進行配置的,一般來說,微服務的網關層都應該建立 一個ingress-nginx來對外提供服務!

      下面說一下yaml的nginx部分的功能:
      1. 注明ingress的名稱
      2. 填寫之前建立的密文名稱(ingress https 證書)
      3. 填寫你的服務所在的namespace,不寫默認為default
      4. 填寫你要轉發的服務的域名
      5. 填寫你服務的名稱和pod的端口
       
      ymal代碼如下
      # 構建反射代理
      kind: Ingress
      apiVersion: extensions/v1beta1
      metadata:
        name: hello-world-ingress
        namespace: saas
        annotations:
          kubernetes.io/ingress.class: "nginx"
          nginx.ingress.kubernetes.io/use-regex: "true"
      spec:
        tls:
          - hosts:
              - www.abc.com
            secretName: saas-tls
        rules:
          - host: www.abc.com
            http:
              paths:
                - backend:
                    serviceName: hello-world
                    servicePort: 9001
      它在ingress-nginx里生成的完整配置如下
       ## start server www.abc.com
              server {
                      server_name www.abc.com ;
      
                      listen 80  ;
                      listen [::]:80  ;
                      listen 443  ssl http2 ;
                      listen [::]:443  ssl http2 ;
      
                      set $proxy_upstream_name "-";
      
                      # PEM sha: c24ba9e405ed77662c0fd7546a908ef45ca76066
                      ssl_certificate                         /etc/ingress-controller/ssl/default-fake-certificate.pem;
                      ssl_certificate_key                     /etc/ingress-controller/ssl/default-fake-certificate.pem;
      
                      ssl_certificate_by_lua_block {
                              certificate.call()
                      }
      
                      location ~* "^/" {
      
                              set $namespace      "saas";
                              set $ingress_name   "hello-world-ingress";
                              set $service_name   "hello-world";
                      set $service_port   "{0 9001 }";
                              set $location_path  "/";
      
                              rewrite_by_lua_block {
                                      lua_ingress.rewrite({
                                              force_ssl_redirect = true,
                                              use_port_in_redirects = false,
                                      })
                                      balancer.rewrite()
                                      plugins.run()
                              }
      
                              header_filter_by_lua_block {
      
                                      plugins.run()
                              }
                              body_filter_by_lua_block {
      
                              }
      
                              log_by_lua_block {
      
                                      balancer.log()
      
                                      monitor.call()
      
                                      plugins.run()
                              }
      
                              if ($scheme = https) {
                                      more_set_headers                        "Strict-Transport-Security: max-age=15724800; includeSubDomains";
                              }
      
                              port_in_redirect off;
      
                              set $balancer_ewma_score -1;
                              set $proxy_upstream_name    "saas-hello-world-9001";
                              set $proxy_host             $proxy_upstream_name;
                              set $pass_access_scheme $scheme;
                              set $pass_server_port $server_port;
                              set $best_http_host $http_host;
                              set $pass_port $pass_server_port;
      
                              set $proxy_alternative_upstream_name "";
      
                              client_max_body_size                    1m;
      
                              proxy_set_header Host                   $best_http_host;
      
                              # Pass the extracted client certificate to the backend
      
                              # Allow websocket connections
                              proxy_set_header                        Upgrade           $http_upgrade;
      
                              proxy_set_header                        Connection        $connection_upgrade;
      
                              proxy_set_header X-Request-ID           $req_id;
                              proxy_set_header X-Real-IP              $the_real_ip;
      
                              proxy_set_header X-Forwarded-For        $the_real_ip;
      
                              proxy_set_header X-Forwarded-Host       $best_http_host;
                              proxy_set_header X-Forwarded-Port       $pass_port;
                              proxy_set_header X-Forwarded-Proto      $pass_access_scheme;
      
                              proxy_set_header X-Original-URI         $request_uri;
      
                              proxy_set_header X-Scheme               $pass_access_scheme;
      
                              # Pass the original X-Forwarded-For
                              proxy_set_header X-Original-Forwarded-For $http_x_forwarded_for;
      
                              # mitigate HTTPoxy Vulnerability
                              # https://www.nginx.com/blog/mitigating-the-httpoxy-vulnerability-with-nginx/
                              proxy_set_header Proxy                  "";
      
                              # Custom headers to proxied server
      
                              proxy_connect_timeout                   5s;
                              proxy_send_timeout                      60s;
                              proxy_read_timeout                      60s;
      
                              proxy_buffering                         off;
                              proxy_buffer_size                       4k;
                              proxy_buffers                           4 4k;
                              proxy_request_buffering                 on;
                              proxy_http_version                      1.1;
      
                              proxy_cookie_domain                     off;
                              proxy_cookie_path                       off;
      
                              # In case of errors try the next upstream server before returning an error
                              proxy_next_upstream                     error timeout;
                              proxy_next_upstream_timeout             0;
                              proxy_next_upstream_tries               3;
      
                              proxy_pass http://upstream_balancer;
      
                              proxy_redirect                          off;
      
                      }
      
              }
              ## end server www.abc.com
      知識在于積累!
       


      posted @ 2020-01-19 09:08  張占嶺  閱讀(4100)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 内射干少妇亚洲69XXX| 蜜桃臀av在线一区二区| 亚洲国产精品日韩av专区| 亚洲日本VA中文字幕在线| 泸定县| 亚洲男人第一无码av网站| 天堂V亚洲国产V第一次| 国产国产午夜福利视频| 制服 丝袜 亚洲 中文 综合| 五月国产综合视频在线观看| 亚洲欧美精品一中文字幕| 国产日韩一区二区四季| 日韩免费码中文在线观看| 亚洲av一本二本三本| 无码精品国产VA在线观看DVD| 国产不卡一区二区在线| av日韩精品在线播放| 精品中文人妻在线不卡| 天堂va欧美ⅴa亚洲va在线| 野花在线观看免费观看高清| av中文字幕国产精品| 色综合天天综合网国产人| 国产不卡精品视频男人的天堂| 国产亚洲精品岁国产精品| 孕妇特级毛片ww无码内射| 狠狠综合久久av一区二| 久久国产精品老女人| 久久夜色国产噜噜亚洲av| 人妻系列中文字幕精品| 国产欧美亚洲精品a| 蜜芽久久人人超碰爱香蕉 | 无码一区二区三区久久精品| 色欲综合久久中文字幕网| 最近中文字幕国产精品| 国产亚洲精品久久777777| 国产又爽又黄又无遮挡的激情视频| 亚洲 日本 欧洲 欧美 视频| 国产偷窥熟女高潮精品视频| 中文字幕在线无码一区二区三区| 国产av亚洲精品ai换脸电影| 国产在线视频精品视频|