<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anderson Gama</title>
    <description>The latest articles on DEV Community by Anderson Gama (@smashse).</description>
    <link>https://dev.to/smashse</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F394555%2F49c7b4d4-c256-4db5-869b-021c4ac71935.jpg</url>
      <title>DEV Community: Anderson Gama</title>
      <link>https://dev.to/smashse</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/smashse"/>
    <language>en</language>
    <item>
      <title>🚀 Setting Up a Kubernetes Observability Proof of Concept (POC) with MicroK8s and DataDog</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Mon, 24 Feb 2025 16:09:48 +0000</pubDate>
      <link>https://dev.to/smashse/setting-up-a-kubernetes-observability-proof-of-concept-poc-with-microk8s-and-datadog-39bn</link>
      <guid>https://dev.to/smashse/setting-up-a-kubernetes-observability-proof-of-concept-poc-with-microk8s-and-datadog-39bn</guid>
      <description>&lt;h1&gt;
  
  
  Proof of Concept (POC) Requirements
&lt;/h1&gt;

&lt;p&gt;In this POC, we will use &lt;strong&gt;Multipass&lt;/strong&gt; to create instances for installing &lt;strong&gt;DataDog&lt;/strong&gt; and &lt;strong&gt;MicroK8s&lt;/strong&gt;. The goal is to establish DataDog as an observability tool for the Kubernetes cluster provisioned with MicroK8s.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Install Multipass
&lt;/h2&gt;

&lt;p&gt;To install Multipass, run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;multipass &lt;span class="nt"&gt;--classic&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. MicroK8s Setup
&lt;/h2&gt;

&lt;p&gt;MicroK8s is the smallest, fastest, fully-conformant Kubernetes distribution that tracks upstream releases and simplifies clustering. It is ideal for offline development, prototyping, and testing.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 Create a MicroK8s Template
&lt;/h3&gt;

&lt;p&gt;Create a &lt;code&gt;cloud-config-microk8s.yaml&lt;/code&gt; file to configure the MicroK8s instance:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'#cloud-config
runcmd:
  - apt update --fix-missing
  - snap refresh
  - snap install microk8s --classic
  - microk8s status --wait-ready
  - microk8s enable dns ingress'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; cloud-config-microk8s.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.2 Create a MicroK8s Instance
&lt;/h3&gt;

&lt;p&gt;Launch a MicroK8s instance using Multipass:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass launch noble &lt;span class="nt"&gt;-n&lt;/span&gt; microk8s &lt;span class="nt"&gt;-c&lt;/span&gt; 2 &lt;span class="nt"&gt;-m&lt;/span&gt; 4G &lt;span class="nt"&gt;-d&lt;/span&gt; 10G &lt;span class="nt"&gt;--cloud-init&lt;/span&gt; cloud-config-microk8s.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.3 Export MicroK8s Configuration for Kubectl
&lt;/h3&gt;

&lt;h4&gt;
  
  
  2.3.1 Create a Directory for Kubernetes Configurations
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube/configs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2.3.2 Export MicroK8s Configuration
&lt;/h4&gt;

&lt;p&gt;Export the MicroK8s configuration to the created directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass &lt;span class="nb"&gt;exec &lt;/span&gt;microk8s &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;microk8s config | &lt;span class="nb"&gt;tee&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube/configs/config-microk8s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2.3.3 Set the Exported Configuration as Default for Kubectl
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;KUBECONFIG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube/configs/config-microk8s
&lt;span class="nb"&gt;chmod &lt;/span&gt;0600 &lt;span class="nv"&gt;$KUBECONFIG&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2.3.4 Install Kubectl
&lt;/h4&gt;

&lt;p&gt;Install Kubectl using Snap:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;kubectl &lt;span class="nt"&gt;--classic&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify the installation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get no
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2.3.5 Install Helm
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;helm &lt;span class="nt"&gt;--classic&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME       STATUS   ROLES    AGE   VERSION
microk8s   Ready    &amp;lt;none&amp;gt;   10m   v1.32.1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.4 Add an IP Alias for MicroK8s
&lt;/h3&gt;

&lt;p&gt;Add an IP alias for the MicroK8s instance to &lt;code&gt;microk8s.local&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass info microk8s | &lt;span class="nb"&gt;grep &lt;/span&gt;IPv4 | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 2 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;":"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;:blank:] | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/$/     microk8s.local/'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2.5 Access MicroK8s via URL
&lt;/h3&gt;

&lt;p&gt;You can access MicroK8s via the following URL:&lt;br&gt;&lt;br&gt;
&lt;a href="http://microk8s.local" rel="noopener noreferrer"&gt;http://microk8s.local&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  3. DataDog Setup
&lt;/h2&gt;

&lt;p&gt;&lt;b&gt;Differences Between US1, US3, and US5 in Datadog&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;In Datadog, &lt;strong&gt;US1&lt;/strong&gt;, &lt;strong&gt;US3&lt;/strong&gt;, and &lt;strong&gt;US5&lt;/strong&gt; refer to different &lt;strong&gt;regions (endpoints)&lt;/strong&gt; where data is processed and stored. These regions are designed to serve customers in specific geographic locations or to meet compliance requirements. Below are the main differences:&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;US1 (US Region - Default)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint&lt;/strong&gt;: &lt;code&gt;https://datadoghq.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: The primary and default Datadog region for customers in the United States.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Residency&lt;/strong&gt;: Data is stored and processed in the United States.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Case&lt;/strong&gt;: Ideal for customers who do not have specific data residency requirements outside the US.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: Best performance for users and applications located in the US.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;US3 (US3 Region)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint&lt;/strong&gt;: &lt;code&gt;https://us3.datadoghq.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: A separate Datadog region, also located in the United States, but isolated from US1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Residency&lt;/strong&gt;: Data is stored and processed in the United States, but in a different infrastructure than US1.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Case&lt;/strong&gt;: Designed for customers who need isolation from the primary US1 region, often for compliance, regulatory, or organizational reasons.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: Similar to US1 for users and applications in the US.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  &lt;strong&gt;US5 (US5 Region)&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Endpoint&lt;/strong&gt;: &lt;code&gt;https://us5.datadoghq.com&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Description&lt;/strong&gt;: Another isolated Datadog region in the United States, distinct from US1 and US3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Residency&lt;/strong&gt;: Data is stored and processed in the United States, but in a separate infrastructure.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Use Case&lt;/strong&gt;: Used by customers who require additional isolation or have specific compliance needs that cannot be met by US1 or US3.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Performance&lt;/strong&gt;: Comparable to US1 and US3 for users and applications in the US.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Key Differences:
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;US1&lt;/th&gt;
&lt;th&gt;US3&lt;/th&gt;
&lt;th&gt;US5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Endpoint&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;datadoghq.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;us3.datadoghq.com&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;us5.datadoghq.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Location&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;US (Primary)&lt;/td&gt;
&lt;td&gt;US (Isolated)&lt;/td&gt;
&lt;td&gt;US (Isolated)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Use Case&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Default US region&lt;/td&gt;
&lt;td&gt;Compliance/isolation needs&lt;/td&gt;
&lt;td&gt;Additional isolation needs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Optimized for US users&lt;/td&gt;
&lt;td&gt;Optimized for US users&lt;/td&gt;
&lt;td&gt;Optimized for US users&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h3&gt;
  
  
  How to Choose the Right Region:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;US1&lt;/strong&gt;: Use this region if you do not have specific compliance or isolation requirements.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;US3/US5&lt;/strong&gt;: Use these regions if you need isolated infrastructure to meet compliance, regulatory, or organizational requirements.&lt;/li&gt;
&lt;/ul&gt;


&lt;h3&gt;
  
  
  Note:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data and configurations are &lt;strong&gt;not shared&lt;/strong&gt; between these regions. If you switch regions, you will need to set up your Datadog environment (dashboards, monitors, etc.) separately.&lt;/li&gt;
&lt;li&gt;Ensure that data ingestion and API calls are directed to the correct endpoint for your chosen region.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://docs.datadoghq.com/getting_started/site/" rel="noopener noreferrer"&gt;Getting Started with Datadog Sites&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Getting Started with DataDog Free Tier
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Visit &lt;a href="https://www.datadoghq.com" rel="noopener noreferrer"&gt;Datadog's website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create a free account.&lt;/li&gt;
&lt;li&gt;Follow the instructions to install the Datadog Agent in your environment (on-premises or in the cloud).&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3.2 Install the Datadog Agent
&lt;/h3&gt;

&lt;p&gt;The Datadog Agent collects metrics and events from your systems and apps. Install at least one Agent anywhere, even on your workstation.&lt;/p&gt;

&lt;h4&gt;
  
  
  3.2.1 Installing on Kubernetes
&lt;/h4&gt;

&lt;p&gt;&lt;b&gt;Option 1: Using the Datadog Operator&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;The Datadog Operator is a way to deploy the Datadog Agent on Kubernetes and OpenShift. It simplifies deployment and reduces the risk of misconfiguration.&lt;/p&gt;
&lt;h5&gt;
  
  
  3.2.1.1 Install the Datadog Operator
&lt;/h5&gt;

&lt;p&gt;Install the Datadog Operator in the current namespace:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm repo add datadog https://helm.datadoghq.com
helm &lt;span class="nb"&gt;install &lt;/span&gt;datadog-operator datadog/datadog-operator
kubectl create secret generic datadog-secret &lt;span class="nt"&gt;--from-literal&lt;/span&gt; api-key&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"YOUR_API-KEY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
  
  
  3.2.1.2 Configure &lt;code&gt;datadog-agent.yaml&lt;/code&gt;
&lt;/h5&gt;

&lt;p&gt;To configure the Datadog Agent on AKS, Openshift, and TKG distributions refer to &lt;a href="https://docs.datadoghq.com/containers/kubernetes/distributions/?tab=operator" rel="noopener noreferrer"&gt;Kubernetes distributions documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Configure the Datadog Agent for your Kubernetes distribution:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'apiVersion: "datadoghq.com/v2alpha1"
kind: "DatadogAgent"
metadata:
  name: "datadog"
spec:
  global:
    clusterName: "microk8s"
    site: "us5.datadoghq.com"
    credentials:
      apiSecret:
        secretName: "datadog-secret"
        keyName: "api-key"
  features:
    apm:
      instrumentation:
        enabled: true
        libVersions:
          java: "1"
          dotnet: "3"
          python: "2"
          js: "5"
    logCollection:
      enabled: true
      containerCollectAll: true
    asm:
      threats:
        enabled: true
      sca:
        enabled: true
      iast:
        enabled: true
    cws:
      enabled: true
    usm:
      enabled: true
    npm:
      enabled: true'&lt;/span&gt; | &lt;span class="nb"&gt;tee &lt;/span&gt;datadog-agent.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
  
  
  3.2.1.3 Deploy the Datadog Agent
&lt;/h5&gt;

&lt;p&gt;Apply the configuration:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; datadog-agent.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
  
  
  3.2.1.4 Confirm Agent Installation
&lt;/h5&gt;

&lt;p&gt;Query the pods to confirm the installation:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-l&lt;/span&gt; app.kubernetes.io/component&lt;span class="o"&gt;=&lt;/span&gt;agent
kubectl get pods &lt;span class="nt"&gt;-l&lt;/span&gt; app.kubernetes.io/managed-by&lt;span class="o"&gt;=&lt;/span&gt;datadog-operator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;&lt;b&gt;Option 2: Using the Helm Chart&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;You can use the Datadog Helm chart to install the Datadog Agent across all nodes in your cluster via a DaemonSet.&lt;/p&gt;
&lt;h5&gt;
  
  
  3.2.2.1 Add the Datadog Helm Repository
