<p>I deployed a simple test <code>ingress</code> and an <code>externalName</code> <code>service</code> using <code>kustomize</code>.
The deployment works and I get the expected results, but when <code>describing</code> the <code>test-ingress</code> it shows the error: <code>&lt;error: endpoints &quot;test-external-service&quot; not found&gt;</code>.
It seems like a k8s bug. It shows this error, but everything is working fine.</p>
<p>Here is my deployment:</p>
<p><code>kustomization.yaml</code>:</p>
<pre class="lang-yml prettyprint-override"><code>apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: platform
resources:
  - test-ingress.yaml
  - test-service.yaml
generatorOptions:
  disableNameSuffixHash: true
</code></pre>
<p><code>test-service.yaml</code>:</p>
<pre class="lang-yaml prettyprint-override"><code>apiVersion: v1
kind: Service
metadata:
  name: test-external-service
  namespace: platform
spec:
  type: ExternalName
  externalName: &quot;some-working-external-elasticsearch-service&quot;
</code></pre>
<p><code>test-ingress.yaml</code>:</p>
<pre class="lang-yaml prettyprint-override"><code>apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    kubernetes.io/ingress.class: nginx-external
    nginx.ingress.kubernetes.io/configuration-snippet: |
      proxy_cache_bypass $http_upgrade;
spec:
  rules:
    - host: testapi.mydomain.com
      http:
        paths:
          - path: /
            backend:
              serviceName: test-external-service
              servicePort: 9200
</code></pre>
<p>Here, I connected the external service to a working <code>elasticsearch</code> server. When browsing to <code>testapi.mydomain.com</code> (&quot;mydomain&quot; was replaced with our real domain of course), I'm getting the well known expected <code>elasticsearch</code> results:</p>
<pre class="lang-json prettyprint-override"><code>{
  &quot;name&quot; : &quot;73b40a031651&quot;,
  &quot;cluster_name&quot; : &quot;docker-cluster&quot;,
  &quot;cluster_uuid&quot; : &quot;Xck-u_EFQ0uDHJ1MAho4mQ&quot;,
  &quot;version&quot; : {
    &quot;number&quot; : &quot;7.10.1&quot;,
    &quot;build_flavor&quot; : &quot;oss&quot;,
    &quot;build_type&quot; : &quot;docker&quot;,
    &quot;build_hash&quot; : &quot;1c34507e66d7db1211f66f3513706fdf548736aa&quot;,
    &quot;build_date&quot; : &quot;2020-12-05T01:00:33.671820Z&quot;,
    &quot;build_snapshot&quot; : false,
    &quot;lucene_version&quot; : &quot;8.7.0&quot;,
    &quot;minimum_wire_compatibility_version&quot; : &quot;6.8.0&quot;,
    &quot;minimum_index_compatibility_version&quot; : &quot;6.0.0-beta1&quot;
  },
  &quot;tagline&quot; : &quot;You Know, for Search&quot;
}
</code></pre>
<p>So everything is working. But when describing the <code>test-ingress</code>, there is the following error:</p>
<p><code>test-external-service:9200 (&lt;error: endpoints &quot;test-external-service&quot; not found&gt;)</code></p>
<p>What is this error? Why am I getting it even though everything is working properly? What am I missing here?</p>

<p>This is how the <code>kubectl describe ingress</code> command works.<br />
The <code>kubectl describe ingress</code> command calls the <a href="https://github.com/kubernetes/kubectl/blob/ac49920c0ccb0dd0899d5300fc43713ee2dfcdc9/pkg/describe/describe.go#L2623-L2672" rel="nofollow noreferrer">describeIngressV1beta1</a> function, which calls the <a href="https://github.com/kubernetes/kubectl/blob/ac49920c0ccb0dd0899d5300fc43713ee2dfcdc9/pkg/describe/describe.go#L2507-L2531" rel="nofollow noreferrer">describeBackendV1beta1</a> function to describe the backend.</p>
<p>As can be found in the <a href="https://github.com/kubernetes/kubectl/blob/master/pkg/describe/describe.go#L2507-L2531" rel="nofollow noreferrer">source code</a>, the <a href="https://github.com/kubernetes/kubectl/blob/ac49920c0ccb0dd0899d5300fc43713ee2dfcdc9/pkg/describe/describe.go#L2507-L2531" rel="nofollow noreferrer">describeBackendV1beta1</a> function looks up the endpoints associated with the backend services, if it doesn't find appropriate endpoints, it generate an error message (as in your example):</p>
<pre><code>func (i *IngressDescriber) describeBackendV1beta1(ns string, backend *networkingv1beta1.IngressBackend) string {
    endpoints, err := i.client.CoreV1().Endpoints(ns).Get(context.TODO(), backend.ServiceName, metav1.GetOptions{})
    if err != nil {
        return fmt.Sprintf(&quot;&lt;error: %v&gt;&quot;, err)
    }
...
</code></pre>
<p>In the <a href="https://docs.openshift.com/dedicated/3/dev_guide/integrating_external_services.html#mysql-define-service-using-fqdn" rel="nofollow noreferrer">Integrating External Services</a> documentation, you can find that <code>ExternalName</code> services do not have any defined endpoints:</p>
<blockquote>
<p>ExternalName services do not have selectors, or any defined ports or endpoints, therefore, you can use an ExternalName service to direct traffic to an external service.</p>
</blockquote>
