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

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

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

      Kubernetes-Ingress

      1. 簡介

      Ingress 是對集群中服務的外部訪問進行管理的 API 對象,典型的訪問方式是 HTTP。

      Ingress 可以提供負載均衡、SSL 終結和基于名稱的虛擬托管。

      Ingress 公開了從集群外部到集群內Service的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 資源上定義的規則控制。

      下面是一個將所有流量都發送到同一 Service 的簡單 Ingress 示例:

      可以將 Ingress 配置為服務提供外部可訪問的 URL、負載均衡流量、終止 SSL/TLS,以及提供基于名稱的虛擬主機等能力。 Ingress 控制器通常負責通過負載均衡器來實現 Ingress,盡管它也可以配置邊緣路由器或其他前端來幫助處理流量。

      Ingress 不會公開任意端口或協議。 將 HTTP 和 HTTPS 以外的服務公開到 Internet 時,通常使用 Service.Type=NodePortService.Type=LoadBalancer 類型的服務。

      2. 直接部署 ingress-nginx

      直接部署比較簡單

      1. 直接去拉github的部署文件就可以了,拉取失敗的可以看這里 deploy.yaml

      2. 因為部署文件中默認的鏡像需要代理才行,所以需要修改一下鏡像地址

      # 在線拉取部署文件
      $ wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/baremetal/deploy.yaml
      
      # 修改鏡像 
      # 將Deployment資源默認的鏡像地址改為 
      # registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/ingress-nginx-controller:v0.46.0
      $ sed -i 's#k8s.gcr.io/ingress-nginx/controller:v0.46.0@sha256:52f0058bed0a17ab0fb35628ba97e8d52b5d32299fbc03cc0f6c7b9ff036b61a#registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/ingress-nginx-controller:v0.46.0#g' deploy.yaml
      

      創建資源

      $ kubectl create -f deploy.yaml
      # 輸出內容如下
      namespace/ingress-nginx created
      serviceaccount/ingress-nginx created
      configmap/ingress-nginx-controller created
      clusterrole.rbac.authorization.k8s.io/ingress-nginx created
      clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
      role.rbac.authorization.k8s.io/ingress-nginx created
      rolebinding.rbac.authorization.k8s.io/ingress-nginx created
      service/ingress-nginx-controller-admission created
      service/ingress-nginx-controller created
      deployment.apps/ingress-nginx-controller created
      validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
      serviceaccount/ingress-nginx-admission created
      clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
      clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
      role.rbac.authorization.k8s.io/ingress-nginx-admission created
      rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
      job.batch/ingress-nginx-admission-create created
      job.batch/ingress-nginx-admission-patch created
      

      2.1 檢查安裝

      $ kubectl get po,svc -n ingress-nginx
      

      看到如下信息說明ingress-nginx已部署成功。so easy ~

      Completed 狀態的是正常的,可以忽略。

      默認的svc類型為NodePort類型

      通過瀏覽器測試訪問一下ingress

      因為此時還沒有后端服務,所以返回503

      2.2 創建應用

      創建一個deploy和service,serviceName=nginx-demoservicePort=8000

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          app: nginx-demo
        name: nginx-demo
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: nginx-demo
        template:
          metadata:
            labels:
              app: nginx-demo
          spec:
            containers:
            - image: nginx
              imagePullPolicy: IfNotPresent
              name: nginx
      ---
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          app: nginx-demo
        name: nginx-demo
      spec:
        selector:
          app: nginx-demo
        ports:
        - port: 8000
          protocol: TCP
          targetPort: 80
      

      2.3 創建ingress

      創建一個ingress,并指定host=demo.zhangtieniu.com,也就是只路由domain為demo.zhangtieniu.com的請求

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: ingress-nginx-demo
      spec:
        ingressClassName: nginx
        rules:
        - host: "demo.zhangtieniu.com"
          http:
            paths:
            - pathType: Prefix
              path: "/"
              backend:
                service:
                  # svc name
                  name: nginx-demo
                  port:
                    # svc port
                    number: 8000
      

      2.4 添加 hosts

      hosts文件中添加ip 地址信息

      因為serviceType=NodePort所以ip配置任意節點的都可以

      # local k8s domain
      192.168.0.201   hello.zhangtieniu.com
      192.168.0.201   demo.zhangtieniu.com
      

      2.6 訪問應用

      我們先測試下使用ip或者其他域名訪問

      在瀏覽器中訪問 192.168.0.201:30759

      訪問hello.zhangtieniu.com:30759

      最后 我們使用ingress中配置的host 進行訪問 demo.zhangtieniu.com:30759

      3. 優化配置

      2.0 中部署的ingress-nginx有個問題:ingress-nginx 默認的端口是隨機的(更多的時候我們更希望是使用指定的端口)

      這里我們將默認的端口設置為http:80 https:443

      一般有兩種設置方式

      1. 使用DaemonSet + hostNetwork

        • 將ingress-nginx 中的Deployment替換成DaemonSet
        • 將ingress-nginx中的Service刪除
        • 開啟DaemonSet的hostNetwork屬性并設置默認的端口為80和443

        這樣就實現了每個節點都開啟了80和443端口并且可以路由到 Ingress-nginx 服務上

      2. 指定 ingress-nginx 中 Service 的 NodePort 端口

        這樣做有個問題就是k8s默認可分配的端口區間是30000-32767,所以想開啟80 和443 端口就需要修改kube-apiserver的配置

      3.1 使用DaemonSet + hostNetwork

      待完善

      3.2 指定 ingress-nginx 中 Service 的 NodePort 端口

      1. 修改kube-apiserver配置

        $ vi /etc/kubernetes/manifests/kube-apiserver.yaml
        

        在spec.command 下添加 service-node-port-range 配置(有就修改/沒有就新增)

      2. 應用配置

        $ kubectl apply -f /etc/kubernetes/manifests/kube-apiserver.yaml
        
      3. 修改 ingress-nginx Service nodePort

        # 直接修改svc信息
        $ kubectl edit svc -n ingress-nginx
        

      3.3 訪問應用

      去掉之前的端口號,直接訪問應用,說明配置修改成功

      4. 匹配請求

      4.1 路徑匹配

      Ingress 中的每個路徑都需要有對應的路徑類型(Path Type)。未明確設置 pathType 的路徑無法通過合法性檢查。當前支持的路徑類型有三種:

      • ImplementationSpecific:對于這種路徑類型,匹配方法取決于 IngressClass。 具體實現可以將其作為單獨的 pathType 處理或者與 PrefixExact 類型作相同處理。

      • Exact:精確匹配 URL 路徑,且區分大小寫。

      • Prefix:基于以 / 分隔的 URL 路徑前綴匹配。匹配區分大小寫,并且對路徑中的元素逐個完成。 路徑元素指的是由 / 分隔符分隔的路徑中的標簽列表。 如果每個 p 都是請求路徑 p 的元素前綴,則請求與路徑 p 匹配。

        說明: 如果路徑的最后一個元素是請求路徑中最后一個元素的子字符串,則不會匹配 (例如:/foo/bar 匹配 /foo/bar/baz, 但不匹配 /foo/barbaz)。

      事例:

      類型 路徑 請求路徑 匹配與否?
      Prefix / (所有路徑)
      Exact /foo /foo
      Exact /foo /bar
      Exact /foo /foo/
      Exact /foo/ /foo
      Prefix /foo /foo, /foo/
      Prefix /foo/ /foo, /foo/
      Prefix /aaa/bb /aaa/bbb
      Prefix /aaa/bbb /aaa/bbb
      Prefix /aaa/bbb/ /aaa/bbb 是,忽略尾部斜線
      Prefix /aaa/bbb /aaa/bbb/ 是,匹配尾部斜線
      Prefix /aaa/bbb /aaa/bbb/ccc 是,匹配子路徑
      Prefix /aaa/bbb /aaa/bbbxyz 否,字符串前綴不匹配
      Prefix /, /aaa /aaa/ccc 是,匹配 /aaa 前綴
      Prefix /, /aaa, /aaa/bbb /aaa/bbb 是,匹配 /aaa/bbb 前綴
      Prefix /, /aaa, /aaa/bbb /ccc 是,匹配 / 前綴
      Prefix /aaa /ccc 否,使用默認后端
      混合 /foo (Prefix), /foo (Exact) /foo 是,優選 Exact 類型

      多重匹配

      在某些情況下,Ingress 中的多條路徑會匹配同一個請求。 這種情況下最長的匹配路徑優先。 如果仍然有兩條同等的匹配路徑,則精確路徑類型優先于前綴路徑類型。

      4.2 主機名通配符

      主機名可以是精確匹配(例如“foo.bar.com”)或者使用通配符來匹配 (例如“*.foo.com”)。 精確匹配要求 HTTP host 頭部字段與 host 字段值完全匹配。 通配符匹配則要求 HTTP host 頭部字段與通配符規則中的后綴部分相同。

      主機 host 頭部 匹配與否?
      *.foo.com bar.foo.com 基于相同的后綴匹配
      *.foo.com baz.bar.foo.com 不匹配,通配符僅覆蓋了一個 DNS 標簽
      *.foo.com foo.com 不匹配,通配符僅覆蓋了一個 DNS 標簽

      5. 示例配置

      5.1 簡單扇出

      一個扇出(fanout)配置根據請求的 HTTP URI 將來自同一 IP 地址的流量路由到多個 Service。 Ingress 允許你將負載均衡器的數量降至最低。例如,這樣的設置:

      將需要一個如下所示的 Ingress:

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: simple-fanout-example
      spec:
        rules:
        - host: foo.bar.com
          http:
            paths:
            - path: /foo
              pathType: Prefix
              backend:
                service:
                  name: service1
                  port:
                    number: 4200
            - path: /bar
              pathType: Prefix
              backend:
                service:
                  name: service2
                  port:
                    number: 8080
      

      5.2 基于名稱的虛擬托管

      基于名稱的虛擬主機支持將針對多個主機名的 HTTP 流量路由到同一 IP 地址上。

      以下 Ingress 讓后臺負載均衡器基于 host 頭部字段 來路由請求。

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: name-virtual-host-ingress
      spec:
        rules:
        - host: foo.bar.com
          http:
            paths:
            - pathType: Prefix
              path: "/"
              backend:
                service:
                  name: service1
                  port:
                    number: 80
        - host: bar.foo.com
          http:
            paths:
            - pathType: Prefix
              path: "/"
              backend:
                service:
                  name: service2
                  port:
                    number: 80
      

      如果你創建的 Ingress 資源沒有在 rules 中定義的任何 hosts,則可以匹配指向 Ingress 控制器 IP 地址的任何網絡流量,而無需基于名稱的虛擬主機。

      例如,以下 Ingress 會將針對 first.bar.com 的請求流量路由到 service1, 將針對 second.bar.com 的請求流量路由到 service2, 而針對該 IP 地址的、沒有在請求中定義主機名的請求流量會被路由(即,不提供請求標頭) 到 service3

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: name-virtual-host-ingress-no-third-host
      spec:
        rules:
        - host: first.bar.com
          http:
            paths:
            - pathType: Prefix
              path: "/"
              backend:
                service:
                  name: service1
                  port:
                    number: 80
        - host: second.bar.com
          http:
            paths:
            - pathType: Prefix
              path: "/"
              backend:
                service:
                  name: service2
                  port:
                    number: 80
        - http:
            paths:
            - pathType: Prefix
              path: "/"
              backend:
                service:
                  name: service3
                  port:
                    number: 80
      

      6. 給 ingress-nginx 配置 HTTPS 訪問

      創建自簽證書文件

      $ openssl req -x509 -nodes -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginx/O=nginx"
      

      執行后會生成兩個文件tls.crt tls.key

      創建 secret

      $ kubectl create secret tls tls-secret --key tls.key --cert tls.crt
      

      修改 ingrss文件

      apiVersion: networking.k8s.io/v1
      kind: Ingress
      metadata:
        name: ingress-nginx-demo
      spec:
        ingressClassName: nginx
        tls: # 新增
        - hosts: # 新增
          - demo.zhangtiuniu.com # 新增
          secretName: tls-secret # 新增
        rules:
        - host: "demo.zhangtieniu.com"
          http:
            paths:
            - pathType: Prefix
              path: "/"
              backend:
                service:
                  name: nginx-demo
                  port:
                    number: 8000
      

      修改完重新apply下

      $ kubectl apply -f ing-test.yaml
      

      測試訪問

      資源文件

      https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v0.47.0/deploy/static/provider/baremetal/deploy.yaml

      鏡像地址已修改,可以直接安裝使用

      apiVersion: v1
      kind: Namespace
      metadata:
        name: ingress-nginx
        labels:
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
      
      ---
      # Source: ingress-nginx/templates/controller-serviceaccount.yaml
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: controller
        name: ingress-nginx
        namespace: ingress-nginx
      automountServiceAccountToken: true
      ---
      # Source: ingress-nginx/templates/controller-configmap.yaml
      apiVersion: v1
      kind: ConfigMap
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: controller
        name: ingress-nginx-controller
        namespace: ingress-nginx
      data:
      ---
      # Source: ingress-nginx/templates/clusterrole.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
        name: ingress-nginx
      rules:
        - apiGroups:
            - ''
          resources:
            - configmaps
            - endpoints
            - nodes
            - pods
            - secrets
          verbs:
            - list
            - watch
        - apiGroups:
            - ''
          resources:
            - nodes
          verbs:
            - get
        - apiGroups:
            - ''
          resources:
            - services
          verbs:
            - get
            - list
            - watch
        - apiGroups:
            - extensions
            - networking.k8s.io   # k8s 1.14+
          resources:
            - ingresses
          verbs:
            - get
            - list
            - watch
        - apiGroups:
            - ''
          resources:
            - events
          verbs:
            - create
            - patch
        - apiGroups:
            - extensions
            - networking.k8s.io   # k8s 1.14+
          resources:
            - ingresses/status
          verbs:
            - update
        - apiGroups:
            - networking.k8s.io   # k8s 1.14+
          resources:
            - ingressclasses
          verbs:
            - get
            - list
            - watch
      ---
      # Source: ingress-nginx/templates/clusterrolebinding.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
        name: ingress-nginx
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: ingress-nginx
      subjects:
        - kind: ServiceAccount
          name: ingress-nginx
          namespace: ingress-nginx
      ---
      # Source: ingress-nginx/templates/controller-role.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: controller
        name: ingress-nginx
        namespace: ingress-nginx
      rules:
        - apiGroups:
            - ''
          resources:
            - namespaces
          verbs:
            - get
        - apiGroups:
            - ''
          resources:
            - configmaps
            - pods
            - secrets
            - endpoints
          verbs:
            - get
            - list
            - watch
        - apiGroups:
            - ''
          resources:
            - services
          verbs:
            - get
            - list
            - watch
        - apiGroups:
            - extensions
            - networking.k8s.io   # k8s 1.14+
          resources:
            - ingresses
          verbs:
            - get
            - list
            - watch
        - apiGroups:
            - extensions
            - networking.k8s.io   # k8s 1.14+
          resources:
            - ingresses/status
          verbs:
            - update
        - apiGroups:
            - networking.k8s.io   # k8s 1.14+
          resources:
            - ingressclasses
          verbs:
            - get
            - list
            - watch
        - apiGroups:
            - ''
          resources:
            - configmaps
          resourceNames:
            - ingress-controller-leader-nginx
          verbs:
            - get
            - update
        - apiGroups:
            - ''
          resources:
            - configmaps
          verbs:
            - create
        - apiGroups:
            - ''
          resources:
            - events
          verbs:
            - create
            - patch
      ---
      # Source: ingress-nginx/templates/controller-rolebinding.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: controller
        name: ingress-nginx
        namespace: ingress-nginx
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: ingress-nginx
      subjects:
        - kind: ServiceAccount
          name: ingress-nginx
          namespace: ingress-nginx
      ---
      # Source: ingress-nginx/templates/controller-service-webhook.yaml
      apiVersion: v1
      kind: Service
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: controller
        name: ingress-nginx-controller-admission
        namespace: ingress-nginx
      spec:
        type: ClusterIP
        ports:
          - name: https-webhook
            port: 443
            targetPort: webhook
        selector:
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/component: controller
      ---
      # Source: ingress-nginx/templates/controller-service.yaml
      apiVersion: v1
      kind: Service
      metadata:
        annotations:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: controller
        name: ingress-nginx-controller
        namespace: ingress-nginx
      spec:
        type: NodePort
        ports:
          - name: http
            port: 80
            protocol: TCP
            targetPort: http
          - name: https
            port: 443
            protocol: TCP
            targetPort: https
        selector:
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/component: controller
      ---
      # Source: ingress-nginx/templates/controller-deployment.yaml
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: controller
        name: ingress-nginx-controller
        namespace: ingress-nginx
      spec:
        selector:
          matchLabels:
            app.kubernetes.io/name: ingress-nginx
            app.kubernetes.io/instance: ingress-nginx
            app.kubernetes.io/component: controller
        revisionHistoryLimit: 10
        minReadySeconds: 0
        template:
          metadata:
            labels:
              app.kubernetes.io/name: ingress-nginx
              app.kubernetes.io/instance: ingress-nginx
              app.kubernetes.io/component: controller
          spec:
            dnsPolicy: ClusterFirst
            containers:
              - name: controller
                image: registry.cn-hangzhou.aliyuncs.com/lfy_k8s_images/ingress-nginx-controller:v0.46.0
                imagePullPolicy: IfNotPresent
                lifecycle:
                  preStop:
                    exec:
                      command:
                        - /wait-shutdown
                args:
                  - /nginx-ingress-controller
                  - --election-id=ingress-controller-leader
                  - --ingress-class=nginx
                  - --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
                  - --validating-webhook=:8443
                  - --validating-webhook-certificate=/usr/local/certificates/cert
                  - --validating-webhook-key=/usr/local/certificates/key
                securityContext:
                  capabilities:
                    drop:
                      - ALL
                    add:
                      - NET_BIND_SERVICE
                  runAsUser: 101
                  allowPrivilegeEscalation: true
                env:
                  - name: POD_NAME
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.name
                  - name: POD_NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
                  - name: LD_PRELOAD
                    value: /usr/local/lib/libmimalloc.so
                livenessProbe:
                  failureThreshold: 5
                  httpGet:
                    path: /healthz
                    port: 10254
                    scheme: HTTP
                  initialDelaySeconds: 10
                  periodSeconds: 10
                  successThreshold: 1
                  timeoutSeconds: 1
                readinessProbe:
                  failureThreshold: 3
                  httpGet:
                    path: /healthz
                    port: 10254
                    scheme: HTTP
                  initialDelaySeconds: 10
                  periodSeconds: 10
                  successThreshold: 1
                  timeoutSeconds: 1
                ports:
                  - name: http
                    containerPort: 80
                    protocol: TCP
                  - name: https
                    containerPort: 443
                    protocol: TCP
                  - name: webhook
                    containerPort: 8443
                    protocol: TCP
                volumeMounts:
                  - name: webhook-cert
                    mountPath: /usr/local/certificates/
                    readOnly: true
                resources:
                  requests:
                    cpu: 100m
                    memory: 90Mi
            nodeSelector:
              kubernetes.io/os: linux
            serviceAccountName: ingress-nginx
            terminationGracePeriodSeconds: 300
            volumes:
              - name: webhook-cert
                secret:
                  secretName: ingress-nginx-admission
      ---
      # Source: ingress-nginx/templates/admission-webhooks/validating-webhook.yaml
      # before changing this value, check the required kubernetes version
      # https://kubernetes.io/docs/reference/access-authn-authz/extensible-admission-controllers/#prerequisites
      apiVersion: admissionregistration.k8s.io/v1
      kind: ValidatingWebhookConfiguration
      metadata:
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: admission-webhook
        name: ingress-nginx-admission
      webhooks:
        - name: validate.nginx.ingress.kubernetes.io
          matchPolicy: Equivalent
          rules:
            - apiGroups:
                - networking.k8s.io
              apiVersions:
                - v1beta1
              operations:
                - CREATE
                - UPDATE
              resources:
                - ingresses
          failurePolicy: Fail
          sideEffects: None
          admissionReviewVersions:
            - v1
            - v1beta1
          clientConfig:
            service:
              namespace: ingress-nginx
              name: ingress-nginx-controller-admission
              path: /networking/v1beta1/ingresses
      ---
      # Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: ingress-nginx-admission
        annotations:
          helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
          helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: admission-webhook
        namespace: ingress-nginx
      ---
      # Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrole.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: ingress-nginx-admission
        annotations:
          helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
          helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: admission-webhook
      rules:
        - apiGroups:
            - admissionregistration.k8s.io
          resources:
            - validatingwebhookconfigurations
          verbs:
            - get
            - update
      ---
      # Source: ingress-nginx/templates/admission-webhooks/job-patch/clusterrolebinding.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: ingress-nginx-admission
        annotations:
          helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
          helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: admission-webhook
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: ingress-nginx-admission
      subjects:
        - kind: ServiceAccount
          name: ingress-nginx-admission
          namespace: ingress-nginx
      ---
      # Source: ingress-nginx/templates/admission-webhooks/job-patch/role.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: Role
      metadata:
        name: ingress-nginx-admission
        annotations:
          helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
          helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: admission-webhook
        namespace: ingress-nginx
      rules:
        - apiGroups:
            - ''
          resources:
            - secrets
          verbs:
            - get
            - create
      ---
      # Source: ingress-nginx/templates/admission-webhooks/job-patch/rolebinding.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: RoleBinding
      metadata:
        name: ingress-nginx-admission
        annotations:
          helm.sh/hook: pre-install,pre-upgrade,post-install,post-upgrade
          helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: admission-webhook
        namespace: ingress-nginx
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: Role
        name: ingress-nginx-admission
      subjects:
        - kind: ServiceAccount
          name: ingress-nginx-admission
          namespace: ingress-nginx
      ---
      # Source: ingress-nginx/templates/admission-webhooks/job-patch/job-createSecret.yaml
      apiVersion: batch/v1
      kind: Job
      metadata:
        name: ingress-nginx-admission-create
        annotations:
          helm.sh/hook: pre-install,pre-upgrade
          helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: admission-webhook
        namespace: ingress-nginx
      spec:
        template:
          metadata:
            name: ingress-nginx-admission-create
            labels:
              helm.sh/chart: ingress-nginx-3.33.0
              app.kubernetes.io/name: ingress-nginx
              app.kubernetes.io/instance: ingress-nginx
              app.kubernetes.io/version: 0.47.0
              app.kubernetes.io/managed-by: Helm
              app.kubernetes.io/component: admission-webhook
          spec:
            containers:
              - name: create
                image: docker.io/jettech/kube-webhook-certgen:v1.5.1
                imagePullPolicy: IfNotPresent
                args:
                  - create
                  - --host=ingress-nginx-controller-admission,ingress-nginx-controller-admission.$(POD_NAMESPACE).svc
                  - --namespace=$(POD_NAMESPACE)
                  - --secret-name=ingress-nginx-admission
                env:
                  - name: POD_NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
            restartPolicy: OnFailure
            serviceAccountName: ingress-nginx-admission
            securityContext:
              runAsNonRoot: true
              runAsUser: 2000
      ---
      # Source: ingress-nginx/templates/admission-webhooks/job-patch/job-patchWebhook.yaml
      apiVersion: batch/v1
      kind: Job
      metadata:
        name: ingress-nginx-admission-patch
        annotations:
          helm.sh/hook: post-install,post-upgrade
          helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded
        labels:
          helm.sh/chart: ingress-nginx-3.33.0
          app.kubernetes.io/name: ingress-nginx
          app.kubernetes.io/instance: ingress-nginx
          app.kubernetes.io/version: 0.47.0
          app.kubernetes.io/managed-by: Helm
          app.kubernetes.io/component: admission-webhook
        namespace: ingress-nginx
      spec:
        template:
          metadata:
            name: ingress-nginx-admission-patch
            labels:
              helm.sh/chart: ingress-nginx-3.33.0
              app.kubernetes.io/name: ingress-nginx
              app.kubernetes.io/instance: ingress-nginx
              app.kubernetes.io/version: 0.47.0
              app.kubernetes.io/managed-by: Helm
              app.kubernetes.io/component: admission-webhook
          spec:
            containers:
              - name: patch
                image: docker.io/jettech/kube-webhook-certgen:v1.5.1
                imagePullPolicy: IfNotPresent
                args:
                  - patch
                  - --webhook-name=ingress-nginx-admission
                  - --namespace=$(POD_NAMESPACE)
                  - --patch-mutating=false
                  - --secret-name=ingress-nginx-admission
                  - --patch-failure-policy=Fail
                env:
                  - name: POD_NAMESPACE
                    valueFrom:
                      fieldRef:
                        fieldPath: metadata.namespace
            restartPolicy: OnFailure
            serviceAccountName: ingress-nginx-admission
            securityContext:
              runAsNonRoot: true
              runAsUser: 2000
      
      posted @ 2022-01-28 00:44  張鐵牛  閱讀(266)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲一国产一区二区三区| 午夜精品福利亚洲国产| 亚洲中文字幕日产无码成人片| 日本一区不卡高清更新二区| 牲欲强的熟妇农村老妇女视频| 人妻日韩人妻中文字幕| 特级做a爰片毛片免费看无码| 亚洲成在人线在线播放无码| 国产精品第一区亚洲精品| 亚洲精品二区在线播放| 蜜臀久久99精品久久久久久| 99精品国产综合久久久久五月天 | 天天澡日日澡狠狠欧美老妇| 午夜免费无码福利视频麻豆| 九九热免费在线观看视频| 成年女人免费毛片视频永久| 在线 欧美 中文 亚洲 精品| 麻豆av一区二区天美传媒| 蜜臀av一区二区国产在线| 国产办公室秘书无码精品99| 中文字幕日韩有码国产| 亚洲中文字幕日韩精品| 国产卡一卡二卡三免费入口| 国产亚洲亚洲国产一二区| 性色av无码久久一区二区三区| 国产精品综合av一区二区| 国产一区二区波多野结衣| 久久av无码精品人妻出轨| 日本欧洲亚洲高清在线| 视频一区视频二区制服丝袜| 安西县| 无码乱人伦一区二区亚洲| A三级三级成人网站在线视频| 99re6在线视频精品免费下载| 九九热在线免费视频观看| 国产精品不卡一二三区 | 无套内谢少妇高清毛片| 久久精品国产99国产精品严洲| 繁昌县| 亚洲欧美另类久久久精品播放的| 日韩卡1卡2卡三卡免费网站|