Guión:
aplicación Tableau;
Postgres en una nube;
Kubernetes en otra nube, ejecutando una aplicación basada en una imagen Alpine (nube diferente a Postgres).
Que necesito:
Restricciones importantes:
Tableau puede acceder a mi clúster de Kubernetes, pero no puede acceder directamente a mi host de Postgres;
Mi clúster de kubernetes puede acceder a mi host de Postgres.
Próximos pasos Ahora pude hacerlo funcionar usando la respuesta de Thomas, usando el siguiente código:
apiVersion: v1 kind: Service metadata: name: my-service spec: type: NodePort ports: - port: 5432 targetPort: 5432 nodePort: 30004 --- apiVersion: v1 kind: Endpoints metadata: name: my-service subsets: - addresses: - ip: **111.111.111.111** ** < need change this to hostname ports: - port: 5432Todo funciona bien con IP numérica, pero necesito poner mi DNS de Postgres en su lugar, algo así como:
subsets: - addresses: - ip: mypostgres.com ports: - port: 5432Puede lograr esto creando un objeto de tipo de servicio sin selectores y luego creando manualmente puntos finales para este. El servicio debe exponerse al exterior a través NodePort o del tipo Loadbalancer :
apiVersion: v1 kind: Service metadata: name: my-service #Name of the service must match the name of the endpoints spec: type: NodePort ports: - port: 80 targetPort: 80 nodePort: 30007Los servicios no se vinculan a los pods directamente. Hay otro objeto entre los puntos finales llamados. Debido a esto, puede definirlos manualmente.
apiVersion: v1 kind: Endpoints metadata: name: my-service #Name of te endpoint must match the name of the service subsets: - addresses: - ip: 172.217.212.100 # This is the IP of the endpoints that the service will forward connections to. ports: - port: 80Dado que va a exponer su postgres, se deben tomar algunas medidas de seguridad para protegerlo, por ejemplo, IP de la lista blanca
Para obtener más información, visite /Servicios sin selectores .