Skip to content

Commit

Permalink
deploy: 675bd6d
Browse files Browse the repository at this point in the history
  • Loading branch information
Smana committed Dec 10, 2023
1 parent 69eca68 commit 560adfd
Show file tree
Hide file tree
Showing 5 changed files with 12 additions and 12 deletions.
2 changes: 1 addition & 1 deletion CNAME
Original file line number Diff line number Diff line change
@@ -1 +1 @@
blog.ogenki.io
blog.ogenki.io.
2 changes: 1 addition & 1 deletion fr/index.json

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions fr/post/tailscale/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
</span></span></span><span class=line><span class=ln>3</span><span class=cl><span class=go></span><span class=err>
</span></span></span><span class=line><span class=ln>4</span><span class=cl><span class=err></span><span class=go>tailscale status
</span></span></span><span class=line><span class=ln>5</span><span class=cl><span class=go>100.118.83.67 ogenki smainklh@ linux -
</span></span></span></code></pre></div><p>ℹ️ Pour les utilisateurs de Linux, vérifier que Tailscale fonctionne bien avec votre configuration DNS: Suivre <a href=https://tailscale.com/kb/1188/linux-dns/>cette documentation</a>.</p><div class="notices tip"><div class=label>Les sources</div><p>Toutes les étapes réalisées dans cet article proviennent de ce <a href=https://github.com/Smana/demo-secured-eks><strong>dépôt git</strong></a></p><p>Il va permettre de créer l'ensemble des composants qui ont pour objectif d'obtenir un cluster EKS de Lab et font suite à un précédent article sur <a href=https://blog.ogenki.io/fr/post/cilium-gateway-api/>Cilium et Gateway API</a>.</p></div><h2 id=-accéder-à-aws-en-privé>☁️ Accéder à AWS en privé</h2><p><figure><picture><img loading=lazy decoding=async alt="Subnet router" class="image_figure image_internal image_processed" width=2348 height=1121 src=/fr/post/tailscale/subnet_router.png></picture></figure></p><p>Afin de pouvoir accéder de manière sécurisée à l'ensemble des ressources disponibles sur AWS, il est possible de déployer un <em><strong>Subnet router</strong></em>.</p><p>Un <em>Subnet router</em> est une instance Tailscale qui permet d'accéder à des sous-réseaux qui ne sont pas directement liés à Tailscale. Il fait office de <strong>pont</strong> entre le réseau privé virtuel de Tailscale (<em>Tailnet</em>) et d'autres réseaux locaux.</p><p>Nous pouvons alors <strong>router des sous réseaux du Clouder à travers le VPN de Tailscale</strong>.</p><p>⚠️ Pour ce faire, sur AWS, il faudra bien entendu configurer les <em>security groups</em> correctement pour autoriser les Subnet routers.</p><h3 id=-déployer-un-subnet-router>🚀 Déployer un Subnet router</h3><p>Entrons dans le vif du sujet et deployons un <em>Subnet router</em> sur un réseau AWS!</br>Tout est fait en utilisant le code <strong>Terraform</strong> présent dans le répertoire <a href=https://github.com/Smana/demo-secured-eks/tree/main/terraform/network>terraform/network</a>. Nous allons analyser la configuration spécifique à Tailscale qui est présente dans le fichier <a href=https://github.com/Smana/demo-secured-eks/blob/main/terraform/network/tailscale.tf>tailscale.tf</a> avant de procéder au déploiement.</p><h4 id=le-provider-terraform>Le provider Terraform</h4><p>Il est possible de configurer certains paramètres au travers de l'<strong>API</strong> Tailscale grâce au <a href=https://github.com/tailscale/terraform-provider-tailscale>provider Terraform</a>.
</span></span></span></code></pre></div><p>ℹ️ Pour les utilisateurs de Linux, vérifier que Tailscale fonctionne bien avec votre configuration DNS: Suivre <a href=https://tailscale.com/kb/1188/linux-dns/>cette documentation</a>.</p><div class="notices tip"><div class=label>Les sources</div><p>Toutes les étapes réalisées dans cet article proviennent de ce <a href=https://github.com/Smana/demo-cloud-native-ref><strong>dépôt git</strong></a></p><p>Il va permettre de créer l'ensemble des composants qui ont pour objectif d'obtenir un cluster EKS de Lab et font suite à un précédent article sur <a href=https://blog.ogenki.io/fr/post/cilium-gateway-api/>Cilium et Gateway API</a>.</p></div><h2 id=-accéder-à-aws-en-privé>☁️ Accéder à AWS en privé</h2><p><figure><picture><img loading=lazy decoding=async alt="Subnet router" class="image_figure image_internal image_processed" width=2348 height=1121 src=/fr/post/tailscale/subnet_router.png></picture></figure></p><p>Afin de pouvoir accéder de manière sécurisée à l'ensemble des ressources disponibles sur AWS, il est possible de déployer un <em><strong>Subnet router</strong></em>.</p><p>Un <em>Subnet router</em> est une instance Tailscale qui permet d'accéder à des sous-réseaux qui ne sont pas directement liés à Tailscale. Il fait office de <strong>pont</strong> entre le réseau privé virtuel de Tailscale (<em>Tailnet</em>) et d'autres réseaux locaux.</p><p>Nous pouvons alors <strong>router des sous réseaux du Clouder à travers le VPN de Tailscale</strong>.</p><p>⚠️ Pour ce faire, sur AWS, il faudra bien entendu configurer les <em>security groups</em> correctement pour autoriser les Subnet routers.</p><h3 id=-déployer-un-subnet-router>🚀 Déployer un Subnet router</h3><p>Entrons dans le vif du sujet et deployons un <em>Subnet router</em> sur un réseau AWS!</br>Tout est fait en utilisant le code <strong>Terraform</strong> présent dans le répertoire <a href=https://github.com/Smana/demo-cloud-native-ref/tree/main/terraform/network>terraform/network</a>. Nous allons analyser la configuration spécifique à Tailscale qui est présente dans le fichier <a href=https://github.com/Smana/demo-cloud-native-ref/blob/main/terraform/network/tailscale.tf>tailscale.tf</a> avant de procéder au déploiement.</p><h4 id=le-provider-terraform>Le provider Terraform</h4><p>Il est possible de configurer certains paramètres au travers de l'<strong>API</strong> Tailscale grâce au <a href=https://github.com/tailscale/terraform-provider-tailscale>provider Terraform</a>.
Pour cela il faut au préalable génerer une clé d'API 🔑 sur la console d'admin:</p><center><img src=api_key.png width=750></center><p>Il faudra conserver cette clé dans un endroit sécurisé car elle est utilisée pour déployer le Subnet router</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-hcl data-lang=hcl><span class=line><span class=ln>1</span><span class=cl><span class=k>provider</span> <span class=s2>&#34;tailscale&#34;</span> {
</span></span><span class=line><span class=ln>2</span><span class=cl><span class=n> api_key</span> <span class=o>=</span> <span class=k>var</span><span class=p>.</span><span class=k>tailscale</span><span class=p>.</span><span class=k>api_key</span>
</span></span><span class=line><span class=ln>3</span><span class=cl><span class=n> tailnet</span> <span class=o>=</span> <span class=k>var</span><span class=p>.</span><span class=k>tailscale</span><span class=p>.</span><span class=k>tailnet</span>
Expand Down Expand Up @@ -76,7 +76,7 @@
</span></span><span class=line><span class=ln>13</span><span class=cl><span class=n> advertise_routes</span> <span class=o>=</span> <span class=p>[</span><span class=k>module</span><span class=p>.</span><span class=k>vpc</span><span class=p>.</span><span class=k>vpc_cidr_block</span><span class=p>]</span>
</span></span><span class=line><span class=ln>14</span><span class=cl><span class=p>...</span>
</span></span><span class=line><span class=ln>15</span><span class=cl>}
</span></span></code></pre></div><p>Maintenant que nous avons analysé les différents paramètres, il est temps de <strong>démarrer notre Subnet router</strong> 🚀 !!</br></p><p>Il faut au préalable créer un fichier <code>variable.tfvars</code> dans le répertoire <a href=https://github.com/Smana/demo-secured-eks/tree/main/terraform/network>terraform/network</a>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-hcl data-lang=hcl><span class=line><span class=ln> 1</span><span class=cl><span class=n>env</span> <span class=o>=</span> <span class=s2>&#34;dev&#34;</span>
</span></span></code></pre></div><p>Maintenant que nous avons analysé les différents paramètres, il est temps de <strong>démarrer notre Subnet router</strong> 🚀 !!</br></p><p>Il faut au préalable créer un fichier <code>variable.tfvars</code> dans le répertoire <a href=https://github.com/Smana/demo-cloud-native-ref/tree/main/terraform/network>terraform/network</a>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-hcl data-lang=hcl><span class=line><span class=ln> 1</span><span class=cl><span class=n>env</span> <span class=o>=</span> <span class=s2>&#34;dev&#34;</span>
</span></span><span class=line><span class=ln> 2</span><span class=cl><span class=n>region</span> <span class=o>=</span> <span class=s2>&#34;eu-west-3&#34;</span>
</span></span><span class=line><span class=ln> 3</span><span class=cl><span class=n>private_domain_name</span> <span class=o>=</span> <span class=s2>&#34;priv.cloud.ogenki.io&#34;</span>
</span></span><span class=line><span class=ln> 4</span><span class=cl>
Expand All @@ -87,7 +87,7 @@
</span></span><span class=line><span class=ln> 9</span><span class=cl>}
</span></span><span class=line><span class=ln>10</span><span class=cl>
</span></span><span class=line><span class=ln>11</span><span class=cl><span class=n>tags</span> <span class=o>=</span> {
</span></span><span class=line><span class=ln>12</span><span class=cl><span class=n> project</span> <span class=o>=</span> <span class=s2>&#34;demo-secured-eks&#34;</span>
</span></span><span class=line><span class=ln>12</span><span class=cl><span class=n> project</span> <span class=o>=</span> <span class=s2>&#34;demo-cloud-native-ref&#34;</span>
</span></span><span class=line><span class=ln>13</span><span class=cl><span class=n> owner</span> <span class=o>=</span> <span class=s2>&#34;Smana&#34;</span>
</span></span><span class=line><span class=ln>14</span><span class=cl>}
</span></span></code></pre></div><p>Puis lancer la commande suivante:</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-console data-lang=console><span class=line><span class=ln>1</span><span class=cl><span class=go>tofu plan --var-file variables.tfvars
Expand Down Expand Up @@ -158,7 +158,7 @@
</span></span></span><span class=line><span class=ln>12</span><span class=cl><span class=go>infrastructure Active 4m1s
</span></span></span><span class=line><span class=ln>13</span><span class=cl><span class=go>...
</span></span></span></code></pre></div><h4 id=accéder-aux-services-en-privé>Accéder aux services en privé</h4><p>Un <code>Service</code> Kubernetes exposé est une resource AWS comme une autre 😉. Il faut juste s'assurer que ce service utilise bien une <strong>IP privée</strong>.
Dans mon exemple j'utilise <code>Gateway API</code> pour configurer la répartition de charge du Clouder et je vous invite à lire mon <a href=https://blog.ogenki.io/fr/post/cilium-gateway-api/><strong>précédent article</strong></a> sur le sujet.</p><p>Il suffirait donc de créer un NLB interne en s'assurant que le <code>Service</code> ait bien l'annotation <code>service.beta.kubernetes.io/aws-load-balancer-scheme</code> ayant pour valeur <code>internal</code>. Dans le cas de Gateway API, cela se fait via la <a href=https://github.com/Smana/demo-secured-eks/blob/main/security/mycluster-0/platform-gw-clusterpolicy.yaml>clusterPolicy</a> <a href=https://kyverno.io/>Kyverno</a>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln>1</span><span class=cl><span class=w> </span><span class=nt>metadata</span><span class=p>:</span><span class=w>
Dans mon exemple j'utilise <code>Gateway API</code> pour configurer la répartition de charge du Clouder et je vous invite à lire mon <a href=https://blog.ogenki.io/fr/post/cilium-gateway-api/><strong>précédent article</strong></a> sur le sujet.</p><p>Il suffirait donc de créer un NLB interne en s'assurant que le <code>Service</code> ait bien l'annotation <code>service.beta.kubernetes.io/aws-load-balancer-scheme</code> ayant pour valeur <code>internal</code>. Dans le cas de Gateway API, cela se fait via la <a href=https://github.com/Smana/demo-cloud-native-ref/blob/main/security/mycluster-0/platform-gw-clusterpolicy.yaml>clusterPolicy</a> <a href=https://kyverno.io/>Kyverno</a>.</p><div class=highlight><pre tabindex=0 class=chroma><code class=language-yaml data-lang=yaml><span class=line><span class=ln>1</span><span class=cl><span class=w> </span><span class=nt>metadata</span><span class=p>:</span><span class=w>
</span></span></span><span class=line><span class=ln>2</span><span class=cl><span class=w> </span><span class=nt>annotations</span><span class=p>:</span><span class=w>
</span></span></span><span class=line><span class=ln>3</span><span class=cl><span class=w> </span><span class=nt>external-dns.alpha.kubernetes.io/hostname</span><span class=p>:</span><span class=w> </span><span class=l>gitops-${cluster_name}.priv.${domain_name},grafana-${cluster_name}.priv.${domain_name}</span><span class=w>
</span></span></span><span class=line><span class=ln>4</span><span class=cl><span class=w> </span><span class=nt>service.beta.kubernetes.io/aws-load-balancer-scheme</span><span class=p>:</span><span class=w> </span><span class=s2>&#34;internal&#34;</span><span class=w>
Expand Down
2 changes: 1 addition & 1 deletion index.json

Large diffs are not rendered by default.

Loading

0 comments on commit 560adfd

Please sign in to comment.