&lt;/h5&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm repo add datadog https://helm.datadoghq.com
helm repo update
kubectl create secret generic datadog-secret &lt;span class="nt"&gt;--from-literal&lt;/span&gt; api-key&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"YOUR_API-KEY"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
  
  
  3.2.2.2 Configure &lt;code&gt;datadog-values.yaml&lt;/code&gt;
&lt;/h5&gt;

&lt;p&gt;To configure the Datadog Agent on AKS, Openshift, and TKG distributions refer to &lt;a href="https://docs.datadoghq.com/containers/kubernetes/distributions/?tab=helm" rel="noopener noreferrer"&gt;Kubernetes distributions documentation&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Configure the Datadog Agent for your Kubernetes distribution:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'datadog:
  apiKeyExistingSecret: "datadog-secret"
  site: "us5.datadoghq.com"
  apm:
    instrumentation:
      enabled: true
      libVersions:
        java: "1"
        dotnet: "3"
        python: "2"
        js: "5"
  logs:
    enabled: true
    containerCollectAll: true
  asm:
    threats:
      enabled: true
    sca:
      enabled: true
    iast:
      enabled: true
  securityAgent:
    runtime:
      enabled: true
  serviceMonitoring:
    enabled: true
  networkMonitoring:
    enabled: true'&lt;/span&gt; | &lt;span class="nb"&gt;tee &lt;/span&gt;datadog-values.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
  
  
  3.2.2.3 Deploy the Datadog Agent
&lt;/h5&gt;

&lt;p&gt;Install the Datadog Agent using Helm:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm &lt;span class="nb"&gt;install &lt;/span&gt;datadog-agent &lt;span class="nt"&gt;-f&lt;/span&gt; datadog-values.yaml datadog/datadog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
  
  
  3.2.2.4 Confirm Agent Installation
&lt;/h5&gt;

&lt;p&gt;Query the pods to confirm the installation:&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods &lt;span class="nt"&gt;-l&lt;/span&gt; app.kubernetes.io/component&lt;span class="o"&gt;=&lt;/span&gt;agent
kubectl get pods &lt;span class="nt"&gt;-l&lt;/span&gt; app.kubernetes.io/managed-by&lt;span class="o"&gt;=&lt;/span&gt;Helm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt; &lt;a href="https://github.com/smashse/playbook/blob/master/HOWTO/DATADOG/" rel="noopener noreferrer"&gt;https://github.com/smashse/playbook/blob/master/HOWTO/DATADOG/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>datadog</category>
      <category>multipass</category>
      <category>microk8s</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Multipass + Cloud-Init</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Mon, 22 Jul 2024 19:49:28 +0000</pubDate>
      <link>https://dev.to/smashse/multipass-cloud-init-4m4j</link>
      <guid>https://dev.to/smashse/multipass-cloud-init-4m4j</guid>
      <description>&lt;h1&gt;
  
  
  Multipass
&lt;/h1&gt;

&lt;p&gt;Multipass is a mini-cloud on your workstation using native hypervisors of all the supported plaforms (Windows, macOS and Linux). Multipass can launch and run virtual machines and configure them with &lt;a href="https://cloud-init.io/" rel="noopener noreferrer"&gt;cloud-init&lt;/a&gt; like a public cloud.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Multipass
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;multipass &lt;span class="nt"&gt;--classic&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Debian in Multipass
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'#cloud-config
write_files:
  - path: /etc/bash.bashrc
    content: |
      #powerline
      if [ -f /usr/bin/powerline-daemon ]; then
        powerline-daemon --quiet
        POWERLINE_BASH_CONTINUATION=1
        POWERLINE_BASH_SELECT=1
        . /usr/share/powerline/bindings/bash/powerline.sh
      fi
    append: true
runcmd:
 - apt install -y powerline'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; cloud-config-debian.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Multipass/Debian
wget &lt;span class="nt"&gt;-c&lt;/span&gt; https://cloud.debian.org/images/cloud/bullseye/daily/latest/debian-11-genericcloud-amd64-daily.qcow2 &lt;span class="nt"&gt;-O&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Multipass/Debian/debian.qcow2
multipass launch &lt;span class="nt"&gt;--name&lt;/span&gt; debian file://&lt;span class="nv"&gt;$HOME&lt;/span&gt;/Multipass/Debian/debian.qcow2 &lt;span class="nt"&gt;--cloud-init&lt;/span&gt; cloud-config-debian.yaml
multipass list
multipass sh debian
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Rocky in Multipass
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'#cloud-config
write_files:
  - path: /etc/dnf/dnf.conf
    content: |
      #fastest
      max_parallel_downloads=10
      fastestmirror=True
    append: true
write_files:
  - path: /etc/bashrc
    content: |
      #ohmyposh
      eval "$(oh-my-posh init bash --config /opt/themes/paradox.omp.json)"
    append: true
runcmd:
 - dnf config-manager --set-enabled crb
 - dnf install -y curl git wget zip
 - curl -s https://ohmyposh.dev/install.sh | bash -s -- -d /bin
 - mkdir -p /opt/themes
 - wget -c https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/paradox.omp.json -O /opt/themes/paradox.omp.json'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; cloud-config-rocky.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Multipass/Rocky
wget &lt;span class="nt"&gt;-c&lt;/span&gt; http://dl.rockylinux.org/pub/rocky/9/images/x86_64/Rocky-9-GenericCloud.latest.x86_64.qcow2 &lt;span class="nt"&gt;-O&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Multipass/Rocky/rocky.qcow2
multipass launch &lt;span class="nt"&gt;--name&lt;/span&gt; rocky file://&lt;span class="nv"&gt;$HOME&lt;/span&gt;/Multipass/Rocky/rocky.qcow2 &lt;span class="nt"&gt;--cloud-init&lt;/span&gt; cloud-config-rocky.yaml
multipass list
multipass sh rocky
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>multipass</category>
      <category>debian</category>
      <category>rocky</category>
      <category>cloudinit</category>
    </item>
    <item>
      <title>Matriz de Roles y Responsabilidades</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Tue, 23 Apr 2024 00:02:32 +0000</pubDate>
      <link>https://dev.to/smashse/matriz-de-roles-y-responsabilidades-59ic</link>
      <guid>https://dev.to/smashse/matriz-de-roles-y-responsabilidades-59ic</guid>
      <description>&lt;p&gt;La conurbación de roles en escuadrones de desarrollo ágil representa la intersección e interdependencia de las Funciones técnicas, como los SRE, los Desarrolladores Frontend y Backend. Esto implica desafíos específicos para los líderes técnicos, que deben navegar en un ambiente donde las fronteras entre las responsabilidades son fluidas y las competencias se superponen. Los desafíos incluyen:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Definición de Responsabilidades:&lt;/strong&gt; La demarcación clara de responsabilidades es compleja cuando los roles comparten tareas, como la optimización del rendimiento, que puede ser una zona gris entre los SRE y los Desarrolladores Backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Desarrollo de Competencias Técnicas:&lt;/strong&gt; La evolución tecnológica exige que los profesionales tengan competencias que trasciendan sus especializaciones tradicionales, como los Desarrolladores Frontend con conocimientos en Backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comunicación Efectiva:&lt;/strong&gt; La estrecha colaboración entre funciones distintas exige una comunicación efectiva para evitar malentendidos y garantizar que todos los miembros del escuadrón estén alineados con los objetivos comunes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gestión de Límites Funcionales:&lt;/strong&gt; Establecer límites claros entre las funciones es esencial para prevenir redundancias y lagunas en las responsabilidades, lo que requiere un liderazgo técnico asertivo y consciente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cultura de Colaboración:&lt;/strong&gt; Promover una cultura de trabajo que valore la colaboración, el aprendizaje continuo y el intercambio de conocimientos es fundamental en un modelo de escuadrón menos jerárquico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adaptación a Cambios Tecnológicos:&lt;/strong&gt; Los líderes técnicos deben estar preparados para guiar a sus equipos a través de cambios tecnológicos rápidos y frecuentes, lo que exige flexibilidad y una mentalidad ágil.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Cuál es el papel de un SRE en un escuadrón?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Un SRE (Ingeniero de Confiabilidad del Sitio) en un escuadrón juega un papel crucial en garantizar la confiabilidad y estabilidad de los sistemas. Aquí están algunas de las responsabilidades e interacciones típicas de un SRE en un escuadrón:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsabilidades:&lt;/strong&gt; El SRE es responsable de garantizar la confiabilidad y estabilidad de los sistemas que el escuadrón está desarrollando y manteniendo. Esto incluye el desarrollo de soluciones de automatización para tareas repetitivas, monitoreo de los sistemas para identificar y responder a incidentes, y planificación de capacidad para garantizar que los sistemas puedan manejar la demanda prevista.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colaboración:&lt;/strong&gt; El SRE trabaja en estrecha colaboración con otros miembros del escuadrón, que pueden incluir desarrolladores, diseñadores de UX, y otros. Pueden interactuar con arquitectos de sistemas para garantizar que los sistemas que se están desarrollando sean escalables y puedan manejar la carga prevista.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relación con Otros Roles:&lt;/strong&gt; El SRE actúa como un puente entre los equipos de desarrollo y operaciones, contribuyendo a la cultura de ingeniería de confiabilidad. Ayudan a garantizar que las prácticas de desarrollo y operaciones estén alineadas con los objetivos de confiabilidad y estabilidad del sistema.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Cuál es el papel de un Desarrollador Frontend en un escuadrón?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Un Desarrollador Frontend en un escuadrón tiene un papel crucial en la creación y manutenimiento de la interfaz de usuario de una aplicación o sitio web. Aquí están algunas de las responsabilidades e interacciones típicas de un Desarrollador Frontend en un escuadrón:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsabilidades:&lt;/strong&gt; El Desarrollador Frontend es responsable de desarrollar una interfaz que permita al usuario lograr sus objetivos de manera intuitiva. Esto incluye la creación de la parte visual e interactiva de los sitios web y aplicaciones, la optimización de la experiencia del usuario, la garantía de responsividad y compatibilidad entre dispositivos y navegadores, y la implementación de SEO.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colaboración:&lt;/strong&gt; El Desarrollador Frontend trabaja en estrecha colaboración con otros miembros del escuadrón, que pueden incluir diseñadores de UI/UX, desarrolladores backend, y otros. Colaboran con los diseñadores de UI/UX para traducir visuales en código y trabajan junto a los desarrolladores backend para integrar APIs y servicios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relación con Otros Roles:&lt;/strong&gt; El Desarrollador Frontend actúa como el puente entre el diseño gráfico y la programación. Impactan directamente en la experiencia del usuario final. Además, también pueden interactuar con el Líder Técnico (Tech Lead), que guía al escuadrón, gestiona el proyecto, garantiza una comunicación fluida, controla el pipeline del proyecto y garantiza las entregas, gestiona el equipo técnico, manteniendo un ambiente de trabajo saludable, investiga nuevas tecnologías y comparte la cultura de la innovación, y asume un papel de mentor, ayudando individualmente a los miembros.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;¿Cuál es el papel de un Desarrollador Backend en un escuadrón?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Un Desarrollador Backend en un escuadrón tiene un papel crucial en la creación y manutenimiento de la lógica del servidor y las funcionalidades de los bastidores de una aplicación o sitio web. Aquí están algunas de las responsabilidades e interacciones típicas de un Desarrollador Backend en un escuadrón:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsabilidades:&lt;/strong&gt; El Desarrollador Backend es responsable de desarrollar, probar y mantener el código que controla el funcionamiento del servidor, la base de datos y otras funcionalidades de los bastidores. Esto incluye la creación e implementación de las reglas de negocio y funcionalidades de un sistema digital, la modelación y gestión de bases de datos relacionales y no relacionales, el desarrollo de APIs que permiten la integración entre front-end y back-end, y la garantía de buen rendimiento, escalabilidad y seguridad de la aplicación.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colaboración:&lt;/strong&gt; El Desarrollador Backend trabaja en estrecha colaboración con otros miembros del escuadrón, que pueden incluir desarrolladores frontend, diseñadores de UI/UX, y otros. Colaboran con los desarrolladores frontend para garantizar que la lógica del servidor soporte la interfaz del usuario.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relación con Otros Roles:&lt;/strong&gt; El Desarrollador Backend es responsable de la funcionalidad ‘invisível’ que soporta el frontend. Desempeñan un papel crucial en la seguridad e integridad de los datos. Además, también pueden interactuar con el Líder Técnico (Tech Lead), que guía al escuadrón, gestiona el proyecto, garantiza una comunicación fluida, controla el pipeline del proyecto y garantiza las entregas, gestiona el equipo técnico, manteniendo un ambiente de trabajo saludable, investiga nuevas tecnologías y comparte la cultura de la innovación, y asume un papel de mentor, ayudando individualmente a los miembros.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterio&lt;/th&gt;
