<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Operator SDK – Upgrade SDK Version</title>
    <link>/docs/upgrading-sdk-version/</link>
    <description>Recent content in Upgrade SDK Version on Operator SDK</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    
	  <atom:link href="/docs/upgrading-sdk-version/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Docs: Backport Policy</title>
      <link>/docs/upgrading-sdk-version/backport-policy/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/backport-policy/</guid>
      <description>
        
        
        &lt;p&gt;Mainly critical issue fixes are backported to the most recent minor release.
Special backport requests can be discussed during the weekly Triage meeting; this does not guarantee an exceptional backport will be created.
Occasionally non-critical issue fixes will be backported, either at an approver&amp;rsquo;s discretion or by request as noted above.
For information on contacting maintainers and attending meetings, check the &lt;a href=&#34;https://github.com/operator-framework/community&#34;&gt;community&lt;/a&gt; repository.&lt;/p&gt;
&lt;h2 id=&#34;process&#34;&gt;Process&lt;/h2&gt;
&lt;p&gt;Typically an issue will be fixed in the &lt;code&gt;master&lt;/code&gt; branch, which will then be cherry-picked to the most recent release&amp;rsquo;s branch.
Those with approver permissions and above can create a cherry-pick PR, assuming no conflicts, by commenting &lt;code&gt;/cherry-pick &amp;lt;release branch&amp;gt;&lt;/code&gt;
in the PR fixing the issue in master. Fixes that are only relevant to a specific release branch can be made against
that branch directly.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.42.2</title>
      <link>/docs/upgrading-sdk-version/v1.42.2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.42.2/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.42.1</title>
      <link>/docs/upgrading-sdk-version/v1.42.1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.42.1/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.42.0</title>
      <link>/docs/upgrading-sdk-version/v1.42.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.42.0/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.41.0</title>
      <link>/docs/upgrading-sdk-version/v1.41.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.41.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;upgrade-go-version-to-124&#34;&gt;Upgrade Go version to 1.24&lt;/h2&gt;
&lt;p&gt;Update the Go version used to &lt;code&gt;1.24&lt;/code&gt;. This affects:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Dockerfile:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- FROM golang:1.23 AS builder
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ FROM golang:1.24 AS builder
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;.devcontainer/devcontainer.json:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- &amp;#34;image&amp;#34;: &amp;#34;golang:1.23&amp;#34;,
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ &amp;#34;image&amp;#34;: &amp;#34;golang:1.24&amp;#34;,
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;go.mod:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- go 1.23.0
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ go 1.24.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6954&#34;&gt;#6954&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrade-golangci-lint-and-use-v2-config&#34;&gt;Upgrade golangci-lint and use v2 config&lt;/h2&gt;
&lt;p&gt;Update golangci-lint usage across the project:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Makefile:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- GOLANGCI_LINT_VERSION ?= v1.63.4
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ GOLANGCI_LINT_VERSION ?= v2.1.0
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;- $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION))
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/v2/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION))
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;GitHub Actions Workflow:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- uses: golangci/golangci-lint-action@v6
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ uses: golangci/golangci-lint-action@v8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;.golangci.yml:&lt;/strong&gt;&lt;br&gt;
Convert to v2 layout with keys like &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;linters&lt;/code&gt;, &lt;code&gt;settings&lt;/code&gt;, &lt;code&gt;formatters&lt;/code&gt;, &lt;code&gt;exclusions&lt;/code&gt;.
You might want to copy and paste the file from the Memcached sample from the tag release &lt;code&gt;v1.40.0&lt;/code&gt;: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/.golangci.yml&#34;&gt;testdata/go/v4/memcached-operator/.golangci.yml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6954&#34;&gt;#6954&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrade-controller-gen-to-v0180&#34;&gt;Upgrade controller-gen to &lt;code&gt;v0.18.0&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Update controller-gen tooling and annotations:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Makefile:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- CONTROLLER_TOOLS_VERSION ?= v0.17.2
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ CONTROLLER_TOOLS_VERSION ?= v0.18.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run &lt;code&gt;make generate&lt;/code&gt; to regenerate code and manifests with the new version.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6954&#34;&gt;#6954&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrade-controller-runtime-to-v0210&#34;&gt;Upgrade controller-runtime to &lt;code&gt;v0.21.0&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Update the &lt;code&gt;go.mod&lt;/code&gt; import:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- sigs.k8s.io/controller-runtime v0.20.4
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ sigs.k8s.io/controller-runtime v0.21.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Run &lt;code&gt;go mod tidy&lt;/code&gt; to upgrade the k8s dependencies.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6954&#34;&gt;#6954&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-cluster-setup-for-e2e-tests-in-makefile-and-update-ci-workflow&#34;&gt;Add cluster setup for e2e tests in Makefile and update CI workflow&lt;/h2&gt;
&lt;p&gt;Remove direct Kind commands in GitHub workflows:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Removed:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;Create&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;kind&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;cluster&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;run&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;kind&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;create&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;cluster&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Added to Makefile:&lt;/strong&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-makefile&#34; data-lang=&#34;makefile&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;KIND_CLUSTER&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?=&lt;/span&gt; &amp;lt;project-name&amp;gt;-test-e2e

&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;setup&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;test&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt;2&lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;setup-test-e2e&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Set up a Kind cluster for e2e tests if it does not exist
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;  @command -v &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &amp;gt;/dev/null 2&amp;gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Kind is not installed. Please install Kind manually.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87&#34;&gt;exit&lt;/span&gt; 1&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
  @case &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$$&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; get clusters)&amp;#34;&lt;/span&gt; in &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    *&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND_CLUSTER&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;*&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;      &lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Kind cluster &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND_CLUSTER&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39; already exists. Skipping creation.&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    *&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Creating Kind cluster &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND_CLUSTER&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;...&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; create cluster --name &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND_CLUSTER&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;esac&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;cleanup&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;test&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt;2&lt;span style=&#34;color:#000&#34;&gt;e&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;cleanup-test-e2e&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; delete cluster --name &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KIND_CLUSTER&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Update &lt;code&gt;test-e2e&lt;/code&gt; target to call these appropriately.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6954&#34;&gt;#6954&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.40.0</title>
      <link>/docs/upgrading-sdk-version/v1.40.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.40.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;upgrade-opm-version-to-v1550-in-the-makefile&#34;&gt;Upgrade OPM version to v1.55.0 in the Makefile&lt;/h2&gt;
&lt;p&gt;Update the OPM version in your Makefile to &lt;code&gt;v1.55.0&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-makefile&#34; data-lang=&#34;makefile&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;opmVersion&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;v1.23.0&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;+const&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;opmVersion&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;v1.55.0&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-makefile&#34; data-lang=&#34;makefile&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;-       curl -sSLo $(OPM) https&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;//&lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;.&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;operator&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;framework&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;operator&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;registry&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;releases&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;download&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;v&lt;/span&gt;1.23.0/$${&lt;span style=&#34;color:#000&#34;&gt;OS&lt;/span&gt;}-$${&lt;span style=&#34;color:#000&#34;&gt;ARCH&lt;/span&gt;}-&lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt; ;\
+       &lt;span style=&#34;color:#000&#34;&gt;curl&lt;/span&gt; -&lt;span style=&#34;color:#000&#34;&gt;sSLo&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;https&lt;/span&gt;://&lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;.&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;operator&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;framework&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;operator&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;registry&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;releases&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;download&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;v&lt;/span&gt;1.55.0/$${&lt;span style=&#34;color:#000&#34;&gt;OS&lt;/span&gt;}-$${&lt;span style=&#34;color:#000&#34;&gt;ARCH&lt;/span&gt;}-&lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt; ;\
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6953&#34;&gt;#6953&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-a-devcontainer-for-go-based-operators&#34;&gt;Add a devcontainer for Go-based operators&lt;/h2&gt;
&lt;p&gt;Create the devcontainer configuration in the root of the repository
under &lt;code&gt;.devcontainer&lt;/code&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create a new directory called &lt;code&gt;.devcontainer&lt;/code&gt; in the root of your project.&lt;/li&gt;
&lt;li&gt;Copy the contents of the &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/.devcontainer&#34;&gt;testdata/go/v4/memcached-operator/.devcontainer&lt;/a&gt;
available in the Operator SDK repository for the tag release &lt;code&gt;v1.40.0&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-new-github-actions-for-go-based-operators&#34;&gt;Add new GitHub actions for Go-based operators&lt;/h2&gt;
&lt;p&gt;Add the actions configuration in the &lt;code&gt;.github/workflows&lt;/code&gt; directory.
The new actions are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;lint.yaml: Lint the code using golangci-lint&lt;/li&gt;
&lt;li&gt;test.yaml: Run the tests using go test&lt;/li&gt;
&lt;li&gt;test-e2e.yaml: Run the e2e tests using go test
You can obtain this configuration to be added
to your project by looking at the files available
in &lt;code&gt;testdata/go/v4/memcached-operator/.github/workflows&lt;/code&gt; for this release.
&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/.github/workflows&#34;&gt;testdata/go/v4/memcached-operator/.github/workflows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;update-your-project-to-properly-support-tls-certificates-for-webhooks-and-metrics-server&#34;&gt;Update your project to properly support TLS certificates for webhooks and metrics server&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Update the &lt;code&gt;main.go&lt;/code&gt; file in your project to support TLS certificates for webhooks and metrics server.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Add the new flag definitions to accept custom certificate file paths and names:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;main&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;...&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertKey&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertKey&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt;
    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;...&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;flag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;StringVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webhookCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;webhook-cert-path&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;The directory that contains the webhook certificate.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;flag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;StringVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webhookCertName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;webhook-cert-name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tls.crt&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;The name of the webhook certificate file.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;flag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;StringVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webhookCertKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;webhook-cert-key&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tls.key&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;The name of the webhook key file.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;flag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;StringVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;metricsCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;metrics-cert-path&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;The directory that contains the metrics server certificate.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;flag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;StringVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;metricsCertName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;metrics-cert-name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tls.crt&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;The name of the metrics server certificate file.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;flag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;StringVar&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;metricsCertKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;metrics-cert-key&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;tls.key&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;The name of the metrics server key file.&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;After this conditional check:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;!&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;enableHTTP2&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;tlsOpts&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tlsOpts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;disableHTTP2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Insert the following code to configure certificate watchers for webhooks and metrics:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertWatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertWatcher&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;certwatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;CertWatcher&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;webhookTLSOpts&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;tlsOpts&lt;/span&gt;

&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;len&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webhookCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Info&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Initializing webhook certificate watcher using provided certificates&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
        &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;webhook-cert-path&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;webhook-cert-name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;webhook-cert-key&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;

    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;error&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;webhookCertWatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;certwatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;filepath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Join&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webhookCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;filepath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Join&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webhookCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Failed to initialize webhook certificate watcher&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;os&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Exit&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

    &lt;span style=&#34;color:#000&#34;&gt;webhookTLSOpts&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webhookTLSOpts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tls&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GetCertificate&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertWatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GetCertificate&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update the webhook server TLS options:&lt;/p&gt;
&lt;p&gt;Replace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;TLSOpts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;tlsOpts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;TLSOpts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookTLSOpts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Before initializing the manager, configure the metrics certificate watcher if metrics certs are provided:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;len&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;metricsCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;&amp;gt;&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Info&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Initializing metrics certificate watcher using provided certificates&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
        &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;metrics-cert-path&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;metrics-cert-name&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;metrics-cert-key&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;

    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;error&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;metricsCertWatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;certwatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;New&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;filepath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Join&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;metricsCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;filepath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Join&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;metricsCertPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertKey&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;),&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Failed to initialize metrics certificate watcher&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;os&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Exit&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

    &lt;span style=&#34;color:#000&#34;&gt;metricsServerOptions&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;TLSOpts&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;append&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;metricsServerOptions&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;TLSOpts&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;tls&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GetCertificate&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertWatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GetCertificate&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;mgr&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ctrl&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;NewManager&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ctrl&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GetConfigOrDie&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(),&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ctrl&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Options&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;...&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Before calling &lt;code&gt;AddHealthzCheck&lt;/code&gt;, ensure the certificate watchers are registered with the manager:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;metricsCertWatcher&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Info&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Adding metrics certificate watcher to manager&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mgr&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Add&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;metricsCertWatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Unable to add metrics certificate watcher to manager&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;os&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Exit&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;webhookCertWatcher&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Info&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Adding webhook certificate watcher to manager&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mgr&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Add&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;webhookCertWatcher&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Unable to add webhook certificate watcher to manager&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
        &lt;span style=&#34;color:#000&#34;&gt;os&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Exit&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;

&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;mgr&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;AddHealthzCheck&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;healthz&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;healthz&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Ping&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;);&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;setupLog&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Unable to set up health check&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;os&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Exit&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that you can use as reference the &lt;code&gt;main.go&lt;/code&gt; file available in the
Operator SDK repository for the tag release &lt;code&gt;v1.40.0&lt;/code&gt; to see how the code should look like,
see:  &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/cmd/main.go&#34;&gt;testdata/go/v4/memcached-operator/cmd/main.go&lt;/a&gt;&lt;/p&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Add the new certificates in the &lt;code&gt;config/certmanager&lt;/code&gt; directory:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Add the new files:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;certificate-metrics.yaml&lt;/code&gt; with the content: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/certmanager/certificate-metrics.yaml&#34;&gt;testdata/go/v4/memcached-operator/config/certmanager/certificate-metrics.yaml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;issuer.yaml&lt;/code&gt; with the content: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/certmanager/issuer.yaml&#34;&gt;testdata/go/v4/memcached-operator/config/certmanager/issuer.yaml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Rename certificate.yaml to &lt;code&gt;certificate-webhook.yaml&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update the &lt;code&gt;kustomization.yaml&lt;/code&gt; file to include the new files and remove the old ones:
Replace: &lt;code&gt;- certificate.yaml&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;With:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- certificate-metrics.yaml&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- certificate-webhook.yaml&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- issuer.yaml&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: You can see the complete file in the repository for the tag release &lt;code&gt;v1.40.0&lt;/code&gt;: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/certmanager/kustomization.yaml&#34;&gt;testdata/go/v4/memcached-operator/config/certmanager/kustomization.yaml&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Update the &lt;code&gt;config/default/kustomization.yaml&lt;/code&gt; to allow work with the new options:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Under &lt;code&gt;patches&lt;/code&gt; ensure that you have:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;patches:
  ...
  # Uncomment the patches line if you enable Metrics and CertManager
  # [METRICS-WITH-CERTS] To enable metrics protected with certManager, uncomment the following line.
  # This patch will protect the metrics with certManager self-signed certs.
  - path: cert_metrics_manager_patch.yaml
    target:
      kind: Deployment

  # [WEBHOOK] To enable webhook, uncomment all the sections with [WEBHOOK] prefix including the one in
  # crd/kustomization.yaml
  - path: manager_webhook_patch.yaml
    target:
      kind: Deployment
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Under the replacements section, replace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;source&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add cert-manager annotation to ValidatingWebhookConfiguration, MutatingWebhookConfiguration and CRDs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;Certificate&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;group&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;cert-manager.io&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;v1&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;serving-cert&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# this name should match the one in certificate.yaml&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;fieldPath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;.metadata.namespace&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# namespace of the certificate CR&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;targets&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;select&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;ValidatingWebhookConfiguration&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;fieldPaths&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- .metadata.annotations.&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;cert-manager.io/inject-ca-from&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;options&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;delimiter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;index&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;create&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;select&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;MutatingWebhookConfiguration&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;fieldPaths&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- .metadata.annotations.&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;cert-manager.io/inject-ca-from&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;options&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;delimiter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;index&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;create&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;select&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;CustomResourceDefinition&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;fieldPaths&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- .metadata.annotations.&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;cert-manager.io/inject-ca-from&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;options&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;delimiter&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;/&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;index&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;create&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With: the code from Kubebuilder samples &lt;a href=&#34;https://github.com/kubernetes-sigs/kubebuilder/blob/v4.5.2/testdata/project-v4/config/default/kustomization.yaml#L60-L155&#34;&gt;testdata/project-v4/config/default/kustomization.yaml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; You can see the complete file in the repository for the tag release &lt;code&gt;v1.40.0&lt;/code&gt;: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/default/kustomization.yaml&#34;&gt;testdata/go/v4/memcached-operator/config/default/kustomization.yaml&lt;/a&gt;&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Add the new file to allow patch the certs for the metrics: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/default/cert_metrics_manager_patch.yaml&#34;&gt;testdata/go/v4/memcached-operator/config/default/cert_metrics_manager_patch.yaml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Replace the content of &lt;code&gt;config/default/manager_webhook_patch.yaml&lt;/code&gt; with:  &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/default/manager_webhook_patch.yaml&#34;&gt;testdata/go/v4/memcached-operator/config/default/manager_webhook_patch.yaml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Update the &lt;code&gt;config/manager/manager.yaml&lt;/code&gt; to include the ports and volumes to allow the patch to work properly:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;...
         env:
         - name: MEMCACHED_IMAGE
           value: memcached:1.4.36-alpine
+        ports: []
...
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;...
           requests:
             cpu: 10m
             memory: 64Mi
+        volumeMounts: []
+      volumes: []
  serviceAccountName: controller-manager
  terminationGracePeriodSeconds: 10
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;update-your-project-to-properly-support-tls-for-prometheus-scraping&#34;&gt;Update your project to properly support TLS for Prometheus scraping&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Changes required under the hood &lt;code&gt;config/prometheus/&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Update the &lt;code&gt;config/prometheus/kustomization.yaml&lt;/code&gt; add at the bottom:&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# [PROMETHEUS-WITH-CERTS] The following patch configures the ServiceMonitor in ../prometheus&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# to securely reference certificates created and managed by cert-manager.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Additionally, ensure that you uncomment the [METRICS WITH CERTMANAGER] patch under config/default/kustomization.yaml&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# to mount the &amp;#34;metrics-server-cert&amp;#34; secret in the Manager Deployment.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#patches:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#  - path: monitor_tls_patch.yaml&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    target:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#      kind: ServiceMonitor&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Add the file &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/prometheus/monitor_tls_patch.yaml&#34;&gt;config/prometheus/monitor_tls_patch.yaml&lt;/a&gt; to do the patch for the ServiceMonitor.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;update-your-project-to-properly-support-ca-injection-for-crds-with-conversion-webhooks&#34;&gt;Update your project to properly support CA injection for CRDs with conversion webhooks&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Changes required under the hood &lt;code&gt;config/crd/&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Update the &lt;code&gt;config/crd/kustomization.yaml&lt;/code&gt; for the file to include the new marker
&lt;code&gt;+kubebuilder:scaffold:crdkustomizewebhookpatch&lt;/code&gt; for the tool be able to inject
the path for any new CRD that is created with the &lt;code&gt;--conversion&lt;/code&gt; flag.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Ensure that under the patches section you have only patches for the CRDs which
are created with the &lt;code&gt;--conversion&lt;/code&gt; flag.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Remove the files prefixed with &lt;code&gt;cainjection_&amp;lt;kind&amp;gt;.yaml&lt;/code&gt;. You should have only
the files prefixed with &lt;code&gt;webhookpatch_&amp;lt;kind&amp;gt;.yaml&lt;/code&gt; for the CRDs that have the
&lt;code&gt;--conversion&lt;/code&gt; flag. (&lt;a href=&#34;https://github.com/kubernetes-sigs/kubebuilder/tree/v4.5.2/testdata/project-v4/config/crd/patches&#34;&gt;example&lt;/a&gt;)&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Changes required under the hood &lt;code&gt;config/default/&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;ol&gt;
&lt;li&gt;Update the &lt;code&gt;config/default/kustomization.yaml&lt;/code&gt; for the file to include the new marker
&lt;code&gt;+kubebuilder:scaffold:crdkustomizecainjectionns&lt;/code&gt; for the tool be able to inject for any new CRD
that is created with the &lt;code&gt;--conversion&lt;/code&gt; flag as well to have commented the default replacement.
For further information see an example in Kubebuilder testdata samples &lt;a href=&#34;https://github.com/kubernetes-sigs/kubebuilder/blob/7c707052daa2e8bd51f47548c02710b1f1f7a77e/testdata/project-v4/config/default/kustomization.yaml#L157-L252&#34;&gt;testdata/project-v4/config/default/kustomization.yaml&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; You can see the complete file in the repository for the tag release &lt;code&gt;v1.40.0&lt;/code&gt;: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/default/kustomization.yaml&#34;&gt;testdata/go/v4/memcached-operator/config/default/kustomization.yaml&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;use-namedkind-in-setupwithmanager-for-controller-registration&#34;&gt;Use &lt;code&gt;.Named(&amp;quot;&amp;lt;Kind&amp;gt;&amp;quot;)&lt;/code&gt; in SetupWithManager for controller registration&lt;/h2&gt;
&lt;p&gt;To improve clarity and avoid naming collisions in multi-group Go-based operator projects,
each controller&amp;rsquo;s &lt;code&gt;SetupWithManager&lt;/code&gt; call now includes an explicit &lt;code&gt;.Named(&amp;quot;&amp;lt;Kind&amp;gt;&amp;quot;)&lt;/code&gt; declaration.&lt;/p&gt;
&lt;p&gt;Example change:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;r&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;*&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;DeploymentReconciler&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;SetupWithManager&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mgr&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ctrl&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Manager&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;error&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;ctrl&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;NewControllerManagedBy&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;mgr&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;).&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;For&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;appsv1&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Deployment&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{}).&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;Named&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;apps-deployment&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;).&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;Complete&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;r&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This ensures controller names are unique and consistent across different APIs in multi-group scenarios,
which improves controller lifecycle management and logging.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;envtest-version-automation-and-improved-test-binary-discovery&#34;&gt;ENVTEST version automation and improved test binary discovery&lt;/h2&gt;
&lt;p&gt;The SDK now automates the setup of ENVTEST for Go-based operators by dynamically deriving
the required versions from &lt;code&gt;go.mod&lt;/code&gt; rather than requiring manual updates in the Makefile.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Update the &lt;code&gt;Makefile&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;The variables &lt;code&gt;ENVTEST_VERSION&lt;/code&gt; and &lt;code&gt;ENVTEST_K8S_VERSION&lt;/code&gt; are now computed using &lt;code&gt;go list&lt;/code&gt;:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-makefile&#34; data-lang=&#34;makefile&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;ENVTEST_VERSION&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell go list -m -f &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;{{ .Version }}&amp;#34;&lt;/span&gt; sigs.k8s.io/controller-runtime &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; awk -F&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;[v.]&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{printf &amp;#34;release-%d.%d&amp;#34;, $$2, $$3}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;ENVTEST_K8S_VERSION&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell go list -m -f &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;{{ .Version }}&amp;#34;&lt;/span&gt; k8s.io/api &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; awk -F&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;[v.]&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{printf &amp;#34;1.%d&amp;#34;, $$3}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;A new target &lt;code&gt;setup-envtest&lt;/code&gt; was introduced to automatically install the binaries:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-makefile&#34; data-lang=&#34;makefile&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;setup&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;envtest&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;setup-envtest&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
  @&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; use &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST_K8S_VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; --bin-dir &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; -p path &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;    &lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Error setting up envtest&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#204a87&#34;&gt;exit&lt;/span&gt; 1&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;test&lt;/code&gt; target now depends on &lt;code&gt;setup-envtest&lt;/code&gt; to ensure binaries are ready before running tests.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Update the suite_test.go files for controllers and webhooks:
In each &lt;code&gt;internal/controller/suite_test.go&lt;/code&gt; and &lt;code&gt;internal/webhook/&amp;lt;version&amp;gt;/webhook/suite_test.go&lt;/code&gt; file:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;A new helper function &lt;code&gt;getFirstFoundEnvTestBinaryDir()&lt;/code&gt; was added:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;func&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;getFirstFoundEnvTestBinaryDir&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;string&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;basePath&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;filepath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Join&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;..&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;..&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;..&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;bin&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;k8s&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;entries&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;os&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ReadDir&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;basePath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;!=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;nil&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#000&#34;&gt;logf&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Log&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Error&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Failed to read directory&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;path&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;basePath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;_&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;entry&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;range&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;entries&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;if&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;entry&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;IsDir&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
          &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;filepath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Join&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;basePath&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;entry&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;())&lt;/span&gt;
      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
  &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
  &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;return&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;testEnv.BinaryAssetsDirectory&lt;/code&gt; now uses this helper to locate installed ENVTEST binaries:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;testEnv&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;envtest&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Environment&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;BinaryAssetsDirectory&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;getFirstFoundEnvTestBinaryDir&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(),&lt;/span&gt;
  &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;...&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;replace-exportloopref-with-copyloopvar-in-golangciyaml&#34;&gt;Replace &lt;code&gt;exportloopref&lt;/code&gt; with &lt;code&gt;copyloopvar&lt;/code&gt; in &lt;code&gt;.golangci.yaml&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;exportloopref&lt;/code&gt; linter has been deprecated in recent versions of GolangCI-Lint.
