<p>I tried creating an internal load balancer with the following annotation as mentioned in <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing#global_access_beta" rel="noreferrer">this documentation</a>:</p>

<pre><code>networking.gke.io/internal-load-balancer-allow-global-access: "true"
</code></pre>

<p>Here is the full manifest:</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: ilb-global
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    networking.gke.io/internal-load-balancer-allow-global-access: "true"
  labels:
    app: hello
spec:
  type: LoadBalancer
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
</code></pre>

<p>I tried accessing the load balancer from a VM in a different region but the VM is not able to reach the endpoint.</p>

<p>However according to <a href="https://cloud.google.com/load-balancing/docs/internal/setting-up-internal#ilb-global-access" rel="noreferrer">this documentation</a> I ran the following command on the created forwarding-rule (GCP creates a forwarding-rule with a random name for all the load balancers which can be retrieved using <code>gcloud compute forwarding-rules list</code> command) to update the Global access:</p>

<pre><code>gcloud beta compute forwarding-rules update abcrandomnamehehe --region [REGION-NAME] --allow-global-access
</code></pre>

<p>After running the above command and updating the load balancer manually, the endpoint is accessible from all the regions. Is this manual step of running <code>gcloud</code> command necessary?</p>

<p>If yes,what is the use of the annotation then? I the annotation with the latest available GKE version (<em>1.15.4-gke.22</em>) as well but doesn't work without being updated using the <code>gcloud</code> command. Is there something I am missing or it is a bug in GCP?</p>

<p><strong><em>EDIT</em></strong>: I had also opened <a href="https://issuetracker.google.com/issues/147451305" rel="noreferrer">this</a> issue with GCP which was addressed pretty quickly and they have updated the public documentations (Jan 15, 2020) to specifically mention the requirement of GKE 1.16 for the Global Access feature to work.</p>

<p>This is expected but the reason for this behavior is not explained at all in the public documentation. In fact, the 'Global Access' feature works with GKE 1.16 clusters. </p>

<p>So far, I can share with you the following bullet points:</p>

<ul>
<li>There are 2 different features regarding Global Access: 1 for ILB and 1 specifically for GKE.</li>
<li>Global Access Feature for GKE was launched on December 23rd.</li>
<li>Global Access Feature for GKE works from GKE 1.16 but it appears to not be mentioned in the documentation.</li>
<li>Our tests have been done with a GKE 1.13.11-gke.14 cluster.</li>
<li>Need to create a GKE 1.16 cluster and test it again.</li>
</ul>

<p>That being said, I'd like to notify you that this mismatch in the public information has been addressed properly with the correct team and is being handled in order to update the public documentation available <a href="https://cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing#global_access_beta" rel="noreferrer">here</a> to prevent future confusion. You can keep track of this process by following updates <a href="https://issuetracker.google.com/issues/147451305" rel="noreferrer">here</a></p>

<p>How can you verify the information provided above? Here you have a brief process that you can follow:</p>

<p>TEST 1:</p>

<ul>
<li>Create GKE 1.16 cluster in europe-west4 (this region/zone is not mandatory).</li>
<li>Create Deployment.</li>
<li>Create an internal TCP load balancer with annotation “networking.gke.io/internal-load-balancer-allow-global-access: "true" by writing the Service configuration file.</li>
<li>Go within Network Services > Load Balancing > Advanced menu (at the bottom) > : Global access should be Enabled.</li>
<li>SSH VM in europe-west1.</li>
<li>Run command $curl -v : You should receive a HTTP/1.1 200 OK.</li>
</ul>

<p>TEST 2:</p>

<ul>
<li>Delete annotation “networking.gke.io/internal-load-balancer-allow-global-access: "true" in Service Configuration File.</li>
<li>Update my Service by running command $kubectl apply -f </li>
<li>Go within Network Services > Load Balancing > Advanced menu (at the bottom) > : Global access should be disabled.</li>
<li>SSH VM in europe-west1.</li>
<li>Run command $curl -v : You should receive a Timeout error message.</li>
</ul>