&lt;th&gt;SRE&lt;/th&gt;
&lt;th&gt;Desarrollador Frontend&lt;/th&gt;
&lt;th&gt;Desarrollador Backend&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Responsabilidades&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Garantizar la confiabilidad y estabilidad de los sistemas. - Desarrollar soluciones de automatización. - Monitorear sistemas y responder a incidentes. - Planificación de capacidad y gestión de riesgos.&lt;/td&gt;
&lt;td&gt;- Crear la parte visual e interactiva de sitios web y aplicaciones. - Optimizar la experiencia del usuario. - Asegurar la responsividad y compatibilidad entre dispositivos y navegadores. - Implementar SEO.&lt;/td&gt;
&lt;td&gt;- Desarrollar y mantener el lado del servidor de las aplicaciones. - Gestionar bases de datos y lógica de negocios. - Asegurar la seguridad y rendimiento del sistema. - Integrar APIs y servicios externos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Habilidades Técnicas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Conocimiento en automatización y herramientas de CI/CD. - Habilidades en monitoreo y alertas. - Experiencia con lenguajes de programación y scripts. - Conocimiento en redes y sistemas operativos.&lt;/td&gt;
&lt;td&gt;- Dominio de HTML, CSS y JavaScript. - Experiencia con frameworks como React o Angular. - Conocimiento en diseño responsivo y cross-browser. - Familiaridad con herramientas de diseño como Adobe XD o Sketch.&lt;/td&gt;
&lt;td&gt;- Proficiencia en lenguajes de programación como Java, Python, Ruby o PHP. - Experiencia con frameworks de backend. - Conocimiento en bases de datos SQL y NoSQL. - Habilidades en crear y gestionar APIs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Colaboración&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Trabaja en estrecha colaboración con equipos de desarrollo y operaciones. - Interactúa con arquitectos de sistemas para garantizar la escalabilidad.&lt;/td&gt;
&lt;td&gt;- Colabora con diseñadores de UI/UX para traducir visuales en código. - Trabaja junto a desarrolladores backend para integrar APIs y servicios.&lt;/td&gt;
&lt;td&gt;- Colabora con desarrolladores frontend para garantizar que la lógica del servidor soporte la interfaz del usuario. - Trabaja con equipos de bases de datos y seguridad.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Relación con Otros Roles&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Actúa como puente entre operaciones y desarrollo (DevOps). - Contribuye a la cultura de ingeniería de confiabilidad.&lt;/td&gt;
&lt;td&gt;- Es el puente entre el diseño gráfico y la programación. - Impacta directamente en la experiencia del usuario final.&lt;/td&gt;
&lt;td&gt;- Responsable por la funcionalidad 'invisible' que soporta el frontend. - Desempeña un papel crucial en la seguridad e integridad de los datos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Relación entre los Roles&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Colabora con Desarrolladores Frontend y Backend para garantizar la confiabilidad y estabilidad de los sistemas. - Proporciona retroalimentación y orientación para optimizar el rendimiento y la escalabilidad.&lt;/td&gt;
&lt;td&gt;- Trabaja en conjunto con el Desarrollador Backend para integrar la interfaz del usuario con la lógica del servidor. - Colabora con el SRE para garantizar que la interfaz del usuario sea estable y confiable.&lt;/td&gt;
&lt;td&gt;- Trabaja en conjunto con el Desarrollador Frontend para proporcionar una API estable y eficiente. - Colabora con el SRE para garantizar que la lógica del servidor sea confiable y escalable.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
    </item>
    <item>
      <title>Roles and Responsibilities Matrix</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Sun, 21 Apr 2024 04:21:55 +0000</pubDate>
      <link>https://dev.to/smashse/roles-and-responsibilities-matrix-527p</link>
      <guid>https://dev.to/smashse/roles-and-responsibilities-matrix-527p</guid>
      <description>&lt;p&gt;The conurbation of roles in agile development squads represents the intersection and interdependence of technical functions, such as SREs, Frontend and Backend Developers. This implies specific challenges for technical leaders, who must navigate an environment where the boundaries between responsibilities are fluid and competencies overlap. The challenges include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsibility Definition:&lt;/strong&gt; Clear demarcation of responsibilities is complex when roles share tasks, such as performance optimization, which can be a gray area between SREs and Backend Developers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Technical Competency Development:&lt;/strong&gt; Technological evolution requires professionals to have competencies that transcend their traditional specializations, such as Frontend Developers with knowledge in Backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Effective Communication:&lt;/strong&gt; Close collaboration between distinct functions demands effective communication to avoid misunderstandings and ensure that all squad members are aligned with common goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Functional Boundaries Management:&lt;/strong&gt; Establishing clear boundaries between roles is essential to prevent redundancies and gaps in responsibilities, which requires assertive and conscious technical leadership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collaboration Culture:&lt;/strong&gt; Promoting a work culture that values collaboration, continuous learning, and knowledge sharing is fundamental in a less hierarchical squad model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adaptation to Technological Changes:&lt;/strong&gt; Technical leaders must be prepared to guide their teams through rapid and frequent technological changes, which requires flexibility and an agile mindset.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the role of an SRE in a squad?
&lt;/h2&gt;

&lt;p&gt;An SRE (Site Reliability Engineer) in a squad plays a crucial role in ensuring the reliability and stability of systems. Here are some of the typical responsibilities and interactions of an SRE in a squad:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsibilities:&lt;/strong&gt; The SRE is responsible for ensuring the reliability and stability of the systems that the squad is developing and maintaining. This includes the development of automation solutions for repetitive tasks, monitoring systems to identify and respond to incidents, and capacity planning to ensure that systems can handle the anticipated demand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collaboration:&lt;/strong&gt; The SRE works closely with other squad members, which may include developers, UX designers, and others. They may interact with system architects to ensure that the systems being developed are scalable and can handle the anticipated load.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship with Other Roles:&lt;/strong&gt; The SRE acts as a bridge between the development and operations teams, contributing to the culture of reliability engineering. They help ensure that development and operations practices are aligned with the system's reliability and stability objectives.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the role of a Frontend Developer in a squad?
&lt;/h2&gt;

&lt;p&gt;A Frontend Developer in a squad plays a crucial role in creating and maintaining the user interface of an application or website. Here are some of the typical responsibilities and interactions of a Frontend Developer in a squad:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsibilities:&lt;/strong&gt; The Frontend Developer is responsible for developing an interface that allows the user to achieve their goals intuitively. This includes creating the visual and interactive part of websites and applications, optimizing the user experience, ensuring responsiveness and compatibility across devices and browsers, and implementing SEO.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collaboration:&lt;/strong&gt; The Frontend Developer works closely with other squad members, which may include UI/UX designers, backend developers, and others. They collaborate with UI/UX designers to translate visuals into code and work alongside backend developers to integrate APIs and services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship with Other Roles:&lt;/strong&gt; The Frontend Developer acts as the bridge between graphic design and programming. They directly impact the end user experience. In addition, they may also interact with the Technical Leader (Tech Lead), who guides the squad, manages the project, ensures fluid communication, controls the project pipeline and ensures deliveries, manages the technical team, maintaining a healthy work environment, researches new technologies and shares the culture of innovation, and takes on a mentoring role, helping individual members individually.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is the role of a Backend Developer in a squad?
&lt;/h2&gt;

&lt;p&gt;A Backend Developer in a squad plays a crucial role in creating and maintaining the server logic and backstage functionalities of an application or website. Here are some of the typical responsibilities and interactions of a Backend Developer in a squad:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsibilities:&lt;/strong&gt; The Backend Developer is responsible for developing, testing, and maintaining the code that controls the operation of the server, database, and other backstage functionalities. This includes creating and implementing the business rules and functionalities of a digital system, modeling and managing relational and non-relational databases, developing APIs that allow integration between front-end and back-end, and ensuring good performance, scalability, and security of the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Collaboration:&lt;/strong&gt; The Backend Developer works closely with other squad members, which may include frontend developers, UI/UX designers, and others. They collaborate with frontend developers to ensure that the server logic supports the user interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relationship with Other Roles:&lt;/strong&gt; The Backend Developer is responsible for the 'invisible' functionality that supports the frontend. They play a crucial role in data security and integrity. In addition, they may also interact with the Technical Leader (Tech Lead), who guides the squad, manages the project, ensures fluid communication, controls the project pipeline and ensures deliveries, manages the technical team, maintaining a healthy work environment, researches new technologies and shares the culture of innovation, and takes on a mentoring role, helping individual members.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Criterion&lt;/th&gt;
&lt;th&gt;SRE&lt;/th&gt;
&lt;th&gt;Frontend Developer&lt;/th&gt;
&lt;th&gt;Backend Developer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Responsibilities&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Ensure the reliability and stability of systems. - Develop automation solutions. - Monitor systems and respond to incidents. - Capacity planning and risk management.&lt;/td&gt;
&lt;td&gt;- Create the visual and interactive part of websites and applications. - Optimize the user experience. - Ensure responsiveness and compatibility across devices and browsers. - Implement SEO.&lt;/td&gt;
&lt;td&gt;- Develop and maintain the server side of applications. - Manage databases and business logic. - Ensure system security and performance. - Integrate APIs and external services.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Technical Skills&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Knowledge in automation and CI/CD tools. - Skills in monitoring and alerts. - Experience with programming languages and scripts. - Knowledge in networks and operating systems.&lt;/td&gt;
&lt;td&gt;- Mastery of HTML, CSS and JavaScript. - Experience with frameworks like React or Angular. - Knowledge in responsive and cross-browser design. - Familiarity with design tools like Adobe XD or Sketch.&lt;/td&gt;
&lt;td&gt;- Proficiency in programming languages like Java, Python, Ruby or PHP. - Experience with backend frameworks. - Knowledge in SQL and NoSQL databases. - Skills in creating and managing APIs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Collaboration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Works closely with development and operations teams. - Interacts with system architects to ensure scalability.&lt;/td&gt;
&lt;td&gt;- Collaborates with UI/UX designers to translate visuals into code. - Works alongside backend developers to integrate APIs and services.&lt;/td&gt;
&lt;td&gt;- Collaborates with frontend developers to ensure that the server logic supports the user interface. - Works with database and security teams.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Relationship with Other Roles&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Acts as a bridge between operations and development (DevOps). - Contributes to the culture of reliability engineering.&lt;/td&gt;
&lt;td&gt;- Is the bridge between graphic design and programming. - Directly impacts the end user experience.&lt;/td&gt;
&lt;td&gt;- Responsible for the 'invisible' functionality that supports the frontend. - Plays a crucial role in data security and integrity.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Relationship between Roles&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Collaborates with Frontend and Backend Developers to ensure the reliability and stability of systems. - Provides feedback and guidance to optimize performance and scalability.&lt;/td&gt;
&lt;td&gt;- Works together with the Backend Developer to integrate the user interface with the server logic. - Collaborates with the SRE to ensure that the user interface is stable and reliable.&lt;/td&gt;
&lt;td&gt;- Works together with the Frontend Developer to provide a stable and efficient API. - Collaborates with the SRE to ensure that the server logic is reliable and scalable.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>sre</category>
      <category>frontend</category>
      <category>backend</category>
      <category>squad</category>
    </item>
    <item>
      <title>Matriz de Papéis e Responsabilidades</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Sat, 20 Apr 2024 21:50:34 +0000</pubDate>
      <link>https://dev.to/smashse/matriz-de-papeis-e-responsabilidades-16mh</link>
      <guid>https://dev.to/smashse/matriz-de-papeis-e-responsabilidades-16mh</guid>
      <description>&lt;p&gt;A conurbação de papéis em squads de desenvolvimento ágil representa a interseção e interdependência das funções técnicas, como SRE´s, Desenvolvedores Frontend e Backend. Isso implica desafios específicos para líderes técnicos, que devem navegar por um ambiente onde as fronteiras entre as responsabilidades são fluidas e as competências se sobrepõem. Os desafios incluem:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Definição de Responsabilidades:&lt;/strong&gt; A demarcação clara de responsabilidades é complexa quando as funções compartilham tarefas, como a otimização de desempenho, que pode ser uma área cinzenta entre SRE´s e Desenvolvedores Backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Desenvolvimento de Competências Técnicas:&lt;/strong&gt; A evolução tecnológica exige que os profissionais tenham competências que transcendam suas especializações tradicionais, como Desenvolvedores Frontend com conhecimento em Backend.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comunicação Efetiva:&lt;/strong&gt; A colaboração estreita entre funções distintas demanda uma comunicação eficaz para evitar mal-entendidos e garantir que todos os membros da squad estejam alinhados com os objetivos comuns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gestão de Limites Funcionais:&lt;/strong&gt; Estabelecer limites claros entre as funções é essencial para prevenir redundâncias e lacunas nas responsabilidades, o que requer uma liderança técnica assertiva e consciente.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cultura de Colaboração:&lt;/strong&gt; Promover uma cultura de trabalho que valorize a colaboração, a aprendizagem contínua e o compartilhamento de conhecimento é fundamental em um modelo de squad menos hierárquico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Adaptação a Mudanças Tecnológicas:&lt;/strong&gt; Líderes técnicos devem estar preparados para orientar suas equipes através de mudanças tecnológicas rápidas e frequentes, o que exige flexibilidade e uma mentalidade ágil.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qual é o papel de um SRE em uma squad?
