首页 > 解决方案 > cloudsql_proxy 的 GKE 网络策略

问题描述

我尝试在 GKE 上使用 NetworkPolicy。

我的 pod api 有 API 应用程序和 cloudSql 代理

        image: myapi
        name: myapi
        ports:
        - containerPort: 3001
      - command:
        - /cloud_sql_proxy
        - -instances=my-project:asia-northeast1:my-instance=tcp:3307
        - -ip_address_types=PRIVATE
        image: gcr.io/cloudsql-docker/gce-proxy:1.16
        name: cloudsql-proxy

我无法弄清楚要设置什么样的出口规则。我只是尝试设置127.0.0.1:3307,但它一定不是;因为 api -> cloudsql_proxy 是 127.0.0.1:3307。

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  labels:
    env: develop
    projectid: my-project
  name: my-networkpolicy
spec:
  egress:
  - ports:
    - port: 3307
      protocol: TCP
    to:
    - ipBlock:
        cidr: 127.0.0.1/32

错误

获取https://www.googleapis.com/sql/v1beta4/projects/my-project/instances/my-instance?alt=json&prettyPrint=false : 拨号 tcp: i/o timeout

如何设置 NetworkPolicy ?

※ 我已经弄清楚如果 NetrowkPolicy 中没有出口规则,连接工作正常

标签: google-kubernetes-enginecloud-sql-proxy

解决方案


我发现必须为 cloudsql-proxy 添加 UDP:53

---
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  labels:
    env: develop
    projectid: my-project
  name: my-networkpolicy
spec:
  egress:
  - ports:
    - port: 443
      protocol: TCP
    - port: 53
      protocol: UDP
    to:
    - ipBlock:
        cidr: 0.0.0.0/0
---

推荐阅读