It is now replaced with the more accurate and actively maintained &lt;code&gt;copyloopvar&lt;/code&gt; linter.&lt;/p&gt;
&lt;p&gt;Update your &lt;code&gt;.golangci.yaml&lt;/code&gt; file by replacing:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;- exportloopref&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;- copyloopvar&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-lint-config-target-to-makefile-to-verify-linter-configuration&#34;&gt;Add &lt;code&gt;lint-config&lt;/code&gt; target to Makefile to verify linter configuration&lt;/h2&gt;
&lt;p&gt;The target uses the &lt;code&gt;config verify&lt;/code&gt; subcommand provided by &lt;code&gt;golangci-lint&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-makefile&#34; data-lang=&#34;makefile&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;lint&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;config&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;lint-config&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;golangci&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;lint&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Verify golangci-lint linter configuration
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;GOLANGCI_LINT&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; config verify
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrade-to-go-123-and-kubernetes-v0321-dependencies&#34;&gt;Upgrade to Go 1.23 and Kubernetes v0.32.1 dependencies&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Update your &lt;code&gt;go.mod&lt;/code&gt; to reflect the new versions:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1.23&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;require&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ginkgo&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.22.0&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;gomega&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.36.1&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;api&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.32.1&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apimachinery&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.32.1&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.32.1&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;utils&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.0.0&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20241104100929&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ea5e8cea738&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;sigs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;controller&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;runtime&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.20.4&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Update the Go toolchain in your &lt;code&gt;Dockerfile&lt;/code&gt; to match:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-dockerfile&#34; data-lang=&#34;dockerfile&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;FROM&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt; golang:1.23 AS builder&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;you-must-change-your-webhooks-implementation-to-be-able-to-use-controller-runtime-v0200&#34;&gt;You must change your webhooks implementation to be able to use controller-runtime v0.20.0+&lt;/h2&gt;
&lt;p&gt;If you have no webhooks, you can skip this migration. Otherwise, ensure that you check the described
steps to update your project in the release notes of Kubebuilder &lt;code&gt;v4.3.0&lt;/code&gt; release: &lt;a href=&#34;https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v4.3.0&#34;&gt;https://github.com/kubernetes-sigs/kubebuilder/releases/tag/v4.3.0&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-appkubernetesioname-label-to-your-manifests&#34;&gt;Add &lt;code&gt;app.kubernetes.io/name&lt;/code&gt; label to your manifests&lt;/h2&gt;
&lt;p&gt;The Operator SDK now adds the &lt;code&gt;app.kubernetes.io/name&lt;/code&gt; label to scaffolded Kubernetes
manifests such as Deployments, Services, and RBAC resources. This label aligns with
Kubernetes labeling conventions and improves compatibility with observability and automation tools.&lt;/p&gt;
&lt;p&gt;If upgrading from a previous version, you may want to add the following label manually
to your existing manifests:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;labels&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;app.kubernetes.io/name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&amp;lt;your-app-name&amp;gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;with-you-wish-manually-add-those-roles-to-your-project&#34;&gt;With you wish manually add those roles to your project&lt;/h2&gt;
&lt;p&gt;See the permissions and RBAC generate as an example to know how properly
create those files for each CRD you have in your project by looking at the
sample in the repository for the tag release &lt;code&gt;v1.40.0&lt;/code&gt;: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/rbac&#34;&gt;testdata/go/v4/memcached-operator/config/rbac&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;with-you-wish-manually-add-those-roles-to-your-project-1&#34;&gt;With you wish manually add those roles to your project&lt;/h2&gt;
&lt;p&gt;See the permissions and RBAC generate as an example to know how properly
create those files for each CRD you have in your project by looking at the
sample in the repository for the tag release &lt;code&gt;v1.40.0&lt;/code&gt;: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/tree/v1.40.0/testdata/go/v4/memcached-operator/config/rbac&#34;&gt;testdata/go/v4/memcached-operator/config/rbac&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6928&#34;&gt;#6928&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.39.2</title>
      <link>/docs/upgrading-sdk-version/v1.39.2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.39.2/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.39.1</title>
      <link>/docs/upgrading-sdk-version/v1.39.1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.39.1/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.39.0</title>
      <link>/docs/upgrading-sdk-version/v1.39.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.39.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;upgrade-k8s-versions-to-use-131-and-kubebuilder-network-policy-scaffolding&#34;&gt;Upgrade K8s versions to use 1.31 and Kubebuilder network-policy scaffolding&lt;/h2&gt;
&lt;p&gt;This release contains a decent amount of migrations, but not nearly as many as the &lt;a href=&#34;https://sdk.operatorframework.io/docs/upgrading-sdk-version/v1.38.0/&#34;&gt;previous versions migrations&lt;/a&gt;
so this release should be easier to follow.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;[helm/v1, ansible/v1] Update the kustomize version in your Makefile&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.3.2/kustomize_v5.3.0_$(OS)_$(ARCH).tar.gz | \
 + curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.4.3/kustomize_v5.4.2_$(OS)_$(ARCH).tar.gz | \
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Update your &lt;code&gt;go.mod&lt;/code&gt; file to upgrade the dependencies and run &lt;code&gt;go mod tidy&lt;/code&gt; to download them&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ginkgo&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.17.1&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;gomega&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.32.0&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;api&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.30.1&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apimachinery&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.30.1&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.30.1&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sigs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;controller&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;runtime&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.18.4&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ginkgo&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.19.0&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;gomega&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.33.1&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;api&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.31.0&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apimachinery&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.31.0&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.31.0&lt;/span&gt;
&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;+&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;sigs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;controller&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;runtime&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.19.0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Update your &lt;code&gt;Makefile&lt;/code&gt; with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - ENVTEST_K8S_VERSION = 1.30.0
 + ENVTEST_K8S_VERSION = 1.31.0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - KUSTOMIZE_VERSION ?= v5.4.2
 - CONTROLLER_TOOLS_VERSION ?= v0.15.0
 - ENVTEST_VERSION ?= release-0.18
 + KUSTOMIZE_VERSION ?= v5.4.3
 + CONTROLLER_TOOLS_VERSION ?= v0.16.1
 + ENVTEST_VERSION ?= release-0.19
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Update your &lt;code&gt;main.go&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.18.4/pkg/metrics/server
 + // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.19.0/pkg/metrics/server

 - // https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.18.4/pkg/metrics/filters#WithAuthenticationAndAuthorization
 + // https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.19.0/pkg/metrics/filters#WithAuthenticationAndAuthorization
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Update your &lt;code&gt;/config/default/kustomization.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; +# [NETWORK POLICY] Protect the /metrics endpoint and Webhook Server with NetworkPolicy.
 +# Only Pod(s) running a namespace labeled with &amp;#39;metrics: enabled&amp;#39; will be able to gather the metrics.
 +# Only CR(s) which requires webhooks and are applied on namespaces labeled with &amp;#39;webhooks: enabled&amp;#39; will
 +# be able to communicate with the Webhook Server.
 +#- ../network-policy
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Add &lt;code&gt;/config/network-policy/allow-metrics-traffic.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; + # This NetworkPolicy allows ingress traffic
 + # with Pods running on namespaces labeled with &amp;#39;metrics: enabled&amp;#39;. Only Pods on those
 + # namespaces are able to gathering data from the metrics endpoint.
 + apiVersion: networking.k8s.io/v1
 + kind: NetworkPolicy
 + metadata:
 +   labels:
 +     app.kubernetes.io/name: &amp;lt;operator-name&amp;gt;
 +     app.kubernetes.io/managed-by: kustomize
 +   name: allow-metrics-traffic
 +   namespace: system
 + spec:
 +   podSelector:
 +     matchLabels:
 +       control-plane: controller-manager
 +   policyTypes:
 +     - Ingress
 +   ingress:
 +     # This allows ingress traffic from any namespace with the label metrics: enabled
 +     - from:
 +       - namespaceSelector:
 +           matchLabels:
 +             metrics: enabled  # Only from namespaces with this label
 +       ports:
 +         - port: 8443
 +           protocol: TCP
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[helm/v1, ansible/v1] Add &lt;code&gt;/config/network-policy/kustomization.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; + resources:
 + - allow-metrics-traffic.yaml

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Add &lt;code&gt;/config/network-policy/allow-webhook-traffic.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; + # This NetworkPolicy allows ingress traffic to your webhook server running
 + # as part of the controller-manager from specific namespaces and pods. CR(s) which uses webhooks
 + # will only work when applied in namespaces labeled with &amp;#39;webhook: enabled&amp;#39;
 + apiVersion: networking.k8s.io/v1
 + kind: NetworkPolicy
 + metadata:
 +   labels:
 +     app.kubernetes.io/name: &amp;lt;operator-name&amp;gt;
 +     app.kubernetes.io/managed-by: kustomize
 +   name: allow-webhook-traffic
 +   namespace: system
 + spec:
 +   podSelector:
 +     matchLabels:
 +       control-plane: controller-manager
 +   policyTypes:
 +     - Ingress
 +   ingress:
 +     # This allows ingress traffic from any namespace with the label webhook: enabled
 +     - from:
 +       - namespaceSelector:
 +           matchLabels:
 +             webhook: enabled # Only from namespaces with this label
 +       ports:
 +         - port: 443
 +           protocol: TCP
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Add &lt;code&gt;/config/network-policy/kustomization.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; + resources:
 + - allow-webhook-traffic.yaml
 + - allow-metrics-traffic.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6878&#34;&gt;#6878&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.38.0</title>
      <link>/docs/upgrading-sdk-version/v1.38.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.38.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;upgrade-k8s-versions-to-use-130-and-kubebuilder-v4&#34;&gt;Upgrade K8s versions to use 1.30 and Kubebuilder v4&lt;/h2&gt;
&lt;p&gt;This update has a lot of scaffolding changes due to the removal of &lt;a href=&#34;https://github.com/brancz/kube-rbac-proxy&#34;&gt;kube-rbac-proxy&lt;/a&gt;,
if these migrations become difficult to follow, it might be beneficial to scaffold a net new sample project to compare.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;[helm/v1, ansible/v1] Update the kustomize version in your Makefile&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.3.0/kustomize_v5.3.0_$(OS)_$(ARCH).tar.gz | \
 + curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.4.2/kustomize_v5.4.2_$(OS)_$(ARCH).tar.gz | \
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Update your &lt;code&gt;go.mod&lt;/code&gt; file to upgrade the dependencies and run &lt;code&gt;go mod tidy&lt;/code&gt; to download them&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1.22.0&lt;/span&gt;
    
 &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ginkgo&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.17.1&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;gomega&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.32.0&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;api&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.30.1&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apimachinery&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.30.1&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.30.1&lt;/span&gt;
 &lt;span style=&#34;color:#000&#34;&gt;sigs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;controller&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;runtime&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.18.4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Update your &lt;code&gt;Makefile&lt;/code&gt; with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - ENVTEST_K8S_VERSION = 1.29.0
 + ENVTEST_K8S_VERSION = 1.30.0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - KUSTOMIZE ?= $(LOCALBIN)/kustomize-$(KUSTOMIZE_VERSION)
 - CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen-$(CONTROLLER_TOOLS_VERSION)
 - ENVTEST ?= $(LOCALBIN)/setup-envtest-$(ENVTEST_VERSION)
 - GOLANGCI_LINT = $(LOCALBIN)/golangci-lint-$(GOLANGCI_LINT_VERSION)
 + KUSTOMIZE ?= $(LOCALBIN)/kustomize
 + CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
 + ENVTEST ?= $(LOCALBIN)/setup-envtest
 + GOLANGCI_LINT = $(LOCALBIN)/golangci-lint
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - KUSTOMIZE_VERSION ?= v5.3.0
 - CONTROLLER_TOOLS_VERSION ?= v0.14.0
 - ENVTEST_VERSION ?= release-0.17
 - GOLANGCI_LINT_VERSION ?= v1.57.2
 + KUSTOMIZE_VERSION ?= v5.4.2
 + CONTROLLER_TOOLS_VERSION ?= v0.15.0
 + ENVTEST_VERSION ?= release-0.18
 + GOLANGCI_LINT_VERSION ?= v1.59.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,${GOLANGCI_LINT_VERSION})
 + $(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION))
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt; - @[ -f $(1) ] || { \
 + @[ -f &amp;#34;$(1)-$(3)&amp;#34; ] || { \
   echo &amp;#34;Downloading $${package}&amp;#34; ;\
 + rm -f $(1) || true ;\
 - mv &amp;#34;$$(echo &amp;#34;$(1)&amp;#34; | sed &amp;#34;s/-$(3)$$//&amp;#34;)&amp;#34; $(1) ;\
 - }
 + mv $(1) $(1)-$(3) ;\
 + } ;\
 + ln -sf $(1)-$(3) $(1) 
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Update your &lt;code&gt;.golangci.yml&lt;/code&gt; with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-  exportloopref
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+     - ginkgolinter
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;      - prealloc
&lt;span style=&#34;color:#00a000&#34;&gt;+     - revive
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ linters-settings:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+   revive:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+     rules:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+       - name: comment-spacings
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Update your &lt;code&gt;Dockerfile&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- FROM golang:1.21 AS builder
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ FROM golang:1.22 AS builder
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4] Update your &lt;code&gt;main.go&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;     &amp;#34;sigs.k8s.io/controller-runtime/pkg/log/zap&amp;#34;
&lt;span style=&#34;color:#00a000&#34;&gt;+    &amp;#34;sigs.k8s.io/controller-runtime/pkg/metrics/filters&amp;#34;
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;
     var enableHTTP2 bool