&lt;/h2&gt;

&lt;p&gt;Um SRE (Site Reliability Engineer) em uma squad desempenha um papel crucial na garantia da confiabilidade e estabilidade dos sistemas. Aqui estão algumas das responsabilidades e interações típicas de um SRE em uma squad:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsabilidades:&lt;/strong&gt; O SRE é responsável por garantir a confiabilidade e estabilidade dos sistemas que a squad está desenvolvendo e mantendo. Isso inclui o desenvolvimento de soluções de automação para tarefas repetitivas, monitoramento dos sistemas para identificar e responder a incidentes, e planejamento de capacidade para garantir que os sistemas possam lidar com a demanda prevista.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colaboração:&lt;/strong&gt; O SRE trabalha em estreita colaboração com outros membros da squad, que podem incluir desenvolvedores, designers de UX, e outros. Eles podem interagir com arquitetos de sistemas para garantir que os sistemas que estão sendo desenvolvidos sejam escaláveis e possam lidar com a carga prevista.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relação com Outros Papéis:&lt;/strong&gt; O SRE atua como uma ponte entre as equipes de desenvolvimento e operações, contribuindo para a cultura de engenharia de confiabilidade. Eles ajudam a garantir que as práticas de desenvolvimento e operações estejam alinhadas com os objetivos de confiabilidade e estabilidade do sistema.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qual é o papel de um Desenvolvedor Frontend em uma squad?
&lt;/h2&gt;

&lt;p&gt;Um Desenvolvedor Frontend em uma squad tem um papel crucial na criação e manutenção da interface do usuário de um aplicativo ou site. Aqui estão algumas das responsabilidades e interações típicas de um Desenvolvedor Frontend em uma squad:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsabilidades:&lt;/strong&gt; O Desenvolvedor Frontend é responsável por desenvolver uma interface que permita que o usuário consiga realizar seus objetivos de forma intuitiva. Isso inclui a criação da parte visual e interativa de websites e aplicativos, a otimização da experiência do usuário, a garantia de responsividade e compatibilidade entre dispositivos e navegadores, e a implementação de SEO.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colaboração:&lt;/strong&gt; O Desenvolvedor Frontend trabalha em estreita colaboração com outros membros da squad, que podem incluir designers de UI/UX, desenvolvedores backend, e outros. Eles colaboram com designers de UI/UX para traduzir visuais em código e trabalham junto a desenvolvedores backend para integrar APIs e serviços.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relação com Outros Papéis:&lt;/strong&gt; O Desenvolvedor Frontend atua como a ponte entre o design gráfico e a programação. Eles impactam diretamente a experiência do usuário final. Além disso, eles também podem interagir com o Líder Técnico (Tech Lead), que orienta o squad, gerencia o projeto, garante uma comunicação fluída, controla o pipeline do projeto e garante as entregas, gerencia a equipe técnica, mantendo um ambiente de trabalho saudável, pesquisa novas tecnologias e compartilha a cultura da inovação, e assume um papel de mentor, ajudando individualmente os membros.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qual é o papel de um Desenvolvedor Backend em uma squad?
&lt;/h2&gt;

&lt;p&gt;Um Desenvolvedor Backend em uma squad tem um papel crucial na criação e manutenção da lógica do servidor e das funcionalidades dos bastidores de um aplicativo ou site. Aqui estão algumas das responsabilidades e interações típicas de um Desenvolvedor Backend em uma squad:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsabilidades:&lt;/strong&gt; O Desenvolvedor Backend é responsável por desenvolver, testar e manter o código que controla o funcionamento do servidor, banco de dados e outras funcionalidades dos bastidores. Isso inclui a criação e implementação das regras de negócio e funcionalidades de um sistema digital, a modelagem e gerenciamento de bancos de dados relacionais e não-relacionais, o desenvolvimento de APIs que permitem a integração entre front-end e back-end, e a garantia de boa performance, escalabilidade e segurança da aplicação.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colaboração:&lt;/strong&gt; O Desenvolvedor Backend trabalha em estreita colaboração com outros membros da squad, que podem incluir desenvolvedores frontend, designers de UI/UX, e outros. Eles colaboram com desenvolvedores frontend para garantir que a lógica do servidor suporte a interface do usuário.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Relação com Outros Papéis:&lt;/strong&gt; O Desenvolvedor Backend é responsável pela funcionalidade ‘invisível’ que suporta o frontend. Eles desempenham um papel crucial na segurança e integridade dos dados. Além disso, eles também podem interagir com o Líder Técnico (Tech Lead), que orienta o squad, gerencia o projeto, garante uma comunicação fluída, controla o pipeline do projeto e garante as entregas, gerencia a equipe técnica, mantendo um ambiente de trabalho saudável, pesquisa novas tecnologias e compartilha a cultura da inovação, e assume um papel de mentor, ajudando individualmente os membros.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Critério&lt;/th&gt;
&lt;th&gt;SRE&lt;/th&gt;
&lt;th&gt;Desenvolvedor Frontend&lt;/th&gt;
&lt;th&gt;Desenvolvedor Backend&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Responsabilidades&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Garantir a confiabilidade e estabilidade dos sistemas. - Desenvolver soluções de automação. - Monitorar sistemas e responder a incidentes. - Planejamento de capacidade e gestão de riscos.&lt;/td&gt;
&lt;td&gt;- Criar a parte visual e interativa de websites e aplicativos. - Otimizar a experiência do usuário. - Assegurar a responsividade e compatibilidade entre dispositivos e navegadores. - Implementar SEO.&lt;/td&gt;
&lt;td&gt;- Desenvolver e manter o lado do servidor de aplicações. - Gerenciar bancos de dados e lógica de negócios. - Assegurar segurança e desempenho do sistema. - Integrar APIs e serviços externos.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Habilidades Técnicas&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Conhecimento em automação e ferramentas de CI/CD. - Habilidades em monitoramento e alertas. - Experiência com linguagens de programação e scripts. - Conhecimento em redes e sistemas operacionais.&lt;/td&gt;
&lt;td&gt;- Domínio de HTML, CSS e JavaScript. - Experiência com frameworks como React ou Angular. - Conhecimento em design responsivo e cross-browser. - Familiaridade com ferramentas de design como Adobe XD ou Sketch.&lt;/td&gt;
&lt;td&gt;- Proficiência em linguagens de programação como Java, Python, Ruby ou PHP. - Experiência com frameworks de backend. - Conhecimento em bancos de dados SQL e NoSQL. - Habilidades em criar e gerenciar APIs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Colaboração&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Trabalha em estreita colaboração com equipes de desenvolvimento e operações. - Interage com arquitetos de sistemas para garantir a escalabilidade.&lt;/td&gt;
&lt;td&gt;- Colabora com designers de UI/UX para traduzir visuais em código. - Trabalha junto a desenvolvedores backend para integrar APIs e serviços.&lt;/td&gt;
&lt;td&gt;- Colabora com desenvolvedores frontend para garantir que a lógica do servidor suporte a interface do usuário. - Trabalha com equipes de banco de dados e segurança.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Relação com Outros Papéis&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Atua como ponte entre operações e desenvolvimento (DevOps). - Contribui para a cultura de engenharia de confiabilidade.&lt;/td&gt;
&lt;td&gt;- É a ponte entre o design gráfico e a programação. - Impacta diretamente a experiência do usuário final.&lt;/td&gt;
&lt;td&gt;- Responsável pela funcionalidade 'invisível' que suporta o frontend. - Desempenha um papel crucial na segurança e integridade dos dados.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Relação entre os Papéis&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Colabora com Desenvolvedores Frontend e Backend para garantir a confiabilidade e estabilidade dos sistemas. - Fornece feedback e orientação para otimizar o desempenho e a escalabilidade.&lt;/td&gt;
&lt;td&gt;- Trabalha em conjunto com o Desenvolvedor Backend para integrar a interface do usuário com a lógica do servidor. - Colabora com o SRE para garantir que a interface do usuário seja estável e confiável.&lt;/td&gt;
&lt;td&gt;- Trabalha em conjunto com o Desenvolvedor Frontend para fornecer uma API estável e eficiente. - Colabora com o SRE para garantir que a lógica do servidor seja confiável e escalável.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

</description>
      <category>sre</category>
      <category>backend</category>
      <category>frontend</category>
      <category>squad</category>
    </item>
    <item>
      <title>DevOps Environment on MacOS</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Sat, 05 Feb 2022 06:12:27 +0000</pubDate>
      <link>https://dev.to/smashse/devops-environment-on-macos-4gc7</link>
      <guid>https://dev.to/smashse/devops-environment-on-macos-4gc7</guid>
      <description>&lt;h1&gt;
  
  
  Install Homebrew
&lt;/h1&gt;

&lt;p&gt;Homebrew is a free and open-source package management system for Mac OS X.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brew.sh/"&gt;https://brew.sh/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/bin/bash &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Change default shell to bash
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;chsh &lt;span class="nt"&gt;-s&lt;/span&gt; /bin/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install XCode
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;xcodegen
xcode-select &lt;span class="nt"&gt;--install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Python
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;python
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Firefox ESR
&lt;/h2&gt;

