如何在gke的kubernetes中使用nginx入口?

f2uvfpb9  于 2023-03-07  发布在  Kubernetes
关注(0)|答案(2)|浏览(127)

我想在kubernetes中创建一个nginx负载均衡器。

apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ecom-ingress
    spec:
      defaultBackend:
        service:
          name: ecom-ui-service
          port:
            number: 80
      rules:
      - http:
          paths:
          - path: /identity
            pathType: ImplementationSpecific
            backend:
              service:
                name: ecom-identity-service
                port:
                  number: 80
          - path: /catalog
            pathType: ImplementationSpecific
            backend:
              service:
                name: ecom-catalog-service
                port:
                  number: 80

我已经在集群上创建了服务和pod,现在我想创建一个入口来使用rewrite访问我的服务。

  • http://ip-of-cubernetes(主Map)
  • http://ip-of-cubernetes/catalog(列出产品)
  • http://ip-of-cubernetes/catalog/112(单个产品)

当我发送这个nginx yml文件使用kubectl命令“kubectl应用-f入口.yml”它创建一个gce负载平衡器在谷歌页面的入口选项卡如下。我不能访问目录端点。它返回nginx 404页。x1c 0d1x
如果我在谷歌管理页面控制台中使用以下helm命令,它会在服务选项卡中创建一个负载平衡器。

helm install nginx-ingress nginx-stable/nginx-ingress --set rbac.create=true

所以我想在服务标签中创建一个nginx负载平衡器,或者我想在gce负载平衡器中使用重写规则。
我如何指定我的入口yml文件来达到这个目的?我想使用重写来使用我的服务来使用查询字符串等。

cyej8jka

cyej8jka1#

在此link中,其中一个用例是在将请求URI发送到应用程序之前重写请求URI。
还有关于在入口和服务中部署YAML的信息,您可以将其用作部署中的指导。

bmp9r5qi

bmp9r5qi2#

因此,您已经安装了将管理入口对象的入口控制器。
这里是官方链接,你可以参考更多细节:https://cloud.google.com/community/tutorials/nginx-ingress-gke
如果您正在使用Nginx或GCE任何其他控制器,请确保您的入口指向正确的入口类

    • 示例**:
apiVersion:  networking.k8s.io/v1
kind: Ingress
metadata:
  name: foo-external
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:

您可以创建入口****对象文件

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-resource
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - host: example.com
    http:
      paths:
      - pathType: Prefix
        path: /
        backend:
          service:
            name: service-1
            port:
              number: 8080

因此,如果您有一个单一服务,您可以使用上面的入口。因此,任何在example.com的请求将被重定向到service-1

http://ip-of-cubernetes (main page)
http://ip-of-cubernetes/catalog (list prodcts)
http://ip-of-cubernetes/catalog/112 (single product)

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-resource
      annotations:
        kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/ssl-redirect: "false"
    spec:
      rules:
      - host: example.com
        http:
          paths:
          - pathType: Prefix
            path: /
            backend:
              service:
                name: service-1
                port:
                  number: 8080
          - pathType: Prefix
            path: /catalog
            backend:
              service:
                name: service-2
                port:
                  number: 8080

在这里分享我的其他路由的例子,你可以参考重写路径,如果你需要它。
参考:https://stackoverflow.com/a/75433607/5525824

相关问题