&lt;span style=&#34;color:#a40000&#34;&gt;-    flag.StringVar(&amp;amp;metricsAddr, &amp;#34;metrics-bind-address&amp;#34;, &amp;#34;:8080&amp;#34;, &amp;#34;The address the metric endpoint binds to.&amp;#34;)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    var tlsOpts []func(*tls.Config)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    flag.StringVar(&amp;amp;metricsAddr, &amp;#34;metrics-bind-address&amp;#34;, &amp;#34;0&amp;#34;, &amp;#34;The address the metrics endpoint binds to. &amp;#34;+
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        &amp;#34;Use :8443 for HTTPS or :8080 for HTTP, or leave as 0 to disable the metrics service.&amp;#34;)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;     flag.StringVar(&amp;amp;probeAddr, &amp;#34;health-probe-bind-address&amp;#34;, &amp;#34;:8081&amp;#34;, &amp;#34;The address the probe endpoint binds to.&amp;#34;)
     flag.BoolVar(&amp;amp;enableLeaderElection, &amp;#34;leader-elect&amp;#34;, false,
         &amp;#34;Enable leader election for controller manager. &amp;#34;+
             &amp;#34;Enabling this will ensure there is only one active controller manager.&amp;#34;)
&lt;span style=&#34;color:#a40000&#34;&gt;-    flag.BoolVar(&amp;amp;secureMetrics, &amp;#34;metrics-secure&amp;#34;, false,
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-        &amp;#34;If set the metrics endpoint is served securely&amp;#34;)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    flag.BoolVar(&amp;amp;secureMetrics, &amp;#34;metrics-secure&amp;#34;, true,
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        &amp;#34;If set, the metrics endpoint is served securely via HTTPS. Use --metrics-secure=false to use HTTP instead.&amp;#34;)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;-    tlsOpts := []func(*tls.Config){}
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;
&lt;span style=&#34;color:#00a000&#34;&gt;+    // Metrics endpoint is enabled in &amp;#39;config/default/kustomization.yaml&amp;#39;. The Metrics options configure the server.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    // More info:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    // - https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.18.4/pkg/metrics/server
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    // - https://book.kubebuilder.io/reference/metrics.html
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    metricsServerOptions := metricsserver.Options{
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        BindAddress:   metricsAddr,
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        SecureServing: secureMetrics,
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // TODO(user): TLSOpts is used to allow configuring the TLS config used for the server. If certificates are
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // not provided, self-signed certificates will be generated by default. This option is not recommended for
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // production environments as self-signed certificates do not offer the same level of trust and security
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // as certificates issued by a trusted Certificate Authority (CA). The primary risk is potentially allowing
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // unauthorized access to sensitive metrics data. Consider replacing with CertDir, CertName, and KeyName
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // to provide certificates, ensuring the server communicates using trusted and secure certificates.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        TLSOpts: tlsOpts,
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    }
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    if secureMetrics {
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // FilterProvider is used to protect the metrics endpoint with authn/authz.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // These configurations ensure that only authorized users and service accounts
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // can access the metrics endpoint. The RBAC are configured in &amp;#39;config/rbac/kustomization.yaml&amp;#39;. More info:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        // https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.18.4/pkg/metrics/filters#WithAuthenticationAndAuthorization
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        metricsServerOptions.FilterProvider = filters.WithAuthenticationAndAuthorization
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+    }
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;     mgr, err := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{
&lt;span style=&#34;color:#a40000&#34;&gt;-        Scheme: scheme,
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-        Metrics: metricsserver.Options{
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-            BindAddress:   metricsAddr,
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-            SecureServing: secureMetrics,
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-            TLSOpts:       tlsOpts,
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-        },
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        Scheme:                 scheme,
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        Metrics:                metricsServerOptions,
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Update your &lt;code&gt;/config/default/kustomization.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  # [PROMETHEUS] To enable prometheus monitor, uncomment all sections with &amp;#39;PROMETHEUS&amp;#39;.
  #- ../prometheus
&lt;span style=&#34;color:#00a000&#34;&gt;+ # [METRICS] Expose the controller manager metrics service.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ - metrics_service.yaml
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt; 
&lt;span style=&#34;color:#00a000&#34;&gt;+ # Uncomment the patches line if you enable Metrics, and/or are using webhooks and cert-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;  patches:
&lt;span style=&#34;color:#a40000&#34;&gt;- # Protect the /metrics endpoint by putting it behind auth.
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- # If you want your controller-manager to expose the /metrics
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- # endpoint w/o any authn/z, please comment the following line.
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- - path: manager_auth_proxy_patch.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # [METRICS] The following patch will enable the metrics endpoint using HTTPS and the port :8443.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # More info: https://book.kubebuilder.io/reference/metrics
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ - path: manager_metrics_patch.yaml
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+   target:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+     kind: Deployment
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Remove &lt;code&gt;/config/default/manager_auth_proxy_patch.yaml&lt;/code&gt; and &lt;code&gt;/config/default/manager_config_patch.yaml&lt;/code&gt; files.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Add &lt;code&gt;/config/default/manager_metrics_patch.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# This patch adds the args to allow exposing the metrics endpoint using HTTPS
&lt;span style=&#34;color:#a40000&#34;&gt;- op: add
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  path: /spec/template/spec/containers/0/args/0
  value: --metrics-bind-address=:8443
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[helm/v1, ansible/v1] Update &lt;code&gt;/config/default/manager_metrics_patch.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# This patch adds the args to allow securing the metrics endpoint
&lt;span style=&#34;color:#a40000&#34;&gt;- op: add
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  path: /spec/template/spec/containers/0/args/0
  value: --metrics-secure
# This patch adds the args to allow RBAC-based authn/authz the metrics endpoint
&lt;span style=&#34;color:#a40000&#34;&gt;- op: add
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  path: /spec/template/spec/containers/0/args/0
  value: --metrics-require-rbac
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Add &lt;code&gt;/config/default/metrics_service.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;apiVersion: v1
kind: Service
metadata:
  labels:
    control-plane: controller-manager
    app.kubernetes.io/name: &amp;lt;operator-name&amp;gt;
    app.kubernetes.io/managed-by: kustomize
  name: controller-manager-metrics-service
  namespace: system
spec:
  ports:
    - name: https
      port: 8443
      protocol: TCP
      targetPort: 8443
  selector:
    control-plane: controller-manager
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Update your &lt;code&gt;/config/manager/manager.yaml&lt;/code&gt; file with the below changes (&lt;strong&gt;Note: The port for ansible is 6789&lt;/strong&gt;):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  - --leader-elect
&lt;span style=&#34;color:#00a000&#34;&gt;+ - --health-probe-bind-address=:8081
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Update your &lt;code&gt;/config/prometheus/monitor.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;     - path: /metrics
&lt;span style=&#34;color:#a40000&#34;&gt;-      port: https
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+      port: https # Ensure this is the name of the port that exposes HTTPS metrics
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;       tlsConfig:
&lt;span style=&#34;color:#00a000&#34;&gt;+        # TODO(user): The option insecureSkipVerify: true is not recommended for production since it disables
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        # certificate verification. This poses a significant security risk by making the system vulnerable to
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        # man-in-the-middle attacks, where an attacker could intercept and manipulate the communication between
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        # Prometheus and the monitored services. This could lead to unauthorized access to sensitive metrics data,
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        # compromising the integrity and confidentiality of the information.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        # Please use the following options for secure configurations:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        # caFile: /etc/metrics-certs/ca.crt
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        # certFile: /etc/metrics-certs/tls.crt
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        # keyFile: /etc/metrics-certs/tls.key
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;         insecureSkipVerify: true
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Remove the following files from &lt;code&gt;/config/rbac&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- auth_proxy_client_clusterrole.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- auth_proxy_role.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- auth_proxy_role_binding.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- auth_proxy_service.yaml
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Update your &lt;code&gt;/config/rbac/kustomization.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  - leader_election_role_binding.yaml
&lt;span style=&#34;color:#a40000&#34;&gt;- # Comment the following 4 lines if you want to disable
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- # the auth proxy (https://github.com/brancz/kube-rbac-proxy)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- # which protects your /metrics endpoint.
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- - auth_proxy_service.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- - auth_proxy_role.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- - auth_proxy_role_binding.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- - auth_proxy_client_clusterrole.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # The following RBAC configurations are used to protect
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # the metrics endpoint with authn/authz. These configurations
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # ensure that only authorized users and service accounts
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # can access the metrics endpoint. Comment the following
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # permissions if you want to disable this protection.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # More info: https://book.kubebuilder.io/reference/metrics.html
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ - metrics_auth_role.yaml
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ - metrics_auth_role_binding.yaml
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ - metrics_reader_role.yaml
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Add &lt;code&gt;/config/rbac/metrics_auth_role.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: metrics-auth-role
rules:
  - apiGroups:
      - authentication.k8s.io
    resources:
      - tokenreviews
    verbs:
      - create
  - apiGroups:
      - authorization.k8s.io
    resources:
      - subjectaccessreviews
    verbs:
      - create
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Add &lt;code&gt;/config/rbac/metrics_auth_role_binding.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: metrics-auth-rolebinding
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: metrics-auth-role
subjects:
  - kind: ServiceAccount
    name: controller-manager
    namespace: system
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;[go/v4, helm/v1, ansible/v1] Add &lt;code&gt;/config/rbac/metrics_reader_role.yaml&lt;/code&gt; file with the below changes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: metrics-reader
rules:
&lt;span style=&#34;color:#a40000&#34;&gt;- nonResourceURLs:
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  - &amp;#34;/metrics&amp;#34;
  verbs:
  - get
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6862&#34;&gt;#6862&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.37.0</title>
      <link>/docs/upgrading-sdk-version/v1.37.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.37.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;migrate-to-the-quarkus-extension-provided-bootstrap&#34;&gt;Migrate to the Quarkus extension provided bootstrap&lt;/h2&gt;
&lt;p&gt;From now on, you can bootstrap your Quarkus-based operator
with the provided Quarkus tools as described in the bootstrapping
instructions - &lt;a href=&#34;https://github.com/quarkiverse/quarkus-operator-sdk?tab=readme-ov-file#bootstrapping-a-project&#34;&gt;https://github.com/quarkiverse/quarkus-operator-sdk?tab=readme-ov-file#bootstrapping-a-project&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6824&#34;&gt;#6824&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;remove-hybrid-helm-v1-alpha-support&#34;&gt;Remove hybrid-helm v1-alpha support&lt;/h2&gt;
&lt;p&gt;As an operator author you can switch to a go-based operator.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6833&#34;&gt;#6833&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.36.0</title>
      <link>/docs/upgrading-sdk-version/v1.36.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.36.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;upgrade-k8s-versions-to-use-129&#34;&gt;Upgrade K8s versions to use 1.29&lt;/h2&gt;
&lt;p&gt;Regarding the upcoming major changes in the plugin, please note that &lt;code&gt;go/v3&lt;/code&gt; is being deprecated by Kubebuilder hence Operator SDK would also be migrating to &lt;code&gt;go/v4&lt;/code&gt; soon. Following are the changes to be addressed in your project structure, &lt;code&gt;Makefile&lt;/code&gt; and &lt;code&gt;go.mod&lt;/code&gt; files:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;[go/v4] Update your &lt;code&gt;go.mod&lt;/code&gt; file to upgrade the dependencies and run &lt;code&gt;go mod tidy&lt;/code&gt; to download them:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;api&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.29.2&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apimachinery&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.29.2&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.29.2&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;sigs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;controller&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;runtime&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.17.3&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;[go/v4, helm/v1] The projects are now scaffolded with 0.16.0 version of kube-rbac-proxy. Modify the version of kube-rbac-proxy in the following scaffolded files: - config/default/manager_auth_proxy_patch.yaml
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- gcr.io/kubebuilder/kube-rbac-proxy:v0.15.0
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ gcr.io/kubebuilder/kube-rbac-proxy:v0.16.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;[go/v4] You can now generate a file that contains all the resources built with Kustomize, which are necessary to install this project without its dependencies. Update your Makefile by adding:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ .PHONY: build-installer
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+   build-installer: manifests generate kustomize ## Generate a consolidated YAML with CRDs and deployment.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+   	mkdir -p dist
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+   	cd config/manager &amp;amp;&amp;amp; $(KUSTOMIZE) edit set image controller=${IMG}
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+   	$(KUSTOMIZE) build config/default &amp;gt; dist/install.yaml
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;[go/v4] Update ENVTEST_K8S_VERSION in your Makefile:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- ENVTEST_K8S_VERSION = 1.28.3
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ ENVTEST_K8S_VERSION = 1.29.0
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;[go/v4] Remove the following section from your Makefile:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- GOLANGCI_LINT = $(shell pwd)/bin/golangci-lint
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- GOLANGCI_LINT_VERSION ?= v1.54.2
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- golangci-lint:
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- 	@[ -f $(GOLANGCI_LINT) ] || { \
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- 	set -e ;\
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- 	curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/master/install.sh | sh -s -- -b $(shell dirname $(GOLANGCI_LINT)) $(GOLANGCI_LINT_VERSION) ;\
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- 	}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;[go/v4] Update the following in your Makefile:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- ## Tool Binaries
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- KUBECTL ?= kubectl
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- KUSTOMIZE ?= $(LOCALBIN)/kustomize
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- ENVTEST ?= $(LOCALBIN)/setup-envtest
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- ## Tool Versions
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- KUSTOMIZE_VERSION ?= v5.2.1
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- CONTROLLER_TOOLS_VERSION ?= v0.13.0
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- .PHONY: kustomize
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary. If wrong version is installed, it will be removed before downloading.
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- $(KUSTOMIZE): $(LOCALBIN)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-   @if test -x $(LOCALBIN)/kustomize &amp;amp;&amp;amp; ! $(LOCALBIN)/kustomize version | grep -q $(KUSTOMIZE_VERSION); then \
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-   echo &amp;#34;$(LOCALBIN)/kustomize version is not expected $(KUSTOMIZE_VERSION). Removing it before installing.&amp;#34;; \
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-   rm -rf $(LOCALBIN)/kustomize; \
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-   fi
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-   test -s $(LOCALBIN)/kustomize || GOBIN=$(LOCALBIN) GO111MODULE=on go install sigs.k8s.io/kustomize/kustomize/v5@$(KUSTOMIZE_VERSION)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- .PHONY: controller-gen
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary. If wrong version is installed, it will be overwritten.
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- $(CONTROLLER_GEN): $(LOCALBIN)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-   test -s $(LOCALBIN)/controller-gen &amp;amp;&amp;amp; $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-   GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- .PHONY: envtest
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- envtest: $(ENVTEST) ## Download envtest-setup locally if necessary.
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- $(ENVTEST): $(LOCALBIN)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-   test -s $(LOCALBIN)/setup-envtest || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ ## Tool Binaries
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ KUBECTL ?= kubectl
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ KUSTOMIZE ?= $(LOCALBIN)/kustomize-$(KUSTOMIZE_VERSION)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen-$(CONTROLLER_TOOLS_VERSION)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ ENVTEST ?= $(LOCALBIN)/setup-envtest-$(ENVTEST_VERSION)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ GOLANGCI_LINT = $(LOCALBIN)/golangci-lint-$(GOLANGCI_LINT_VERSION)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ ## Tool Versions
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ KUSTOMIZE_VERSION ?= v5.3.0
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ CONTROLLER_TOOLS_VERSION ?= v0.14.0
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ ENVTEST_VERSION ?= release-0.17
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ GOLANGCI_LINT_VERSION ?= v1.57.2
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ .PHONY: kustomize
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ $(KUSTOMIZE): $(LOCALBIN)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 	$(call go-install-tool,$(KUSTOMIZE),sigs.k8s.io/kustomize/kustomize/v5,$(KUSTOMIZE_VERSION))
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ .PHONY: controller-gen
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ controller-gen: $(CONTROLLER_GEN) ## Download controller-gen locally if necessary.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ $(CONTROLLER_GEN): $(LOCALBIN)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 	$(call go-install-tool,$(CONTROLLER_GEN),sigs.k8s.io/controller-tools/cmd/controller-gen,$(CONTROLLER_TOOLS_VERSION))
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ .PHONY: envtest
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ envtest: $(ENVTEST) ## Download setup-envtest locally if necessary.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ $(ENVTEST): $(LOCALBIN)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 	$(call go-install-tool,$(ENVTEST),sigs.k8s.io/controller-runtime/tools/setup-envtest,$(ENVTEST_VERSION))
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ .PHONY: golangci-lint
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ $(GOLANGCI_LINT): $(LOCALBIN)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 	$(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,${GOLANGCI_LINT_VERSION})
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # go-install-tool will &amp;#39;go install&amp;#39; any package with custom target and name of binary, if it doesn&amp;#39;t exist
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # $1 - target path with name of binary (ideally with version)
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # $2 - package url which can be installed
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ # $3 - specific version of package
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ define go-install-tool
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ @[ -f $(1) ] || { \
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ set -e; \
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ package=$(2)@$(3) ;\
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ echo &amp;#34;Downloading $${package}&amp;#34; ;\
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ GOBIN=$(LOCALBIN) go install $${package} ;\
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ mv &amp;#34;$$(echo &amp;#34;$(1)&amp;#34; | sed &amp;#34;s/-$(3)$$//&amp;#34;)&amp;#34; $(1) ;\
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ }
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ endef
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;[helm/v1] Update the kustomize version in your Makefile:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.2.1/kustomize_v5.2.1_$(OS)_$(ARCH).tar.gz | \
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ curl -sSLo - https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize/v5.3.0/kustomize_v5.3.0_$(OS)_$(ARCH).tar.gz | \
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6736&#34;&gt;#6736&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.35.0</title>
      <link>/docs/upgrading-sdk-version/v1.35.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.35.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;fix-helm-operator-scaffolding-that-was-broken-in-1340-1341-and-1342&#34;&gt;Fix helm-operator scaffolding that was broken in 1.34.0, 1.34.1, and 1.34.2&lt;/h2&gt;
&lt;p&gt;Users who scaffolded a helm-operator project with 1.34.0, 1.34.1, or 1.34.2
need re-generate the project in order to get a fixed &lt;code&gt;config/rbac/role.yaml&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6769&#34;&gt;#6769&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.34.0</title>
      <link>/docs/upgrading-sdk-version/v1.34.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.34.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;to-fix-multi-arch-build-replace-docker-buildx-target-in-project-makefile&#34;&gt;To fix multi-arch build, replace docker-buildx target in project Makefile&lt;/h2&gt;
&lt;p&gt;In the project &lt;code&gt;Makefile&lt;/code&gt;, replace existing &lt;code&gt;docker-buildx&lt;/code&gt; target with following definition.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;docker-buildx&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Build and push docker image for the manager for cross-platform support
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;	- docker buildx create --name project-v3-builder
	docker buildx use project-v3-builder
	- docker buildx build --push --platform&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;PLATFORMS&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; --tag &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;IMG&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt; -f Dockerfile .
	- docker buildx rm project-v3-builder
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6661&#34;&gt;#6661&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.33.0</title>
      <link>/docs/upgrading-sdk-version/v1.33.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.33.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;gov4-alpha-move-gov4-plugin-from-alpha-to-stable&#34;&gt;(go/v4-alpha) Move go/v4 plugin from alpha to stable&lt;/h2&gt;
&lt;p&gt;The transition from Golang v2 and v3 plugins to the new Golang v4 plugin introduces significant changes.
To gain insights into the reasoning behind these changes, you can refer to the explanation provided
at &lt;a href=&#34;https://book.kubebuilder.io/migration/v3vsv4#tldr-of-the-new-gov4-plugin&#34;&gt;https://book.kubebuilder.io/migration/v3vsv4#tldr-of-the-new-gov4-plugin&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For a comprehensive understanding of the migration process to the v4 plugin format,
the Kubebuilder documentation outlines the necessary steps. Detailed instructions
can be found at &lt;a href=&#34;https://book.kubebuilder.io/migration/manually_migration_guide_gov3_to_gov4&#34;&gt;https://book.kubebuilder.io/migration/manually_migration_guide_gov3_to_gov4&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This migration is designed to enhance your project&amp;rsquo;s functionality and compatibility,
reflecting the evolving landscape of Golang development.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6613&#34;&gt;#6613&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;kustomizev2-alpha-move-kustomizev2-plugin-from-alpha-to-stable&#34;&gt;(kustomize/v2-alpha) Move kustomize/v2 plugin from alpha to stable&lt;/h2&gt;
&lt;p&gt;For more information on the kustomize/v2 plugin, please refer to the documentation at
&lt;a href=&#34;https://book.kubebuilder.io/plugins/available/kustomize-v2&#34;&gt;https://book.kubebuilder.io/plugins/available/kustomize-v2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6613&#34;&gt;#6613&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.32.0</title>
      <link>/docs/upgrading-sdk-version/v1.32.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.32.0/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.31.0</title>
      <link>/docs/upgrading-sdk-version/v1.31.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.31.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;updating-an-ansible-operator-to-use-the-updated-ansible-2150-image&#34;&gt;Updating an Ansible Operator to use the updated Ansible 2.15.0 image&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Update the &lt;code&gt;FROM&lt;/code&gt; directive in the &lt;code&gt;Dockerfile&lt;/code&gt; to have a version tag &amp;gt; &lt;code&gt;v1.30.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Evaluate your dependency requirements. The change to Ansible 2.15.0 also included removal of some pre-installed Python modules. You may need to update your &lt;code&gt;Dockerfile&lt;/code&gt; to &lt;code&gt;pip install&lt;/code&gt; modules required by your operator.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6483&#34;&gt;#6483&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrading-an-ansible-operator-project-to-match-the-latest-ansiblev1-plugin-changes&#34;&gt;Upgrading an Ansible Operator project to match the latest &lt;code&gt;ansible/v1&lt;/code&gt; plugin changes&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;code&gt;requirements.yml&lt;/code&gt; file:
&lt;ul&gt;
&lt;li&gt;Remove the &lt;code&gt;community.kubernetes&lt;/code&gt; collection entry&lt;/li&gt;
&lt;li&gt;Update the version of the &lt;code&gt;operator_sdk.util&lt;/code&gt; collection entry to &lt;code&gt;v0.5.0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;In the &lt;code&gt;molecule/kind/molecule.yml&lt;/code&gt; and &lt;code&gt;molecule/default/molecule.yml&lt;/code&gt; files:
&lt;ul&gt;
&lt;li&gt;Remove all instances of the &lt;code&gt;lint&lt;/code&gt; field. For an example of the diff, see: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6483/files#diff-f159b0d7ec17de90f5b5c297ce997254e6ea4001269167be25615c45c489539e&#34;&gt;https://github.com/operator-framework/operator-sdk/pull/6483/files#diff-f159b0d7ec17de90f5b5c297ce997254e6ea4001269167be25615c45c489539e&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6483&#34;&gt;#6483&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;migrating-away-from-the-quayiooperator-frameworkansible-operator-211-preview-base-image&#34;&gt;Migrating away from the &lt;code&gt;quay.io/operator-framework/ansible-operator-2.11-preview&lt;/code&gt; base image&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Update the &lt;code&gt;FROM&lt;/code&gt; directive in the &lt;code&gt;Dockerfile&lt;/code&gt; to use the base image &lt;code&gt;quay.io/operator-framework/ansible-operator:vX.Y.Z&lt;/code&gt; where &lt;code&gt;vX.Y.Z&lt;/code&gt; is &amp;gt; &lt;code&gt;v1.30.0&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6483&#34;&gt;#6483&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;require-watch-on-secrets&#34;&gt;Require &lt;code&gt;watch&lt;/code&gt; on &lt;code&gt;secrets&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;The operator now requires the watch operation on secrets.
When using a custom ServiceAccount for deployment, the following additional role is now required:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;rules:
  - apiGroups:
      - &amp;quot;&amp;quot;
    resources:
      - secrets
    verbs:
      - watch
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6354&#34;&gt;#6354&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.30.0</title>
      <link>/docs/upgrading-sdk-version/v1.30.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.30.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;header-text-for-the-migration-section&#34;&gt;Header text for the migration section&lt;/h2&gt;
&lt;p&gt;Body of the migration section. This should be formatted as markdown and can
span multiple lines.&lt;/p&gt;
&lt;p&gt;Using the YAML string &amp;lsquo;|&amp;rsquo; operator means that newlines in this string will
be honored and interpretted as newlines in the rendered markdown.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6426&#34;&gt;#6426&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.29.0</title>
      <link>/docs/upgrading-sdk-version/v1.29.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.29.0/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.28.0</title>
      <link>/docs/upgrading-sdk-version/v1.28.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.28.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ansible---upgrade-kubernetescore-collection-to-v240&#34;&gt;(ansible) - Upgrade kubernetes.core collection to v2.4.0&lt;/h2&gt;
&lt;p&gt;In the requirements.yaml file replace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;kubernetes.core&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2.3.1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;kubernetes.core&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2.4.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6334&#34;&gt;#6334&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrade-k8s-versions-to-use-126&#34;&gt;Upgrade K8s versions to use 1.26&lt;/h2&gt;
&lt;p&gt;Regarding the upcoming major changes in the plugin, please note that &lt;code&gt;go/v3&lt;/code&gt; is being deprecated by Kubebuilder hence Operator SDK would also be migrating to &lt;code&gt;go/v4&lt;/code&gt; soon. Following are the changes to be addressed in your project structure, &lt;code&gt;Makefile&lt;/code&gt; and &lt;code&gt;go.mod&lt;/code&gt; files: 1) [go/v3, ansible/v1, helm/v1] Update your &lt;code&gt;go.mod&lt;/code&gt; file to upgrade the dependencies and run &lt;code&gt;go mod tidy&lt;/code&gt; to download them &lt;code&gt;go k8s.io/api v0.26.2 k8s.io/apiextensions-apiserver v0.26.2 k8s.io/apimachinery v0.26.2 k8s.io/cli-runtime v0.26.2 k8s.io/client-go v0.26.2 k8s.io/kubectl v0.26.2 sigs.k8s.io/controller-runtime v0.14.5 sigs.k8s.io/controller-tools v0.11.3 sigs.k8s.io/kubebuilder/v3 v3.9.1 &lt;/code&gt; 2) [go/v3, ansible/v1, helm/v1] With the bump to Kubebuilder 3.9.1, the &lt;code&gt;go/v3&lt;/code&gt; projects are now scaffolded with 0.13.1 version of kube-rbac-proxy. Modify the version of kube-rbac-proxy in the following scaffolded files: - config/default/manager_auth_proxy_patch.yaml - bundle/manifests/memcached-operator.clusterserviceversion.yaml&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  - gcr.io/kubebuilder/kube-rbac-proxy:v0.13.0
  + gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;[gov4alpha] For scaffolds, replace scaffoldings of v1beta1 by using &lt;code&gt;k8s.io/api/admission/v1&lt;/code&gt; instead of &lt;code&gt;k8s.io/api/admission/v1beta1&lt;/code&gt; as v1beta1 is removed in latest k8s.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  - admissionv1beta1 &amp;#34;k8s.io/api/admission/v1beta1&amp;#34;
  + admissionv1 &amp;#34;k8s.io/api/admission/v1&amp;#34;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;[gov4alpha] The project structure has changed from &lt;code&gt;/controllers&lt;/code&gt; to &lt;code&gt;internal/controller/&lt;/code&gt;. Modify the Dockerfile of the &lt;code&gt;go/v4-alpha&lt;/code&gt; plugin to below:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  - COPY controllers/ controllers/
  + COPY internal/controller/ internal/controller/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;[go/v3, gov4alpha] Update your Makefile by&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Replacing &lt;code&gt;ENVTEST_K8S_VERSION = 1.25&lt;/code&gt; with &lt;code&gt;ENVTEST_K8S_VERSION = 1.26&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Using &lt;code&gt;manifests generate fmt vet&lt;/code&gt; to build manager binary by replacing &lt;code&gt;generate fmt vet&lt;/code&gt; in the build target to &lt;code&gt;manifests generate fmt vet&lt;/code&gt;:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  - build: generate fmt vet ## Build manager binary.
  + build: manifests generate fmt vet ## Build manager binary.
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;[gov4alpha] The gov4alpha plugin is now being scaffolded with Kubebuilder&amp;rsquo;s go/v4-alpha which has a modified project file structure according to Go&amp;rsquo;s best practices. Refer &lt;a href=&#34;https://github.com/kubernetes-sigs/kubebuilder/pull/2985&#34;&gt;https://github.com/kubernetes-sigs/kubebuilder/pull/2985&lt;/a&gt; for changes. Make the following changes in your scaffolded project if gov4aplha plugin was used:          - Replacing &lt;code&gt;go run ./main.go&lt;/code&gt; to &lt;code&gt;go run ./cmd/main.go&lt;/code&gt; due to the change in project structure.
&lt;ul&gt;
&lt;li&gt;Replacing&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  - `test -s $(LOCALBIN)/controller-gen || GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)`
  + test -s $(LOCALBIN)/controller-gen &amp;amp;&amp;amp; $(LOCALBIN)/controller-gen --version | grep -q $(CONTROLLER_TOOLS_VERSION) || \
  GOBIN=$(LOCALBIN) go install sigs.k8s.io/controller-tools/cmd/controller-gen@$(CONTROLLER_TOOLS_VERSION)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6352&#34;&gt;#6352&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.27.0</title>
      <link>/docs/upgrading-sdk-version/v1.27.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.27.0/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.26.0</title>
      <link>/docs/upgrading-sdk-version/v1.26.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.26.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;update-ansible-operator-makefiles-run-target&#34;&gt;update ansible operator Makefile&amp;rsquo;s run target&lt;/h2&gt;
&lt;p&gt;For an ansible operator, update the Makefile&amp;rsquo;s run target to the
following to fix a bug in its implementation.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;.PHONY: run
ANSIBLE_ROLES_PATH?=&amp;quot;$(shell pwd)/roles&amp;quot;
run: ansible-operator ## Run against the configured Kubernetes cluster in ~/.kube/config
    $(ANSIBLE_OPERATOR) run
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6110&#34;&gt;#6110&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.25.0</title>
      <link>/docs/upgrading-sdk-version/v1.25.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.25.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;kubebuilder-bump-brought-changes-that-modified-the-makefile-scaffolding-and-also-multiarch-changes-are-also-included&#34;&gt;Kubebuilder bump brought changes that modified the &lt;code&gt;Makefile&lt;/code&gt; scaffolding and also &lt;code&gt;multiarch&lt;/code&gt; changes are also included.&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Makefile content is updated as shown below.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;    &lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;KUBEBUILDER_ASSETS&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; use &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST_K8S_VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; --bin-dir &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; -p path&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; go &lt;span style=&#34;color:#204a87&#34;&gt;test&lt;/span&gt; ./... -coverprofile cover.out&lt;span style=&#34;color:#4e9a06&#34;&gt;`&lt;/span&gt;,
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add support for building binary in multiple platforms.&lt;/p&gt;
&lt;p&gt;Add the below content to the Makefile.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# PLATFORMS defines the target platforms for  the manager image be build to provide support to multiple&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to:&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# - able to use docker buildx . More info: https://docs.docker.com/build/buildx/&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# - have enable BuildKit, More info: https://docs.docker.com/develop/develop-images/build_enhancements/&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# - be able to push the image for your registry (i.e. if you do not inform a valid value via IMG=&amp;lt;myregistry/image:&amp;lt;tag&amp;gt;&amp;gt; than the export will fail)&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# To properly provided solutions that supports more than one platform you should use this option.&lt;/span&gt;
PLATFORMS ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
.PHONY: docker-buildx
docker-buildx: &lt;span style=&#34;color:#204a87&#34;&gt;test&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Build and push docker image for the manager for cross-platform support&lt;/span&gt;
    &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile&lt;/span&gt;
    sed -e &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t&amp;#39;&lt;/span&gt; -e &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39; 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/&amp;#39;&lt;/span&gt; Dockerfile &amp;gt; Dockerfile.cross
    - docker buildx create --name project-v3-builder
    docker buildx use project-v3-builder
    - docker buildx build --push --platform&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;PLATFORMS&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; --tag &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;IMG&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt; -f Dockerfile.cross
    - docker buildx rm project-v3-builder
    rm Dockerfile.cross
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(go/v3) Bump dependencies in go.mod file&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;    &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1.19&lt;/span&gt;   

    &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ginkgo&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v2&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.1.4&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;onsi&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;gomega&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.19.0&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;prometheus&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;client_golang&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.12.2&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;api&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.25.0&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apimachinery&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.25.0&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.25.0&lt;/span&gt;
    &lt;span style=&#34;color:#000&#34;&gt;sigs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;controller&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;runtime&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.13.0&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;(go/v3) Update &lt;code&gt;controller-tools&lt;/code&gt; from &lt;code&gt;0.9.2&lt;/code&gt; to &lt;code&gt;0.10.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the &lt;code&gt;Makefile&lt;/code&gt; file, replace &lt;code&gt;CONTROLLER_TOOLS_VERSION ?= v0.9.2&lt;/code&gt; with &lt;code&gt;CONTROLLER_TOOLS_VERSION ?= v0.10.0&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6047&#34;&gt;#6047&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-multi-arch-build-support-add-docker-buildx-target-to-project-makefile&#34;&gt;For multi-arch build support, add docker-buildx target to project Makefile&lt;/h2&gt;
&lt;p&gt;In the project &lt;code&gt;Makefile&lt;/code&gt; below the &lt;code&gt;docker-push&lt;/code&gt; target add the new &lt;code&gt;docker-buildx&lt;/code&gt;
target.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# PLATFORMS defines the target platforms for  the manager image be build to provide support to multiple&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# architectures. (i.e. make docker-buildx IMG=myregistry/mypoperator:0.0.1). To use this option you need to:&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# - able to use docker buildx . More info: https://docs.docker.com/build/buildx/&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# - have enable BuildKit, More info: https://docs.docker.com/develop/develop-images/build_enhancements/&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# - be able to push the image for your registry (i.e. if you do not inform a valid value via IMG=&amp;lt;myregistry/image:&amp;lt;tag&amp;gt;&amp;gt; than the export will fail)&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# To properly provided solutions that supports more than one platform you should use this option.&lt;/span&gt;
PLATFORMS ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; linux/arm64,linux/amd64,linux/s390x,linux/ppc64le
.PHONY: docker-buildx
docker-buildx: &lt;span style=&#34;color:#204a87&#34;&gt;test&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Build and push docker image for the manager for cross-platform support&lt;/span&gt;
	&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# copy existing Dockerfile and insert --platform=${BUILDPLATFORM} into Dockerfile.cross, and preserve the original Dockerfile&lt;/span&gt;
	sed -e &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;1 s/\(^FROM\)/FROM --platform=\$$\{BUILDPLATFORM\}/; t&amp;#39;&lt;/span&gt; -e &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39; 1,// s//FROM --platform=\$$\{BUILDPLATFORM\}/&amp;#39;&lt;/span&gt; Dockerfile &amp;gt; Dockerfile.cross
	- docker buildx create --name project-v3-builder
	docker buildx use project-v3-builder
	- docker buildx build --push --platform&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;PLATFORMS&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; --tag &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;IMG&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt; -f Dockerfile.cross
	- docker buildx rm project-v3-builder
	rm Dockerfile.cross
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/6093&#34;&gt;#6093&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.24.0</title>
      <link>/docs/upgrading-sdk-version/v1.24.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.24.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;support-for-arm64&#34;&gt;Support for arm64&lt;/h2&gt;