&lt;p&gt;Firefox for your enterprise.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.mozilla.org/pt-BR/firefox/enterprise/"&gt;https://www.mozilla.org/pt-BR/firefox/enterprise/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/cask/firefox"&gt;https://formulae.brew.sh/cask/firefox&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; homebrew/cask-versions/firefox-esr
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Google Chrome
&lt;/h2&gt;

&lt;p&gt;The browser built by Google.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.google.com/intl/pt-BR/chrome/"&gt;https://www.google.com/intl/pt-BR/chrome/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromeenterprise.google/browser/"&gt;https://chromeenterprise.google/browser/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/cask/google-chrome"&gt;https://formulae.brew.sh/cask/google-chrome&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; google-chrome
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install VSCodium
&lt;/h2&gt;

&lt;p&gt;VSCodium is a community-driven, freely-licensed binary distribution of Microsoft’s editor VS Code.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://vscodium.com/#intro"&gt;https://vscodium.com/#intro&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/cask/vscodium"&gt;https://formulae.brew.sh/cask/vscodium&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; vscodium
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Visual Studio Code
&lt;/h2&gt;

&lt;p&gt;Visual Studio Code is a lightweight but powerful source code editor which runs on your desktop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://code.visualstudio.com/"&gt;https://code.visualstudio.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/cask/visual-studio-code"&gt;https://formulae.brew.sh/cask/visual-studio-code&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; visual-studio-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Kubectl
&lt;/h2&gt;

&lt;p&gt;The Kubernetes command-line tool, kubectl, allows you to run commands against Kubernetes clusters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/"&gt;https://kubernetes.io/docs/tasks/tools/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#install-with-homebrew-on-macos"&gt;https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#install-with-homebrew-on-macos&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;kubectl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install Krew and Neat
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Krew
&lt;/h4&gt;

&lt;p&gt;Krew is the plugin manager for kubectl command-line tool.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://krew.sigs.k8s.io/"&gt;https://krew.sigs.k8s.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://krew.sigs.k8s.io/docs/user-guide/setup/install/"&gt;https://krew.sigs.k8s.io/docs/user-guide/setup/install/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;mktemp&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="nv"&gt;OS&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="s1"&gt;'[:upper:]'&lt;/span&gt; &lt;span class="s1"&gt;'[:lower:]'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="nv"&gt;ARCH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'s/x86_64/amd64/'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'s/\(arm\)\(64\)\?.*/\1\2/'&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="s1"&gt;'s/aarch64$/arm64/'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="nv"&gt;KREW&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"krew-&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;OS&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;_&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ARCH&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  curl &lt;span class="nt"&gt;-fsSLO&lt;/span&gt; &lt;span class="s2"&gt;"https://github.com/kubernetes-sigs/krew/releases/latest/download/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;KREW&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.tar.gz"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  &lt;span class="nb"&gt;tar &lt;/span&gt;zxvf &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;KREW&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.tar.gz"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
  ./&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;KREW&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;krew
&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;KREW_ROOT&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="p"&gt;/.krew&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/bin:&lt;/span&gt;&lt;span class="nv"&gt;$PATH&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Neat
&lt;/h4&gt;

&lt;p&gt;Clean up Kubernetes yaml and json output to make it readable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/itaysk/kubectl-neat"&gt;https://github.com/itaysk/kubectl-neat&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/itaysk/kubectl-neat#installation"&gt;https://github.com/itaysk/kubectl-neat#installation&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl krew &lt;span class="nb"&gt;install &lt;/span&gt;neat
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Helm
&lt;/h2&gt;

&lt;p&gt;Helm is the best way to find, share, and use software built for Kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://helm.sh/"&gt;https://helm.sh/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://helm.sh/docs/intro/install/#from-homebrew-macos"&gt;https://helm.sh/docs/intro/install/#from-homebrew-macos&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;helm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Lens
&lt;/h2&gt;

&lt;p&gt;Lens is the most powerful Kubernetes IDE on the market.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://k8slens.dev/"&gt;https://k8slens.dev/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;lens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Kubenav
&lt;/h2&gt;

&lt;p&gt;kubenav is the navigator for your Kubernetes clusters right in your pocket. kubenav is a mobile, desktop and web app to manage Kubernetes clusters and to get an overview of the status of your resources.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.kubenav.io/"&gt;https://docs.kubenav.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.kubenav.io/desktop/getting-started/"&gt;https://docs.kubenav.io/desktop/getting-started/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;kubenav
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Terraform
&lt;/h2&gt;

&lt;p&gt;Build, change, and destroy infrastructure with Terraform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.hashicorp.com/terraform"&gt;https://learn.hashicorp.com/terraform&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.hashicorp.com/tutorials/terraform/install-cli"&gt;https://learn.hashicorp.com/tutorials/terraform/install-cli&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew tap hashicorp/tap
brew &lt;span class="nb"&gt;install &lt;/span&gt;hashicorp/tap/terraform
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Terraform-Docs
&lt;/h2&gt;

&lt;p&gt;Generate Terraform modules documentation in various formats.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://terraform-docs.io/"&gt;https://terraform-docs.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://terraform-docs.io/user-guide/installation/#homebrew"&gt;https://terraform-docs.io/user-guide/installation/#homebrew&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew tap terraform-docs/tap
brew &lt;span class="nb"&gt;install &lt;/span&gt;terraform-docs/tap/terraform-docs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install AWScli
&lt;/h2&gt;

&lt;p&gt;Official Amazon AWS command-line interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws.amazon.com/cli/"&gt;https://aws.amazon.com/cli/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/formula/awscli"&gt;https://formulae.brew.sh/formula/awscli&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;awscli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Azure-cli
&lt;/h2&gt;

&lt;p&gt;Official Azure command-line interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/cli/azure/overview"&gt;https://docs.microsoft.com/cli/azure/overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/formula/azure-cli"&gt;https://formulae.brew.sh/formula/azure-cli&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;azure-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Google Cloud SDK
&lt;/h2&gt;

&lt;p&gt;Official Google Cloud command-line interface.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloud.google.com/sdk/"&gt;https://cloud.google.com/sdk/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/cask/google-cloud-sdk"&gt;https://formulae.brew.sh/cask/google-cloud-sdk&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; google-cloud-sdk
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Multipass
&lt;/h2&gt;

&lt;p&gt;Ubuntu VMs on demand for any workstation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://multipass.run/"&gt;https://multipass.run/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://multipass.run/docs/installing-on-macos"&gt;https://multipass.run/docs/installing-on-macos&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/cask/multipass"&gt;https://formulae.brew.sh/cask/multipass&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; multipass
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Podman
&lt;/h2&gt;

&lt;p&gt;Manage pods, containers, and container images.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://podman.io/"&gt;https://podman.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://podman.io/getting-started/installation"&gt;https://podman.io/getting-started/installation&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;podman
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;podman machine init
podman machine start
podman info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Rancher Desktop
&lt;/h2&gt;

&lt;p&gt;Kubernetes and Container Management on the Desktop.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rancherdesktop.io/"&gt;https://rancherdesktop.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://iongion.github.io/podman-desktop-companion/"&gt;https://iongion.github.io/podman-desktop-companion/&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://api.github.com/repos/rancher-sandbox/rancher-desktop/releases/latest | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s1"&gt;'browser_'&lt;/span&gt; | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt; &lt;span class="nt"&gt;-f4&lt;/span&gt; | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"x86_64.dmg"&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-1&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;wget &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="nv"&gt;$i&lt;/span&gt; &lt;span class="nt"&gt;-O&lt;/span&gt; &lt;span class="s2"&gt;"rancher_desktop.dmg"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp
hdiutil attach rancher_desktop.dmg &lt;span class="nt"&gt;-mountpoint&lt;/span&gt; /Volumes/Rancher
&lt;span class="nb"&gt;cp&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /Volumes/Rancher/Rancher&lt;span class="k"&gt;*&lt;/span&gt;.app /Volumes/Rancher/Applications/
umount /Volumes/Rancher
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"
#DOCKER
alias docker='podman'"&lt;/span&gt; | &lt;span class="nb"&gt;tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install ITerm2
&lt;/h2&gt;

&lt;p&gt;Terminal emulator as alternative to Apple's Terminal app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.iterm2.com/"&gt;https://www.iterm2.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/cask/iterm2"&gt;https://formulae.brew.sh/cask/iterm2&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--cask&lt;/span&gt; iterm2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Powerline-Go
&lt;/h2&gt;

&lt;p&gt;Beautiful and useful low-latency prompt for your shell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/justjanne/powerline-go"&gt;https://github.com/justjanne/powerline-go&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://formulae.brew.sh/formula/powerline-go"&gt;https://formulae.brew.sh/formula/powerline-go&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;brew &lt;span class="nb"&gt;install &lt;/span&gt;powerline-go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'
#POWERLINE
function _update_ps1() {
    PS1="$($GOPATH/bin/powerline-go -error $? -jobs $(jobs -p | wc -l))"
}

if [ "$TERM" != "linux" ] &amp;amp;&amp;amp; [ -f "$GOPATH/bin/powerline-go" ]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi'&lt;/span&gt; | &lt;span class="nb"&gt;tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; ~/.profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;source&lt;/span&gt; ~/.profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install the PowerlineSymbols font from:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/powerline/powerline/tree/develop/font"&gt;https://github.com/powerline/powerline/tree/develop/font&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In ITerm2 Preferences, go to "Text", "Font" and enable "Use a different font for non-ASCII text" and then select "PowerlineSymbols" as "Non-ASCII Font".&lt;/p&gt;

</description>
      <category>mac</category>
      <category>devops</category>
      <category>homebrew</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Multipass, Microk8s, Prometheus and Grafana</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Sun, 29 Aug 2021 02:37:13 +0000</pubDate>
      <link>https://dev.to/smashse/multipass-microk8s-prometheus-and-grafana-4m25</link>
      <guid>https://dev.to/smashse/multipass-microk8s-prometheus-and-grafana-4m25</guid>
      <description>&lt;h1&gt;
  
  
  Requirements for this POC
&lt;/h1&gt;

&lt;p&gt;This POC will use Multipass to create instances to install Grafana, Prometheus and Microk8s, we will install Metrics Server, Kube-State-Metrics and Istio + Basic Prometheus and then we will make metrics used by our main instance with Prometheus.&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Multipass
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;multipass &lt;span class="nt"&gt;--classic&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  MicroK8s
&lt;/h1&gt;

