<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>kpt Documentation on kpt documentation</title><link>https://deploy-preview-4458--kptdocs.netlify.app/</link><description>Recent content in kpt Documentation on kpt documentation</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-4458--kptdocs.netlify.app/index.xml" rel="self" type="application/rss+xml"/><item><title/><link>https://deploy-preview-4458--kptdocs.netlify.app/faq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/faq/</guid><description>&lt;h1 id="faq">
 FAQ
 &lt;a href="#faq" class="anchor-link">#&lt;/a>
&lt;/h1>&lt;h3 id="what-is-the-roadmap-for-kpt">
 What is the roadmap for kpt?
 &lt;a href="#what-is-the-roadmap-for-kpt" class="anchor-link">#&lt;/a>
&lt;/h3>&lt;p>Please visit the 
&lt;a href="https://github.com/kptdev/kpt/blob/main/docs/ROADMAP.md" target="_blank">roadmap document&lt;/a> and the 
&lt;a href="https://github.com/kptdev/kpt/milestones" target="_blank">kpt milestones&lt;/a>.&lt;/p>
&lt;h3 id="how-is-kpt-different-from-other-solutions">
 How is kpt different from other solutions?
 &lt;a href="#how-is-kpt-different-from-other-solutions" class="anchor-link">#&lt;/a>
&lt;/h3>&lt;p>Think of configuration as an API or data in a database. kpt can operate on configuration
in storage, git or OCI.&lt;/p>
&lt;p>Rather than expressing configuration AS code or templates that generate configuration,
kpt represents 
&lt;a href="https://github.com/kptdev/kpt/blob/main/docs/design-docs/06-config-as-data.md" target="_blank">Configuration as Data&lt;/a>. In particular, it represents configuration
as YAML or JSON objects adhering to 
&lt;a href="https://github.com/kubernetes/design-proposals-archive/blob/main/architecture/resource-management.md" target="_blank">The Kubernetes Resource Model&lt;/a>, the same as the
live state in Kubernetes, which enables novel remedies to configuration drift.&lt;/p></description></item><item><title/><link>https://deploy-preview-4458--kptdocs.netlify.app/guides/tenant-onboarding/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/guides/tenant-onboarding/</guid><description>&lt;h1 id="tenant-onboarding">
 Tenant onboarding
 &lt;a href="#tenant-onboarding" class="anchor-link">#&lt;/a>
&lt;/h1>


&lt;div class="alert alert-warning">
 
 
 
 &lt;strong>&amp;#9888; Warning:&lt;/strong>
 
 

 
 
 This guide is a work in progress and may not fully reflect the
current state of kpt. It is due for a rewrite.
&lt;/div>

&lt;p>We have seen that in large organizations using kubernetes, there is a platform
team (or infrastructure team) that is responsible for managing the kubernetes
clusters. Typically a kubernetes cluster is shared by multiple teams to run
different types of workloads. One of the common use-cases platform teams have
is onboarding a new tenant on the kubernetes cluster. In this guide, you will
learn - how you can use kpt to address the tenant use-case. Though this guide
focuses on the tenant use-case, the pattern for package workflow discussed here
can be applied to other use cases as well.&lt;/p></description></item><item><title/><link>https://deploy-preview-4458--kptdocs.netlify.app/guides/value-propagation/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/guides/value-propagation/</guid><description>&lt;h1 id="value-propagation-pattern">
 Value propagation pattern
 &lt;a href="#value-propagation-pattern" class="anchor-link">#&lt;/a>
&lt;/h1>&lt;p>Generating a string value and propagating that value to another place
(or many other places) in your configuration is a very common pattern.
In this guide, we will go through the recommended technique to
do this value propagation using our 
&lt;a href="https://catalog.kpt.dev/function-catalog/starlark/v0.5/" target="_blank">starlark&lt;/a> and 
&lt;a href="https://catalog.kpt.dev/function-catalog/apply-replacements/v0.1/" target="_blank">apply-replacements&lt;/a>
KRM functions.&lt;/p>
&lt;h2 id="string-generation-function">
 String generation function
 &lt;a href="#string-generation-function" class="anchor-link">#&lt;/a>
&lt;/h2>&lt;p>Sometimes, the value that we need to propagate is a concatenation of
other values that come from various other resource fields. In order
to generate the value we need to propagate, we can make use of the

&lt;a href="https://catalog.kpt.dev/function-catalog/starlark/v0.5/" target="_blank">starlark&lt;/a> function.&lt;/p></description></item><item><title/><link>https://deploy-preview-4458--kptdocs.netlify.app/guides/variant-constructor-pattern/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/guides/variant-constructor-pattern/</guid><description>&lt;h1 id="variant-construction-pattern">
 Variant construction pattern
 &lt;a href="#variant-construction-pattern" class="anchor-link">#&lt;/a>
