<?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: Evgeniy Frolov</title>
    <description>The latest articles on DEV Community by Evgeniy Frolov (@evgeniy_frolov_0f08da03fb).</description>
    <link>https://dev.to/evgeniy_frolov_0f08da03fb</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%2F3290182%2F3056bb4e-12b8-4347-acbb-df416d1d60de.jpg</url>
      <title>DEV Community: Evgeniy Frolov</title>
      <link>https://dev.to/evgeniy_frolov_0f08da03fb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/evgeniy_frolov_0f08da03fb"/>
    <language>en</language>
    <item>
      <title>werf as a Kaniko alternative for image building in Kubernetes for your CI</title>
      <dc:creator>Evgeniy Frolov</dc:creator>
      <pubDate>Tue, 24 Jun 2025 09:02:54 +0000</pubDate>
      <link>https://dev.to/evgeniy_frolov_0f08da03fb/werf-as-a-kaniko-alternative-for-image-building-in-kubernetes-for-your-ci-d42</link>
      <guid>https://dev.to/evgeniy_frolov_0f08da03fb/werf-as-a-kaniko-alternative-for-image-building-in-kubernetes-for-your-ci-d42</guid>
      <description>&lt;h2&gt;
  
  
  What is Kaniko and why was it needed?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/GoogleContainerTools/kaniko" rel="noopener noreferrer"&gt;Kaniko&lt;/a&gt; is a tool for building OCI-compliant container images &lt;strong&gt;inside a container&lt;/strong&gt;, developed by Google. Its main selling point is that you don't need root privileges or a Docker daemon to run it. It has gained widespread adoption as a solution for building images in Kubernetes, particularly on platforms such as GitHub Actions and GitLab CI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kaniko's benefits:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security: No root privileges required (rootless).&lt;/li&gt;
&lt;li&gt;Simplicity: Easy to run as a Job or container in Kubernetes.&lt;/li&gt;
&lt;li&gt;Compatibility: Supports regular Dockerfiles.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Kaniko is no longer supported — what's next?
&lt;/h2&gt;

&lt;p&gt;In June 2025, the public Kaniko repository was archived and became read-only, which effectively means its active support and development have ended.&lt;/p&gt;

&lt;p&gt;While some forks have already emerged (most notably, the one by &lt;a href="https://github.com/chainguard-dev/kaniko" rel="noopener noreferrer"&gt;Chainguard&lt;/a&gt;), they are primarily focused on maintenance (bug fixes and security) rather than active development. That is why many users are on the hunt for a new tool (or will be in the foreseeable future) to replace Kaniko.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here are the most popular Kaniko alternatives:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/moby/buildkit" rel="noopener noreferrer"&gt;BuildKit&lt;/a&gt; by Docker/Moby (especially when used with docker buildx).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/containers/buildah" rel="noopener noreferrer"&gt;Buildah&lt;/a&gt; by Red Hat (part of the Podman ecosystem). By the way, it just became a CNCF Sandbox project in January 2025.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why you should try werf and how to get started
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://werf.io/" rel="noopener noreferrer"&gt;werf&lt;/a&gt; is an Open Source, production-ready, higher-level tool designed not only for building but also for delivering container images to Kubernetes, with an emphasis on &lt;strong&gt;reproducibility&lt;/strong&gt;, &lt;strong&gt;efficient caching&lt;/strong&gt;, and &lt;strong&gt;CI/CD integration&lt;/strong&gt;. It works with any CI system you prefer and is a &lt;a href="https://www.cncf.io/projects/werf/" rel="noopener noreferrer"&gt;CNCF Sandbox project&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Here's what werf brings to the table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A Kubernetes-native architecture;&lt;/li&gt;
&lt;li&gt;Support for rootless Buildah or BuildKit as the build backends;&lt;/li&gt;
&lt;li&gt;Transparent handling of cache and artifacts;&lt;/li&gt;
&lt;li&gt;Seamless integration with other software delivery tools for Kubernetes, including GitLab, GitHub Actions, and Argo CD.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Being a higher-level, opinionated solution, werf goes far beyond a simple building block like Kaniko and helps you tackle the following CI/CD challenges:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Secure and efficient image building;&lt;/li&gt;
&lt;li&gt;Automatic caching and tagging;&lt;/li&gt;
&lt;li&gt;Reliable deployment of Helm charts and release management in Kubernetes;&lt;/li&gt;
&lt;li&gt;Distribution of release artifacts;&lt;/li&gt;
&lt;li&gt;Smart container registry cleanup;&lt;/li&gt;
&lt;li&gt;Quick integration with GitHub and GitLab.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, how do you integrate werf into a CI/CD system? Typically, the integration process only requires adding the &lt;code&gt;werf converge&lt;/code&gt; command to your pipeline. It will build the image, push it to the registry, and deploy it to the Kubernetes cluster.&lt;/p&gt;

&lt;h2&gt;
  
  
  werf usage examples
&lt;/h2&gt;

&lt;p&gt;To give you a more practical idea of how werf integrates with existing CI systems, here are two configurations. The following &lt;code&gt;.github/workflows/converge.yml&lt;/code&gt; file lets you easily integrate werf into GitHub Actions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name: prod
on:
  push:
    branches:
      - main

jobs:
  prod:
    name: prod
    runs-on: arc-runner-set
    container:
      image: registry.werf.io/werf/werf:2-stable-ubuntu
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - run: |
          . "$(werf ci-env github --as-file)"
          werf converge
        env:
          WERF_ENV: prod
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          WERF_KUBECONFIG_BASE64: ${{ secrets.KUBECONFIG_BASE64 }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And here is how you can integrate werf into your GitLab CI/CD pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;stages:
  - prod

default:
  image:
    name: "registry.werf.io/werf/werf:2-stable-ubuntu"
    pull_policy: always
  before_script:
    - source "$(werf ci-env gitlab --as-file)"
  tags: ["&amp;lt;GitLab Runner tag&amp;gt;"]

prod:
  stage: prod
  script:
    - werf converge
  environment:
    name: prod
  rules:
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH &amp;amp;&amp;amp; $CI_PIPELINE_SOURCE != "schedule"
      when: manual

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more detailed instructions on using werf to deploy your applications to Kubernetes using a preferred CI/CD system, refer to the project's official &lt;a href="https://werf.io/getting_started/" rel="noopener noreferrer"&gt;Getting Started guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wuat0a1f3x2eklfbt2u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8wuat0a1f3x2eklfbt2u.png" alt="Getting started" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The documentation covers numerous use cases, offers interactive scenarios, and provides ready-to-use CI configurations. It is a good fit for beginners as well as experienced DevOps engineers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With Kaniko's development at a standstill, many people are probably looking for alternatives. Beyond the obvious options, such as BuildKit and Buildah, one can go a step further: if you require a CI-first approach with native Kubernetes integration and are interested in additional out-of-the-box CI/CD features, consider giving werf a try!&lt;/p&gt;

</description>
      <category>werf</category>
      <category>kaniko</category>
      <category>kubernetes</category>
      <category>gitlab</category>
    </item>
  </channel>
</rss>