&lt;p&gt;MicroK8s is the smallest, fastest, fully-conformant Kubernetes that tracks upstream releases and makes clustering trivial. MicroK8s is great for offline development, prototyping, and testing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a MicroK8s template
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'#cloud-config
runcmd:
 - apt update --fix-missing
 - snap refresh
 - snap install microk8s --classic
 - microk8s status --wait-ready
 - microk8s enable dns ingress'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; cloud-config-microk8s.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a MicroK8s instance
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass launch focal &lt;span class="nt"&gt;-n&lt;/span&gt; microk8s &lt;span class="nt"&gt;-c&lt;/span&gt; 2 &lt;span class="nt"&gt;-m&lt;/span&gt; 2G &lt;span class="nt"&gt;-d&lt;/span&gt; 10G &lt;span class="nt"&gt;--cloud-init&lt;/span&gt; cloud-config-microk8s.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Export the current MicroK8s configuration for use with Kubectl
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Create the folder to store the configuration of the Kubernetes cluster in the test instance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube/configs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Export the MicroK8s configuration in the test instance to the created folder
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass &lt;span class="nb"&gt;exec &lt;/span&gt;microk8s &lt;span class="nb"&gt;sudo &lt;/span&gt;microk8s config &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube/configs/config-microk8s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Use in your session the configuration exported as default for use with Kubectl
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;KUBECONFIG&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube/configs/config-microk8s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install Kubectl
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;kubectl &lt;span class="nt"&gt;--classic&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get no
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME       STATUS   ROLES    AGE   VERSION
microk8s   Ready    &amp;lt;none&amp;gt;   1m    v1.21.3-3+90fd5f3d2aea0a
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add an IP alias of the test instance to teste.info
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass info microk8s | &lt;span class="nb"&gt;grep &lt;/span&gt;IPv4 | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 2 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;":"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;:blank:] | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/$/     microk8s.info/'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/hosts
multipass info microk8s | &lt;span class="nb"&gt;grep &lt;/span&gt;IPv4 | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 2 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;":"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;:blank:] | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/$/     teste.info/'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Deploy a test application
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; https://raw.githubusercontent.com/smashse/playbook/master/HOWTO/KUBERNETES/COMBO/example_combo_full.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Grafana
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Create a Grafana template
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'#cloud-config
runcmd:
 - echo "deb https://packages.grafana.com/oss/deb stable main" &amp;gt; /etc/apt/sources.list.d/grafana.list
 - wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
 - cho "DEBIAN_FRONTEND=noninteractive" &amp;gt;&amp;gt; /etc/environment
 - source /etc/environment &amp;amp;&amp;amp; source /etc/environment
 - apt update --fix-missing
 - apt -y install grafana
 - systemctl daemon-reload
 - systemctl start grafana-server
 - systemctl status grafana-server
 - systemctl enable grafana-server.service'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; cloud-config-grafana.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a Grafana instance
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass launch focal &lt;span class="nt"&gt;-n&lt;/span&gt; grafana &lt;span class="nt"&gt;-c&lt;/span&gt; 2 &lt;span class="nt"&gt;-m&lt;/span&gt; 1G &lt;span class="nt"&gt;-d&lt;/span&gt; 10G &lt;span class="nt"&gt;--cloud-init&lt;/span&gt; cloud-config-grafana.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add an IP alias of the test instance to grafana.info
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass info grafana | &lt;span class="nb"&gt;grep &lt;/span&gt;IPv4 | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 2 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;":"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;:blank:] | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/$/     grafana.info/'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add a Data Source
&lt;/h3&gt;

&lt;p&gt;To add the Data Source to Prometheus with the URL "&lt;a href="http://prometheus.info:9090"&gt;http://prometheus.info:9090&lt;/a&gt;", just follow the steps as per the documentation below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://grafana.com/docs/grafana/latest/datasources/add-a-data-source/"&gt;https://grafana.com/docs/grafana/latest/datasources/add-a-data-source/&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Prometheus
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Create a Prometheus template
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'#cloud-config
runcmd:
 - echo "deb https://packages.grafana.com/oss/deb stable main" &amp;gt; /etc/apt/sources.list.d/grafana.list
 - wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
 - cho "DEBIAN_FRONTEND=noninteractive" &amp;gt;&amp;gt; /etc/environment
 - source /etc/environment &amp;amp;&amp;amp; source /etc/environment
 - apt update --fix-missing
 - apt -y install prometheus
 - systemctl daemon-reload
 - systemctl start prometheus
 - systemctl status prometheus
 - systemctl enable prometheus.service'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; cloud-config-prometheus.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a Prometheus instance
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass launch focal &lt;span class="nt"&gt;-n&lt;/span&gt; prometheus &lt;span class="nt"&gt;-c&lt;/span&gt; 2 &lt;span class="nt"&gt;-m&lt;/span&gt; 1G &lt;span class="nt"&gt;-d&lt;/span&gt; 10G &lt;span class="nt"&gt;--cloud-init&lt;/span&gt; cloud-config-prometheus.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Add an IP alias of the test instance to prometheus.info
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass info prometheus | &lt;span class="nb"&gt;grep &lt;/span&gt;IPv4 | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 2 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;":"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;:blank:] | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/$/     prometheus.info/'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Deploy the Metrics Server
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget &lt;span class="nt"&gt;-c&lt;/span&gt; https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'/- --secure-port=443/a\        - --kubelet-insecure-tls'&lt;/span&gt; components.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; components.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get deployment metrics-server &lt;span class="nt"&gt;-n&lt;/span&gt; kube-system
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Deploy the Kube-State-Metrics
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; https://github.com/kubernetes/kube-state-metrics/tree/master/examples/standard &lt;span class="nt"&gt;--recursive&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OR&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm &lt;span class="nb"&gt;install &lt;/span&gt;kube-state-metrics prometheus-community/kube-state-metrics &lt;span class="nt"&gt;--namespace&lt;/span&gt; monitoring &lt;span class="nt"&gt;--create-namespace&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Istio + Basic Prometheus
&lt;/h1&gt;

&lt;p&gt;Istio provides a basic sample installation to quickly get Prometheus up and running:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; https://raw.githubusercontent.com/istio/istio/release-1.11/samples/addons/prometheus.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: prometheus-ingress
  namespace: istio-system
spec:
  rules:
  - host: prometheus.istio.info
    http:
      paths:
      - backend:
          service:
            name: prometheus
            port:
              number: 9090
        path: /
        pathType: Prefix'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; prometheus_ingress.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; prometheus_ingress.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass info microk8s | &lt;span class="nb"&gt;grep &lt;/span&gt;IPv4 | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 2 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;":"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;:blank:] | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s1"&gt;'s/$/     prometheus.istio.info/'&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Allow a Prometheus server(prometheus.info) to scrape selected time series from Prometheus server running in Microk8s(prometheus.istio.info).
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Access the Prometheus instance
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;multipass &lt;span class="nb"&gt;exec &lt;/span&gt;prometheus bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuring federation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo echo&lt;/span&gt; &lt;span class="s2"&gt;"  - job_name: 'federate'
    scrape_interval: 15s

    honor_labels: true
    metrics_path: '/federate'

    params:
      'match[]':
        - '{job="&lt;/span&gt;prometheus&lt;span class="s2"&gt;"}'
        - '{__name__=~"&lt;/span&gt;job:.&lt;span class="k"&gt;*&lt;/span&gt;&lt;span class="s2"&gt;"}'

    static_configs:
      - targets:
        - 'prometheus.istio.info'"&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/prometheus/prometheus.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Restart Prometheus
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl restart prometheus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Create test deployments
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s1"&gt;'africa
america
asia
europa
oceania'&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; lista
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget &lt;span class="nt"&gt;-c&lt;/span&gt; https://raw.githubusercontent.com/smashse/playbook/master/HOWTO/KUBERNETES/COMBO/example_combo_full.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;lista.txt&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s2"&gt;"s/teste/&lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;/"&lt;/span&gt; example_combo_full.yaml &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; app-&lt;span class="nv"&gt;$i&lt;/span&gt;.yaml &lt;span class="p"&gt;;&lt;/span&gt; kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; app-&lt;span class="nv"&gt;$i&lt;/span&gt;.yaml &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;i &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;lista.txt&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;do &lt;/span&gt;multipass info microk8s | &lt;span class="nb"&gt;grep &lt;/span&gt;IPv4 | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 2 &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;":"&lt;/span&gt; | &lt;span class="nb"&gt;tr&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;:blank:] | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="s2"&gt;"s/&lt;/span&gt;&lt;span class="nv"&gt;$/&lt;/span&gt;&lt;span class="s2"&gt;     &lt;/span&gt;&lt;span class="nv"&gt;$i&lt;/span&gt;&lt;span class="s2"&gt;.info/"&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; &lt;span class="nt"&gt;-a&lt;/span&gt; /etc/hosts &lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;done&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://istio.io/latest/docs/ops/integrations/prometheus/"&gt;https://istio.io/latest/docs/ops/integrations/prometheus/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kubernetes-sigs/metrics-server"&gt;https://github.com/kubernetes-sigs/metrics-server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/kubernetes/kube-state-metrics"&gt;https://github.com/kubernetes/kube-state-metrics&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/helm/charts/tree/master/stable/prometheus-operator/templates/grafana/dashboards-1.14"&gt;https://github.com/helm/charts/tree/master/stable/prometheus-operator/templates/grafana/dashboards-1.14&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://prometheus.io/docs/prometheus/latest/federation/"&gt;https://prometheus.io/docs/prometheus/latest/federation/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://grafana.com/grafana/dashboards/10000"&gt;https://grafana.com/grafana/dashboards/10000&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://grafana.com/grafana/dashboards/10856"&gt;https://grafana.com/grafana/dashboards/10856&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://grafana.com/grafana/dashboards/10858"&gt;https://grafana.com/grafana/dashboards/10858&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://grafana.com/grafana/dashboards/8588"&gt;https://grafana.com/grafana/dashboards/8588&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Install Powerline for Powershell</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Sun, 16 May 2021 20:46:58 +0000</pubDate>
      <link>https://dev.to/smashse/install-powerline-for-powershell-3a1m</link>
      <guid>https://dev.to/smashse/install-powerline-for-powershell-3a1m</guid>
      <description>&lt;p&gt;I always used &lt;strong&gt;Powerline&lt;/strong&gt; in &lt;strong&gt;Linux&lt;/strong&gt; but I didn't know it had an option for &lt;strong&gt;Windows&lt;/strong&gt;, very nice :-)&lt;/p&gt;

&lt;p&gt;Powerline provides a customized command prompt experience providing Git status color-coding and prompts.&lt;/p&gt;

&lt;h1&gt;
  
  
  Set execution policy
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Get-ExecutionPolicy -List
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope Process
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope LocalMachine
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Install &lt;strong&gt;Chocolatey&lt;/strong&gt;
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Install &lt;strong&gt;Git&lt;/strong&gt; on &lt;strong&gt;Windows&lt;/strong&gt;
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;choco install git wget unzip code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Install &lt;strong&gt;Powerline&lt;/strong&gt; in &lt;strong&gt;PowerShell&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Using &lt;strong&gt;PowerShell&lt;/strong&gt;, install &lt;strong&gt;Posh-Git&lt;/strong&gt; and &lt;strong&gt;Oh-My-Posh&lt;/strong&gt;:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  If you are using &lt;strong&gt;PowerShell Core&lt;/strong&gt;, install &lt;strong&gt;PSReadline&lt;/strong&gt;:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install-Module -Name PSReadLine -Scope CurrentUser -Force -SkipPublisherCheck
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  In your &lt;strong&gt;PowerShell&lt;/strong&gt; profile, add the following to the end of the file and Customize your PowerShell prompt:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo 'Import-Module posh-git
Import-Module oh-my-posh
Set-PoshPrompt -Theme paradox' &amp;gt; $PROFILE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;List of themes:&lt;/strong&gt; &lt;a href="https://ohmyposh.dev/docs/themes/"&gt;https://ohmyposh.dev/docs/themes/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Powerline fonts:&lt;/strong&gt; &lt;a href="https://github.com/powerline/fonts"&gt;https://github.com/powerline/fonts&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd ${HOME}\Downloads\
wget -c https://github.com/powerline/fonts/archive/refs/heads/master.zip
unzip .\master.zip
Set-ExecutionPolicy Bypass -Scope Process -Force; powershell ${HOME}\Downloads\fonts-master\install.ps1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set &lt;strong&gt;Ubuntu Mono derivative Powerline&lt;/strong&gt; as your font:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"colorScheme"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Solarized Dark"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"commandline"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"powershell.exe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"fontFace"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Ubuntu Mono derivative Powerline"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"guid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{61c54bbd-c2c6-5271-96e7-009a87ff44bf}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"hidden"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Windows PowerShell"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Source:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://github.com/powerline/powerline"&gt;https://github.com/powerline/powerline&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.microsoft.com/en-us/windows/terminal/tutorials/powerline-setup"&gt;https://docs.microsoft.com/en-us/windows/terminal/tutorials/powerline-setup&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>#Pulumi with #GitHub Actions to provision a cluster on #AWS with #EKS</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Fri, 08 Jan 2021 10:36:42 +0000</pubDate>
      <link>https://dev.to/smashse/pulumi-with-github-actions-to-provision-a-cluster-on-aws-with-eks-31ma</link>
      <guid>https://dev.to/smashse/pulumi-with-github-actions-to-provision-a-cluster-on-aws-with-eks-31ma</guid>
      <description>&lt;p&gt;This is a model for creating in Python an EKS environment with the AWS provider on Pulumi using GitHub Actions.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Access "&lt;a href="https://github.com/smashse/pulumi-iac-eks"&gt;https://github.com/smashse/pulumi-iac-eks&lt;/a&gt;"&lt;/li&gt;