&lt;/h1>&lt;p>If you look at the config workflows, you will notice that creating a variant
of a package is a very frequent operation, so reducing the steps
required to create a variant can have significant benefits for the
package consumers. In this guide, we will look at some techniques
that a package author can use to enable automatic variant construction of a package.&lt;/p>
&lt;h2 id="types-of-packages">
 Types of packages
 &lt;a href="#types-of-packages" class="anchor-link">#&lt;/a>
&lt;/h2>&lt;p>kpt packages comes in two flavors: &lt;code>abstract package&lt;/code> and
&lt;code>deployable instance&lt;/code>. An &lt;code>abstract&lt;/code> package is a reususable package that
is used to create deployable instances that can be deployed to a
kubernetes cluster. In programming language terms, you can think of an &lt;code>abstract&lt;/code>
packages as the class and &lt;code>deployable instance&lt;/code> as the instances of the class.
&lt;code>deployable&lt;/code> instances of package are also referred to as &lt;code>variant&lt;/code> of the package.&lt;/p></description></item><item><title/><link>https://deploy-preview-4458--kptdocs.netlify.app/installation/kpt-cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/installation/kpt-cli/</guid><description>&lt;h1 id="installation">
 Installation
 &lt;a href="#installation" class="anchor-link">#&lt;/a>
&lt;/h1>&lt;p>Users can get kpt CLI in a variety of ways:&lt;/p>
&lt;h2 id="binaries">
 Binaries
 &lt;a href="#binaries" class="anchor-link">#&lt;/a>
&lt;/h2>&lt;p>Download pre-compiled binaries:&lt;/p>
&lt;ul>
&lt;li>
&lt;a href="https://github.com/kptdev/kpt/releases/download/v1.0.0-beta.59/kpt_linux_amd64" target="_blank">Linux (amd64)&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/kptdev/kpt/releases/download/v1.0.0-beta.59/kpt_linux_arm64" target="_blank">Linux (arm64)&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/kptdev/kpt/releases/download/v1.0.0-beta.59/kpt_darwin_amd64" target="_blank">MacOS (amd64)&lt;/a>&lt;/li>
&lt;li>
&lt;a href="https://github.com/kptdev/kpt/releases/download/v1.0.0-beta.59/kpt_darwin_arm64" target="_blank">MacOS (arm64)&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>Optionally verify the 
&lt;a href="https://slsa.dev/" target="_blank">SLSA3 signatures&lt;/a> generated using the OpenSSF&amp;rsquo;s

&lt;a href="https://github.com/slsa-framework/slsa-github-generator" target="_blank">slsa-framework/slsa-github-generator&lt;/a> during the release
process. To verify a release binary:&lt;/p>
&lt;ol>
&lt;li>Install the verification tool from 
&lt;a href="https://github.com/slsa-framework/slsa-verifier#installation" target="_blank">slsa-framework/slsa-verifier#installation&lt;/a>.&lt;/li>
&lt;li>Download the signature file &lt;code>multiple.intoto.jsonl&lt;/code> from the 
&lt;a href="https://github.com/kptdev/kpt/releases" target="_blank">GitHub releases page&lt;/a>.&lt;/li>
&lt;li>Run the verifier:&lt;/li>
&lt;/ol>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-shell" data-lang="shell">&lt;span style="display:flex;">&lt;span>slsa-verifier verify-artifact --provenance-path multiple.intoto.jsonl --source-uri github.com/kptdev/kpt --source-versioned-tag &amp;lt;the-tag&amp;gt; kpt_&amp;lt;os&amp;gt;_&amp;lt;arch&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>On Linux and MacOS, make it executable:&lt;/p></description></item><item><title/><link>https://deploy-preview-4458--kptdocs.netlify.app/installation/migration/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/installation/migration/</guid><description>&lt;h2 id="migrating-from-kpt-v039-to-v10">
 Migrating from kpt &lt;code>v0.39&lt;/code> to &lt;code>v1.0&lt;/code>
 &lt;a href="#migrating-from-kpt-v039-to-v10" class="anchor-link">#&lt;/a>
