簡體   English   中英

創建指向兩個服務的 Kubernetes 入口

[英]Creating a Kubernetes ingress pointing two services

要求:想要使用 HTTPS 的入口部署 Minio 和另一個后端服務(不用於生產目的)

我一直在嘗試創建一個入口,以從 GKE 中的 Kubernetes 集群外部訪問兩個服務。 這些是我嘗試過的嘗試。

嘗試一

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: lightning-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
  rules:
  - http:
      paths:
        - path: /storage
          backend:
            serviceName: minio
            servicePort: 9000
        - path: /portal
          backend:
            serviceName: oscar
            servicePort: 8080

嘗試二

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: oscar
  annotations:
    # nginx.ingress.kubernetes.io/rewrite-target: /
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: oscar
          servicePort: 8080
  - host: storage.lightningfaas.tech
    http:
      paths:
      - backend:
          serviceName: minio
          servicePort: 9000

嘗試三

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: lightning-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: minio
          servicePort: 9000
        path: /minio(/|$)(.*)
      - backend:
          serviceName: oscar
          servicePort: 8080
        path: /portal(/|$)(.*)

嘗試四

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: minio-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: minio.lightningfaas.tech
    http:
      paths:
      - backend:
          serviceName: minio
          servicePort: 9000
  - host: portal.lightningfaas.tech
    http:
      paths:
      - backend:
          serviceName: oscar
          servicePort: 8080

但是,上述嘗試都不適合我的要求。 要么給出 404 0r 503。但我可以確認為每個服務創建單獨的入口可以正常工作,如下所示。

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: oscar
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: oscar
          servicePort: 8080
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: minio-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
spec:
  rules:
  - http:
      paths:
      - backend:
          serviceName: minio
          servicePort: 9000

更改域服務器也需要花費大量時間來測試,因此創建主機非常煩人,因為我必須等待大量時間來測試我的代碼。 還有什么我可以嘗試的嗎?

像下面這樣的東西是理想的:

https://34.452.234.45:9000 > 將訪問 minio

https://34.452.234.45:8080 > 將訪問奧斯卡

你的建議和意見對我真的很有幫助。

Minio舵圖: https://github.com/minio/charts

Minio 部署

helm install --namespace oscar minio minio/minio --set accessKey=minio --set secretKey=password --set persistence.existingClaim=lightnig --set resources.requests.memory=256Mi 

奧斯卡掌舵圖: https://github.com/grycap/helm-charts/tree/master/oscar

奧斯卡部署

helm install --namespace=oscar oscar oscar --set authPass=password --set service.type=ClusterIP --set createIngress=false --set volume.storageClassName=nfs --set minIO.endpoint=http://104.197.173.174 --set minIO.TLSVerify=false --set minIO.accessKey=minio --set minIO.secretKey=password --set serverlessBackend=openfaas

根據 kubernetes 文檔,簡單的扇出示例應該可以解決您的問題。 下面給出了一個簡單的扇出示例,其中同一主機有兩個不同的路徑用於兩個不同的服務。

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

因此,您的清單文件可能如下所示:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
    name: lightning-ingress
    namespace: default
spec:
  rules:
  - host: [your host name here]
    http:
      paths:
      - path: /storage
        pathType: Prefix
        backend:
          service:
            name: minio
            port:
              number: 9000
      - path: /portal
        pathType: Prefix
        backend:
          service:
            name: oscar
            port:
              number: 8080

參考: Kubernetes 文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM