{"id":554,"title":"kubernetes-ingress","good":0,"bad":0,"hit":1102,"created_at":"2023-01-06 06:52:50","content":"

Ingress<\/p>

\u5b83\u662fservice\u7684\u7edf\u4e00\u7f51\u5173\u5165\u53e3,\u5b83\u5176\u5b9e\u5c31\u662f\u901a\u8fc7nginx\u5b9e\u73b0\u7684<\/p>

\u901a\u8fc7ingress\u53ef\u4ee5\u5b9e\u73b0\u6309url\u5c06\u8bf7\u6c42\u5206\u914d\u5230\u4e0d\u540cservice\uff0c\u8fd8\u53ef\u4ee5\u5b9e\u73b0\u8def\u5f84\u91cd\u5199\uff0c\u6d41\u91cf\u9650\u5236\u7b49<\/p>

\u3010\u5b89\u88c5\u3011<\/p>

wget https:\/\/raw.githubusercontent.com\/kubernetes\/ingress-nginx\/controller-v0.47.0\/deploy\/static\/provider\/baremetal\/deploy.yaml<\/p>

<\/p>

#\u4fee\u6539\u955c\u50cf<\/p>

vi deploy.yaml<\/p>

#\u5c06image\u7684\u503c\u6539\u4e3a\u5982\u4e0b\u503c\uff1a<\/p>

registry.cn-hangzhou.aliyuncs.com\/lfy_k8s_images\/ingress-nginx-controller:v0.46.0<\/p>

<\/p>

kubectl apply -f deply.yaml<\/p>

# \u68c0\u67e5\u5b89\u88c5\u7684\u7ed3\u679c<\/p>

kubectl get pod,svc -n ingress-nginx<\/p>

<\/p>

# \u6700\u540e\u522b\u5fd8\u8bb0\u628aservice\u66b4\u9732\u7684\u7aef\u53e3\u8981\u653e\u884c<\/p>

<\/p>

\u3010\u5e94\u7528\u4e3e\u4f8b\u3011<\/p>

\u4ee5\u4e0b\u901a\u8fc7deployment\u90e8\u7f72\u4e24\u4e2aservice:<\/p>

hello-server(\u5bf9\u5e94pod\u4e3ahello-server)<\/p>

nginx-demo(\u5bf9\u5e94pod\u4e3anginx)<\/p>

----------------------------------------<\/p>

apiVersion: apps\/v1<\/p>

kind: Deployment<\/p>

metadata:<\/p>

  name: hello-server<\/p>

spec:<\/p>

  replicas: 2<\/p>

  selector:<\/p>

    matchLabels:<\/p>

      app: hello-server<\/p>

  template:<\/p>

    metadata:<\/p>

      labels:<\/p>

        app: hello-server<\/p>

    spec:<\/p>

      containers:<\/p>

      - name: hello-server<\/p>

        image: registry.cn-hangzhou.aliyuncs.com\/lfy_k8s_images\/hello-server<\/p>

        ports:<\/p>

        - containerPort: 9000<\/p>

---<\/p>

apiVersion: apps\/v1<\/p>

kind: Deployment<\/p>

metadata:<\/p>

  labels:<\/p>

    app: nginx-demo<\/p>

  name: nginx-demo<\/p>

spec:<\/p>

  replicas: 2<\/p>

  selector:<\/p>

    matchLabels:<\/p>

      app: nginx-demo<\/p>

  template:<\/p>

    metadata:<\/p>

      labels:<\/p>

        app: nginx-demo<\/p>

    spec:<\/p>

      containers:<\/p>

      - image: nginx<\/p>

        name: nginx<\/p>

---<\/p>

apiVersion: v1<\/p>

kind: Service<\/p>

metadata:<\/p>

  labels:<\/p>

    app: nginx-demo<\/p>

  name: nginx-demo<\/p>

spec:<\/p>

  selector:<\/p>

    app: nginx-demo<\/p>

  ports:<\/p>

  - port: 8000<\/p>

    protocol: TCP<\/p>

    targetPort: 80<\/p>

---<\/p>

apiVersion: v1<\/p>

kind: Service<\/p>

metadata:<\/p>

  labels:<\/p>

    app: hello-server<\/p>

  name: hello-server<\/p>

spec:<\/p>

  selector:<\/p>

    app: hello-server<\/p>

  ports:<\/p>

  - port: 8000<\/p>

    protocol: TCP<\/p>

    targetPort: 9000<\/p>

<\/p>

\u4ee5\u4e0b\u518d\u90e8\u7f72\u4e00\u4e2aingress\uff0c\u5b9e\u73b0\u901a\u8fc7hello.atguigu.com\u8bbf\u95eehello-server\u670d\u52a1\uff0cdemo.atguigu.com\u8bbf\u95eenginx-demo\u670d\u52a1<\/p>

-----------------------<\/p>

apiVersion: networking.k8s.io\/v1<\/p>

kind: Ingress  <\/p>

metadata:<\/p>

  name: ingress-host-bar<\/p>

spec:<\/p>

  ingressClassName: nginx<\/p>

  rules:<\/p>

  - host: "hello.atguigu.com"<\/p>

    http:<\/p>

      paths:<\/p>

      - pathType: Prefix<\/p>

        path: "\/"<\/p>

        backend:<\/p>

          service:<\/p>

            name: hello-server<\/p>

            port:<\/p>

              number: 8000<\/p>

  - host: "demo.atguigu.com"<\/p>

    http:<\/p>

      paths:<\/p>

      - pathType: Prefix<\/p>

        path: "\/nginx"  # \u628a\u8bf7\u6c42\u4f1a\u8f6c\u7ed9\u4e0b\u9762\u7684\u670d\u52a1\uff0c\u4e0b\u9762\u7684\u670d\u52a1\u4e00\u5b9a\u8981\u80fd\u5904\u7406\u8fd9\u4e2a\u8def\u5f84\uff0c\u4e0d\u80fd\u5904\u7406\u5c31\u662f404<\/p>

        backend:<\/p>

          service:<\/p>

            name: nginx-demo  ## java\uff0c\u6bd4\u5982\u4f7f\u7528\u8def\u5f84\u91cd\u5199\uff0c\u53bb\u6389\u524d\u7f00nginx<\/p>

            port:<\/p>

              number: 8000<\/p>

<\/p>

<\/p>

-------------------------\u8def\u5f84\u91cd\u5199------------------------<\/p>

apiVersion: networking.k8s.io\/v1<\/p>

kind: Ingress  <\/p>

metadata:<\/p>

  annotations:<\/p>

    nginx.ingress.kubernetes.io\/rewrite-target: \/$2<\/p>

  name: ingress-host-bar<\/p>

spec:<\/p>

  ingressClassName: nginx<\/p>

  rules:<\/p>

  - host: "hello.atguigu.com"<\/p>

    http:<\/p>

      paths:<\/p>

      - pathType: Prefix<\/p>

        path: "\/"<\/p>

        backend:<\/p>

          service:<\/p>

            name: hello-server<\/p>

            port:<\/p>

              number: 8000<\/p>

  - host: "demo.atguigu.com"<\/p>

    http:<\/p>

      paths:<\/p>

      - pathType: Prefix<\/p>

        path: "\/nginx(\/|$)(.*)"  # \u628a\u8bf7\u6c42\u4f1a\u8f6c\u7ed9\u4e0b\u9762\u7684\u670d\u52a1\uff0c\u4e0b\u9762\u7684\u670d\u52a1\u4e00\u5b9a\u8981\u80fd\u5904\u7406\u8fd9\u4e2a\u8def\u5f84\uff0c\u4e0d\u80fd\u5904\u7406\u5c31\u662f404<\/p>

        backend:<\/p>

          service:<\/p>

            name: nginx-demo  ## java\uff0c\u6bd4\u5982\u4f7f\u7528\u8def\u5f84\u91cd\u5199\uff0c\u53bb\u6389\u524d\u7f00nginx<\/p>

            port:<\/p>

              number: 8000<\/p>

<\/p>

<\/p>

<\/p>

---------------------------\u6d41\u91cf\u9650\u5236------------------------------<\/p>

apiVersion: networking.k8s.io\/v1<\/p>

kind: Ingress<\/p>

metadata:<\/p>

  name: ingress-limit-rate<\/p>

  annotations:<\/p>

    nginx.ingress.kubernetes.io\/limit-rps: "1"<\/p>

spec:<\/p>

  ingressClassName: nginx<\/p>

  rules:<\/p>

  - host: "haha.atguigu.com"<\/p>

    http:<\/p>

      paths:<\/p>

      - pathType: Exact<\/p>

        path: "\/"<\/p>

        backend:<\/p>

          service:<\/p>

            name: nginx-demo<\/p>

            port:<\/p>

              number: 8000<\/p>

<\/p>"}