&lt;/h2>&lt;ul>
&lt;li>
&lt;a href="#Before-you-begin">Before you begin&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#What%27s-new-and-changed?">What&amp;rsquo;s new and changed?&lt;/a>
&lt;ul>
&lt;li>
&lt;a href="#CLI-changes">CLI changes&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#Kptfile-schema-changes">Kptfile schema changes&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#pkg">&lt;code>pkg&lt;/code>&lt;/a>
&lt;ul>
&lt;li>
&lt;a href="#sync-merged-with-update">&lt;code>sync&lt;/code> merged with &lt;code>update&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;a href="#cfg">&lt;code>cfg&lt;/code>&lt;/a>
&lt;ul>
&lt;li>
&lt;a href="#Changes-to-Setters">Changes to Setters&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#Setter-validations-deprecated">Setter validations deprecated&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#Auto-setters-deprecated">Auto setters deprecated&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;a href="#fn">&lt;code>fn&lt;/code>&lt;/a>
&lt;ul>
&lt;li>
&lt;a href="#run-is-split-into-eval-and-render">&lt;code>run&lt;/code> is split into &lt;code>eval&lt;/code> and &lt;code>render&lt;/code>&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#Function-Config">Function Config&lt;/a>&lt;/li>
&lt;li>
&lt;a href="#Function-Results">Function Results&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;a href="#live">&lt;code>live&lt;/code>&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;a href="#Migration-steps">Migration steps&lt;/a>
&lt;ul>
&lt;li>
&lt;a href="#For-Package-Publishers">For Package Publishers&lt;/a>
&lt;ul>
&lt;li>
&lt;a href="#Automated-portion-of-migration">Automated portion of migration&lt;/a>
&lt;ul>
&lt;li>
&lt;a href="#Changes-made-by-the-function">Changes made by the function&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;a href="#Manual-portion-of-migration">Manual portion of migration&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;a href="#For-Package-Consumers">For Package Consumers&lt;/a>&lt;/li>
&lt;/ul>
&lt;/li>
&lt;li>
&lt;a href="#Timeline">Timeline&lt;/a>&lt;/li>
&lt;/ul>
&lt;p>kpt &lt;code>v1.0&lt;/code> is going to be the latest major release of the kpt CLI. The
implementation of kpt &lt;code>v1.0&lt;/code> has changed considerably from kpt &lt;code>v0.39&lt;/code>. A rich
set of new features have been added as a result of the users’ input and
requirements. Some features have been deprecated or refactored in ways that make
them incompatible with kpt &lt;code>v0.39&lt;/code>. Since these are backwards incompatible
changes, there should be a way for users to migrate/fix their existing kpt
packages which are compatible with &lt;code>v0.39&lt;/code> version of kpt, to become compatible
with kpt &lt;code>v1.0&lt;/code>. This document outlines the end to end migration journey of
users using a comprehensive kpt package example.&lt;/p></description></item><item><title>Namespace provisioning using kpt CLI</title><link>https://deploy-preview-4458--kptdocs.netlify.app/guides/namespace-provisioning-cli/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/guides/namespace-provisioning-cli/</guid><description>&lt;h2 id="what-package-are-we-creating-">
 What package are we creating ?
 &lt;a href="#what-package-are-we-creating-" class="anchor-link">#&lt;/a>
&lt;/h2>&lt;p>Onboarding a new application or a micro-service is a very common task for a
platform team. It involves provisioning a dedicated namespace (and other
associated resources) where all resources that belong to the application reside.
In this guide, we will create a package that will be used for provisioning a namespace.&lt;/p>
&lt;h2 id="prerequisites">
 Prerequisites
 &lt;a href="#prerequisites" class="anchor-link">#&lt;/a>
&lt;/h2>&lt;h3 id="repositories">
 Repositories
 &lt;a href="#repositories" class="anchor-link">#&lt;/a>
&lt;/h3>&lt;p>Platform teams will have to setup two repos:&lt;/p></description></item><item><title>Search Results</title><link>https://deploy-preview-4458--kptdocs.netlify.app/search/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/search/</guid><description/></item><item><title>The Rationale behind kpt</title><link>https://deploy-preview-4458--kptdocs.netlify.app/guides/rationale/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-4458--kptdocs.netlify.app/guides/rationale/</guid><description>&lt;p>Most Kubernetes users either manage their resources using conventional imperative graphical user interfaces,
command-line tools (kubectl), and automation (e.g., Operators) that operate directly against Kubernetes APIs, or
declarative configuration tools, such as Helm, Terraform, cdk8s, or one of the

&lt;a href="https://docs.google.com/spreadsheets/d/1FCgqz1Ci7_VCz_wdh8vBitZ3giBtac_H8SBw4uxnrsE/edit#gid=0" target="_blank">dozens of other tools&lt;/a>.
At small scale, this is largely driven by preference and familiarity.&lt;/p>
&lt;p>As companies expand the number of Kubernetes development and production clusters they use, creating and enforcing
consistent configurations and security policies across a growing environment becomes difficult. At that point, the
choice of management surface is no longer driven by preference, but by capabilities. To address this challenge, it is
increasingly common for platform administrators to use “GitOps” methodology to deploy configuration consistently across
clusters and environments with a version-controlled deployment process. Using the same principles as Kubernetes itself,
GitOps reconciles the desired state of clusters with a set of Kubernetes declarative configuration files in a source
control system, namely git.&lt;/p></description></item></channel></rss>