&lt;p&gt;In Ansible &amp;amp; Helm-based operators, if you need to support &lt;code&gt;arm64&lt;/code&gt;, add the following&lt;/p&gt;
&lt;p&gt;&lt;code&gt;| sed &#39;s/aarch64/arm64/&#39;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;on the following line&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ARCH := $(shell uname -m | sed &#39;s/x86_64/amd64/&#39;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The resulting line should look like this&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ARCH := $(shell uname -m | sed &#39;s/x86_64/amd64/&#39; | sed &#39;s/aarch64/arm64/&#39;)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5480&#34;&gt;#5480&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.23.0</title>
      <link>/docs/upgrading-sdk-version/v1.23.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.23.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;for-hybrid-helm-hybridhelmv1-alpha-language-based-operators---bump-dockerfile-go-version-to-118&#34;&gt;For Hybrid Helm (hybrid.helm/v1-alpha) language based operators - Bump Dockerfile Go version to 1.18&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;Dockerfile&lt;/code&gt;, replace the line &lt;code&gt;FROM golang:1.17 as builder&lt;/code&gt; with &lt;code&gt;FROM golang:1.18 as builder&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5772&#34;&gt;#5772&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-fix-makefile-targets-to-not-download-binaries-when-they-are-found-already&#34;&gt;(go/v3) Fix Makefile targets to not download binaries when they are found already&lt;/h2&gt;
&lt;p&gt;Update the Makefile targets by adding &lt;code&gt;test -s $(LOCALBIN)/&amp;lt;binary-name&amp;gt; ||&lt;/code&gt; before the instruction to download them, see:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;KUSTOMIZE_INSTALL_SCRIPT ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh&amp;#34;&lt;/span&gt;
.PHONY: kustomize
kustomize: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download kustomize locally if necessary.&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
	&lt;span style=&#34;color:#204a87&#34;&gt;test&lt;/span&gt; -s &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/kustomize &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; curl -s &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE_INSTALL_SCRIPT&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; bash -s -- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;subst v,,&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE_VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;

.PHONY: controller-gen
controller-gen: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CONTROLLER_GEN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download controller-gen locally if necessary.&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CONTROLLER_GEN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
	&lt;span style=&#34;color:#204a87&#34;&gt;test&lt;/span&gt; -s &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/controller-gen &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;GOBIN&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; go install sigs.k8s.io/controller-tools/cmd/controller-gen@&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CONTROLLER_TOOLS_VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

.PHONY: envtest
envtest: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download envtest-setup locally if necessary.&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
	&lt;span style=&#34;color:#204a87&#34;&gt;test&lt;/span&gt; -s &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/setup-envtest &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;GOBIN&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5965&#34;&gt;#5965&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-update-controller-tools-from-090-to-092&#34;&gt;(go/v3) Update &lt;code&gt;controller-tools&lt;/code&gt; from &lt;code&gt;0.9.0&lt;/code&gt; to &lt;code&gt;0.9.2&lt;/code&gt;.&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;Makefile&lt;/code&gt; file, replace &lt;code&gt;CONTROLLER_TOOLS_VERSION ?= v0.9.0&lt;/code&gt; with &lt;code&gt;CONTROLLER_TOOLS_VERSION ?= v0.9.2&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5965&#34;&gt;#5965&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-update-controller-runtime-from-v0121-to-v0122-and-kubernetes-dependencies-from-v0240-to-v0242&#34;&gt;(go/v3) Update &lt;code&gt;controller-runtime&lt;/code&gt; from &lt;code&gt;v0.12.1&lt;/code&gt; to &lt;code&gt;v0.12.2&lt;/code&gt; and Kubernetes dependencies from &lt;code&gt;v0.24.0&lt;/code&gt; to &lt;code&gt;v0.24.2&lt;/code&gt;.&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;go.mod&lt;/code&gt; file, ensure the following dependencies versions and run &lt;code&gt;go mod tidy&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;api&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.24.2&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;apimachinery&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.24.2&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;client&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.24.2&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;sigs&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;k8s&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;io&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;/&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;controller&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;-&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;runtime&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;v0&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.12.2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5965&#34;&gt;#5965&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrade-kube-proxy-image-gcriokubebuilderkube-rbac-proxy-from-v0110-to-v0130&#34;&gt;Upgrade kube proxy image &lt;code&gt;gcr.io/kubebuilder/kube-rbac-proxy&lt;/code&gt; from &lt;code&gt;v0.11.0&lt;/code&gt; to &lt;code&gt;v0.13.0&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;config/default/manager_auth_proxy_patch.yaml&lt;/code&gt; file, replace &lt;code&gt;gcr.io/kubebuilder/kube-rbac-proxy:0.11.0&lt;/code&gt; with &lt;code&gt;gcr.io/kubebuilder/kube-rbac-proxy:0.13.0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5903&#34;&gt;#5903&lt;/a&gt; and &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5965&#34;&gt;#5965&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1helmv1-upgrade-kustomize-versions-from-v387-to-v455&#34;&gt;(ansible/v1,helm/v1) Upgrade kustomize versions from &lt;code&gt;v3.8.7&lt;/code&gt; to &lt;code&gt;v4.5.5&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Upgrade kustomize versions from &lt;code&gt;v3.8.7&lt;/code&gt; to &lt;code&gt;v4.5.5&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;WARNING&lt;/strong&gt; If your project has customizations using kustomize you might be impacted by them. See its &lt;a href=&#34;https://github.com/kubernetes-sigs/kustomize/releases/tag/kustomize%2Fv4.0.0&#34;&gt;Release Notes&lt;/a&gt;. (Note all changes are covered by its docs)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Update the kustomize version in your Makefile: ensure that the value used for &lt;code&gt;KUSTOMIZE_VERSION&lt;/code&gt; is &lt;code&gt;v4.5.5&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In the &lt;code&gt;config/default/kustomization.yaml&lt;/code&gt; file:
a) Replace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#commonLabels:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#  someName: someValue&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#labels:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#- includeSelectors: true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#  pairs:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    someName: someValue&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;b) Replace: &lt;code&gt;bases:&lt;/code&gt; With: &lt;code&gt;resources:&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;(Valid Only for Ansible Projects)&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;In the molecule/default, replace &lt;code&gt;--load_restrictor none .&lt;/code&gt; with &lt;code&gt;--load-restrictor LoadRestrictionsNone&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5965&#34;&gt;#5965&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.22.0</title>
      <link>/docs/upgrading-sdk-version/v1.22.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.22.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;for-ansible-based-language-operators-upgrade-communitykubernetes-from-121-to-201&#34;&gt;For Ansible-based language operators, upgrade &lt;code&gt;community.kubernetes&lt;/code&gt; from &lt;code&gt;1.2.1&lt;/code&gt; to &lt;code&gt;2.0.1&lt;/code&gt;.&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt; The &lt;code&gt;community.kubernetes&lt;/code&gt; collection is being renamed to &lt;code&gt;kubernetes.core&lt;/code&gt;. As of version 2.0.0, the collection has been replaced by deprecated redirects for all content to kubernetes.core. If you are using FQCNs starting with &lt;code&gt;community.kubernetes&lt;/code&gt;, please update them to &lt;code&gt;kubernetes.core&lt;/code&gt;.
Ensure that you check the &lt;a href=&#34;https://github.com/ansible-collections/community.kubernetes/blob/main/CHANGELOG.rst&#34;&gt;community.kubernetes changelog&lt;/a&gt; to verify if your Operator code must be updated and it is affected by the MAJOR changes.&lt;/p&gt;
&lt;p&gt;In the &lt;code&gt;requirements.yml&lt;/code&gt; file:&lt;/p&gt;
&lt;p&gt;Replace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;collections&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;community.kubernetes&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;1.2.1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;collections&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;community.kubernetes&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2.0.1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5846&#34;&gt;#5846&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-ansible-based-language-operators-upgrade-kubernetescore-from-220-to-231&#34;&gt;For Ansible-based language operators, upgrade &lt;code&gt;kubernetes.core&lt;/code&gt; from &lt;code&gt;2.2.0&lt;/code&gt; to &lt;code&gt;2.3.1&lt;/code&gt;.&lt;/h2&gt;
&lt;p&gt;Ensure that you check the &lt;a href=&#34;https://github.com/ansible-collections/kubernetes.core/blob/main/CHANGELOG.rst&#34;&gt;kubernetes.core changelog&lt;/a&gt; to verify if your Operator code must be updated and it is affected by the MAJOR changes.&lt;/p&gt;
&lt;p&gt;In the &lt;code&gt;requirements.yml&lt;/code&gt; file:&lt;/p&gt;
&lt;p&gt;Replace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;collections&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;kubernetes.core&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2.2.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;collections&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;kubernetes.core&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2.3.1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5846&#34;&gt;#5846&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-ansible-based-language-operators-upgrade-cloudcommon-from-220-to-221&#34;&gt;For Ansible-based language operators, upgrade &lt;code&gt;cloud.common&lt;/code&gt; from &lt;code&gt;2.2.0&lt;/code&gt; to &lt;code&gt;2.2.1&lt;/code&gt;.&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;requirements.yml&lt;/code&gt; file:&lt;/p&gt;
&lt;p&gt;Replace:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-ymal&#34; data-lang=&#34;ymal&#34;&gt;collections:
  ...
  - name: cloud.common
    version: &amp;quot;2.1.0&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;With:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-ymal&#34; data-lang=&#34;ymal&#34;&gt;collections:
  ...
  - name: cloud.common
    version: &amp;quot;2.1.1&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5846&#34;&gt;#5846&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;go-gov3-and-helm-hybrid-hybridhelmv1-alpha-language-based-operators---upgrade-kubernetes-dependencies-from-123-to-124-and-controller-gen-from-v080-to-v090&#34;&gt;Go (go/v3) and Helm Hybrid (hybrid.helm/v1-alpha) language based operators - Upgrade Kubernetes dependencies from &lt;code&gt;1.23&lt;/code&gt; to &lt;code&gt;1.24&lt;/code&gt; and controller-gen from &lt;code&gt;v0.8.0&lt;/code&gt; to &lt;code&gt;v0.9.0&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;To update your project to support Kubernetes 1.24:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In &lt;code&gt;go.mod&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Replace &lt;code&gt;k8s.io/api v0.23.5&lt;/code&gt; with &lt;code&gt;k8s.io/api v0.24.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;k8s.io/apimachinery v0.23.5&lt;/code&gt; with  &lt;code&gt;k8s.io/apimachinery v0.24.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;k8s.io/client-go v0.23.5&lt;/code&gt; with &lt;code&gt;k8s.io/client-go v0.24.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;sigs.k8s.io/controller-runtime v0.11.2&lt;/code&gt; with &lt;code&gt;sigs.k8s.io/controller-runtime v0.12.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Hybrid Helm (hybrid) only: Replace &lt;code&gt;github.com/operator-framework/helm-operator-plugins v0.0.11&lt;/code&gt; with &lt;code&gt;github.com/operator-framework/helm-operator-plugins v0.0.12-0.20220608155702-d3967d2ae2ac&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;Run &lt;code&gt;go mod tidy&lt;/code&gt; to ensure all dependencies are upgraded&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In &lt;code&gt;Makefile&lt;/code&gt;:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Replace &lt;code&gt;CONTROLLER_TOOLS_VERSION ?= 0.8.0&lt;/code&gt; with &lt;code&gt;CONTROLLER_TOOLS_VERSION ?= 0.9.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;ENVTEST_K8S_VERSION = 1.23&lt;/code&gt; with &lt;code&gt;ENVTEST_K8S_VERSION = 1.24&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Run &lt;code&gt;make&lt;/code&gt; to run all make targets&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5843&#34;&gt;#5843&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;go-gov3-and-hybrid-helm-hybridhelmv1-alpha-language-based-operators---add-support-for-go-118&#34;&gt;Go (go/v3) and Hybrid Helm (hybrid.helm/v1-alpha) language based operators - Add support for Go 1.18&lt;/h2&gt;
&lt;p&gt;To update your project to use Go 1.18:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;code&gt;go.mod&lt;/code&gt; file:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Replace &lt;code&gt;go 1.17&lt;/code&gt; with &lt;code&gt;go 1.18&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Run &lt;code&gt;go mod tidy&lt;/code&gt; to ensure all dependencies are upgraded&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5843&#34;&gt;#5843&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-go-gov3-gov2-ansible-ansiblev1-helm-helmv1-and-helm-hybrid-hybridhelmv1-alpha-language-based-operators---bump-opm-version-from-v1191-to-v1230-more-infohttpsgithubcomoperator-frameworkoperator-registryreleases&#34;&gt;For Go (go/v3, go/v2), Ansible (ansible/v1), Helm (helm/v1), and Helm Hybrid (hybrid.helm/v1-alpha) language based operators - Bump OPM version from &lt;code&gt;v1.19.1&lt;/code&gt; to &lt;code&gt;v1.23.0&lt;/code&gt; &lt;a href=&#34;https://github.com/operator-framework/operator-registry/releases&#34;&gt;More info&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;To update your project to use OPM &lt;code&gt;v1.23.0&lt;/code&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In the &lt;code&gt;Makefile&lt;/code&gt;:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Replace &lt;code&gt;curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.19.1/$${OS}-$${ARCH}-opm&lt;/code&gt; with &lt;code&gt;curl -sSLo $(OPM) https://github.com/operator-framework/operator-registry/releases/download/v1.23.0/$${OS}-$${ARCH}-opm&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Run &lt;code&gt;make opm&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5843&#34;&gt;#5843&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.21.0</title>
      <link>/docs/upgrading-sdk-version/v1.21.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.21.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;gov3for-golang-language-based-operators-fix-suite-test-using-global-cfg&#34;&gt;(go/v3):For golang-language based operators, fix suite test using global cfg&lt;/h2&gt;
&lt;p&gt;In the suite test files, replace &lt;code&gt;cfg, err := testEnv.Start()&lt;/code&gt; with:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;var&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;error&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;// cfg is defined in this file globally.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;cfg&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;err&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;testEnv&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Start&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Note: You can find suite test files scaffold for the APIs created for your project
such as &lt;code&gt;api/webhook_suitetest.go&lt;/code&gt; directory as for your controllers in &lt;code&gt;controllers/suite_test.go&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-golang-based-operators-update-dockerfile-if-you-are-using-the-declarativev1-pluginhttpsbook-v3bookkubebuilderiopluginsdeclarative-v1html&#34;&gt;For Golang-based operators, update Dockerfile if you are using the &lt;a href=&#34;https://book-v3.book.kubebuilder.io/plugins/declarative-v1.html&#34;&gt;declarative/v1 plugin&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;If you are using the declarative/v1 plugin for your scaffolds, then following the steps to update the Dockerfile.
a) After &lt;code&gt;COPY controllers/ controllers/&lt;/code&gt; add:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# https://github.com/kubernetes-sigs/kubebuilder-declarative-pattern/blob/master/docs/addon/walkthrough/README.md#adding-a-manifest&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Stage channels and make readable&lt;/span&gt;
COPY channels/ /channels/
RUN chmod -R a+rx /channels/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;b)  After the &lt;code&gt;COPY --from=builder /workspace/manager .&lt;/code&gt;&amp;rdquo; add:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# copy channels&lt;/span&gt;
COPY --from&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;builder /channels /channels
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3for-golang-based-operators-upgrade-controller-runtime-from-v0110-to-v0112-and-kubernetes-deps-from-1230-to-1235&#34;&gt;(go/v3):For Golang-based operators, upgrade controller-runtime from v0.11.0 to v0.11.2 and Kubernetes deps from 1.23.0 to 1.23.5&lt;/h2&gt;
&lt;p&gt;Update your go.mod by replacing &lt;code&gt;sigs.k8s.io/controller-runtime v0.11.0&lt;/code&gt; with &lt;code&gt;sigs.k8s.io/controller-runtime v0.11.2&lt;/code&gt; and run &lt;code&gt;go mod tidy&lt;/code&gt;
to update the K8s dependencies.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-golanghelmansible-based-operators-upgrade-kube-rbac-proxy-image-from-v080-to-v0110-for-further-information-see-the-kube-rbac-proxy-release-noteshttpsgithubcombranczkube-rbac-proxyreleases&#34;&gt;For Golang/Helm/Ansible-based operators, upgrade kube-rbac-proxy image from v0.8.0 to v0.11.0. (For further information see the kube-rbac-proxy &lt;a href=&#34;https://github.com/brancz/kube-rbac-proxy/releases&#34;&gt;release notes&lt;/a&gt;)&lt;/h2&gt;
&lt;p&gt;Update the tag version used for the image &lt;code&gt;gcr.io/kubebuilder/kube-rbac-proxy&lt;/code&gt; in the file config/default/manager_auth_proxy_patch.yaml.
Replace &lt;code&gt;gcr.io/kubebuilder/kube-rbac-proxy:v0.8.0&lt;/code&gt; with &lt;code&gt;gcr.io/kubebuilder/kube-rbac-proxy:v0.11.0&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-golang-based-operators--change-makefile-targets-to-replace-go-get-with-go-install&#34;&gt;For Golang-based operators,  change Makefile targets to replace go get with go install&lt;/h2&gt;
&lt;p&gt;The targets kustomize, controller-gen and envtest were changed. Update the Makefile replacing:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;CONTROLLER_GEN&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell &lt;span style=&#34;color:#204a87&#34;&gt;pwd&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/bin/controller-gen
.PHONY: controller-gen
controller-gen: &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download controller-gen locally if necessary.&lt;/span&gt;
	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;call go-get-tool,&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CONTROLLER_GEN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;,sigs.k8s.io/controller-tools/cmd/controller-gen@v0.8.0&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;KUSTOMIZE&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell &lt;span style=&#34;color:#204a87&#34;&gt;pwd&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/bin/kustomize
.PHONY: kustomize
kustomize: &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download kustomize locally if necessary.&lt;/span&gt;
	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;call go-get-tool,&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;,sigs.k8s.io/kustomize/kustomize/v3@v3.8.7&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;ENVTEST&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell &lt;span style=&#34;color:#204a87&#34;&gt;pwd&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/bin/setup-envtest
.PHONY: envtest
envtest: &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download envtest-setup locally if necessary.&lt;/span&gt;
	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;call go-get-tool,&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;,sigs.k8s.io/controller-runtime/tools/setup-envtest@latest&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# go-get-tool will &amp;#39;go get&amp;#39; any package $2 and install it to $1.&lt;/span&gt;
PROJECT_DIR :&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell dirname &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;abspath &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;lastword &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;MAKEFILE_LIST&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;))))&lt;/span&gt;
define go-get-tool
@&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt; -f &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;1&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;||&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;set&lt;/span&gt; -e &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;TMP_DIR&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;$$&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;mktemp -d&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;cd&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;$$&lt;/span&gt;TMP_DIR &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;go mod init tmp &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Downloading &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;2&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GOBIN&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;PROJECT_DIR&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/bin go get &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;2&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;rm -rf &lt;span style=&#34;color:#000&#34;&gt;$$&lt;/span&gt;TMP_DIR &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;;&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;
endef
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;##@ Build Dependencies&lt;/span&gt;

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Location to install dependencies to&lt;/span&gt;
LOCALBIN ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell &lt;span style=&#34;color:#204a87&#34;&gt;pwd&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/bin
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;:
	mkdir -p &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Tool Binaries&lt;/span&gt;
KUSTOMIZE ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/kustomize
CONTROLLER_GEN ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/controller-gen
ENVTEST ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;/setup-envtest

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Tool Versions&lt;/span&gt;
KUSTOMIZE_VERSION ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; v3.8.7
CONTROLLER_TOOLS_VERSION ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; v0.8.0

KUSTOMIZE_INSTALL_SCRIPT ?&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh&amp;#34;&lt;/span&gt;
.PHONY: kustomize
kustomize: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download kustomize locally if necessary.&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
	curl -s &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE_INSTALL_SCRIPT&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; bash -s -- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;subst v,,&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE_VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

.PHONY: controller-gen
controller-gen: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CONTROLLER_GEN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download controller-gen locally if necessary.&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CONTROLLER_GEN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
	&lt;span style=&#34;color:#000&#34;&gt;GOBIN&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; go install sigs.k8s.io/controller-tools/cmd/controller-gen@&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CONTROLLER_TOOLS_VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

.PHONY: envtest
envtest: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Download envtest-setup locally if necessary.&lt;/span&gt;
&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;ENVTEST&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;: &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
	&lt;span style=&#34;color:#000&#34;&gt;GOBIN&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;LOCALBIN&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; go install sigs.k8s.io/controller-runtime/tools/setup-envtest@latest
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.20.0</title>
      <link>/docs/upgrading-sdk-version/v1.20.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.20.0/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.19.0</title>
      <link>/docs/upgrading-sdk-version/v1.19.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.19.0/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.18.0</title>
      <link>/docs/upgrading-sdk-version/v1.18.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.18.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;bumped-java-operator-plugins-to-v020&#34;&gt;Bumped java-operator-plugins to v0.2.0&lt;/h2&gt;
&lt;p&gt;Additions:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- chore: bump go 1.17, k8s 1.23, and kubebuilder 3.3
- chore(deps): update to Quarkus SDK extension 3.0.2 and Quarkus 2.6.3
- chore(deps): update to use Quarkus JOSDK extension 3.0.1
- Remove useless file
- chore: bump k8s 1.22.2 and kubebuilder 3.2
- exposed exnpoints for micrometer metrics
- modified the Quarkus operator SDK version and tutorial too
- chore: bump fabric8 5.8.0 &amp;amp; quarkus 2.4.0
- modified the doc file and removed file after generation
- release: fix release script to understand release branches
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Bug Fixes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- Fix for wrongly generated file name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5542&#34;&gt;#5542&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;support-image-digests-instead-of-tags&#34;&gt;Support image digests instead of tags&lt;/h2&gt;
&lt;p&gt;Add following variables to your project&amp;rsquo;s &lt;code&gt;Makefile&lt;/code&gt; below the &lt;code&gt;BUNDLE_IMG ?=&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# BUNDLE_GEN_FLAGS are the flags passed to the operator-sdk generate bundle command
BUNDLE_GEN_FLAGS ?= -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS)

# USE_IMAGE_DIGESTS defines if images are resolved via tags or digests
# You can enable this value if you would like to use SHA Based Digests
# To enable set flag to true
USE_IMAGE_DIGESTS ?= false
ifeq ($(USE_IMAGE_DIGESTS), true)
    BUNDLE_GEN_FLAGS += --use-image-digests
endif
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Using the YAML string &amp;lsquo;|&amp;rsquo; operator means that newlines in this string will
Then in the &lt;code&gt;bundle&lt;/code&gt; target we want to replace the flags passed to
&lt;code&gt;generate bundle&lt;/code&gt; with a reference to the &lt;code&gt;BUNDLE_GEN_FLAGS&lt;/code&gt; above.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;generate bundle&lt;/code&gt; line should look like this&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(KUSTOMIZE) build config/manifests | operator-sdk generate bundle $(BUNDLE_GEN_FLAGS)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For reference the &lt;em&gt;PREVIOUS&lt;/em&gt; version looked as follows&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$(KUSTOMIZE) build config/manifests | operator-sdk generate bundle -q --overwrite --version $(VERSION) $(BUNDLE_METADATA_OPTS)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5567&#34;&gt;#5567&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-requirement-cloudcommon-for-ansible-based-operators&#34;&gt;Add requirement cloud.common for Ansible-based operators&lt;/h2&gt;
&lt;p&gt;Add the following line in &lt;code&gt;requirements.go&lt;/code&gt; when using operator ansible sdk:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- name: cloud.common
  version: &amp;quot;2.1.0&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5505&#34;&gt;#5505&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.17.0</title>
      <link>/docs/upgrading-sdk-version/v1.17.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.17.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;gov3-upgrade-go-and-dependencies&#34;&gt;(go/v3) Upgrade go and dependencies&lt;/h2&gt;
&lt;p&gt;Upgrade controller-runtime from &lt;code&gt;0.10.0&lt;/code&gt; to &lt;code&gt;0.11.0&lt;/code&gt;, k8s from &lt;code&gt;1.22&lt;/code&gt; to &lt;code&gt;1.23&lt;/code&gt; and controller-gen from &lt;code&gt;v0.0.7&lt;/code&gt; to &lt;code&gt;v0.8.0&lt;/code&gt;.
Following the steps to update your project.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Update the go.mod file with:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;go 1.17

