<?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: mateus sousa</title>
    <description>The latest articles on DEV Community by mateus sousa (@jmateusousa).</description>
    <link>https://dev.to/jmateusousa</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%2F1535142%2F9d8fe300-3e4d-44ba-97bb-a6ff2f7514ef.png</url>
      <title>DEV Community: mateus sousa</title>
      <link>https://dev.to/jmateusousa</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jmateusousa"/>
    <language>en</language>
    <item>
      <title>Karpenter Headlamp Plugin</title>
      <dc:creator>mateus sousa</dc:creator>
      <pubDate>Tue, 14 Oct 2025 13:26:11 +0000</pubDate>
      <link>https://dev.to/jmateusousa/karpenter-headlamp-plugin-597h</link>
      <guid>https://dev.to/jmateusousa/karpenter-headlamp-plugin-597h</guid>
      <description>&lt;p&gt;This mothy was lauch the Karpenter Headlamp Plugin, this Headlamp plugin adds Karpenter-specific custom resources to the Headlamp UI, helping users visualize, understand, and manage autoscaling decisions in a more intuitive way.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;NodeClass Visualization:
Clean UI to view Karpenter NodeClass CRs
Shows key attributes (subnet selectors, IAM role, etc.)
Status and condition rendering in a human-readable format&lt;/li&gt;
&lt;li&gt;NodeClaim &amp;amp; NodePool Support:
View and inspect NodeClaims and NodePools
See constraints like CPU, requirements, disruption etc.
Real-time status monitoring and configuration details&lt;/li&gt;
&lt;li&gt;Pending Pod Dashboard:
Displays pending pods blocked from scheduling
Shows unmet requirements
Highlights why pods couldn't be scheduled&lt;/li&gt;
&lt;li&gt;CRD Editing:
Use Headlamp’s editor to configure Karpenter CRDs
Includes schema validation and diff preview&lt;/li&gt;
&lt;li&gt;Metrics Integration:
Prometheus integration for comprehensive metrics visualization
Resource Usage, Allowed Disruptions and Pending Pods visualization (NodePools)
Creation Rate and Provisioning Latency visualization (Scaling View)&lt;/li&gt;
&lt;li&gt;Maps View:
See relationship between Karpenter Resources like NodeClasses, NodePool and NodeClaims with core Kubernetes resources like Pods, Nodes etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How to use&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Please see the plugins/karpenter/README.md for instructions on how to use.&lt;/p&gt;

&lt;p&gt;for more detalis see:&lt;br&gt;
&lt;a href="https://kubernetes.io/blog/2025/10/06/introducing-headlamp-plugin-for-karpenter/" rel="noopener noreferrer"&gt;https://kubernetes.io/blog/2025/10/06/introducing-headlamp-plugin-for-karpenter/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Integrating Atlantis with OpenTofu.</title>
      <dc:creator>mateus sousa</dc:creator>
      <pubDate>Mon, 27 May 2024 16:39:06 +0000</pubDate>
      <link>https://dev.to/jmateusousa/integrating-atlantis-with-opentofu-lnd</link>
      <guid>https://dev.to/jmateusousa/integrating-atlantis-with-opentofu-lnd</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbj02yeyd7m1ddd2i4si.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdbj02yeyd7m1ddd2i4si.png" alt="opentofu" width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Due to the Terraform license change, many companies are migrating their IAC processes to OpenTofu, with this in mind and knowing that many of them use Atlantis and Terraform as infrastructure delivery automation, I created this documentation showing what to do to integrate Atlantis with OpenTofu.&lt;/p&gt;

&lt;p&gt;Stack: Atlantis, Terragrunt, OpenTofu, Github, ALB, EKS.&lt;/p&gt;

&lt;p&gt;We will implement it with your &lt;a href="https://www.runatlantis.io/docs/deployment.html#kubernetes-helm-chart"&gt;Helm chart&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;1 - Add the runatlantis repository.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo add runatlantis https://runatlantis.github.io/helm-charts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;2 - Create file &lt;code&gt;values.yaml&lt;/code&gt; and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm inspect values runatlantis/atlantis &amp;gt; values.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;3 - Edit the file values.yaml and add your credentials access and secret which will be used in the Atlantis webhook configuration:&lt;/p&gt;

&lt;p&gt;See as create a &lt;a href="https://docs.github.com/pt/apps/creating-github-apps/about-creating-github-apps"&gt;GitHubApp&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;githubApp:
  id: "CHANGE ME"
  key: |
    -----BEGIN RSA PRIVATE KEY-----    
            "CHANGE ME"
    -----END RSA PRIVATE KEY-----
  slug: atlantis
# secret webhook Atlantis  
  secret: "CHANGE ME"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;4 - Enter the org and repository from github that Atlantis will interact in orgAllowlist:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# All repositories the org
