<p>I run a k8s cluster in google cloud (GKE) and a MySQL server in aws (RDS). Pods need to connect to RDS which only allows connections from certain IP. How can I configure outgoing traffic to have a static IP?</p>

<p>I had the same problem to connect to a sftp server from a Pod.
To solve this, first you need to create an external IP address:</p>

<pre><code>gcloud compute addresses create {{ EXT_ADDRESS_NAME }} --region {{ REGION }}
</code></pre>

<p>Then, I suppose that your pod is assigned to your default-pool node cluster.
Extract your default-pool node name:</p>

<pre><code>gcloud compute instances list | awk '{ print $1 }' | grep default-pool
</code></pre>

<p>Erase default external ip of the vm instance:</p>

<pre><code>gcloud compute instances delete-access-config {{ VM_DEFAULT-POOL_INSTANCE }} --access-config-name external-nat
</code></pre>

<p>Add your external static ip created before:</p>

<pre><code>gcloud compute instances add-access-config {{ VM_DEFAULT-POOL_INSTANCE }} --access-config-name external-nat --address {{ EXT_ADDRESS_IP }}
</code></pre>

<p>If your Pod is not attached to the default-pool node, don't forget to select it with a nodeSelector:</p>

<pre><code>nodeSelector:
    cloud.google.com/gke-nodepool: {{ NODE_NAME }} 
</code></pre>