require (
  github.com/onsi/ginkgo v1.16.5
  github.com/onsi/gomega v1.17.0
  k8s.io/api v0.23.0
  k8s.io/apimachinery v0.23.0
  k8s.io/client-go v0.23.0
  sigs.k8s.io/controller-runtime v0.11.0
)
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Run &lt;code&gt;go mod tidy&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now, let&amp;rsquo;s update the Makefile targets accordingly:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Replace &lt;code&gt;ENVTEST_K8S_VERSION = 1.22&lt;/code&gt; with &lt;code&gt;ENVTEST_K8S_VERSION = 1.23&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Replace &lt;code&gt;sigs.k8s.io/controller-tools/cmd/controller-gen@v0.7.0&lt;/code&gt; with &lt;code&gt;sigs.k8s.io/controller-tools/cmd/controller-gen@v0.8.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Run &lt;code&gt;make manifests&lt;/code&gt; and &lt;code&gt;make generate&lt;/code&gt; to ensure that you will update your manifests with the new versions&lt;/li&gt;
&lt;li&gt;You might want to run &lt;code&gt;make all&lt;/code&gt; to ensure that all updates were done accordinly and succeffully&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5505&#34;&gt;#5505&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;reduce-debug-log-level-for-the-sidecar-container-kube-rbac-proxy-from-10-to-0&#34;&gt;Reduce debug log level for the sidecar container kube-rbac-proxy from 10 to 0&lt;/h2&gt;
&lt;p&gt;Update the file &lt;code&gt;config/default/manager_auth_proxy_patch.yaml&lt;/code&gt; by replacing &lt;code&gt;&amp;quot;--v=10&amp;quot;&lt;/code&gt; with &lt;code&gt;&amp;quot;--v=0&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5505&#34;&gt;#5505&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-resource-requests-and-limits-to-kube-rbac-proxy&#34;&gt;Add resource requests and limits to kube-rbac-proxy&lt;/h2&gt;
&lt;p&gt;Update the file &lt;code&gt;config/default/manager_auth_proxy_patch.yaml&lt;/code&gt; by adding:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;...
resources:
  limits:
    cpu: 500m
    memory: 128Mi
  requests:
    cpu: 5m
    memory: 64Mi
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5505&#34;&gt;#5505&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.16.0</title>
      <link>/docs/upgrading-sdk-version/v1.16.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.16.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ansible-based-operators-add-resource-limits&#34;&gt;Ansible-based operators: add resource limits&lt;/h2&gt;
&lt;p&gt;Add into the &lt;code&gt;config/manager/manager.yaml&lt;/code&gt; the following limits which are now scaffolded by default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; 
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# TODO(user): Configure the resources accordingly based on the project requirements. # More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ resources:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;limits&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;cpu&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;500m&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;memory&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;768Mi&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;requests&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;cpu&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;10m&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;memory&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;256Mi&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;IMPORTANT:&lt;/strong&gt; Having resource limits is a best-practice and these values are reasonable defaults, but Operator authors should optimize these values based on their project&amp;rsquo;s requirements.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5274&#34;&gt;#5274&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;bump-operator_sdkutil-in-requirementsyml&#34;&gt;Bump operator_sdk.util in requirements.yml&lt;/h2&gt;
&lt;p&gt;Update &lt;code&gt;requirements.yml&lt;/code&gt; to point to 0.3.1 of operator_sdk.util instead of 0.2.0&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5462&#34;&gt;#5462&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-annotation-to-specify-the-default-container&#34;&gt;Add annotation to specify the default container&lt;/h2&gt;
&lt;p&gt;Add the following annotation into the file &lt;code&gt;config/manager/manager.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;metadata&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;annotations&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kubectl.kubernetes.io/default-container&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5330&#34;&gt;#5330&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;add-phony-targets-to-makefile&#34;&gt;Add PHONY targets to Makefile&lt;/h2&gt;
&lt;p&gt;Add PHONY target to all Makefile targets. For example, refer to the &lt;code&gt;Makefile&lt;/code&gt; in &lt;code&gt;operator-sdk/testdata&lt;/code&gt; directory of &lt;a href=&#34;https://github.com/operator-framework/operator-sdk&#34;&gt;OperatorSDK&lt;/a&gt; tagged by the release containing this change.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5330&#34;&gt;#5330&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-golang-based-projects-add-the-flag-ignore-not-found-into-the-makefile-for-the-uninstall-and-undeploy-targets&#34;&gt;For Golang-based projects, add the flag &lt;code&gt;ignore-not-found&lt;/code&gt; into the Makefile for the &lt;code&gt;uninstall&lt;/code&gt; and &lt;code&gt;undeploy&lt;/code&gt; targets&lt;/h2&gt;
&lt;p&gt;Update the Makefile with the following changes.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Above &lt;code&gt;##@ Deployment&lt;/code&gt; add the following:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;...
ifndef ignore-not-found
  ignore-not-found = false
endif
...
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Replace: &lt;code&gt;sh kubectl delete -f - &lt;/code&gt; With: &lt;code&gt;sh kubectl delete --ignore-not-found=$(ignore-not-found) -f - &lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;  You can also compare your &lt;code&gt;Makefile&lt;/code&gt; with the one tagged by this release, in &lt;code&gt;operator-sdk/testdata&lt;/code&gt; of the &lt;a href=&#34;https://github.com/operator-framework/operator-sdk&#34;&gt;OperatorSDK&lt;/a&gt; project.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5330&#34;&gt;#5330&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.15.0</title>
      <link>/docs/upgrading-sdk-version/v1.15.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.15.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;update-ansible-collection-communitykubernetes-to-kubernetescore&#34;&gt;Update ansible collection &lt;code&gt;community.kubernetes&lt;/code&gt; to &lt;code&gt;kubernetes.core&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Add the &lt;code&gt;kubernetes.core&lt;/code&gt; collection (&amp;gt;= 2.2.0) to the requrements.yml file&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;name: kubernetes.core
version: &amp;ldquo;2.2.0&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5249&#34;&gt;#5249&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.14.0</title>
      <link>/docs/upgrading-sdk-version/v1.14.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.14.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;upgrade-k8s-versions-to-use-122-golangv3&#34;&gt;Upgrade K8s versions to use 1.22 (golang/v3)&lt;/h2&gt;
&lt;p&gt;Note that to ensure the backwards compatibility SDK tool will try to downgrade the versions used if you need to still scaffold the v1beta1 for CRDs and Webhooks to publish your solutions into older cluster versions. However, note that this version is no longer supported in Kubernetes 1.22+, &lt;code&gt;sigs.k8s.io/controller-runtime v0.10.0&lt;/code&gt; or &lt;code&gt;controller-gen v0.7.0&lt;/code&gt;.
Following are the changes to be addressed in your &lt;code&gt;Makefile&lt;/code&gt; and &lt;code&gt;go.mod&lt;/code&gt; file if you are not using the &lt;code&gt;v1beta1&lt;/code&gt; K8s APIs which are no longer supported from k8s &lt;code&gt;1.22&lt;/code&gt; version.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Update your &lt;code&gt;go.mod&lt;/code&gt; file to upgrade the dependencies and run &lt;code&gt;go mod tidy&lt;/code&gt; to download then&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;k8s.io/api v0.22.1
k8s.io/apimachinery v0.22.1
k8s.io/client-go v0.22.1
sigs.k8s.io/controller-runtime v0.10.0
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Update your Makefile by making the following replacements:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- ENVTEST_K8S_VERSION = 1.21
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ ENVTEST_K8S_VERSION = 1.22
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#a40000&#34;&gt;- $(CONTROLLER_GEN) $(CRD_OPTIONS) rbac:roleName=manager-role webhook paths=&amp;#34;./...&amp;#34; output:crd:artifacts:config=config/crd/bases
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ $(CONTROLLER_GEN) rbac:roleName=manager-role crd webhook paths=&amp;#34;./...&amp;#34; output:crd:artifacts:config=config/crd/bases
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Remove from the &lt;code&gt;Makefile&lt;/code&gt; the &lt;code&gt;CRD_OPTIONS&lt;/code&gt;, see below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Produce CRDs that work back to Kubernetes 1.11 (no version conversion)
CRD_OPTIONS ?= &amp;quot;crd:trivialVersions=true,preserveUnknownFields=false&amp;quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Replace your &lt;code&gt;admissionReviewVersions={v1,v1beta1}&lt;/code&gt; markers with &lt;code&gt;admissionReviewVersions=v1&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run &lt;code&gt;make manifest&lt;/code&gt; to re-generate your manifests with latest versions.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5228&#34;&gt;#5228&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-ansible-based-operators-update-ansible-collection-communitykubernetes-to-kubernetescore&#34;&gt;For Ansible-based Operators, update ansible collection &lt;code&gt;community.kubernetes&lt;/code&gt; to &lt;code&gt;kubernetes.core&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Add the &lt;code&gt;kubernetes.core&lt;/code&gt; collection (&amp;gt;= 2.2.0) to the requrements.yml file&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;name: kubernetes.core
version: &amp;ldquo;2.2.0&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5249&#34;&gt;#5249&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.13.0</title>
      <link>/docs/upgrading-sdk-version/v1.13.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.13.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;optional-update-local-version-of-ansible-runner&#34;&gt;(Optional) Update local version of &lt;code&gt;ansible-runner&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ansible-runner&lt;/code&gt; 2.0+ includes a backwards incompatible change in the command signature, so in order to use &lt;code&gt;make run&lt;/code&gt; with Ansible-based operators, users will need to upgrade their local version of &lt;code&gt;ansible-runner&lt;/code&gt; to 2.0.2+&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5205&#34;&gt;#5205&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.12.0</title>
      <link>/docs/upgrading-sdk-version/v1.12.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.12.0/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.11.0</title>
      <link>/docs/upgrading-sdk-version/v1.11.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.11.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;optional-add-local-ansible-roles-path-to-env-in-make-run&#34;&gt;(optional) Add local Ansible Roles path to Env in &lt;code&gt;make run&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;If you would like to run your operator locally using &lt;code&gt;make run&lt;/code&gt;, modify the &lt;code&gt;run&lt;/code&gt; target in the &lt;code&gt;Makefile&lt;/code&gt; to: &lt;code&gt;ANSIBLE_ROLES_PATH=&amp;quot;$(ANSIBLE_ROLES_PATH):$(shell pwd)/roles&amp;quot; $(ANSIBLE_OPERATOR) run&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5118&#34;&gt;#5118&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-export-kubebuilder_assets-in-makefile&#34;&gt;(go/v3) Export &lt;code&gt;KUBEBUILDER_ASSETS&lt;/code&gt; in &lt;code&gt;Makefile&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;In &lt;code&gt;go/v3&lt;/code&gt; projects, after installing &lt;code&gt;setup-envtest&lt;/code&gt; binary, the path to &lt;code&gt;KUBEBUILDER_ASSETS&lt;/code&gt; needs to be exported. In &lt;code&gt;Makefile&lt;/code&gt;, add the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  +# ENVTEST_K8S_VERSION refers to the version of kubebuilder assets to be downloaded by envtest binary.
  +ENVTEST_K8S_VERSION = 1.21

  test: manifests generate fmt vet envtest ## Run tests.
  - go test ./... -coverprofile cover.out
  + KUBEBUILDER_ASSETS=&amp;#34;$(shell $(ENVTEST) use $(ENVTEST_K8S_VERSION) -p path)&amp;#34; go test ./... -coverprofile cover.out
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-ansiblev1-helmv1-add-containerport-protocol-field-in-manifests&#34;&gt;(go/v3, ansible/v1, helm/v1) Add &lt;code&gt;containerPort&lt;/code&gt; protocol field in manifests.&lt;/h2&gt;
&lt;p&gt;In &lt;code&gt;go/v3&lt;/code&gt;, &lt;code&gt;ansible/v1&lt;/code&gt;, &lt;code&gt;helm/v1&lt;/code&gt; projects, specify the &lt;code&gt;containerPort&lt;/code&gt; protocol in the following files: - &lt;code&gt;config/default/manager_auth_proxy_patch.yaml&lt;/code&gt; - &lt;code&gt;config/rbac/auth_proxy_service.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  ports:
 - containerPort: 8443
 + protocol: TCP
   name: https
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Additionally, in &lt;code&gt;go/v3&lt;/code&gt; projects, add the &lt;code&gt;containerPort&lt;/code&gt; protocol to &lt;code&gt;config/webhook/service.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;   ports:
    - port: 443
    + protocol: TCP
      targetPort: 9443
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-ansiblev1-helmv1-increase-resource-limits-for-controller-manager&#34;&gt;(go/v3, ansible/v1, helm/v1) Increase resource limits for controller manager.&lt;/h2&gt;
&lt;p&gt;In &lt;code&gt;go/v3&lt;/code&gt;, &lt;code&gt;ansible/v1&lt;/code&gt;, &lt;code&gt;helm/v1&lt;/code&gt; projects, increase the &lt;code&gt;cpu&lt;/code&gt; and &lt;code&gt;memory&lt;/code&gt; resource limits to &lt;code&gt;200m&lt;/code&gt; and &lt;code&gt;100Mi&lt;/code&gt; respectively in &lt;code&gt;config/manager/manager.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;  resources:
   limits:
    - cpu: 100m
    - memory: 30Mi
    + cpu: 200m
    + memory: 100Mi
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.10.0</title>
      <link>/docs/upgrading-sdk-version/v1.10.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.10.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ansiblev1-bump-kustomize-version-in-helm-project-scaffolding-to-387&#34;&gt;(ansible/v1) Bump Kustomize version in helm project scaffolding to 3.8.7&lt;/h2&gt;
&lt;p&gt;Ansible projects are now scaffolded with &lt;code&gt;Kustomize&lt;/code&gt; version &lt;code&gt;3.8.7&lt;/code&gt;. This version of kustomize requires that the path to patch file be provided with the &lt;code&gt;--path&lt;/code&gt; flag in &lt;code&gt;add patch&lt;/code&gt; command. In &lt;code&gt;molecule/default/prepare.yml&lt;/code&gt; file, update the command under &lt;code&gt;Set pull policy&lt;/code&gt;, to be:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;     - name: Set pull policy
&lt;span style=&#34;color:#a40000&#34;&gt;-      command: &amp;#39;{{ &amp;#34;{{ kustomize }}&amp;#34; }} edit add patch pull_policy/{{ &amp;#34;{{ operator_pull_policy }}&amp;#34; }}.yaml&amp;#39;
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+      command: &amp;#39;{{ &amp;#34;{{ kustomize }}&amp;#34; }} edit add patch --path pull_policy/{{ &amp;#34;{{ operator_pull_policy }}&amp;#34; }}.yaml&amp;#39;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/5057&#34;&gt;#5057&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.9.0</title>
      <link>/docs/upgrading-sdk-version/v1.9.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.9.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;the-ansible-operator-binary-will-reject-the-kubeconfig-if-the-server-url-contains-a-path&#34;&gt;The ansible-operator binary will reject the kubeconfig if the server URL contains a path.&lt;/h2&gt;
&lt;p&gt;There is currently no workaround other than running the operator as a pod in the cluster (where it will use the internal endpoint). The fix for this issue is currently blocked waiting on a fix to the apimachinery package. Once the upstream issue is merged then a proper fix will be done for ansible-operator. Work on this issue is being tracked here: &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/issues/4925&#34;&gt;https://github.com/operator-framework/operator-sdk/issues/4925&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4987&#34;&gt;#4987&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.8.0</title>
      <link>/docs/upgrading-sdk-version/v1.8.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.8.0/</guid>
      <description>
        
        
        &lt;p&gt;There are no migrations for this release! 🎉&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.7.1</title>
      <link>/docs/upgrading-sdk-version/v1.7.1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.7.1/</guid>
      <description>
        
        
        &lt;h2 id=&#34;add-the-manager-config-patch-to-configdefaultkustomizationyaml&#34;&gt;Add the manager config patch to config/default/kustomization.yaml&lt;/h2&gt;
&lt;p&gt;The scaffolded &lt;code&gt;--config&lt;/code&gt; flag was not added to either ansible-/helm-operator binary when &lt;a href=&#34;https://book-v3.book.kubebuilder.io/component-config-tutorial/tutorial.html&#34;&gt;config file&lt;/a&gt; support was originally added, so does not currently work. The &lt;code&gt;--config&lt;/code&gt; flag supports configuration of both binaries by file; this method of configuration only applies to the underlying &lt;a href=&#34;https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/manager#Manager&#34;&gt;controller manager&lt;/a&gt;, not the operator as a whole. To optionally configure the operator&amp;rsquo;s Deployment with a config file, make the following update to config/default/kustomization.yaml:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# If you want your controller-manager to expose the /metrics # endpoint w/o any authn/z, please comment the following line.
\- manager_auth_proxy_patch.yaml
&lt;span style=&#34;color:#00a000&#34;&gt;+# Mount the controller config file for loading manager configurations
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+# through a ComponentConfig type
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- manager_config_patch.yaml
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This feature is opt-in: flags can be used as-is or to override config file values.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4776&#34;&gt;#4776&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;deprecate-support-for-packagemanifests&#34;&gt;Deprecate support for packagemanifests.&lt;/h2&gt;
&lt;p&gt;The operator-framework is removing support for the packagemanifests format in the near future. Hence, &lt;code&gt;operator-sdk generate packagemanifests&lt;/code&gt; and &lt;code&gt;operator-sdk run packagemanifests&lt;/code&gt; commands are deprecated. In order to migrate packagemanifests to bundles, &lt;code&gt;operator-sdk pkgman-to-bundle&lt;/code&gt; command can be used. Run &lt;code&gt;operator-sdk pkgman-to-bundle --help&lt;/code&gt; for more details.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4838&#34;&gt;#4838&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-ansiblev1-helmv1-move-leasescoordinationk8sio-to-its-own-proxy-role-rule&#34;&gt;(go/v3, ansible/v1, helm/v1) Move &lt;code&gt;leases.coordination.k8s.io&lt;/code&gt; to its own proxy-role rule&lt;/h2&gt;
&lt;p&gt;Make the following changes to config/rbac/leader_election_role.yaml:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;rules:
\- apiGroups:
  - &amp;#34;&amp;#34;
&lt;span style=&#34;color:#a40000&#34;&gt;-  - coordination.k8s.io
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  resources:
  - configmaps
&lt;span style=&#34;color:#00a000&#34;&gt;+ verbs:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- get
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- list
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- watch
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- create
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- update
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- patch
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- delete
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- apiGroups:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- coordination.k8s.io
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ resources:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;    - leases
  verbs:
    - get
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4835&#34;&gt;#4835&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-set-the-makefiles-shell-variable-to-the-systems-bash-binary&#34;&gt;(go/v3) Set the Makefile&amp;rsquo;s &lt;code&gt;SHELL&lt;/code&gt; variable to the system&amp;rsquo;s &lt;code&gt;bash&lt;/code&gt; binary&lt;/h2&gt;
&lt;p&gt;Importing &lt;code&gt;setup-envtest.sh&lt;/code&gt; needs bash, so your Makefile&amp;rsquo;s &lt;code&gt;SHELL&lt;/code&gt; variable should be set to &lt;code&gt;bash&lt;/code&gt; with error options:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;else GOBIN=$(shell go env GOBIN)
endif
&lt;span style=&#34;color:#00a000&#34;&gt;+# Setting SHELL to bash allows bash commands to be executed by recipes.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+# This is a requirement for &amp;#39;setup-envtest.sh&amp;#39; in the test target.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+# Options are set to exit when a recipe line exits non-zero or a piped command fails.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+SHELL = /usr/bin/env bash -o pipefail
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+.SHELLFLAGS = -ec
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ all: build
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4835&#34;&gt;#4835&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ensure-that-existing-dependent-resources-have-owner-annotations&#34;&gt;Ensure that existing dependent resources have owner annotations&lt;/h2&gt;
&lt;p&gt;For Ansible-based operators, &lt;a href=&#34;https://sdk.operatorframework.io/docs/building-operators/ansible/reference/retroactively-owned-resources/&#34;&gt;owner reference annotations&lt;/a&gt;
on cluster-scoped dependent resources and dependent resources in other namespaces were not applied correctly.
A workaround was to add these annotations manually, which is no longer required as this bug has been fixed.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4850&#34;&gt;#4850&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-bump-controller-runtime-to-v083-and-kubernetes-dependencies-to-v0202&#34;&gt;(go/v3) Bump controller-runtime to v0.8.3 and kubernetes dependencies to v0.20.2&lt;/h2&gt;
&lt;p&gt;In your go.mod, change controller-runtime&amp;rsquo;s version to v0.8.3 and kubernetes dependencies  to v0.20.2, then rebuild your project.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4863&#34;&gt;#4863&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.7.0</title>
      <link>/docs/upgrading-sdk-version/v1.7.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.7.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;add-the-manager-config-patch-to-configdefaultkustomizationyaml&#34;&gt;Add the manager config patch to config/default/kustomization.yaml&lt;/h2&gt;
&lt;p&gt;The scaffolded &lt;code&gt;--config&lt;/code&gt; flag was not added to either ansible-/helm-operator binary when &lt;a href=&#34;https://book-v3.book.kubebuilder.io/component-config-tutorial/tutorial.html&#34;&gt;config file&lt;/a&gt; support was originally added, so does not currently work. The &lt;code&gt;--config&lt;/code&gt; flag supports configuration of both binaries by file; this method of configuration only applies to the underlying &lt;a href=&#34;https://pkg.go.dev/sigs.k8s.io/controller-runtime/pkg/manager#Manager&#34;&gt;controller manager&lt;/a&gt;, not the operator as a whole. To optionally configure the operator&amp;rsquo;s Deployment with a config file, make the following update to config/default/kustomization.yaml:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# If you want your controller-manager to expose the /metrics # endpoint w/o any authn/z, please comment the following line.
&lt;span style=&#34;color:#a40000&#34;&gt;- manager_auth_proxy_patch.yaml
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+# Mount the controller config file for loading manager configurations
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+# through a ComponentConfig type
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- manager_config_patch.yaml
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This feature is opt-in: flags can be used as-is or to override config file values.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4776&#34;&gt;#4776&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;deprecate-support-for-packagemanifests&#34;&gt;Deprecate support for packagemanifests.&lt;/h2&gt;
&lt;p&gt;The operator-framework is removing support for the packagemanifests format in the near future. Hence, &lt;code&gt;operator-sdk generate packagemanifests&lt;/code&gt; and &lt;code&gt;operator-sdk run packagemanifests&lt;/code&gt; commands are deprecated. In order to migrate packagemanifests to bundles, &lt;code&gt;operator-sdk pkgman-to-bundle&lt;/code&gt; command can be used. Run &lt;code&gt;operator-sdk pkgman-to-bundle --help&lt;/code&gt; for more details.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4838&#34;&gt;#4838&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-ansiblev1-helmv1-move-leasescoordinationk8sio-to-its-own-proxy-role-rule&#34;&gt;(go/v3, ansible/v1, helm/v1) Move &lt;code&gt;leases.coordination.k8s.io&lt;/code&gt; to its own proxy-role rule&lt;/h2&gt;
&lt;p&gt;Make the following changes to config/rbac/leader_election_role.yaml:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;rules: \- apiGroups:
  - &amp;#34;&amp;#34;
&lt;span style=&#34;color:#a40000&#34;&gt;-  - coordination.k8s.io
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;  resources:
  - configmaps
&lt;span style=&#34;color:#00a000&#34;&gt;+ verbs:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- get
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- list
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- watch
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- create
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- update
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- patch
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- delete
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- apiGroups:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+- coordination.k8s.io
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ resources:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;    - leases
  verbs:
    - get
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4835&#34;&gt;#4835&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-set-the-makefiles-shell-variable-to-the-systems-bash-binary&#34;&gt;(go/v3) Set the Makefile&amp;rsquo;s &lt;code&gt;SHELL&lt;/code&gt; variable to the system&amp;rsquo;s &lt;code&gt;bash&lt;/code&gt; binary&lt;/h2&gt;
&lt;p&gt;Importing &lt;code&gt;setup-envtest.sh&lt;/code&gt; needs bash, so your Makefile&amp;rsquo;s &lt;code&gt;SHELL&lt;/code&gt; variable should be set to &lt;code&gt;bash&lt;/code&gt; with error options:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;else GOBIN=$(shell go env GOBIN)
endif
&lt;span style=&#34;color:#00a000&#34;&gt;+# Setting SHELL to bash allows bash commands to be executed by recipes.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+# This is a requirement for &amp;#39;setup-envtest.sh&amp;#39; in the test target.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+# Options are set to exit when a recipe line exits non-zero or a piped command fails.
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+SHELL = /usr/bin/env bash -o pipefail
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+.SHELLFLAGS = -ec
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ all: build
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4835&#34;&gt;#4835&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.6.0</title>
      <link>/docs/upgrading-sdk-version/v1.6.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.6.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ansiblev1-helmv1-optional-configure-ansible-operator-and-helm-operator-with-a-component-config&#34;&gt;(ansible/v1, helm/v1) Optional: configure &lt;code&gt;ansible-operator&lt;/code&gt; and &lt;code&gt;helm-operator&lt;/code&gt; with a component config.&lt;/h2&gt;
