<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>infra-as-code | rael.io</title><link>https://rael.io/tags/infra-as-code/</link><atom:link href="https://rael.io/tags/infra-as-code/index.xml" rel="self" type="application/rss+xml"/><description>infra-as-code</description><generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator><language>en-us</language><copyright>Fork me on [GitHub](https://github.com/raelga/rael.io)</copyright><lastBuildDate>Sun, 24 Feb 2019 11:23:56 +0200</lastBuildDate><image><url>https://rael.io/img/photos/emma-hello-card.jpg</url><title>infra-as-code</title><link>https://rael.io/tags/infra-as-code/</link></image><item><title>gcp.rael.io</title><link>https://rael.io/project/gcp.rael.io/</link><pubDate>Sun, 24 Feb 2019 11:23:56 +0200</pubDate><guid>https://rael.io/project/gcp.rael.io/</guid><description>&lt;p&gt;Deployment manager deployment from my Google Cloud projects.&lt;/p&gt;</description></item><item><title>dm-templates</title><link>https://rael.io/project/dm-templates/</link><pubDate>Sat, 23 Feb 2019 11:23:56 +0200</pubDate><guid>https://rael.io/project/dm-templates/</guid><description>
&lt;p&gt;Repo for Deployment Manager templates shared between projects.&lt;/p&gt;
&lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;The main purpose of this repo is to have a centralized template repository that
can be added to any GCP Deployment Manager project as a Git submodule.&lt;/p&gt;
&lt;p&gt;That removes the need of copying the templates from one project to another and
the risk of ending with different versions of the templates in each project.&lt;/p&gt;
&lt;h3 id=&#34;templates&#34;&gt;Templates&lt;/h3&gt;
&lt;p&gt;Templates are organized by type of resource:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;compute&lt;/li&gt;
&lt;li&gt;container&lt;/li&gt;
&lt;li&gt;iam&lt;/li&gt;
&lt;li&gt;sql&lt;/li&gt;
&lt;li&gt;storage&lt;/li&gt;
&lt;li&gt;projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The type matches the main resources of the template, as in most cases will
deploy more GCP resources required to configure / use the main one.&lt;/p&gt;
&lt;h3 id=&#34;the-makefile&#34;&gt;The Makefile&lt;/h3&gt;
&lt;p&gt;The Makefile is useful for the actual deployments, not for managing the templates.&lt;/p&gt;
&lt;p&gt;It expects the following folder configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;❯ tree -L 2 .
.
├── Makefile
├── deployments
│ ├── bigotes-pro
│ ├── rael-base
│ ├── rshared
│ ├── project-id-3
│ └── project-id-N
└── templates
├── compute
├── container
├── iam
├── project
├── sql
└── storage
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For each project, you can have the deployment &lt;code&gt;.yaml&lt;/code&gt; manifest in the root folder
or using a similar folder hierarchy with folders per each resource type:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;deployments/rshared
└── compute
├── bigotes-pro-peering.yaml
└── network.yaml
1 directory, 2 files
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With that setup, the makefile will generate a target to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create the deployment&lt;/li&gt;
&lt;li&gt;Update the deployment&lt;/li&gt;
&lt;li&gt;Preview the deployment&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For example, with the following tree:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;❯ tree deployments
deployments
├── bigotes-pro
│ └── compute
│ └── rshared-peering.yaml
├── rael-base
│ ├── compute
│ │ ├── bigotes-pro-base-peering.yaml
│ │ └── network.yaml
│ └── projects
│ ├── bigotes-pro-project.yaml
│ └── rshared-project.yaml
└── rshared
└── compute
├── bigotes-pro-peering.yaml
└── network.yaml
7 directories, 7 files
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Will generate the following targets:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;gcp.rael.io/dm on  master [!?] took 17s
❯ make
make target
dm-create-bigotes-pro/compute/rshared-peering dm-preview-rael-base/compute/bigotes-pro-base-peering dm-update-rael-base/compute/network
dm-create-rael-base/compute/bigotes-pro-base-peering dm-preview-rael-base/compute/network dm-update-rael-base/projects/bigotes-pro-project
dm-create-rael-base/compute/network dm-preview-rael-base/projects/bigotes-pro-project dm-update-rael-base/projects/rshared-project
dm-create-rael-base/projects/bigotes-pro-project dm-preview-rael-base/projects/rshared-project dm-update-rshared/compute/bigotes-pro-peering
dm-create-rael-base/projects/rshared-project dm-preview-rshared/compute/bigotes-pro-peering dm-update-rshared/compute/network
dm-create-rshared/compute/bigotes-pro-peering dm-preview-rshared/compute/network gcloud-config-rael-base
dm-create-rshared/compute/network dm-update-bigotes-pro/compute/rshared-peering help
dm-preview-bigotes-pro/compute/rshared-peering dm-update-rael-base/compute/bigotes-pro-base-peering
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Examples of this makefile in use:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;github.com/raelga/bigot.es&lt;/li&gt;
&lt;li&gt;github.com/raelga/gcp.rael.io&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;demo&#34;&gt;Demo&lt;/h2&gt;
&lt;p&gt;&lt;img src=&#34;https://raw.githubusercontent.com/raelga/dm-templates/master/tty.gif&#34; alt=&#34;tty&#34; /&gt;&lt;/p&gt;</description></item><item><title>Kubernetes Talks</title><link>https://rael.io/project/kubernetes-talks/</link><pubDate>Wed, 28 Mar 2018 11:23:56 +0200</pubDate><guid>https://rael.io/project/kubernetes-talks/</guid><description>
&lt;h1 id=&#34;talks&#34;&gt;Talks&lt;/h1&gt;
&lt;h2 id=&#34;kubernetes-101&#34;&gt;Kubernetes 101&lt;/h2&gt;
&lt;p&gt;The main subject of this talk is to have an overview on the microservices architectures. Then, starts an introduction to the kubernetes architecture, core services and objects: pods, controllers, deployments and sets.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talks.godoc.org/github.com/raelga/kubernetes-talks/101/kubernetes-101.slide&#34; target=&#34;_blank&#34;&gt;Kubernetes 101 Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;101/&#34; target=&#34;_blank&#34;&gt;Kubernetes 101 Slides Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;kubernetes-clouds&#34;&gt;Kubernetes Clouds&lt;/h2&gt;
&lt;p&gt;The main subject of this talk is viewing the differences between each managed kubernetes solution offered by AWS, Azure and GCP.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talks.godoc.org/github.com/raelga/kubernetes-talks/clouds/kubernetes-clouds.slide&#34; target=&#34;_blank&#34;&gt;Kubernetes Clouds Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/&#34; target=&#34;_blank&#34;&gt;Kubernetes Clouds Slides&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For the labs, the main object is having several clusters deployed all over the using each managed (or not) solution and deploy the same application using the common interface provided by Kubernetes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/aws/#deploy-kubernetes-in-aws&#34; target=&#34;_blank&#34;&gt;Deploy Kubernetes in Amazon Web services&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/aws/#managed-kubernetes-with-eks&#34; target=&#34;_blank&#34;&gt;AWS managed Kubernetes with EKS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/aws/#amazon-web-services---eksctl-alpha&#34; target=&#34;_blank&#34;&gt;AWS managed Kubernetes with EKS using eksctl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/aws/#amazon-web-services---kops&#34; target=&#34;_blank&#34;&gt;AWS non-managed on EC2 with Kops&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/gcp/#deploy-kubernetes-in-google-cloud-platform&#34; target=&#34;_blank&#34;&gt;Deploy Kubernetes in Google Cloud Platform&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/gcp/#managed-kubernetes-with-google-kubernetes-engine-gke&#34; target=&#34;_blank&#34;&gt;GCP managed Kubernetes with GKE&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/azure/#deploy-kubernetes-in-microsoft-azure&#34; target=&#34;_blank&#34;&gt;Deploy Kubernetes in Azure&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;clouds/labs/azure/#managed-kubernetes-with-azure-kubernetes-service-aks&#34; target=&#34;_blank&#34;&gt;Azure managed Kubernetes with AKS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;providers&#34;&gt;Providers&lt;/h2&gt;
&lt;h3 id=&#34;digital-ocean&#34;&gt;Digital Ocean&lt;/h3&gt;
&lt;p&gt;The main subject of this talk is introducing to the Digital Ocean cloud platform and their Managed Kubernetes solution.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talks.godoc.org/github.com/raelga/kubernetes-talks/providers/do/digital-ocean.slide&#34; target=&#34;_blank&#34;&gt;Digital Ocean Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;providers/do/&#34; target=&#34;_blank&#34;&gt;Digital Ocean Slides Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;tools&#34;&gt;Tools&lt;/h2&gt;
&lt;h3 id=&#34;traefik&#34;&gt;Traefik&lt;/h3&gt;
&lt;p&gt;The main subject of this talk is introducing to the Traefik awesome Cloud Native Edge Router and the new features comming in Traefik 2.0.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://talks.godoc.org/github.com/raelga/kubernetes-talks/traefik/traefik.slide&#34; target=&#34;_blank&#34;&gt;Traefik Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;traefik/&#34; target=&#34;_blank&#34;&gt;Traefik Slides Source&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;study-jams&#34;&gt;Study Jams&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#replicasets&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;ReplicaSets&lt;/code&gt;&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#introduction&#34; target=&#34;_blank&#34;&gt;Introduction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#learn-more&#34; target=&#34;_blank&#34;&gt;Learn more&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#some-notes&#34; target=&#34;_blank&#34;&gt;Some notes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#1---create-a-replicaset&#34; target=&#34;_blank&#34;&gt;1 - Create a &lt;code&gt;ReplicaSet&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#2---scaling-replicasets&#34; target=&#34;_blank&#34;&gt;2 - Scaling &lt;code&gt;ReplicaSets&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#double-the-numbers-of-replicas-with-kubectl-scale&#34; target=&#34;_blank&#34;&gt;Double the numbers of replicas with &lt;code&gt;kubectl scale&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#scale-back-to-1-replica&#34; target=&#34;_blank&#34;&gt;Scale back to 1 replica&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#update-the-replicaset-with-the-yaml-definition&#34; target=&#34;_blank&#34;&gt;Update the &lt;code&gt;ReplicaSet&lt;/code&gt; with the yaml definition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#scale-to-50-replicas&#34; target=&#34;_blank&#34;&gt;Scale to 50 replicas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#scale-down-back-to-5-replicas&#34; target=&#34;_blank&#34;&gt;Scale down back to 5 replicas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#3---selectors-and-pods&#34; target=&#34;_blank&#34;&gt;3 - Selectors and Pods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#deploy-some-blue-pods&#34; target=&#34;_blank&#34;&gt;Deploy some &lt;strong&gt;blue&lt;/strong&gt; pods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#deploy-a-blue-replicaset&#34; target=&#34;_blank&#34;&gt;Deploy a &lt;strong&gt;blue&lt;/strong&gt; &lt;code&gt;ReplicaSet&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#run-a-red-pod&#34; target=&#34;_blank&#34;&gt;Run a &lt;em&gt;red&lt;/em&gt; pod&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#replicaset-for-non-colored-pods-only&#34; target=&#34;_blank&#34;&gt;&lt;code&gt;ReplicaSet&lt;/code&gt; for non-colored &lt;code&gt;pods&lt;/code&gt; only&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#lets-acquire-those-fancy-orange-pods&#34; target=&#34;_blank&#34;&gt;Let&amp;rsquo;s acquire those fancy orange &lt;code&gt;pods&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#remove-a-pod-from-the-orange-replicaset&#34; target=&#34;_blank&#34;&gt;Remove a pod from the orange replicaset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#clean-up&#34; target=&#34;_blank&#34;&gt;Clean up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#4---container-probes&#34; target=&#34;_blank&#34;&gt;4 - Container probes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#readiness-probe&#34; target=&#34;_blank&#34;&gt;Readiness probe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#liveness-probe&#34; target=&#34;_blank&#34;&gt;Liveness probe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#clean-up-1&#34; target=&#34;_blank&#34;&gt;Clean up&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#5---manual-rolling-update&#34; target=&#34;_blank&#34;&gt;5 - Manual rolling update&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#deploy-the-initial-replicaset&#34; target=&#34;_blank&#34;&gt;Deploy the initial &lt;code&gt;ReplicaSet&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#update-the-replicaset-pod-template&#34; target=&#34;_blank&#34;&gt;Update the &lt;code&gt;ReplicaSet&lt;/code&gt; pod template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#update-the-replicaset-pod-template-with-the-fixed-readinessprobe&#34; target=&#34;_blank&#34;&gt;Update the &lt;code&gt;ReplicaSet&lt;/code&gt; &lt;code&gt;Pod&lt;/code&gt; template with the fixed &lt;code&gt;ReadinessProbe&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;study-jams/k8s/default/replicasets/#clean-up-the-failing-versions-and-the-old-ones&#34; target=&#34;_blank&#34;&gt;Clean up the failing versions and the old ones&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;notes&#34;&gt;Notes&lt;/h2&gt;
&lt;p&gt;Gopher art from &lt;a href=&#34;https://github.com/ashleymcnamara/gophers&#34; target=&#34;_blank&#34;&gt;ashleymcnamara/gophers&lt;/a&gt;.&lt;/p&gt;</description></item></channel></rss>