orgAllowlist: github.com/MY-ORG/*

or
# Just one repository
orgAllowlist: github.com/MY-ORG/MY-REPO-IAC

or
# All repositories that start with MY-REPO-IAC-
orgAllowlist: github.com/MY-ORG/MY-REPO-IAC-*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;5 - Now let’s configure the script that will be executed upon startup of the Atlantis init pod.&lt;/p&gt;

&lt;p&gt;In this step we download and install Terragrunt and OpenTofu, as well as include their binaries in the shared dir &lt;code&gt;/plugins&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;initConfig:
  enabled: true
  image: alpine:latest
  imagePullPolicy: IfNotPresent
  # sharedDir is set as env var INIT_SHARED_DIR
  sharedDir: /plugins
  workDir: /tmp
  sizeLimit: 250Mi
  # example of how the script can be configured to install tools/providers required by the atlantis pod
  script: |
    #!/bin/sh
    set -eoux pipefail# terragrunt
    TG_VERSION="0.55.10"
    TG_SHA256_SUM="1ad609399352348a41bb5ea96fdff5c7a18ac223742f60603a557a54fc8c6cff"
    TG_FILE="${INIT_SHARED_DIR}/terragrunt"
    wget https://github.com/gruntwork-io/terragrunt/releases/download/v${TG_VERSION}/terragrunt_linux_amd64 -O "${TG_FILE}"
    echo "${TG_SHA256_SUM} ${TG_FILE}" | sha256sum -c
    chmod 755 "${TG_FILE}"
    terragrunt -v

    # OpenTofu
    TF_VERSION="1.6.2"
    TF_FILE="${INIT_SHARED_DIR}/tofu"
    wget https://github.com/opentofu/opentofu/releases/download/v${TF_VERSION}/tofu_${TF_VERSION}_linux_amd64.zip
    unzip tofu_${TF_VERSION}_linux_amd64.zip
    mv tofu ${INIT_SHARED_DIR}
    chmod 755 "${TF_FILE}"
    tofu -v
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;6 - Here we configure the envs to avoid downloading alternative versions of Terraform and indicate to Terragrunt where it should fetch the OpenTofu binary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# envs
environment: 
  ATLANTIS_TF_DOWNLOAD: false
  TERRAGRUNT_TFPATH: /plugins/tofu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;7 - Last but not least, here we specify which Atlantis-side configurations we will have for the repositories.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# repository config
repoConfig: |
  ---
  repos:
  - id: /.*/
    apply_requirements: [approved, mergeable]
    allow_custom_workflows: true
    allowed_overrides: [workflow, apply_requirements, delete_source_branch_on_merge]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;8 - Configure Atlantis webhook ingress, in the example below we are using the AWS ALB.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# ingress config
ingress:
  annotations:
    alb.ingress.kubernetes.io/backend-protocol: HTTP
    alb.ingress.kubernetes.io/certificate-arn: arn:aws:acm:certificate
    alb.ingress.kubernetes.io/group.name: external-atlantis
    alb.ingress.kubernetes.io/healthcheck-path: /healthz
    alb.ingress.kubernetes.io/healthcheck-port: "80"
    alb.ingress.kubernetes.io/healthcheck-protocol: HTTP
    alb.ingress.kubernetes.io/listen-ports: '[{"HTTPS":443}]'
    alb.ingress.kubernetes.io/scheme: internet-facing
    alb.ingress.kubernetes.io/ssl-redirect: "443"
    alb.ingress.kubernetes.io/success-codes: "200"
    alb.ingress.kubernetes.io/target-type: ip
  apiVersion: networking.k8s.io/v1
  enabled: true
  host: atlantis.your.domain
  ingressClassName: aws-ingress
  path: /*
  pathType: ImplementationSpecific
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save all changes made to &lt;code&gt;values.yaml&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;9 - Using one of the Atlantis options custom workflows, we can create a file &lt;code&gt;atlantis.yaml&lt;/code&gt; in the root folder of your repository, the example below should meet most scenarios, adapt as needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;version: 3
automerge: true
parallel_plan: true
parallel_apply: false
projects:
- name: terragrunt
  dir: .
  workspace: terragrunt
  delete_source_branch_on_merge: true
  autoplan:
    enabled: false
  apply_requirements: [mergeable, approved]
  workflow: terragrunt
workflows:
  terragrunt:
    plan:
      steps:
      - env:
          name: TF_IN_AUTOMATION
          value: 'true'
      - run: find . -name '.terragrunt-cache' | xargs rm -rf
      - run: terragrunt init -reconfigure
      - run:
          command: terragrunt plan -input=false -out=$PLANFILE
          output: strip_refreshing
    apply:  
      steps:      
        - run: terragrunt apply $PLANFILE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;10 - Now let’s go to the installation itself, search for the available versions of Atlantis:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm search repo runatlantis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace &lt;code&gt;CHART-VERSION&lt;/code&gt; with the version you want to install and run the command below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm upgrade -i atlantis runatlantis/atlantis --version CHART-VERSION -f values.yaml --create-namespace atlantis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, see as configure Atlantis &lt;a href="https://www.runatlantis.io/docs/configuring-webhooks.html?source=post_page-----85ca0fbe45e5--------------------------------#github-github-enterprise"&gt;webhook on github&lt;/a&gt; repository.&lt;/p&gt;

&lt;p&gt;See as Atlantis &lt;a href="https://www.runatlantis.io/docs/using-atlantis.html?source=post_page-----85ca0fbe45e5--------------------------------"&gt;work&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Share it with your friends =)&lt;/p&gt;

&lt;p&gt;Find out more at:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.runatlantis.io/guide.html"&gt;https://www.runatlantis.io/guide.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://opentofu.org/docs/"&gt;https://opentofu.org/docs/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/runatlantis/atlantis/issues/3741"&gt;https://github.com/runatlantis/atlantis/issues/3741&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>iac</category>
      <category>opentofu</category>
      <category>atlantis</category>
    </item>
  </channel>
</rss>