&lt;p&gt;To add this option your project you will need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create the file &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/blob/2a1bd03/testdata/ansible/memcached-operator/config/default/manager_config_patch.yaml&#34;&gt;config/default/manager_config_patch.yaml&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create the file &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/blob/2a1bd03/testdata/ansible/memcached-operator/config/manager/controller_manager_config.yaml&#34;&gt;config/manager/controller_manager_config.yaml&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Update the &lt;code&gt;config/default/kustomization.yaml&lt;/code&gt; by adding the following to &lt;code&gt;resources&lt;/code&gt;:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;- manager_config_patch.yaml&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Update the &lt;code&gt;config/manager/kustomization.yaml&lt;/code&gt; by adding:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;generatorOptions&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;disableNameSuffixHash&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;configMapGenerator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;files&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- controller_manager_config.yaml&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager-config&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;kustomize.config.k8s.io/v1beta1&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;Kustomization&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;images&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;controller&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;newName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;quay.io/example/memcached-operator&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;newTag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;v0&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.0.1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4701&#34;&gt;#4701&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-helmv1-add-role-rules-for-leader-election&#34;&gt;(ansible/v1, helm/v1) Add Role rules for leader election.&lt;/h2&gt;
&lt;p&gt;Add the rule for the &lt;code&gt;apiGroups&lt;/code&gt; &lt;code&gt;coordination.k8s.io&lt;/code&gt; and the resource &lt;code&gt;leases&lt;/code&gt; in config/rbac/leader_election_role.yaml:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rules&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- coordination.k8s.io&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- configmaps&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- leases&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4701&#34;&gt;#4701&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-update-ansible-collections&#34;&gt;(ansible/v1) Update Ansible collections&lt;/h2&gt;
&lt;p&gt;In your requirements.yml, change the &lt;code&gt;version&lt;/code&gt; field for community.kubernetes to &lt;code&gt;1.2.1&lt;/code&gt;, and the &lt;code&gt;version&lt;/code&gt; field for &lt;code&gt;operator_sdk.util&lt;/code&gt; to &lt;code&gt;0.2.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4734&#34;&gt;#4734&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;helmv1-replace-deprecated-leader-election-and-metrics-address-flags&#34;&gt;(helm/v1) Replace deprecated leader election and metrics address flags&lt;/h2&gt;
&lt;p&gt;Replace deprecated flags &lt;code&gt;--enable-leader-election&lt;/code&gt; and &lt;code&gt;--metrics-addr&lt;/code&gt; with &lt;code&gt;--leader-elect&lt;/code&gt; and &lt;code&gt;--metrics-bind-address&lt;/code&gt;, respectively.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4654&#34;&gt;#4654&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;helmv1-explicitly-set---health-probe-bind-address-in-the-managers-auth-proxy-patch&#34;&gt;(helm/v1) Explicitly set &lt;code&gt;--health-probe-bind-address&lt;/code&gt; in the manager&amp;rsquo;s auth proxy patch.&lt;/h2&gt;
&lt;p&gt;Add the arg &lt;code&gt;--health-probe-bind-address=:8081&lt;/code&gt; to the &lt;code&gt;config/default/manager_auth_proxy_patch.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;args&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;--health-probe-bind-address=:8081&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4654&#34;&gt;#4654&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-explicitly-set---health-probe-bind-address-in-the-managers-auth-proxy-patch&#34;&gt;(ansible/v1) Explicitly set &lt;code&gt;--health-probe-bind-address&lt;/code&gt; in the manager&amp;rsquo;s auth proxy patch.&lt;/h2&gt;
&lt;p&gt;Add the arg &lt;code&gt;--health-probe-bind-address=:6789&lt;/code&gt; to the &lt;code&gt;config/default/manager_auth_proxy_patch.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;args&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;--health-probe-bind-address=:6789&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4654&#34;&gt;#4654&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;helmv1-ansiblev1-add-help-target-to-makefile&#34;&gt;(helm/v1, ansible/v1) Add &lt;code&gt;help&lt;/code&gt; target to Makefile.&lt;/h2&gt;
&lt;p&gt;Ansible/Helm projects now provide a Makefile &lt;code&gt;help&lt;/code&gt; target, similar to a &lt;code&gt;--help&lt;/code&gt; flag. You can copy and paste this target from the relevant sample&amp;rsquo;s Makefile (&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/blob/v1.5.0/testdata/helm/memcached-operator/Makefile&#34;&gt;helm&lt;/a&gt;, &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/blob/v1.5.0/testdata/ansible/memcached-operator/Makefile&#34;&gt;ansible&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4660&#34;&gt;#4660&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-helmv1-add-securitycontexts-to-your-managers-deployment&#34;&gt;(ansible/v1, helm/v1) Add &lt;code&gt;securityContext&lt;/code&gt;&#39;s to your manager&amp;rsquo;s Deployment.&lt;/h2&gt;
&lt;p&gt;In &lt;code&gt;config/manager/manager.yaml&lt;/code&gt;, add the following security contexts:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;securityContext&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;runAsNonRoot&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;securityContext&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;allowPrivilegeEscalation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4655&#34;&gt;#4655&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;manifestsv2-add-a-kustomize-patch-to-remove-the-cert-manager-volumevolumemount-from-your-csv&#34;&gt;(manifests/v2) Add a kustomize patch to remove the cert-manager volume/volumeMount from your CSV&lt;/h2&gt;
&lt;p&gt;OLM does &lt;a href=&#34;https://olm.operatorframework.io/docs/advanced-tasks/adding-admission-and-conversion-webhooks/#certificate-authority-requirements&#34;&gt;not yet support cert-manager&lt;/a&gt;, so a JSON patch was added to remove this volume and mount such that OLM can itself create and manage certs for your Operator.
In &lt;code&gt;config/manifests/kustomization.yaml&lt;/code&gt;, add the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#patchesJson6902:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#- target:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    group: apps&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    version: v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    kind: Deployment&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    name: controller-manager&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    namespace: system&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#  patch: |-&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    # Remove the manager container&amp;#39;s &amp;#34;cert&amp;#34; volumeMount, since OLM will create and mount a set of certs.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    # Update the indices in this path if adding or removing containers/volumeMounts in the manager&amp;#39;s Deployment.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    - op: remove&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#      path: /spec/template/spec/containers/1/volumeMounts/0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    # Remove the &amp;#34;cert&amp;#34; volume, since OLM will create and mount a set of certs.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    # Update the indices in this path if adding or removing volumes in the manager&amp;#39;s Deployment.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    - op: remove&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#      path: /spec/template/spec/volumes/0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you have configured your operator to use webhooks, add this YAML block uncommented.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4623&#34;&gt;#4623&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov2-gov3-ansiblev1-helmv1-add-scheme-token-and-tls-config-to-the-prometheus-servicemonitor-metrics-endpoint&#34;&gt;(go/v2, go/v3, ansible/v1, helm/v1) Add scheme, token, and TLS config to the Prometheus &lt;code&gt;ServiceMonitor&lt;/code&gt; metrics endpoint.&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;/metrics&lt;/code&gt; endpoint, while specifying the &lt;code&gt;https&lt;/code&gt; port on the manager Pod, was not actually configured to serve over https because no tlsConfig was set. Since kube-rbac-proxy secures this endpoint as a manager sidecar, using the service account token mounted into the Pod by default corrects this problem.
The changes should look like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# config/prometheus/monitor.yaml
spec:
   endpoints:
     - path: /metrics
       port: https
&lt;span style=&#34;color:#00a000&#34;&gt;+      scheme: https
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+      bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+      tlsConfig:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        insecureSkipVerify: true
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   selector:
     matchLabels:
       control-plane: controller-manager
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; if you have removed kube-rbac-proxy from your project, make sure to secure the &lt;code&gt;/metrics&lt;/code&gt; endpoint using a proper &lt;a href=&#34;https://prometheus.io/docs/guides/tls-encryption/&#34;&gt;TLS configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4680&#34;&gt;#4680&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov2-gov3-ansiblev1-helmv1-add-opm-and-catalog-build-makefile-targets&#34;&gt;(go/v2, go/v3, ansible/v1, helm/v1) Add &lt;code&gt;opm&lt;/code&gt; and &lt;code&gt;catalog-build&lt;/code&gt; Makefile targets&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;opm&lt;/code&gt; and &lt;code&gt;catalog-build&lt;/code&gt; Makefile targets were added so operator developers who want to create their own catalogs for their operator or add their operator&amp;rsquo;s bundle(s) to an existing catalog can do so. If this sounds like you, add the following lines to the bottom of your Makefile:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; ./bin/opm
&lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;ifeq&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;(,&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;wildcard&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;))&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;ifeq&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;(,&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;shell&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;which&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt; 2&amp;gt;/&lt;span style=&#34;color:#000&#34;&gt;dev&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;)&lt;/span&gt;
	&lt;span style=&#34;color:#a40000&#34;&gt;@{&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;\&lt;/span&gt;
	&lt;span style=&#34;color:#a40000&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;-e&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;;\&lt;/span&gt;
	&lt;span style=&#34;color:#a40000&#34;&gt;mkdir&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;-p&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;dir&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;;\&lt;/span&gt;
	&lt;span style=&#34;color:#000&#34;&gt;curl -sSLo $(OPM) https&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;//&lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;.&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;operator&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;framework&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;operator&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;registry&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;releases&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;download&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;v&lt;/span&gt;1.19.1/&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OS&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;-&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ARCH&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt; ;\
	&lt;span style=&#34;color:#000&#34;&gt;chmod&lt;/span&gt; +&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; ;\
	}
&lt;span style=&#34;color:#a40000&#34;&gt;else&lt;/span&gt; 
&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell which opm&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;endif&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;endif&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;BUNDLE_IMGS&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;BUNDLE_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; 
&lt;span style=&#34;color:#000&#34;&gt;CATALOG_IMG&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;IMAGE_TAG_BASE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;-catalog:v&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; ifneq &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;origin CATALOG_BASE_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;, undefined&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt; FROM_INDEX_OPT :&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; --from-index &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CATALOG_BASE_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; endif 
&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;catalog&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;catalog-build&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt;
	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;OPM&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; index add --container-tool docker --mode semver --tag &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CATALOG_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; --bundles &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;BUNDLE_IMGS&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;FROM_INDEX_OPT&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;catalog&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;push&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;catalog-push&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Push the catalog image.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;MAKE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; docker-push &lt;span style=&#34;color:#000&#34;&gt;IMG&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CATALOG_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If updating a Go operator project, additionally add the following Makefile variables:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;OS&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell go env GOOS&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;ARCH&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell go env GOARCH&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4406&#34;&gt;#4406&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov2-gov3-ansiblev1-helmv1-changed-bundle_img-and-added-image_tag_base-makefile-variables&#34;&gt;(go/v2, go/v3, ansible/v1, helm/v1) Changed &lt;code&gt;BUNDLE_IMG&lt;/code&gt; and added &lt;code&gt;IMAGE_TAG_BASE&lt;/code&gt; Makefile variables&lt;/h2&gt;
&lt;p&gt;The following Makefile changes were made to allow &lt;code&gt;make bundle-build bundle-push catalog-build catalog-push&lt;/code&gt; and encode image repo/namespace information in the Makefile by default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+IMAGE_TAG_BASE ?= &amp;lt;registry&amp;gt;/&amp;lt;operator name&amp;gt;
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-BUNDLE_IMG ?= controller-bundle:$(VERSION)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For example, if &lt;code&gt;IMAGE_TAG_BASE ?= foo/bar-operator&lt;/code&gt; then running &lt;code&gt;make bundle-build bundle-push catalog-build catalog-push&lt;/code&gt; would build &lt;code&gt;foo/bar-operator-bundle:v0.0.1&lt;/code&gt; and &lt;code&gt;foo/bar-operator-catalog:v0.0.1&lt;/code&gt; then push them to the &lt;code&gt;docker.io/foo&lt;/code&gt; namespaced registry.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4406&#34;&gt;#4406&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-helmv1-add-the-controller-manager-serviceaccount-to-your-project&#34;&gt;(ansible/v1, helm/v1) Add the &lt;code&gt;controller-manager&lt;/code&gt; ServiceAccount to your project.&lt;/h2&gt;
&lt;p&gt;A non-default ServiceAccount &lt;code&gt;controller-manager&lt;/code&gt; is scaffolded on &lt;code&gt;operator-sdk init&lt;/code&gt;, to improve security for operators installed in shared namespaces. To add this ServiceAccount to your project, do the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Create the ServiceAccount.&lt;/span&gt;
cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;EOF &amp;gt; config/rbac/service_account.yaml apiVersion: v1 
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: ServiceAccount
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  namespace: system
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add it to the list of RBAC resources.&lt;/span&gt;
&lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;- service_account.yaml&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; config/rbac/kustomization.yaml
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Update all RoleBinding and ClusterRoleBinding subjects that reference the operator&amp;#39;s ServiceAccount.&lt;/span&gt;
find config/rbac -name *_binding.yaml -exec sed -i -E &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;s/  name: default/  name: controller-manager/g&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\;&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add the ServiceAccount name to the manager Deployment&amp;#39;s spec.template.spec.serviceAccountName. sed -i -E &amp;#39;s/([ ]+)(terminationGracePeriodSeconds:)/\1serviceAccountName: controller-manager\n\1\2/g&amp;#39; config/manager/manager.yaml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The changes should look like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# config/manager/manager.yaml
           requests:
             cpu: 100m
             memory: 20Mi
&lt;span style=&#34;color:#00a000&#34;&gt;+      serviceAccountName: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;       terminationGracePeriodSeconds: 10
# config/rbac/auth_proxy_role_binding.yaml
   name: proxy-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system
# config/rbac/kustomization.yaml
 resources:
&lt;span style=&#34;color:#00a000&#34;&gt;+- service_account.yaml
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt; - role.yaml
 - role_binding.yaml
 - leader_election_role.yaml
# config/rbac/leader_election_role_binding.yaml
   name: leader-election-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system
# config/rbac/role_binding.yaml
   name: manager-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system
# config/rbac/service_account.yaml 
&lt;span style=&#34;color:#00a000&#34;&gt;+apiVersion: v1 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+kind: ServiceAccount 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+metadata: 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  namespace: system
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4653&#34;&gt;#4653&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.6.1</title>
      <link>/docs/upgrading-sdk-version/v1.6.1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.6.1/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ansiblev1-helmv1-optional-configure-ansible-operator-and-helm-operator-with-a-component-config&#34;&gt;(ansible/v1, helm/v1) Optional: configure &lt;code&gt;ansible-operator&lt;/code&gt; and &lt;code&gt;helm-operator&lt;/code&gt; with a component config.&lt;/h2&gt;
&lt;p&gt;To add this option your project you will need to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create the file &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/blob/2a1bd03/testdata/ansible/memcached-operator/config/default/manager_config_patch.yaml&#34;&gt;config/default/manager_config_patch.yaml&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Create the file &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/blob/2a1bd03/testdata/ansible/memcached-operator/config/manager/controller_manager_config.yaml&#34;&gt;config/manager/controller_manager_config.yaml&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Update the &lt;code&gt;config/default/kustomization.yaml&lt;/code&gt; by adding the following to &lt;code&gt;resources&lt;/code&gt;:
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;- manager_config_patch.yaml&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;Update the &lt;code&gt;config/manager/kustomization.yaml&lt;/code&gt; by adding:&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;generatorOptions&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;disableNameSuffixHash&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;configMapGenerator&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;files&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- controller_manager_config.yaml&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager-config&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiVersion&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;kustomize.config.k8s.io/v1beta1&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;Kustomization&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;images&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;controller&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;newName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;quay.io/example/memcached-operator&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;newTag&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;v0&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;.0.1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4701&#34;&gt;#4701&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-helmv1-add-role-rules-for-leader-election&#34;&gt;(ansible/v1, helm/v1) Add Role rules for leader election.&lt;/h2&gt;
&lt;p&gt;Add the rule for the &lt;code&gt;apiGroups&lt;/code&gt; &lt;code&gt;coordination.k8s.io&lt;/code&gt; and the resource &lt;code&gt;leases&lt;/code&gt; in config/rbac/leader_election_role.yaml:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;rules&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;apiGroups&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- coordination.k8s.io&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- configmaps&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- leases&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4701&#34;&gt;#4701&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-update-ansible-collections&#34;&gt;(ansible/v1) Update Ansible collections&lt;/h2&gt;
&lt;p&gt;In your requirements.yml, change the &lt;code&gt;version&lt;/code&gt; field for community.kubernetes to &lt;code&gt;1.2.1&lt;/code&gt;, and the &lt;code&gt;version&lt;/code&gt; field for &lt;code&gt;operator_sdk.util&lt;/code&gt; to &lt;code&gt;0.2.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4734&#34;&gt;#4734&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;helmv1-replace-deprecated-leader-election-and-metrics-address-flags&#34;&gt;(helm/v1) Replace deprecated leader election and metrics address flags&lt;/h2&gt;
&lt;p&gt;Replace deprecated flags &lt;code&gt;--enable-leader-election&lt;/code&gt; and &lt;code&gt;--metrics-addr&lt;/code&gt; with &lt;code&gt;--leader-elect&lt;/code&gt; and &lt;code&gt;--metrics-bind-address&lt;/code&gt;, respectively.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4654&#34;&gt;#4654&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;helmv1-explicitly-set---health-probe-bind-address-in-the-managers-auth-proxy-patch&#34;&gt;(helm/v1) Explicitly set &lt;code&gt;--health-probe-bind-address&lt;/code&gt; in the manager&amp;rsquo;s auth proxy patch.&lt;/h2&gt;
&lt;p&gt;Add the arg &lt;code&gt;--health-probe-bind-address=:8081&lt;/code&gt; to the &lt;code&gt;config/default/manager_auth_proxy_patch.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;args&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;--health-probe-bind-address=:8081&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4654&#34;&gt;#4654&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-explicitly-set---health-probe-bind-address-in-the-managers-auth-proxy-patch&#34;&gt;(ansible/v1) Explicitly set &lt;code&gt;--health-probe-bind-address&lt;/code&gt; in the manager&amp;rsquo;s auth proxy patch.&lt;/h2&gt;
&lt;p&gt;Add the arg &lt;code&gt;--health-probe-bind-address=:6789&lt;/code&gt; to the &lt;code&gt;config/default/manager_auth_proxy_patch.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;args&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;- &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;--health-probe-bind-address=:6789&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4654&#34;&gt;#4654&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;helmv1-ansiblev1-add-help-target-to-makefile&#34;&gt;(helm/v1, ansible/v1) Add &lt;code&gt;help&lt;/code&gt; target to Makefile.&lt;/h2&gt;
&lt;p&gt;Ansible/Helm projects now provide a Makefile &lt;code&gt;help&lt;/code&gt; target, similar to a &lt;code&gt;--help&lt;/code&gt; flag. You can copy and paste this target from the relevant sample&amp;rsquo;s Makefile (&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/blob/v1.5.0/testdata/helm/memcached-operator/Makefile&#34;&gt;helm&lt;/a&gt;, &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/blob/v1.5.0/testdata/ansible/memcached-operator/Makefile&#34;&gt;ansible&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4660&#34;&gt;#4660&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-helmv1-add-securitycontexts-to-your-managers-deployment&#34;&gt;(ansible/v1, helm/v1) Add &lt;code&gt;securityContext&lt;/code&gt;&#39;s to your manager&amp;rsquo;s Deployment.&lt;/h2&gt;
&lt;p&gt;In &lt;code&gt;config/manager/manager.yaml&lt;/code&gt;, add the following security contexts:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;template&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;spec&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;securityContext&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;runAsNonRoot&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;true&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;containers&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;manager&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;securityContext&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;allowPrivilegeEscalation&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4655&#34;&gt;#4655&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;manifestsv2-add-a-kustomize-patch-to-remove-the-cert-manager-volumevolumemount-from-your-csv&#34;&gt;(manifests/v2) Add a kustomize patch to remove the cert-manager volume/volumeMount from your CSV&lt;/h2&gt;
&lt;p&gt;OLM does &lt;a href=&#34;https://olm.operatorframework.io/docs/advanced-tasks/adding-admission-and-conversion-webhooks/#certificate-authority-requirements&#34;&gt;not yet support cert-manager&lt;/a&gt;, so a JSON patch was added to remove this volume and mount such that OLM can itself create and manage certs for your Operator.
In &lt;code&gt;config/manifests/kustomization.yaml&lt;/code&gt;, add the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#patchesJson6902:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#- target:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    group: apps&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    version: v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    kind: Deployment&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    name: controller-manager&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    namespace: system&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#  patch: |-&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    # Remove the manager container&amp;#39;s &amp;#34;cert&amp;#34; volumeMount, since OLM will create and mount a set of certs.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    # Update the indices in this path if adding or removing containers/volumeMounts in the manager&amp;#39;s Deployment.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    - op: remove&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#      path: /spec/template/spec/containers/1/volumeMounts/0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    # Remove the &amp;#34;cert&amp;#34; volume, since OLM will create and mount a set of certs.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    # Update the indices in this path if adding or removing volumes in the manager&amp;#39;s Deployment.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#    - op: remove&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#      path: /spec/template/spec/volumes/0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you have configured your operator to use webhooks, add this YAML block uncommented.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4623&#34;&gt;#4623&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov2-gov3-ansiblev1-helmv1-add-scheme-token-and-tls-config-to-the-prometheus-servicemonitor-metrics-endpoint&#34;&gt;(go/v2, go/v3, ansible/v1, helm/v1) Add scheme, token, and TLS config to the Prometheus &lt;code&gt;ServiceMonitor&lt;/code&gt; metrics endpoint.&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;/metrics&lt;/code&gt; endpoint, while specifying the &lt;code&gt;https&lt;/code&gt; port on the manager Pod, was not actually configured to serve over https because no tlsConfig was set. Since kube-rbac-proxy secures this endpoint as a manager sidecar, using the service account token mounted into the Pod by default corrects this problem.
The changes should look like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# config/prometheus/monitor.yaml
spec:
   endpoints:
     - path: /metrics
       port: https
&lt;span style=&#34;color:#00a000&#34;&gt;+      scheme: https
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+      bearerTokenFile: /var/run/secrets/kubernetes.io/serviceaccount/token
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+      tlsConfig:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+        insecureSkipVerify: true
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   selector:
     matchLabels:
       control-plane: controller-manager
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; if you have removed kube-rbac-proxy from your project, make sure to secure the &lt;code&gt;/metrics&lt;/code&gt; endpoint using a proper &lt;a href=&#34;https://prometheus.io/docs/guides/tls-encryption/&#34;&gt;TLS configuration&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4680&#34;&gt;#4680&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov2-gov3-ansiblev1-helmv1-add-opm-and-catalog-build-makefile-targets&#34;&gt;(go/v2, go/v3, ansible/v1, helm/v1) Add &lt;code&gt;opm&lt;/code&gt; and &lt;code&gt;catalog-build&lt;/code&gt; Makefile targets&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;opm&lt;/code&gt; and &lt;code&gt;catalog-build&lt;/code&gt; Makefile targets were added so operator developers who want to create their own catalogs for their operator or add their operator&amp;rsquo;s bundle(s) to an existing catalog can do so. If this sounds like you, add the following lines to the bottom of your Makefile:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; ./bin/opm
&lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;ifeq&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;(,&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;wildcard&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;))&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;ifeq&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;(,&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;shell&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;which&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt; 2&amp;gt;/&lt;span style=&#34;color:#000&#34;&gt;dev&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;null&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;)&lt;/span&gt;
	&lt;span style=&#34;color:#a40000&#34;&gt;@{&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;\&lt;/span&gt;
	&lt;span style=&#34;color:#a40000&#34;&gt;set&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;-e&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;;\&lt;/span&gt;
	&lt;span style=&#34;color:#a40000&#34;&gt;mkdir&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;-p&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;dir&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;))&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;;\&lt;/span&gt;
	&lt;span style=&#34;color:#000&#34;&gt;curl -sSLo $(OPM) https&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;//&lt;span style=&#34;color:#000&#34;&gt;github&lt;/span&gt;.&lt;span style=&#34;color:#000&#34;&gt;com&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;operator&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;framework&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;operator&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;registry&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;releases&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;download&lt;/span&gt;/&lt;span style=&#34;color:#000&#34;&gt;v&lt;/span&gt;1.19.1/&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OS&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;-&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;ARCH&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt; ;\
	&lt;span style=&#34;color:#000&#34;&gt;chmod&lt;/span&gt; +&lt;span style=&#34;color:#000&#34;&gt;x&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; ;\
	}
&lt;span style=&#34;color:#a40000&#34;&gt;else&lt;/span&gt; 
&lt;span style=&#34;color:#000&#34;&gt;OPM&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell which opm&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;endif&lt;/span&gt;
&lt;span style=&#34;color:#a40000&#34;&gt;endif&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;BUNDLE_IMGS&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;BUNDLE_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; 
&lt;span style=&#34;color:#000&#34;&gt;CATALOG_IMG&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;IMAGE_TAG_BASE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;-catalog:v&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; ifneq &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;(&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;origin CATALOG_BASE_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;, undefined&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;)&lt;/span&gt; FROM_INDEX_OPT :&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; --from-index &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CATALOG_BASE_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; endif 
&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;catalog&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;build&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;catalog-build&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;opm&lt;/span&gt;
	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;OPM&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; index add --container-tool docker --mode semver --tag &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CATALOG_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; --bundles &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;BUNDLE_IMGS&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;FROM_INDEX_OPT&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;.PHONY&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#000&#34;&gt;catalog&lt;/span&gt;-&lt;span style=&#34;color:#000&#34;&gt;push&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;catalog-push&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;## Push the catalog image.