&lt;li&gt;Click in "Use this template"&lt;/li&gt;
&lt;li&gt;Create a new repository from template "pulumi-iac-eks"(example "pulumi-iac-eks") and chose as "Private"&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Install AWS (Optional)
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp
ssh-keygen &lt;span class="nt"&gt;-f&lt;/span&gt; pulumi_eks_py_access
curl &lt;span class="s2"&gt;"&amp;lt;https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip&amp;gt;"&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="s2"&gt;"awscliv2.zip"&lt;/span&gt;
unzip awscliv2.zip &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo&lt;/span&gt; ./aws/install
aws configure
aws ec2 import-key-pair &lt;span class="nt"&gt;--public-key-material&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;pulumi_eks_py_access.pub | &lt;span class="nb"&gt;base64&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;--key-name&lt;/span&gt; pulumi_eks_py_access &lt;span class="nt"&gt;--region&lt;/span&gt; us-west-2 &lt;span class="nt"&gt;--profile&lt;/span&gt; yourprofile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Download the PULUMI template
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Pulumi
&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Pulumi
git clone https://github.com/yourgithubuser/pulumi-iac-eks.git
&lt;span class="nb"&gt;cd &lt;/span&gt;pulumi-iac-eks
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Pulumi on Linux by running the installation script:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.pulumi.com | sh &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Python VirtualEnv:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nt"&gt;-y&lt;/span&gt; &lt;span class="nb"&gt;install &lt;/span&gt;python3-virtualenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a "pulumi_eks_py" project:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Pulumi/pulumi-iac-eks/pulumi_eks_py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you want to change the name given to Kubernetes cluster, execute the command below in the template folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"s/"&lt;/span&gt;template-&lt;span class="s2"&gt;"/"&lt;/span&gt;desiredname-&lt;span class="s2"&gt;"/g"&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Python Requirements
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; venv venv
&lt;span class="nb"&gt;source &lt;/span&gt;venv/bin/activate
python &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--upgrade&lt;/span&gt; pip setuptools wheel
python &lt;span class="nt"&gt;-m&lt;/span&gt; pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; requirements.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Perform an initial deployment, run the following commands:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi login
pulumi stack init pulumi_eks_py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set AWS_PROFILE:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi config &lt;span class="nb"&gt;set &lt;/span&gt;aws:profile yourprofile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set AWS_REGION:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi config &lt;span class="nb"&gt;set &lt;/span&gt;aws:region us-west-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Review the "pulumi_eks_py" project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi preview
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Enable Workflow
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Pulumi/pulumi-iac-eks/.github/workflows
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mv &lt;/span&gt;pull_request.yml.template pull_request.yml
&lt;span class="nb"&gt;mv &lt;/span&gt;push.yml.template push.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Environment Variables
&lt;/h2&gt;

&lt;p&gt;There are a number of Environment Variables that can be set to interact with the action:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;By default, Pulumi will try to connect to the &lt;a href="https://app.pulumi.com/"&gt;Pulumi SaaS&lt;/a&gt;. For this to happen, the GitHub Action needs to be passed a "PULUMI_ACCESS_TOKEN".&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Amazon Web Services (AWS)
&lt;/h2&gt;

&lt;p&gt;For AWS, you'll need to create or use an existing IAM user for your action. Please see &lt;a href="https://pulumi.io/quickstart/aws/setup.html#environment-variables"&gt;the Pulumi documentation page&lt;/a&gt; for pointers to the relevant AWS documentation for doing this.&lt;/p&gt;

&lt;p&gt;As soon as you have an AWS user in hand, you'll set the environment variables "AWS_ACCESS_KEY_ID" and "AWS_SECRET_ACCESS_KEY" using GitHub Secrets, and then consume them in your action.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Go to Settings&amp;gt; Secrets and add "PULUMI_ACCESS_TOKEN", "AWS_ACCESS_KEY_ID" and "AWS_SECRET_ACCESS_KEY" as new repository secret.&lt;/p&gt;

&lt;h2&gt;
  
  
  Commit the changes
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Pulumi/pulumi-iac-eks/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git add &lt;span class="k"&gt;*&lt;/span&gt;
git add .github/workflows/&lt;span class="k"&gt;*&lt;/span&gt;
git add .pulumi/&lt;span class="k"&gt;*&lt;/span&gt;
git add pulumi_eks_py/&lt;span class="k"&gt;*&lt;/span&gt;
git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"pulumi-iac-eks"&lt;/span&gt;
git push
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Access EKS Kubernetes cluster
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;kubectl &lt;span class="nt"&gt;--classic&lt;/span&gt;
aws eks list-clusters &lt;span class="nt"&gt;--region&lt;/span&gt; us-west-2 &lt;span class="nt"&gt;--profile&lt;/span&gt; yourprofile
aws eks &lt;span class="nt"&gt;--region&lt;/span&gt; us-west-2 &lt;span class="nt"&gt;--profile&lt;/span&gt; yourprofile update-kubeconfig &lt;span class="nt"&gt;--name&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;pulumi stack output cluster-name&lt;span class="si"&gt;)&lt;/span&gt;
kubectl get po &lt;span class="nt"&gt;--all-namespaces&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Destroy the "pulumi_eks_py" project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Pulumi/pulumi-iac-eks/pulumi_eks_py
pulumi destroy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Remove the "pulumi_eks_py" project from Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/Pulumi/pulumi-iac-eks/pulumi_eks_py
pulumi stack &lt;span class="nb"&gt;rm &lt;/span&gt;pulumi_eks_py
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Source:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/get-started/"&gt;https://www.pulumi.com/docs/get-started/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/reference/pkg/"&gt;https://www.pulumi.com/docs/reference/pkg/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/intro/concepts/state/"&gt;https://www.pulumi.com/docs/intro/concepts/state/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/guides/continuous-delivery/github-actions/"&gt;https://www.pulumi.com/docs/guides/continuous-delivery/github-actions/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/pulumi/actions"&gt;https://github.com/pulumi/actions&lt;/a&gt;&lt;/p&gt;

</description>
      <category>iac</category>
      <category>pulumi</category>
      <category>github</category>
      <category>eks</category>
    </item>
    <item>
      <title>Install KUBERNETES (EKS-D)</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Mon, 07 Dec 2020 17:38:40 +0000</pubDate>
      <link>https://dev.to/smashse/install-kubernetes-eks-d-ik6</link>
      <guid>https://dev.to/smashse/install-kubernetes-eks-d-ik6</guid>
      <description>&lt;h1&gt;
  
  
  Install KUBERNETES (EKS-D)
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;OS:&lt;/strong&gt; UBUNTU&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Kubectl
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;kubectl &lt;span class="nt"&gt;--classic&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Install Amazon EKS Distro (EKS-D)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;eks &lt;span class="nt"&gt;--classic&lt;/span&gt; &lt;span class="nt"&gt;--edge&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;eks (1.18/edge) v1.18.9 from Canonical✓ installed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check the status
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eks status &lt;span class="nt"&gt;--wait-ready&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;eks is running
high-availability: no
  datastore master nodes: 127.0.0.1:19001
  datastore standby nodes: none
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Give execution permission to the current user
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-a&lt;/span&gt; &lt;span class="nt"&gt;-G&lt;/span&gt; eks &lt;span class="nv"&gt;$USER&lt;/span&gt;
&lt;span class="nb"&gt;sudo chown&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nt"&gt;-R&lt;/span&gt; &lt;span class="nv"&gt;$USER&lt;/span&gt; ~/.kube
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Export the current EKS-D configuration information for use with Kubectl
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="nv"&gt;$HOME&lt;/span&gt;/.kube
&lt;span class="nb"&gt;sudo &lt;/span&gt;eks config &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; .kube/config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Inspect the installation
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eks inspect | &lt;span class="nb"&gt;grep &lt;/span&gt;running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  Service snap.eks.daemon-cluster-agent is running
  Service snap.eks.daemon-containerd is running
  Service snap.eks.daemon-apiserver is running
  Service snap.eks.daemon-apiserver-kicker is running
  Service snap.eks.daemon-control-plane-kicker is running
  Service snap.eks.daemon-proxy is running
  Service snap.eks.daemon-kubelet is running
  Service snap.eks.daemon-scheduler is running
  Service snap.eks.daemon-controller-manager is running
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Check the version of Containerd
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eks ctr &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ctr github.com/containerd/containerd v1.3.7
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Server / Client version
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eks ctr version
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client:
  Version:  v1.3.7
  Revision: 8fba4e9a7d01810a393d5d25a3621dc101981175

Server:
  Version:  v1.3.7
  Revision: 8fba4e9a7d01810a393d5d25a3621dc101981175
  UUID: 339017b3-570e-43bd-a528-4a08123868ca
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Access Kubernetes
&lt;/h3&gt;

&lt;p&gt;EKS-D comes with its own version of Kubectl to access Kubernetes.  Below we will cover 2 different forms of access to view the "nodes" and "services":&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conventional&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eks kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME           STATUS   ROLES    AGE   VERSION
myuser         Ready    &amp;lt;none&amp;gt;   33m   v1.18.9-eks-1-18-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;eks kubectl get services
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.152.183.1   &amp;lt;none&amp;gt;        443/TCP   33m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Recommended&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME           STATUS   ROLES    AGE   VERSION
myuser         Ready    &amp;lt;none&amp;gt;   33m   v1.18.9-eks-1-18-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get services
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
kubernetes   ClusterIP   10.152.183.1   &amp;lt;none&amp;gt;        443/TCP   33m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; As shown, the 2 forms have the same result, but from this point on we will only use the "Recommended" with Kubectl.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy a test application
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl create deployment nginx &lt;span class="nt"&gt;--image&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deployment.apps/nginx created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get pods
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME                    READY   STATUS    RESTARTS   AGE
nginx-f89759699-2w75l   1/1     Running   0          33s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Starting and stopping EKS-D
&lt;/h2&gt;

&lt;p&gt;EKS-D will continue to run until you decide to stop it. You can stop and start with the commands below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;eks stop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Stopped.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;eks start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Started.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Basic information of your Kubernetes cluster
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Server/Client version
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl version &lt;span class="nt"&gt;--short&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Client Version: v1.19.4
Server Version: v1.18.9-1+c787d4d0c397b8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Cluster information
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl cluster-info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Kubernetes master is running at https://192.168.254.100:16443
CoreDNS is running at https://192.168.254.100:16443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Metrics-server is running at https://192.168.254.100:16443/api/v1/namespaces/kube-system/services/https:metrics-server:/proxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Configuration information
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl config view
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED
    server: https://192.168.254.100:16443
  name: microk8s-cluster
contexts:
- context:
    cluster: microk8s-cluster
    user: admin
  name: microk8s
