簡體   English   中英

在 Nginx 上配置 TCP 端口 Azure Z30136395F018797812198317C 上的入口

[英]Configure TCP Port on Nginx Ingress on Azure Kubernetes Cluster (AKS)

我需要在我的 AKS 集群上配置一個 TCP 端口以允許 RabbitMQ 工作

我已經使用 helm 安裝了 nginx-ingress,如下所示:

kubectl create namespace ingress-basic

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx

helm install nginx-ingress ingress-nginx/ingress-nginx \
    --namespace ingress-basic \
    --set controller.replicaCount=2 \
    --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set controller.admissionWebhooks.patch.nodeSelector."beta\.kubernetes\.io/os"=linux

我已經使用我們的 DNS 提供程序設置了一個 A 記錄,以指向入口 controller 的公共 IP。

我創建了一個 TLS 密鑰(啟用 https)

我創建了一個入口路由:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: rabbit-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  tls:
  - hosts:
    - my.domain.com
    secretName: tls-secret
  rules:
    - http:
        paths:
          - backend:
              serviceName: rabbitmq-cluster
              servicePort: 15672
            path: /(.*)

我可以從外部通過域名導航到我的集群,並使用有效的 https 查看控制面板(內部在 15672 上)。 所以入口啟動並運行,我可以創建隊列等......所以 rabbitmq 工作正常。

但是,我無法讓 TCP 部件從集群外部發布到隊列。

I have edited the yaml of the what I believe is the configmap (azure - cluster - configuration - nginx-ingress-ingress-nginx-controller) for the controller (nginx-ingress-ingress-nginx-controller) via the azure portal interface and將此添加到末尾

data:
  '5672': 'default/rabbitmq-cluster:5672'

然后,我通過 azure 門戶為服務本身編輯了 yaml 並將其添加到末尾

  - name: amqp
      protocol: TCP
      port: 5672

但是,當我嘗試使用測試客戶端訪問我的域時,請求就會超時。 (當我使用 LoadBalancer 並且剛剛點擊集群的外部 IP 時客戶端工作,所以我知道客戶端代碼應該工作)

我應該做另一個步驟嗎?

我認為這里的問題是 helm 配置了太多我自己的東西,以至於我無法自定義太多。

我用 helm 卸載了入口,並將入口創建腳本更改為:

helm install nginx-ingress ingress-nginx/ingress-nginx \
    --namespace ingress-basic \
    --set controller.replicaCount=2 \
    --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set defaultBackend.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set controller.admissionWebhooks.patch.nodeSelector."beta\.kubernetes\.io/os"=linux \
    --set tcp.5672="default/rabbitmq-cluster:5672"

其中預配置了 TCP 端口轉發,我不需要做任何其他事情。 我不知道它是否影響它,但這似乎“破壞”了我的 SSL 實現,所以我將入口路由創建腳本從 v1beta 升級到 v1,https 再次完美運行。

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: rabbit-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: "true"
    nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
  tls:
  - hosts:
      - my.domain.com
    secretName: tls-secret
  rules:
  - host: my.domain.com
    http:
      paths:
      - path: /(.*)
        pathType: Prefix
        backend:
          service:
            name: rabbitmq-cluster
            port:
              number: 15672

暫無
暫無

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

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