&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;&lt;/span&gt;	&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;MAKE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; docker-push &lt;span style=&#34;color:#000&#34;&gt;IMG&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;CATALOG_IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If updating a Go operator project, additionally add the following Makefile variables:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;OS&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell go env GOOS&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;span style=&#34;color:#000&#34;&gt;ARCH&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;shell go env GOARCH&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4406&#34;&gt;#4406&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov2-gov3-ansiblev1-helmv1-changed-bundle_img-and-added-image_tag_base-makefile-variables&#34;&gt;(go/v2, go/v3, ansible/v1, helm/v1) Changed &lt;code&gt;BUNDLE_IMG&lt;/code&gt; and added &lt;code&gt;IMAGE_TAG_BASE&lt;/code&gt; Makefile variables&lt;/h2&gt;
&lt;p&gt;The following Makefile changes were made to allow &lt;code&gt;make bundle-build bundle-push catalog-build catalog-push&lt;/code&gt; and encode image repo/namespace information in the Makefile by default:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+IMAGE_TAG_BASE ?= &amp;lt;registry&amp;gt;/&amp;lt;operator name&amp;gt;
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+ 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;-BUNDLE_IMG ?= controller-bundle:$(VERSION)
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+BUNDLE_IMG ?= $(IMAGE_TAG_BASE)-bundle:v$(VERSION)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For example, if &lt;code&gt;IMAGE_TAG_BASE ?= foo/bar-operator&lt;/code&gt; then running &lt;code&gt;make bundle-build bundle-push catalog-build catalog-push&lt;/code&gt; would build &lt;code&gt;foo/bar-operator-bundle:v0.0.1&lt;/code&gt; and &lt;code&gt;foo/bar-operator-catalog:v0.0.1&lt;/code&gt; then push them to the &lt;code&gt;docker.io/foo&lt;/code&gt; namespaced registry.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4406&#34;&gt;#4406&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-helmv1-add-the-controller-manager-serviceaccount-to-your-project&#34;&gt;(ansible/v1, helm/v1) Add the &lt;code&gt;controller-manager&lt;/code&gt; ServiceAccount to your project.&lt;/h2&gt;
&lt;p&gt;A non-default ServiceAccount &lt;code&gt;controller-manager&lt;/code&gt; is scaffolded on &lt;code&gt;operator-sdk init&lt;/code&gt;, to improve security for operators installed in shared namespaces. To add this ServiceAccount to your project, do the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Create the ServiceAccount.&lt;/span&gt;
cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;EOF &amp;gt; config/rbac/service_account.yaml apiVersion: v1 
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: ServiceAccount
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  namespace: system
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add it to the list of RBAC resources.&lt;/span&gt;
&lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;- service_account.yaml&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; config/rbac/kustomization.yaml
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Update all RoleBinding and ClusterRoleBinding subjects that reference the operator&amp;#39;s ServiceAccount.&lt;/span&gt;
find config/rbac -name *_binding.yaml -exec sed -i -E &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;s/  name: default/  name: controller-manager/g&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\;&lt;/span&gt; 
&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add the ServiceAccount name to the manager Deployment&amp;#39;s spec.template.spec.serviceAccountName.&lt;/span&gt; 
sed -i -E &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;s/([ ]+)(terminationGracePeriodSeconds:)/\1serviceAccountName: controller-manager\n\1\2/g&amp;#39;&lt;/span&gt; config/manager/manager.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The changes should look like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# config/manager/manager.yaml
           requests:
             cpu: 100m
             memory: 20Mi
&lt;span style=&#34;color:#00a000&#34;&gt;+      serviceAccountName: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;       terminationGracePeriodSeconds: 10
# config/rbac/auth_proxy_role_binding.yaml
   name: proxy-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system
# config/rbac/kustomization.yaml
 resources:
&lt;span style=&#34;color:#00a000&#34;&gt;+- service_account.yaml
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt; - role.yaml
 - role_binding.yaml
 - leader_election_role.yaml
# config/rbac/leader_election_role_binding.yaml
   name: leader-election-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system
# config/rbac/role_binding.yaml
   name: manager-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system
# config/rbac/service_account.yaml 
&lt;span style=&#34;color:#00a000&#34;&gt;+apiVersion: v1 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+kind: ServiceAccount 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+metadata: 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager 
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  namespace: system
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4653&#34;&gt;#4653&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.5.0</title>
      <link>/docs/upgrading-sdk-version/v1.5.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.5.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;for-go-based-operators-migrate-your-project-to-use-the-project-version-stable&#34;&gt;For Go-based operators, migrate your project to use the project version stable.&lt;/h2&gt;
&lt;p&gt;The PROJECT version config file represents the project configuration. It reach the maturate stability and it will store the data used to do the scaffolds. The motivation for this behaviour is to allow tools and helpers in the future such as to make easier the process to update the projects to use upper versions. More info: TBD. //TODO: add link for docs (see the PR kubernetes-sigs/kubebuilder#1916)&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4402&#34;&gt;#4402&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;project-config-version-3-alpha-must-be-upgraded-to-3&#34;&gt;PROJECT config version 3-alpha must be upgraded to 3.&lt;/h2&gt;
&lt;p&gt;PROJECT config version 3-alpha has been stabilized as &lt;a href=&#34;https://github.com/kubernetes-sigs/kubebuilder/blob/master/docs/book/src/migration/legacy/manually_migration_guide_v2_v3.md&#34;&gt;version 3&lt;/a&gt; (the &lt;code&gt;version&lt;/code&gt; key in your PROJECT file), and contains a set of config fields sufficient to fully describe a project. While this change is not technically breaking because the spec at that version was alpha, it was used by default in &lt;code&gt;operator-sdk&lt;/code&gt; commands so should be marked as breaking and have a convenient migration path. The &lt;code&gt;alpha config-3alpha-to-3&lt;/code&gt; command will convert most of your PROJECT file from version 3-alpha to 3, and leave comments with directions where automatic conversion is not possible:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;$ cat PROJECT
version: 3-alpha
resources:
- crdVersion: v1
...

$ operator-sdk alpha config-3alpha-to-3
Your PROJECT config file has been converted from version 3-alpha to 3. Please make sure all config data is correct.
$ cat PROJECT
version: &amp;quot;3&amp;quot; 
esources:
- api:
  crdVersion: v1
...
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4613&#34;&gt;#4613&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-upgrade-controller-runtime-to-v072&#34;&gt;(go/v3) Upgrade controller-runtime to v0.7.2.&lt;/h2&gt;
&lt;p&gt;In your go.mod file, upgrade &lt;code&gt;sigs.k8s.io/controller-runtime&lt;/code&gt; to v0.7.2.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4626&#34;&gt;#4626&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov3-add-a-systemcontroller-manager-serviceaccount-to-your-project&#34;&gt;(go/v3) Add a &lt;code&gt;system:controller-manager&lt;/code&gt; ServiceAccount to your project.&lt;/h2&gt;
&lt;p&gt;A non-default ServiceAccount &lt;code&gt;controller-manager&lt;/code&gt; is scaffolded on &lt;code&gt;operator-sdk init&lt;/code&gt;, to improve security for operators installed in shared namespaces. To add this ServiceAccount to your project, do the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Create the ServiceAccount.&lt;/span&gt;
cat &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;lt;&amp;lt;EOF &amp;gt; config/rbac/service_account.yaml
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;apiVersion: v1
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;kind: ServiceAccount
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;metadata:
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;  namespace: system
&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;EOF&lt;/span&gt;

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add it to the list of RBAC resources.&lt;/span&gt;
&lt;span style=&#34;color:#204a87&#34;&gt;echo&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;- service_account.yaml&amp;#34;&lt;/span&gt; &amp;gt;&amp;gt; config/rbac/kustomization.yaml

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Update all RoleBinding and ClusterRoleBinding subjects that reference the operator&amp;#39;s ServiceAccount.&lt;/span&gt;
find config/rbac -name *_binding.yaml -exec sed -i -E &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;s/  name: default/  name: controller-manager/g&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;{}&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\;&lt;/span&gt;

&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add the ServiceAccount name to the manager Deployment&amp;#39;s spec.template.spec.serviceAccountName.&lt;/span&gt;
sed -i -E &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;s/([ ]+)(terminationGracePeriodSeconds:)/\1serviceAccountName: controller-manager\n\1\2/g&amp;#39;&lt;/span&gt; config/manager/manager.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The changes should look like:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-diff&#34; data-lang=&#34;diff&#34;&gt;# config/manager/manager.yaml
           requests:
             cpu: 100m
             memory: 20Mi
&lt;span style=&#34;color:#00a000&#34;&gt;+      serviceAccountName: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;       terminationGracePeriodSeconds: 10

# config/rbac/auth_proxy_role_binding.yaml
   name: proxy-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system

# config/rbac/kustomization.yaml
 resources:
&lt;span style=&#34;color:#00a000&#34;&gt;+- service_account.yaml
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt; - role.yaml
 - role_binding.yaml
 - leader_election_role.yaml

# config/rbac/leader_election_role_binding.yaml
   name: leader-election-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system

# config/rbac/role_binding.yaml
   name: manager-role
 subjects:
 - kind: ServiceAccount
&lt;span style=&#34;color:#a40000&#34;&gt;-  name: default 
&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;&lt;/span&gt;   namespace: system

# config/rbac/service_account.yaml
&lt;span style=&#34;color:#00a000&#34;&gt;+apiVersion: v1
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+kind: ServiceAccount
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+metadata:
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  name: controller-manager
&lt;/span&gt;&lt;span style=&#34;color:#00a000&#34;&gt;+  namespace: system
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4626&#34;&gt;#4626&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-helmv1-swap-the-paths-of-livenessreadiness-probes-in-configmanagermanageryaml&#34;&gt;(ansible/v1, helm/v1) Swap the paths of liveness/readiness probes in &lt;code&gt;config/manager/manager.yaml&lt;/code&gt;.&lt;/h2&gt;
&lt;p&gt;The liveness and readiness probe endpoints were incorrectly named, although this mismatch will not affect their behavior. To fix, swap the &lt;code&gt;readinessProbe&lt;/code&gt; and &lt;code&gt;livenessProbe&lt;/code&gt; HTTP paths in &lt;code&gt;config/manager/manager.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;livenessProbe&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;httpGet&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;/healthz&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;port&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;6789&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;initialDelaySeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;15&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;periodSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;readinessProbe&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;httpGet&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;/readyz&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;port&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;6789&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;initialDelaySeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;periodSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4546&#34;&gt;#4546&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.4.0</title>
      <link>/docs/upgrading-sdk-version/v1.4.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.4.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;change-your-operators-finalizer-names&#34;&gt;Change your operator&amp;rsquo;s finalizer names&lt;/h2&gt;
&lt;p&gt;The finalizer name format suggested by &lt;a href=&#34;https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#finalizers&#34;&gt;Kubernetes docs&lt;/a&gt; is &lt;code&gt;&amp;lt;qualified-group&amp;gt;/&amp;lt;finalizer-name&amp;gt;&lt;/code&gt;, while the format previously documented by Operator SDK docs was &lt;code&gt;&amp;lt;finalizer-name&amp;gt;.&amp;lt;qualified-group&amp;gt;&lt;/code&gt;. If your operator uses any finalizers with names matching the incorrect format, change them to match the official format. For example, &lt;code&gt;finalizer.cache.example.com&lt;/code&gt; should be changed to &lt;code&gt;cache.example.com/finalizer&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4472&#34;&gt;#4472&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-helm-and-ansible-projects-fix-the-helm-operator-and-ansible-operator-urls-in-the-makefile&#34;&gt;For Helm and Ansible projects, fix the helm-operator and ansible-operator URLs in the Makefile&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Helm projects:
Old: &lt;code&gt;https://github.com/operator-framework/operator-sdk/releases/download/v1.3.0/helm-operator-v1.3.0-$(ARCHOPER)-$(OSOPER)&lt;/code&gt;
New: &lt;code&gt;https://github.com/operator-framework/operator-sdk/releases/download/v1.3.1/helm-operator_$(OS)_$(ARCH)&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Ansible projects:
Old: &lt;code&gt;https://github.com/operator-framework/operator-sdk/releases/download/v1.3.0/ansible-operator-v1.3.0-$(ARCHOPER)-$(OSOPER)&lt;/code&gt;
New: &lt;code&gt;https://github.com/operator-framework/operator-sdk/releases/download/v1.3.1/ansible-operator_$(OS)_$(ARCH)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4407&#34;&gt;#4407&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-helm-and-ansible-projects-fix-the-helm-operator-ansible-operator-and-kustomize-makefile-rules&#34;&gt;For Helm and Ansible projects, fix the &lt;code&gt;helm-operator&lt;/code&gt;, &lt;code&gt;ansible-operator&lt;/code&gt;, and &lt;code&gt;kustomize&lt;/code&gt; Makefile rules&lt;/h2&gt;
&lt;p&gt;These rules will download a local binary but not use it if a global binary is present.
See the diff in &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4407&#34;&gt;this PR&lt;/a&gt; for how to fix this.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4407&#34;&gt;#4412&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-helm-based-operators-add-liveness-and-readiness-probe&#34;&gt;For Helm-based operators, add Liveness and Readiness probe&lt;/h2&gt;
&lt;p&gt;New projects built with the tool will have the probes configured by default. The endpoints &lt;code&gt;/healthz&lt;/code&gt; and &lt;code&gt;/readyz&lt;/code&gt; are available now in the image based provided.
You can update your pre-existing project to use them. For that update the Dockerfile to use the latest release base image, then add the following to the &lt;code&gt;manager&lt;/code&gt; container in &lt;code&gt;config/manager/manager.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;livenessProbe&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;httpGet&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;/healthz&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;port&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8081&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;initialDelaySeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;15&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;periodSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;readinessProbe&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;httpGet&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;/readyz&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;port&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8081&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;initialDelaySeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;periodSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4326&#34;&gt;#4326&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;for-ansible-based-operators-add-liveness-and-readiness-probe&#34;&gt;For Ansible-based operators, add Liveness and Readiness probe&lt;/h2&gt;
&lt;p&gt;New projects built with the tool will have the probes configured by default. The endpoints &lt;code&gt;/healthz&lt;/code&gt; and &lt;code&gt;/readyz&lt;/code&gt; are available now in the image based provided.
You can update your pre-existing project to use them. For that update the Dockerfile to use the latest release base image, then add the following to the &lt;code&gt;manager&lt;/code&gt; container in &lt;code&gt;config/manager/manager.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;livenessProbe&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;httpGet&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;/healthz&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;port&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;6789&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;initialDelaySeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;15&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;periodSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;20&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;readinessProbe&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;httpGet&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;path&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;/readyz&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;port&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;6789&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;initialDelaySeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;5&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;periodSeconds&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;10&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4326&#34;&gt;#4326&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;gov2-change-go-project-plugin-object-to-manifests-and-scorecard-objects&#34;&gt;(go/v2) Change &lt;code&gt;go&lt;/code&gt; PROJECT plugin object to &lt;code&gt;manifests&lt;/code&gt; and &lt;code&gt;scorecard&lt;/code&gt; objects&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;manifests&lt;/code&gt; and &lt;code&gt;scorecard&lt;/code&gt; plugins that create OLM and scorecard manifests, respectively, now have plugin objects that direct &lt;code&gt;create&lt;/code&gt; subcommands to create related files. While the old &lt;code&gt;go&lt;/code&gt; plugin configuration object is still supported, these new objects will be useful in the future as configuration options are added to their respective plugins:&lt;/p&gt;
&lt;p&gt;Old:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;-alpha&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;plugins&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go.sdk.operatorframework.io/v2-alpha&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;New:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;-alpha&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;plugins&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;manifests.sdk.operatorframework.io/v2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;scorecard.sdk.operatorframework.io/v2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4419&#34;&gt;#4419&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;ansiblev1-helmv1-add-manifests-and-scorecard-plugin-objects-to-your-project&#34;&gt;(ansible/v1, helm/v1) Add &lt;code&gt;manifests&lt;/code&gt; and &lt;code&gt;scorecard&lt;/code&gt; plugin objects to your PROJECT&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;manifests&lt;/code&gt; and &lt;code&gt;scorecard&lt;/code&gt; plugins that create OLM and scorecard manifests, respectively, now have plugin objects that direct &lt;code&gt;create&lt;/code&gt; subcommands to create related files. While not necessary to add, these new plugin configuration objects in the PROJECT file will be useful in the future as configuration options are added to their respective plugins:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;3&lt;/span&gt;-alpha&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;...&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;plugins&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;manifests.sdk.operatorframework.io/v2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;scorecard.sdk.operatorframework.io/v2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4419&#34;&gt;#4419&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;move-positional-directory-argument--in-docker-build-make-target&#34;&gt;Move positional directory argument &lt;code&gt;.&lt;/code&gt; in &lt;code&gt;docker-build&lt;/code&gt; make target&lt;/h2&gt;
&lt;p&gt;The directory argument &lt;code&gt;.&lt;/code&gt; in the &lt;code&gt;docker-build&lt;/code&gt; make target was moved to the last positional argument to align with &lt;code&gt;podman&lt;/code&gt;&#39;s expectations, making substitution cleaner.&lt;/p&gt;
&lt;p&gt;Old:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;docker-build&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
  docker build . -t &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;IMG&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;New:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;docker-build&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
  docker build -t &lt;span style=&#34;color:#4e9a06&#34;&gt;${&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;IMG&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;}&lt;/span&gt; .
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Alternatively, you could replace it programmatically&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-sh&#34; data-lang=&#34;sh&#34;&gt;sed -i &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;s/docker build . -t ${IMG}/docker build -t ${IMG} ./&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;git grep -l &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;docker.*build \. &amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4466&#34;&gt;#4466&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.3.0</title>
      <link>/docs/upgrading-sdk-version/v1.3.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.3.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;update-packagemanifests-make-recipe-variable-pkg_man_opts&#34;&gt;Update &lt;code&gt;packagemanifests&lt;/code&gt; make recipe variable &lt;code&gt;PKG_MAN_OPTS&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;If your project uses the &lt;code&gt;packagemanifests&lt;/code&gt; make recipe, update your &lt;code&gt;PKG_MAN_OPTS&lt;/code&gt; variable to include &lt;code&gt;PKG_FROM_VERSION&lt;/code&gt; instead of &lt;code&gt;FROM_VERSION&lt;/code&gt;, ex:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;PKG_MAN_OPTS&lt;/span&gt; &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;?=&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;PKG_FROM_VERSION&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;PKG_CHANNELS&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;PKG_IS_DEFAULT_CHANNEL&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4303&#34;&gt;#4303&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;update-your-go-projects-controller-runtime-version-to-v064&#34;&gt;Update your Go project&amp;rsquo;s controller-runtime version to v0.6.4&lt;/h2&gt;
&lt;p&gt;In your go.mod file, update the &lt;code&gt;sigs.k8s.io/controller-runtime&lt;/code&gt; version to v0.6.4&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4282&#34;&gt;#4282&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;upgrade-your-go-project-from-gokubebuilderiov2-to-gokubebuilderiov3&#34;&gt;Upgrade your Go project from &amp;ldquo;go.kubebuilder.io/v2&amp;rdquo; to &amp;ldquo;go.kubebuilder.io/v3&amp;rdquo;&lt;/h2&gt;
&lt;p&gt;The newly released go/v3 plugin has many new features and (breaking) changes incompatible with projects created by go/v2.
You are not required to upgrade and your go/v2 project will continue to work with new operator-sdk versions.
If you wish to upgrade, check out the upstream &lt;a href=&#34;https://master.book.kubebuilder.io/migration/legacy/v2vsv3.html&#34;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Additionally, if using project version &amp;ldquo;3-alpha&amp;rdquo;, you must update your &lt;code&gt;plugins&lt;/code&gt; config field:&lt;/p&gt;
&lt;p&gt;Old:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;plugins&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go.sdk.operatorframework.io/v2-alpha&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;New:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;plugins&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;manifests.sdk.operatorframework.io/v2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;scorecard.sdk.operatorframework.io/v2&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4307&#34;&gt;#4307&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.2.0</title>
      <link>/docs/upgrading-sdk-version/v1.2.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.2.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;go-based-operators-update-makefiles-bundle-target&#34;&gt;(Go-based operators) Update Makefile&amp;rsquo;s bundle target&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;Makefile&lt;/code&gt; file, replace &lt;code&gt;bundle: manifests&lt;/code&gt; with &lt;code&gt;bundle: manifests kustomize&lt;/code&gt; to call the kustomize target when the &lt;code&gt;bundle&lt;/code&gt; target is used.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4090&#34;&gt;#4090&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;go-based-operators--upgrade-sigsk8siocontroller-runtime-version-to-v063&#34;&gt;(Go-based operators)  Upgrade sigs.k8s.io/controller-runtime version to v0.6.3&lt;/h2&gt;
&lt;p&gt;In the &lt;code&gt;go.mod&lt;/code&gt; file replace &lt;code&gt;sigs.k8s.io/controller-runtime v0.6.2&lt;/code&gt; with &lt;code&gt;sigs.k8s.io/controller-runtime v0.6.3&lt;/code&gt; and then run &lt;code&gt;go mod tidy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4062&#34;&gt;#4062&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;go-based-operators-with-multigroup-support-fix-crddirectorypath-in-controllersgroupsuite_testgo&#34;&gt;(Go-based operators with multigroup support) Fix &lt;code&gt;CRDDirectoryPath&lt;/code&gt; in &lt;code&gt;controllers/&amp;lt;group&amp;gt;/suite_test.go&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;If your project is multi-group, then replace &lt;code&gt;CRDDirectoryPaths: []string{filepath.Join(&amp;quot;..&amp;quot;, &amp;quot;config&amp;quot;, &amp;quot;crd&amp;quot;, &amp;quot;bases&amp;quot;)},&lt;/code&gt; with &lt;code&gt;CRDDirectoryPaths: []string{filepath.Join(&amp;quot;..&amp;quot;, &amp;quot;..&amp;quot;, &amp;quot;config&amp;quot;, &amp;quot;crd&amp;quot;, &amp;quot;bases&amp;quot;)},&lt;/code&gt; in &lt;code&gt;suite_test.go&lt;/code&gt; files found in &lt;code&gt;controllers/&amp;lt;group&amp;gt;/&lt;/code&gt; directories. Otherwise, the tests will fail since this EnvTest will not be looking for the CRD&amp;rsquo;s in the correct location. For more info, see &lt;a href=&#34;https://github.com/kubernetes-sigs/kubebuilder/issues/1665&#34;&gt;kubebuilder#1665&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/4062&#34;&gt;#4062&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.1.0</title>
      <link>/docs/upgrading-sdk-version/v1.1.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.1.0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;ansible-operator-fact-gathering-causes-performance-regression&#34;&gt;Ansible Operator fact gathering causes performance regression&lt;/h2&gt;
&lt;p&gt;To disable fact gathering by default for your operator, you will need to
add the following entry to the manager container in&lt;code&gt;config/manager/manager.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;env&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;name&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;ANSIBLE_GATHERING&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;              &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;value&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;explicit&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3933&#34;&gt;#3933&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h2 id=&#34;update-scorecard-test-kuttl-image-to-use-latest-kuttl&#34;&gt;Update scorecard-test-kuttl image to use latest kuttl&lt;/h2&gt;
&lt;p&gt;The scorecard-test-kuttl image is updated to use kuttl:v0.5.2
as the base image.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3711&#34;&gt;#3711&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Docs: v1.0.0</title>
      <link>/docs/upgrading-sdk-version/v1.0.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>/docs/upgrading-sdk-version/v1.0.0/</guid>
      <description>
        
        
        &lt;p&gt;This is the first major version release of &lt;code&gt;operator-sdk&lt;/code&gt;, which comes with a project structure rewrite
