{"action":"created","issue":{"url":"https://api.github.com/repos/cloudflare/cloudflare-ingress-controller/issues/168","repository_url":"https://api.github.com/repos/cloudflare/cloudflare-ingress-controller","labels_url":"https://api.github.com/repos/cloudflare/cloudflare-ingress-controller/issues/168/labels{/name}","comments_url":"https://api.github.com/repos/cloudflare/cloudflare-ingress-controller/issues/168/comments","events_url":"https://api.github.com/repos/cloudflare/cloudflare-ingress-controller/issues/168/events","html_url":"https://github.com/cloudflare/cloudflare-ingress-controller/issues/168","id":437310344,"node_id":"MDU6SXNzdWU0MzczMTAzNDQ=","number":168,"title":"Support for ExternalName Services","user":{"login":"grrywlsn","id":6753180,"node_id":"MDQ6VXNlcjY3NTMxODA=","avatar_url":"https://avatars0.githubusercontent.com/u/6753180?v=4","gravatar_id":"","url":"https://api.github.com/users/grrywlsn","html_url":"https://github.com/grrywlsn","followers_url":"https://api.github.com/users/grrywlsn/followers","following_url":"https://api.github.com/users/grrywlsn/following{/other_user}","gists_url":"https://api.github.com/users/grrywlsn/gists{/gist_id}","starred_url":"https://api.github.com/users/grrywlsn/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/grrywlsn/subscriptions","organizations_url":"https://api.github.com/users/grrywlsn/orgs","repos_url":"https://api.github.com/users/grrywlsn/repos","events_url":"https://api.github.com/users/grrywlsn/events{/privacy}","received_events_url":"https://api.github.com/users/grrywlsn/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2019-04-25T17:18:21Z","updated_at":"2019-07-10T14:47:44Z","closed_at":null,"author_association":"NONE","body":"I've been using the Cloudflare ingress controller with services inside Kubernetes successfully for months (running 0.6.5). I'd also like to be able to use the same ingress controller to route traffic to services accessible to, but outside of, Kubernetes.\r\n\r\nIn this scenario, I want to be able to expose Vault's UI (accessible on an AWS ELB), to Kubernetes as a Service, which can then be used as a backend service for a Cloudflare ingress. This would make use of the ExternalName service: https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-mapping-external-services\r\n\r\nI believe something like this is what I'd need to do, but it seems Cloudflare can't support it yet:\r\n\r\n```\r\napiVersion: v1\r\nkind: Service\r\nmetadata:\r\n  name: vault-ui\r\nspec:\r\n  type: ExternalName\r\n  externalName: vault-ui.eu-west-1.elb.amazonaws.com\r\n  ports:\r\n  - name: https\r\n    port: 443\r\n    targetPort: 443\r\n    protocol: TCP\r\n---\r\napiVersion: extensions/v1beta1\r\nkind: Ingress\r\nmetadata:\r\n  annotations:\r\n    kubernetes.io/ingress.class: argo-tunnel\r\n  name: vault-ui\r\nspec:\r\n  rules:\r\n  - host: vault-ui.mydomain.com\r\n    http:\r\n      paths:\r\n      - path: /\r\n        backend:\r\n          serviceName: vault-ui\r\n          servicePort: https\r\n```\r\n\r\nI think the reason it doesn't work yet is that a Service with `ExternalName` doesn't have any Endpoints; however, the DNS and port can be curl'd from within the Cloudflare ingress container. I get error: `err: \\\"endpoints 'default/vault-ui' do not exist\\\"\"`\r\n\r\nIs this something that could be added?"},"comment":{"url":"https://api.github.com/repos/cloudflare/cloudflare-ingress-controller/issues/comments/510093394","html_url":"https://github.com/cloudflare/cloudflare-ingress-controller/issues/168#issuecomment-510093394","issue_url":"https://api.github.com/repos/cloudflare/cloudflare-ingress-controller/issues/168","id":510093394,"node_id":"MDEyOklzc3VlQ29tbWVudDUxMDA5MzM5NA==","user":{"login":"mattalberts","id":6054865,"node_id":"MDQ6VXNlcjYwNTQ4NjU=","avatar_url":"https://avatars3.githubusercontent.com/u/6054865?v=4","gravatar_id":"","url":"https://api.github.com/users/mattalberts","html_url":"https://github.com/mattalberts","followers_url":"https://api.github.com/users/mattalberts/followers","following_url":"https://api.github.com/users/mattalberts/following{/other_user}","gists_url":"https://api.github.com/users/mattalberts/gists{/gist_id}","starred_url":"https://api.github.com/users/mattalberts/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattalberts/subscriptions","organizations_url":"https://api.github.com/users/mattalberts/orgs","repos_url":"https://api.github.com/users/mattalberts/repos","events_url":"https://api.github.com/users/mattalberts/events{/privacy}","received_events_url":"https://api.github.com/users/mattalberts/received_events","type":"User","site_admin":false},"created_at":"2019-07-10T14:47:44Z","updated_at":"2019-07-10T14:47:44Z","author_association":"MEMBER","body":"Part of the ingress-controller's tunnel start/stop conditioning is a check against the existence of service endpoints, which won't exist for this type of service. Instead of using the ingress controller to do this, you should stand up a tunnel directly (a cloudflared pod that maps directly to the service)"}}
{"actor":{"display_login":"mattalberts"}}