簡體   English   中英

如何使用 Docker 桌面為 Windows Kube.netes 和 ingress-nginx 公開 postgres tcp 端口

[英]How to expose postgres tcp port using Docker Desktop for Windows Kubernetes and ingress-nginx

我在 kube.netes 中使用“Windows 版 Docker 桌面”。 到目前為止,它很棒。

我想管理我的 postgress 數據庫 (TCP:5432)。 我正在使用 kube.netes“ingress-nginx”入口 controller,它可以配置為使用 configmap 公開 TCP

這是我到目前為止所擁有的:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tcp-services
  namespace: ingress-nginx
data:
  5432: "ingress-nginx/postgres:5432"

---
# SEE: https://kubernetes.io/docs/concepts/services-networking/ingress/

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-myproject.com
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: clusterissuer-selfsigned
    # See: https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/rewrite/README.md
    nginx.ingress.kubernetes.io/rewrite-target: /$2
    nginx.ingress.kubernetes.io/from-to-www-redirect: "true"
spec:
  tls:
  - hosts:
    - www.myproject.com
    secretName: tls-myproject
  rules:
  # Avoid Quasar build paths:  /css, /fonts, /icons, /js
  - http:
      paths:
        # See https://github.com/kubernetes/ingress-nginx/blob/master/docs/examples/rewrite/README.md
      - path: /data(/|$)(.*)
        pathType: Prefix
        backend:
          service:
            name: backend
            port:
              number: 80
...

現在我需要:

  1. 添加“--tcp-services-configmap=”參數
  2. 如果 1) 沒有自動執行此操作,則公開 5432。

我在 kube.netes 儀表板中找到了 ingress-nginx-controller 並進行了如下手動編輯,但它的行為沒有改變。

spec:
  replicas: 1
  selector:
    matchLabels:
      app.kubernetes.io/component: controller
      app.kubernetes.io/instance: ingress-nginx
      app.kubernetes.io/name: ingress-nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app.kubernetes.io/component: controller
        app.kubernetes.io/instance: ingress-nginx
        app.kubernetes.io/name: ingress-nginx
    spec:
      volumes:
        - name: webhook-cert
          secret:
            secretName: ingress-nginx-admission
            defaultMode: 420
      containers:
        - name: controller
          image: >-
            k8s.gcr.io/ingress-nginx/controller:v0.41.0@sha256:e6019e536cfb921afb99408d5292fa88b017c49dd29d05fc8dbc456aa770d590
          args:
            - /nginx-ingress-controller
            - '--publish-service=$(POD_NAMESPACE)/ingress-nginx-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'
            - '--tcp-services-configmap=ingress-nginx/tcp-services'

我錯過了什么? 我如何配置它而不必手動編輯它? 謝謝!

我認為有兩個問題。

  1. 您需要與 postgress 安裝分開安裝 nginx。 這意味着您將擁有一些 nginx 個 pod/部署,以及一個存在於 ingress-nginx 命名空間中的服務。 為此,請按照此處的指南進行操作。 建議您按照雲部分的 yaml 文件進行 docker 桌面部署。 是一個經歷過這個過程的人。

  2. 在集群上安裝 nginx 后,您需要從 postgress deployment/pod -> service -> ingress 中獲取 go。 這些將與您的 ingress-nginx 位於不同的命名空間中(默認即可)。 要配置它,您可以按照此處的指南進行操作。 如果你想一路測試東西,你可以使用 kube.netes port-forward命令將你的 postgress pod 轉發到你的本地機器。 您也可以使用相同的方法測試您的服務。

暫無
暫無

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

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