current-context: microk8s
kind: Config
preferences: {}
users:
- name: admin
  user:
    token: REDACTED
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt; To view the access token, use the "--flatten=true" option.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  View the nodes
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl get nodes &lt;span class="nt"&gt;-w&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NAME           STATUS   ROLES    AGE   VERSION
myuser         Ready    &amp;lt;none&amp;gt;   33h   v1.18.9-eks-1-18-1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Information about a particular node
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl describe node myuser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Source:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://microk8s.io/"&gt;https://microk8s.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://microk8s.io/docs/commands"&gt;https://microk8s.io/docs/commands&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://snapcraft.io/eks"&gt;https://snapcraft.io/eks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://snapcraft.io/kubectl"&gt;https://snapcraft.io/kubectl&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://ubuntu.com/blog/install-amazon-eks-distro-anywhere"&gt;https://ubuntu.com/blog/install-amazon-eks-distro-anywhere&lt;/a&gt;&lt;/p&gt;

</description>
      <category>eks</category>
      <category>ubuntu</category>
      <category>snap</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Another IaC tool ...</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Wed, 07 Oct 2020 21:33:47 +0000</pubDate>
      <link>https://dev.to/smashse/another-iac-tool-408b</link>
      <guid>https://dev.to/smashse/another-iac-tool-408b</guid>
      <description>&lt;h1&gt;
  
  
  Modern Infrastructure as Code.
&lt;/h1&gt;

&lt;p&gt;Create, deploy, and manage infrastructure on any cloud using familiar programming languages and tool&lt;/p&gt;

&lt;p&gt;In this example we will use Pulumi Crosswalk for AWS to easily create a Topic, Queues and a User with access permissions to them. Pulumi Crosswalk for AWS is a collection of libraries that use automatic well-architected best practices to make common infrastructure-as-code tasks in AWS easier and more secure.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://asciinema.org/a/qubHolAxGcNEnbqj3GIjVsq6M"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Rij8fSQN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://asciinema.org/a/qubHolAxGcNEnbqj3GIjVsq6M.svg" alt="asciicast"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Install Pulumi on Linux by running the installation script:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://get.pulumi.com | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Node.js:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;snap &lt;span class="nb"&gt;install &lt;/span&gt;node &lt;span class="nt"&gt;--classic&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Create a "pulumi_my" project:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir &lt;/span&gt;pulumi_my &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;cd &lt;/span&gt;pulumi_my &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; pulumi new aws-typescript &lt;span class="nt"&gt;--emoji&lt;/span&gt; &lt;span class="nt"&gt;--generate-only&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nano &lt;span class="nt"&gt;-c&lt;/span&gt; index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;pulumi&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@pulumi/pulumi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@pulumi/aws&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;awsx&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@pulumi/awsx&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Create an AWS resource (IAM)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;mypolicy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;iam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Policy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_policy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_policy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;policy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Version&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2012-10-17&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Statement&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Action&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sns:*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Effect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Allow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Resource&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:sns:my-region:my-account:my_topic&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Action&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sqs:*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Effect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Allow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Resource&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:sqs:my-region:my-account:my_queue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Action&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sqs:*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Effect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Allow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Resource&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:sqs:my-region:my-account:my_queue_dlq&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myuser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;iam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;User&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;policyAttachment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;iam&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;PolicyAttachment&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_policy_attachment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_policy_attachment&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;users&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;myuser&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;policyArn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;mypolicy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;arn&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Create an AWS resource (SNS)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myTopic&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sns&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Topic&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_topic&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_topic&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;deliveryPolicy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`{
  "http": {
    "defaultHealthyRetryPolicy": {
      "numRetries": 3,
      "numNoDelayRetries": 0,
      "minDelayTarget": 20,
      "maxDelayTarget": 20,
      "numMinDelayRetries": 0,
      "numMaxDelayRetries": 0,
      "backoffFunction": "linear"
    },
    "disableSubscriptionOverrides": false
  }
}
`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;kmsMasterKeyId&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;alias/aws/sns&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;myproduction&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// Create an AWS resource (SQS)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myQueueDlq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sqs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Queue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_queue_dlq&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_queue_dlq&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;delaySeconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;maxMessageSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messageRetentionSeconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;86400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;receiveWaitTimeSeconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;policy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Version&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2012-10-17&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:sqs:my-region:my-account:my_queue_dlq/SQSDefaultPolicy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Statement&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;__owner_statement&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Action&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sqs:*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Effect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Allow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Resource&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:sqs:my-region:my-account:my_queue_dlq&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Principal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;AWS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:iam::my-account:user/my_user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;myproduction&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;dependsOn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;myuser&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mypolicy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;policyAttachment&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;myQueue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nx"&gt;aws&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sqs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;Queue&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_queue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;my_queue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;delaySeconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;maxMessageSize&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;2048&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;messageRetentionSeconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;86400&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;receiveWaitTimeSeconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;policy&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Version&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2012-10-17&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:sqs:my-region:my-account:my_queue/SQSDefaultPolicy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Statement&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Sid&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;__owner_statement&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Action&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sqs:*&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Effect&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Allow&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Resource&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:sqs:my-region:my-account:my_queue&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Principal&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
          &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;AWS&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
            &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;arn:aws:iam::my-account:user/my_user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
          &lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
  &lt;span class="c1"&gt;//redrivePolicy: "{\"deadLetterTargetArn\":\"arn:aws:sqs:my-region:my-account:my_queue_dlq\",\"maxReceiveCount\":\"4\"}",&lt;/span&gt;
  &lt;span class="na"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;Environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;myproduction&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;dependsOn&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;myuser&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;mypolicy&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;policyAttachment&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;myQueueDlq&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;


&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;iamUserName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;myuser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;iamAccesskeyID&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;myAccessKey&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;iamAccesskeySecret&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;myAccessKey&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sesSmtpPasswordV4&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arnPolicy&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;mypolicy&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;arnTopic&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;myTopic&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;urlQueueDlq&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;myQueueDlq&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;urlQueue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;myQueue&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Change "my-region" and "my-account"
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Replace "my-region" with the region of your choice, for example, if you wanted to use "us-east-2" AKA "Ohio" it would look like below:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"s/"&lt;/span&gt;my-region&lt;span class="s2"&gt;"/"&lt;/span&gt;us-east-2&lt;span class="s2"&gt;"/g"&lt;/span&gt; index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Replace "my-account" with your AWS account ID without the "-", for example if it were "5555-5555-5555" it would look like below:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"s/"&lt;/span&gt;my-account&lt;span class="s2"&gt;"/"&lt;/span&gt;555555555555&lt;span class="s2"&gt;"/g"&lt;/span&gt; index.ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Perform an initial deployment, run the following commands:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi stack init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Review the "pulumi_my" project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi preview
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set AWS_PROFILE:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi config &lt;span class="nb"&gt;set &lt;/span&gt;aws:profile my-profile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Set AWS_REGION:
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi config &lt;span class="nb"&gt;set &lt;/span&gt;aws:region us-east-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Deploy the Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi up
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Destroy the "pulumi_my" project
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi destroy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Remove the "pulumi_my" project from Stack
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pulumi stack &lt;span class="nb"&gt;rm &lt;/span&gt;dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Source:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/get-started/"&gt;https://www.pulumi.com/docs/get-started/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/guides/crosswalk/aws/"&gt;https://www.pulumi.com/docs/guides/crosswalk/aws/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/reference/pkg/"&gt;https://www.pulumi.com/docs/reference/pkg/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.pulumi.com/docs/intro/concepts/state/"&gt;https://www.pulumi.com/docs/intro/concepts/state/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>iac</category>
      <category>pulumi</category>
      <category>aws</category>
      <category>typescript</category>
    </item>
    <item>
      <title> Terraform + GCP + MicroK8s</title>
      <dc:creator>Anderson Gama</dc:creator>
      <pubDate>Wed, 12 Aug 2020 14:23:43 +0000</pubDate>
      <link>https://dev.to/smashse/terraform-gcp-microk8s-459j</link>
      <guid>https://dev.to/smashse/terraform-gcp-microk8s-459j</guid>
      <description>&lt;p&gt;MicroK8s allows you to specify the amount of join and the token that will be used, then it opens up the opportunity for some interesting things, just imagine easily provisioning in Terraform an infrastructure with a simple multi-node cluster?&lt;/p&gt;

&lt;p&gt;I showed in a previous post on #Linkedin the configuration "#MicroK8s+#K9S+#Octant": &lt;a href="https://www.linkedin.com/posts/andersongama_microk8sk9soctant-sudo-apt-y-install-activity-6697607973889425408-9Gm-"&gt;https://www.linkedin.com/posts/andersongama_microk8sk9soctant-sudo-apt-y-install-activity-6697607973889425408-9Gm-&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Based on that thought up there you would define the "cloud-init"/"user_data" of "control-ship" that during provisioning will have the IP "10.158.0.2" that it should have the following token "868f88ee477f893de65c99d906e767dcaf59ce10fe30795ef9b2d11af4faefa" that was generated with a:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; | &lt;span class="nb"&gt;sha256sum&lt;/span&gt; | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 1 &lt;span class="nt"&gt;-d&lt;/span&gt; -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Just out of curiosity if you were going to do it manually it would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;microk8s add-node &lt;span class="nt"&gt;--token-ttl&lt;/span&gt; 999 &lt;span class="nt"&gt;--token&lt;/span&gt; &lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;date&lt;/span&gt; | &lt;span class="nb"&gt;sha256sum&lt;/span&gt; | &lt;span class="nb"&gt;cut&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; 1 &lt;span class="nt"&gt;-d&lt;/span&gt; -&lt;span class="sb"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For the "cargo-ship" nodes to be created only after the "control-ship" in the provisioning of instances, just put "depends_on = [aws_instance.control_instance]" if it is AWS and "depends_on = [google_compute_instance.control_instance]" if it is GCP.&lt;/p&gt;

&lt;p&gt;For the control-ship:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;#cloud-config&lt;/span&gt;
&lt;span class="c1"&gt;#control-ship&lt;/span&gt;
&lt;span class="na"&gt;runcmd&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo echo "DEBIAN_FRONTEND=noninteractive" &amp;gt;&amp;gt; /etc/environment&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo source /etc/environment &amp;amp;&amp;amp; source /etc/environment&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo apt update --fix-missing&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo apt -y snap snapd&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo snap refresh&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo snap install microk8s --classic&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo microk8s status --wait-ready&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo microk8s add-node --token-ttl 999 --token 868f88ee477f893de65c99d906e767dcaf59ce10fe30795ef9b2d11af4faefa&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For cargo-ship:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;#cloud-config&lt;/span&gt;
&lt;span class="c1"&gt;#cargo-ship&lt;/span&gt;
&lt;span class="na"&gt;runcmd&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo echo "DEBIAN_FRONTEND=noninteractive" &amp;gt;&amp;gt; /etc/environment&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo source /etc/environment &amp;amp;&amp;amp; source /etc/environment&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo apt update --fix-missing&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo apt -y snap snapd&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo snap refresh&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo snap install microk8s --classic&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo microk8s status --wait-ready&lt;/span&gt;
 &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;sudo microk8s join 10.158.0.2:25000/868f88ee477f893de65c99d906e767dcaf59ce10fe30795ef9b2d11af4faefa&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note: If you found it interesting, you can take the template for #GCP "&lt;a href="https://github.com/smashse/iac-public/tree/master/IAC/GCP/template_terraform_gcp_microk8s"&gt;https://github.com/smashse/iac-public/tree/master/IAC/GCP/template_terraform_gcp_microk8s&lt;/a&gt;" and execute it inside the folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"s/template/desiredname/g"&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.&lt;span class="k"&gt;*&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instructions for setting up your environment with GCP on Linux: &lt;a href="https://github.com/smashse/iac-public/tree/master/IAC/GCP"&gt;https://github.com/smashse/iac-public/tree/master/IAC/GCP&lt;/a&gt;&lt;/p&gt;

</description>
      <category>terraform</category>
      <category>gcp</category>
      <category>microk8s</category>
    </item>
  </channel>
</rss>