and many breaking CLI changes that are incompatible with all prior minor versions (except for Go projects,
which changed in &lt;a href=&#34;/docs/upgrading-sdk-version/v0.19.0#migrating-go-projects-to-the-new-kubebuilder-aligned-project-layout&#34;&gt;v0.19.0&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Each project type has an appropriate migration guide, which we recommend following before reading
this guide:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;/docs/building-operators/golang/migration&#34;&gt;Go&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/building-operators/ansible/migration&#34;&gt;Ansible&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;/docs/building-operators/helm/migration&#34;&gt;Helm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cli-changes&#34;&gt;CLI changes&lt;/h3&gt;
&lt;p&gt;The following subcommands were removed:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Guidance&lt;/th&gt;
&lt;th&gt;PR(s)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk new&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;operator-sdk init&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3385&#34;&gt;#3385&lt;/a&gt;, &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3343&#34;&gt;#3343&lt;/a&gt;, &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3531&#34;&gt;#3531&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk add api&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;operator-sdk create api&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3385&#34;&gt;#3385&lt;/a&gt;, &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3343&#34;&gt;#3343&lt;/a&gt;, &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3531&#34;&gt;#3531&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk add controller&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;operator-sdk create api&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3385&#34;&gt;#3385&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk add crd&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;operator-sdk create api&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3547&#34;&gt;#3547&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk build&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;make docker-build&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3566&#34;&gt;#3566&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk bundle create&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;make bundle&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3414&#34;&gt;#3414&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk generate k8s&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;make generate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3385&#34;&gt;#3385&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk generate crds&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;make manifests&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3385&#34;&gt;#3385&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk generate csv&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;operator-sdk generate kustomize manifests&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3414&#34;&gt;#3414&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk migrate&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removed support for hybrid operators, no migration&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3385&#34;&gt;#3385&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk print-deps&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Removed, no migration&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3385&#34;&gt;#3385&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk run local&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use &lt;code&gt;make run&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3406&#34;&gt;#3406&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;operator-sdk test&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Use controller-runtime&amp;rsquo;s &lt;a href=&#34;https://book.kubebuilder.io/reference/envtest.html&#34;&gt;envtest&lt;/a&gt; framework&lt;/td&gt;
&lt;td&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3409&#34;&gt;#3409&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;library-changes&#34;&gt;Library changes&lt;/h3&gt;
&lt;p&gt;Subpackages of the &lt;code&gt;pkg/&lt;/code&gt; directory have either been removed or moved from the &lt;code&gt;operator-sdk&lt;/code&gt; repo
to the &lt;a href=&#34;https://github.com/operator-framework/operator-lib&#34;&gt;&lt;code&gt;operator-lib&lt;/code&gt; repo&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Removed packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;#removed-package-pkgk8sutil&#34;&gt;&lt;code&gt;pkg/k8sutil&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#removed-packages-pkgkube-metrics-and-pkgmetrics&#34;&gt;&lt;code&gt;pkg/kube-metrics&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#removed-packages-pkgkube-metrics-and-pkgmetrics&#34;&gt;&lt;code&gt;pkg/metrics&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#removed-package-pkgready&#34;&gt;&lt;code&gt;pkg/ready&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;#removed-package-pkgtls&#34;&gt;&lt;code&gt;pkg/tls&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Packages that have been moved can be used by making the following changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;EnqueueRequestForAnnotation&lt;/code&gt; watch handler is now available in package &lt;code&gt;github.com/operator-framework/operator-lib/handler&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;GenerationChangedPredicate&lt;/code&gt; was refactored and moved. Rewrite it as a composite predicate like the following:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;crpredicate&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;sigs.k8s.io/controller-runtime/pkg/predicate&amp;#34;&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;libpredicate&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github.com/operator-framework/operator-lib/predicate&amp;#34;&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;

&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;...&lt;/span&gt;

&lt;span style=&#34;color:#000&#34;&gt;crpredicate&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;Or&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;(&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;crpredicate&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;GenerationChangedPredicate&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{},&lt;/span&gt;
  &lt;span style=&#34;color:#000&#34;&gt;libpredicate&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;.&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;NoGenerationPredicate&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{},&lt;/span&gt;
&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The leader-for-life leader election library at &lt;code&gt;pkg/leader&lt;/code&gt; was moved to &lt;code&gt;github.com/operator-framework/operator-lib/leader&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;pkg/status&lt;/code&gt; library with status conditions helpers was moved to &lt;code&gt;github.com/operator-framework/operator-lib/status&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See the following PRs for details:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3506&#34;&gt;#3506&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3532&#34;&gt;#3532&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3503&#34;&gt;#3503&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;upgrade-your-project-from-version-2-to-3-alpha&#34;&gt;Upgrade your project from version &amp;ldquo;2&amp;rdquo; to &amp;ldquo;3-alpha&amp;rdquo;&lt;/h3&gt;
&lt;p&gt;The SDK&amp;rsquo;s default Go plugin no longer supports OLM- or scorecard-related project files
nor writes a &lt;code&gt;plugins&lt;/code&gt; PROJECT field for projects scaffolded previously with &lt;code&gt;operator-sdk init --project-version=2&lt;/code&gt;,
Please migrate to project version &amp;ldquo;3-alpha&amp;rdquo; for support of these features by adding the following to your &lt;code&gt;PROJECT&lt;/code&gt; file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;3-alpha&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Updated from &amp;#34;2&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;projectName&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&amp;lt;output&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;of&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;$(basename $(pwd))&amp;#34;&lt;/span&gt;&amp;gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;layout&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;go.kubebuilder.io/v2&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;plugins&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;  &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;go.sdk.operatorframework.io/v2-alpha&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;{}&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3438&#34;&gt;#3438&lt;/a&gt; and &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3697&#34;&gt;#3697&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;add-the-samples-scaffold-marker-to-your-configsampleskustomizationyaml&#34;&gt;Add the samples scaffold marker to your &lt;code&gt;config/samples/kustomization.yaml&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Add the &lt;code&gt;+kubebuilder:scaffold:manifestskustomizesamples&lt;/code&gt; to your &lt;code&gt;config/samples/kustomization.yaml&lt;/code&gt; file like so (using an example sample file):&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;resources&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;- cache_v1alpha1_memcached.yaml&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;#+kubebuilder:scaffold:manifestskustomizesamples&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3645&#34;&gt;#3645&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;update-your-makefiles-bundle-recipe-to-inject-an-operator-image-tag&#34;&gt;Update your Makefile&amp;rsquo;s &lt;code&gt;bundle&lt;/code&gt; recipe to inject an operator image tag.&lt;/h3&gt;
&lt;p&gt;Make the following update to your Makefile&amp;rsquo;s &lt;code&gt;bundle&lt;/code&gt; recipe, which will allow you to set &lt;code&gt;make bundle IMG=&amp;lt;tag&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-make&#34; data-lang=&#34;make&#34;&gt;&lt;span style=&#34;color:#000&#34;&gt;bundle&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;:&lt;/span&gt;
  ...
  operator-sdk generate kustomize manifests -q
  &lt;span style=&#34;color:#204a87&#34;&gt;cd&lt;/span&gt; config/manager &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;KUSTOMIZE&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; edit &lt;span style=&#34;color:#204a87&#34;&gt;set&lt;/span&gt; image &lt;span style=&#34;color:#000&#34;&gt;controller&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;$(&lt;/span&gt;IMG&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;)&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# Add this line&lt;/span&gt;
  ...
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3634&#34;&gt;#3634&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;update-usage-of-operator-sdk-cleanup&#34;&gt;Update usage of &lt;code&gt;operator-sdk cleanup&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;operator-sdk cleanup packagemanifests&lt;/code&gt; command has been
removed and replaced with a simpler &lt;code&gt;operator-sdk cleanup&lt;/code&gt;
command.&lt;/p&gt;
&lt;p&gt;Update usages of &lt;code&gt;operator-sdk cleanup packagemanifests&lt;/code&gt; to
use &lt;code&gt;operator-sdk cleanup &amp;lt;packageName&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The value for &lt;code&gt;&amp;lt;packageName&amp;gt;&lt;/code&gt; can be found in the &lt;code&gt;*.package.yaml&lt;/code&gt;
file in the root of your packagemanifests folder. It is typically
your project name.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3644&#34;&gt;#3644&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;remove-olm-namespace-flag-from-operator-sdk-olm-install-command&#34;&gt;Remove &lt;code&gt;olm-namespace&lt;/code&gt; flag from &lt;code&gt;operator-sdk olm install&lt;/code&gt; command&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;olm-namespace&lt;/code&gt; flag has been removed from &lt;code&gt;operator-sdk olm install&lt;/code&gt;
command, as the olm manifests published in github have a hardcoded
namespace value. Hence, the olm operators can only be installed in &lt;code&gt;olm&lt;/code&gt;
namespace using this command.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3670&#34;&gt;#3670&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;docker-images-for-s390x-are-no-longer-created-automatically&#34;&gt;Docker images for &lt;code&gt;s390x&lt;/code&gt; are no longer created automatically&lt;/h3&gt;
&lt;p&gt;If you require an &lt;code&gt;s390x&lt;/code&gt; image for a particular release, please open an issue in the operator-sdk GitHub project, and the maintainers will manually build and push an s390x image for supported versions&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3710&#34;&gt;#3710&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;default-install-mode-for-run-packagemanifests-changed-from-ownnamespace-to-allnamespaces&#34;&gt;Default install mode for &lt;code&gt;run packagemanifests&lt;/code&gt; changed from &lt;code&gt;OwnNamespace&lt;/code&gt; to &lt;code&gt;AllNamespaces&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;By default all operators are scaffolded to run at the cluster scope and watch all namespaces.
However, if you are relying on the default behavior of the &lt;code&gt;run packagemanifests&lt;/code&gt; command to use the default &lt;code&gt;OwnNamespace&lt;/code&gt; install mode, you must now specify it explicitly with &lt;code&gt;--install-mode=OwnNamespace&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3663&#34;&gt;#3663&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;use-new-logging-flags-when-running-the-ansible-and-helm-operators&#34;&gt;Use new logging flags when running the Ansible and Helm operators&lt;/h3&gt;
&lt;p&gt;The Ansible and Helm operators now use controller-runtime&amp;rsquo;s zap package
to define logging flags.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;--zap-sample&lt;/code&gt; and &lt;code&gt;--zap-time-encoding&lt;/code&gt; flag have been removed since
they are not present in controller-runtime&amp;rsquo;s flagset. These flags are no
longer supported.&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;--zap-level&lt;/code&gt; flag is called &lt;code&gt;--zap-log-level&lt;/code&gt; now. Rename any usage of
&lt;code&gt;--zap-level&lt;/code&gt; to &lt;code&gt;--zap-log-level&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3596&#34;&gt;#3596&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;core-ansible-and-helm-operator-logic-moved-to-ansible-operatorhelm-operator-run-subcommand&#34;&gt;Core Ansible and Helm operator logic moved to &lt;code&gt;&amp;lt;ansible-operator|helm-operator&amp;gt; run&lt;/code&gt; subcommand&lt;/h3&gt;
&lt;p&gt;If you are using the &lt;code&gt;ansible-operator&lt;/code&gt; and &lt;code&gt;helm-operator&lt;/code&gt; binaries
directly, update your usage to call &lt;code&gt;ansible-operator run&lt;/code&gt; and
&lt;code&gt;helm-operator run&lt;/code&gt; (e.g. in your Makefile&amp;rsquo;s &lt;code&gt;make run&lt;/code&gt; target).&lt;/p&gt;
&lt;p&gt;If you are using the base image and you are not overriding the operator
entrypoint, no change is necessary because the base image has been updated
to call the &lt;code&gt;run&lt;/code&gt; subcommand by default.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3596&#34;&gt;#3596&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;rename---update-crds-flag-to---update-objects-in-generate-packagemanifests-invocations&#34;&gt;Rename &lt;code&gt;--update-crds&lt;/code&gt; flag to &lt;code&gt;--update-objects&lt;/code&gt; in &lt;code&gt;generate packagemanifests&lt;/code&gt; invocations&lt;/h3&gt;
&lt;p&gt;This flag has been renamed to account for all objects that can be written to the package directory, ex. Roles.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3610&#34;&gt;#3610&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;update-scorecard-api-go-import-paths&#34;&gt;Update scorecard API Go import paths&lt;/h3&gt;
&lt;p&gt;The scorecard v1alpha3 API has been moved to a separate repo. Update your Go import paths:&lt;/p&gt;
&lt;p&gt;Old:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github.com/operator-framework/operator-framework/pkg/apis/scorecard/v1alpha3&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;New:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;import&lt;/span&gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;github.com/operator-framework/api/pkg/apis/scorecard/v1alpha3&amp;#34;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3622&#34;&gt;#3622&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;package-version-is-no-longer-public&#34;&gt;Package &lt;code&gt;version&lt;/code&gt; is no longer public&lt;/h3&gt;
&lt;p&gt;It is no longer possible to import package &lt;code&gt;version&lt;/code&gt;. To
determine the version of operator-sdk, run &lt;code&gt;operator-sdk version&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3617&#34;&gt;#3617&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;remove---operator-name-from-scripts&#34;&gt;Remove &lt;code&gt;--operator-name&lt;/code&gt; from scripts&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;--operator-name&lt;/code&gt; flag has been removed from &lt;code&gt;generate bundle&lt;/code&gt; and &lt;code&gt;generate packagemanifests&lt;/code&gt; subcommands. Remove this flag from your scripts, and make sure the &lt;code&gt;projectName&lt;/code&gt; key is set in your PROJECT file. If this key is not set, the current working directory&amp;rsquo;s base name will be used.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3530&#34;&gt;#3530&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;create-resources-manually-that-were-passed-to-run-packagemanifests---include-paths&#34;&gt;Create resources manually that were passed to &lt;code&gt;run packagemanifests --include-paths&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;run packagemanifests&lt;/code&gt; subcommand no longer has the &lt;code&gt;--include-paths&lt;/code&gt; flag to create additional resources. Instead, use &lt;code&gt;kubectl apply -f &amp;lt;paths&amp;gt;&lt;/code&gt; before invoking &lt;code&gt;run packagemanifests&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3599&#34;&gt;#3599&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;change-the-run-packagemanifests-flag---operator-version-to---version&#34;&gt;Change the &lt;code&gt;run packagemanifests&lt;/code&gt; flag &lt;code&gt;--operator-version&lt;/code&gt; to &lt;code&gt;--version&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;--operator-version&lt;/code&gt; is now &lt;code&gt;--version&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3599&#34;&gt;#3599&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;remove---olm-namespace-from-run-packagemanifests-invocations&#34;&gt;Remove &lt;code&gt;--olm-namespace&lt;/code&gt; from &lt;code&gt;run packagemanifests&lt;/code&gt; invocations&lt;/h3&gt;
&lt;p&gt;OLM namespace is no longer required by this command.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3601&#34;&gt;#3601&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;change-the-run-packagemanifests-flag---operator-namespace-to---namespace&#34;&gt;Change the &lt;code&gt;run packagemanifests&lt;/code&gt; flag &lt;code&gt;--operator-namespace&lt;/code&gt; to &lt;code&gt;--namespace&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;--operator-namespace&lt;/code&gt; is now &lt;code&gt;--namespace&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3601&#34;&gt;#3601&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;pkglogzap-is-no-longer-a-public-api&#34;&gt;&lt;code&gt;pkg/log/zap&lt;/code&gt; is no longer a public API&lt;/h3&gt;
&lt;p&gt;Migrate to the upstream controller-runtime implementation in &lt;a href=&#34;https://pkg.go.dev/sigs.k8s.io/controller-runtime@v0.6.1/pkg/log/zap?tab=doc#Options.BindFlags&#34;&gt;sigs.k8s.io/controller-runtime/pkg/log/zap&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3525&#34;&gt;#3525&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;default-ansible-and-helm-operator-metrics-port-has-changed&#34;&gt;Default Ansible and Helm operator metrics port has changed&lt;/h3&gt;
&lt;p&gt;To continue using port 8383, specify &lt;code&gt;--metrics-bind-address=:8383&lt;/code&gt; when you start the operator.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3489&#34;&gt;#3489&lt;/a&gt; and &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3440&#34;&gt;#3440&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;update-references-to-legacy-operator-sdk-domain-strings&#34;&gt;Update references to legacy operator-sdk domain strings&lt;/h3&gt;
&lt;p&gt;Update various usages of domains in plugin keys and annotations:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;In Kubebuilder-style projects, change the &lt;code&gt;.operator-sdk.io&lt;/code&gt; suffix to &lt;code&gt;.sdk.operatorframework.io&lt;/code&gt; in the &lt;code&gt;PROJECT&lt;/code&gt; file.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In Ansible and Helm projects, change legacy annotation keys to new annotation keys in sample CR files in your repository.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;In live clusters containing CRs for Ansible and Helm-based operators:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Patch all existing CRs that use a legacy annotation to ADD the new equivalent annotations alongside the legacy annotations.&lt;/li&gt;
&lt;li&gt;Upgrade the operator&lt;/li&gt;
&lt;li&gt;Patch all existing CRs that used a legacy annotation to REMOVE the legacy annotations.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Location&lt;/th&gt;
&lt;th&gt;Legacy&lt;/th&gt;
&lt;th&gt;New&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PROJECT&lt;/code&gt; file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;go.operator-sdk.io&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;go.sdk.operatorframework.io&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom resources&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ansible.operator-sdk/reconcile-period&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ansible.sdk.operatorframework.io/reconcile-period&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom resources&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ansible.operator-sdk/max-runner-artifacts&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ansible.sdk.operatorframework.io/max-runner-artifacts&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom resources&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ansible.operator-sdk/verbosity&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ansible.sdk.operatorframework.io/verbosity&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom resources&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm.operator-sdk/upgrade-force&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;helm.sdk.operatorframework.io/upgrade-force&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3527&#34;&gt;#3527&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;hybrid-ansible-and-helm-operator-use-cases-are-not-supported&#34;&gt;Hybrid Ansible and Helm operator use cases are not supported&lt;/h3&gt;
&lt;p&gt;There is no migration path that enables continued use of the Ansible-based or Helm-based operator Go libraries.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3560&#34;&gt;#3560&lt;/a&gt; and &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3537&#34;&gt;#3537&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;changes-to-ansible-and-helm-configuration-of-max-workers&#34;&gt;Changes to Ansible and Helm configuration of max workers&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Flag &lt;code&gt;max-workers&lt;/code&gt; was renamed to &lt;code&gt;max-concurrent-reconciles&lt;/code&gt; in Ansible and Helm operators.
Change all usage of &lt;code&gt;--max-workers&lt;/code&gt; to &lt;code&gt;--max-concurrent-reconciles&lt;/code&gt;. Functionality is identical; this
is just a name change to align more with controller runtime terminology.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;The &lt;code&gt;WORKERS_&amp;lt;Kind&amp;gt;_&amp;lt;Group&amp;gt;&lt;/code&gt; environment variable was deprecated. Change all usage of these
environment variables to &lt;code&gt;MAX_CONCURRENT_RECONCILES_&amp;lt;Kind&amp;gt;_&amp;lt;Group&amp;gt;&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3435&#34;&gt;#3435&lt;/a&gt;, &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3452&#34;&gt;#3452&lt;/a&gt;, and &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3456&#34;&gt;#3456&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;ansible-operator-meta-variable-renamed-to-ansible_operator_meta&#34;&gt;Ansible Operator &lt;code&gt;meta&lt;/code&gt; variable renamed to &lt;code&gt;ansible_operator_meta&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;All existing references to the &lt;code&gt;meta&lt;/code&gt; variable in your Ansible content will
no longer work. Instead, your Ansible content should reference the
&lt;code&gt;ansible_operator_meta&lt;/code&gt; variable.&lt;/p&gt;
&lt;p&gt;Alternatively, you can use the &lt;code&gt;vars&lt;/code&gt; keyword in your &lt;code&gt;watches.yaml&lt;/code&gt; in order
to map the new &lt;code&gt;ansible_operator_meta&lt;/code&gt; variable to &lt;code&gt;meta&lt;/code&gt;. Below is a sample
&lt;code&gt;watches.yaml&lt;/code&gt; that has made this change:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-yaml&#34; data-lang=&#34;yaml&#34;&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;    &lt;/span&gt;- &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;version&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;v1alpha1&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;group&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;test.example.com&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;kind&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;Example&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;role&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;test&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;      &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;vars&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;        &lt;/span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;meta&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;:&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt; &lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{{ ansible_operator_meta }}&amp;#39;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3562&#34;&gt;#3562&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;migrated-ansible-and-helm-operators-to-use-new-kubebuilder-style-metrics&#34;&gt;Migrated Ansible and Helm operators to use new Kubebuilder-style metrics&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Replaced kube-state-metrics style metrics on port &lt;code&gt;:8686&lt;/code&gt; with a similar &lt;code&gt;resource_created_at&lt;/code&gt; metric
registered with the controller-runtime metrics registry&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Replace runtime creation of the metrics &lt;code&gt;Service&lt;/code&gt; and &lt;code&gt;ServiceMonitor&lt;/code&gt; with deploy-time kustomize manifests&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3466&#34;&gt;#3466&lt;/a&gt; and &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3451&#34;&gt;#3451&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;removed-package-pkgk8sutil&#34;&gt;Removed package &lt;code&gt;pkg/k8sutil&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;With the transition to Kubebuilder-style projects, &lt;code&gt;pkg/k8sutil&lt;/code&gt; is no longer used in the default scaffolding
for Go operators. Migrate your project to the new Kubebuilder-style layout to remove the need for this
package.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3475&#34;&gt;#3475&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;removed-packages-pkgkube-metrics-and-pkgmetrics&#34;&gt;Removed packages &lt;code&gt;pkg/kube-metrics&lt;/code&gt; and &lt;code&gt;pkg/metrics&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Remove the call to &lt;code&gt;addMetrics&lt;/code&gt; in your &lt;code&gt;main.go&lt;/code&gt; file and begin using the
&lt;code&gt;InstrumentedEnqueueRequestForObject&lt;/code&gt; handler when setting up controller-runtime
watches for your primary CRs.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;InstrumentedEnqueueRequestForObject&lt;/code&gt; can be imported from &lt;code&gt;github.com/operator-framework/operator-lib/handler&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3484&#34;&gt;#3484&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;removed-package-pkgready&#34;&gt;Removed package &lt;code&gt;pkg/ready&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;Use &lt;code&gt;controller-runtime&lt;/code&gt;&#39;s readyz server that supports custom http handlers. Add a &lt;code&gt;healthz.Checker&lt;/code&gt; (e.g. &lt;a href=&#34;https://github.com/kubernetes-sigs/controller-runtime/blob/229c3c357d9e6b07c3d6774010c35161a82b08f9/pkg/healthz/healthz.go#L187-L188&#34;&gt;&lt;code&gt;healthz.Ping&lt;/code&gt;&lt;/a&gt;)
using &lt;a href=&#34;https://github.com/kubernetes-sigs/controller-runtime/blob/229c3c357d9e6b07c3d6774010c35161a82b08f9/pkg/manager/manager.go#L73-L74&#34;&gt;&lt;code&gt;manager.AddReadyzCheck&lt;/code&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3476&#34;&gt;#3476&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;removed-package-pkgtls&#34;&gt;Removed package &lt;code&gt;pkg/tls&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;See the &lt;a href=&#34;https://book.kubebuilder.io/cronjob-tutorial/cert-manager.html#deploying-the-cert-manager&#34;&gt;Kubebuilder docs&lt;/a&gt; on
how to deploy and manage TLS certificates with cert-manager.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3468&#34;&gt;#3468&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;update-your-scorecard-config-file-to-the-new-format&#34;&gt;Update your scorecard config file to the new format&lt;/h3&gt;
&lt;p&gt;See the updated scorecard &lt;a href=&#34;/docs/testing-operators/scorecard/#config-file&#34;&gt;config documentation&lt;/a&gt;
for details.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3434&#34;&gt;#3434&lt;/a&gt; and
&lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3490&#34;&gt;#3490&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;use-scorecard-instead-of-alpha-scorecard&#34;&gt;Use &lt;code&gt;scorecard&lt;/code&gt; instead of &lt;code&gt;alpha scorecard&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;If you have been using &lt;code&gt;operator-sdk alpha scorecard&lt;/code&gt;, update to use &lt;code&gt;operator-sdk scorecard&lt;/code&gt;.
If you have been using &lt;code&gt;operator-sdk scorecard&lt;/code&gt;, migrate to the new scorecard. See the new
&lt;a href=&#34;/docs/testing-operators/scorecard/&#34;&gt;scorecard documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3444&#34;&gt;#3444&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&#34;scorecard-output-formatting-has-changed&#34;&gt;Scorecard output formatting has changed&lt;/h3&gt;
&lt;p&gt;Update any scripts interpretting the scorecard output to
understand the &lt;code&gt;v1alpha3.TestList&lt;/code&gt; format.&lt;/p&gt;
&lt;p&gt;See the &lt;a href=&#34;/docs/testing-operators/scorecard/#json-format&#34;&gt;&lt;code&gt;json&lt;/code&gt;&lt;/a&gt; and
&lt;a href=&#34;/docs/testing-operators/scorecard/#text-format&#34;&gt;&lt;code&gt;text&lt;/code&gt;&lt;/a&gt; format
descriptions for details.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;See &lt;a href=&#34;https://github.com/operator-framework/operator-sdk/pull/3427&#34;&gt;#3427&lt;/a&gt; for more details.&lt;/em&gt;&lt;/p&gt;

      </description>
    </item>
    
  </channel>
</rss>
