<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>KubeOpsDoku – documentation</title>
    <link>https://docs.kubeops.net/categories/documentation/</link>
    <description>Recent content in documentation on KubeOpsDoku</description>
    <generator>Hugo -- gohugo.io</generator>
    
	  <atom:link href="https://docs.kubeops.net/categories/documentation/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Kubeopsvm: About KubeOpsVM</title>
      <link>https://docs.kubeops.net/kubeopsvm/getting-started/about-kubeopsvm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/getting-started/about-kubeopsvm/</guid>
      <description>
        
        
        &lt;p&gt;This article provides an overview of KubeOpsVM, a virtualization solution designed for Kubernetes-based environments. It explains how KubeOpsVM enables the operation and management of virtual machines alongside containerized workloads within a shared orchestration platform.&lt;/p&gt;
&lt;h1 id=&#34;what-is-kubeopsvm&#34;&gt;What Is KubeOpsVM?&lt;/h1&gt;
&lt;p&gt;KubeOpsVM is a virtualization platform that extends Kubernetes-based infrastructure to support virtual machines. It allows organizations to manage VM-based and container-based workloads within the same environment, using Kubernetes as the orchestration layer.&lt;/p&gt;
&lt;p&gt;By consolidating these workload types on a single platform, KubeOpsVM reduces the need for separate virtualization and container management systems. This approach simplifies infrastructure operations, improves consistency across environments, and supports more efficient resource utilization.&lt;/p&gt;
&lt;h1 id=&#34;why-kubeopsvm-matters&#34;&gt;Why KubeOpsVM Matters&lt;/h1&gt;
&lt;p&gt;Many organizations adopting cloud-native technologies must continue to operate existing applications that depend on traditional virtual machines. Managing these workloads separately from containerized services often increases operational complexity and creates fragmentation across tools, processes, and infrastructure.&lt;/p&gt;
&lt;p&gt;KubeOpsVM addresses this challenge by enabling virtual machines to run within Kubernetes environments. This makes it possible to manage legacy and modern workloads through a common control plane, helping organizations streamline administration and support gradual modernization strategies.&lt;/p&gt;
&lt;h1 id=&#34;key-features-driving-innovation&#34;&gt;Key Features Driving Innovation&lt;/h1&gt;
&lt;p&gt;KubeOpsVM distinguishes itself by delivering a robust virtualization experience through Kubernetes integration. Its primary features include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Unified Workload Management&lt;/strong&gt; - Manage virtual machines and containerized workloads through a shared Kubernetes-based platform and operational model.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scalability&lt;/strong&gt; - Scale virtual machines in response to changing demand by using Kubernetes scheduling and resource management capabilities.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;High Availability&lt;/strong&gt; - Support highly available virtualized workloads in multi-node environments through Kubernetes self-healing, scheduling, and failover mechanisms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Resource Efficiency&lt;/strong&gt; - Run virtualized and containerized workloads on the same infrastructure to improve resource utilization and operational efficiency.&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;a-vision-for-the-future&#34;&gt;A Vision for the Future&lt;/h1&gt;
&lt;p&gt;KubeOpsVM is designed for virtualization in cloud-native environments. It addresses the growing need to operate virtual machines alongside container-based workloads in Kubernetes, helping organizations connect existing systems with modern platform architectures. This supports a more practical and gradual path toward modernization.&lt;/p&gt;
&lt;p&gt;Whether the goal is to maintain legacy applications, improve deployment consistency, or increase workload portability, KubeOpsVM offers a unified approach to running VMs within Kubernetes-based platforms. As cloud-native adoption continues to grow, KubeOpsVM is positioned to support future infrastructure models where virtualized and containerized workloads operate together more seamlessly.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: Detailed Explanation for Configuration File for Custom VMs</title>
      <link>https://docs.kubeops.net/kubeopsvm/reference/detail-information-configfile-vm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/reference/detail-information-configfile-vm/</guid>
      <description>
        
        
        &lt;p&gt;To set up a virtual machine you need to create a configuration file. The configuration file contains information, such as &lt;strong&gt;name of the VM&lt;/strong&gt;, used &lt;strong&gt;resources&lt;/strong&gt; (e.g. RAM) and &lt;strong&gt;states&lt;/strong&gt; (e.g. running, halted).&lt;/p&gt;
&lt;p&gt;Heed the comments (#) in the file below.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;kubevirt.io/v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;VirtualMachine&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirt.io/vm&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:#000&#34;&gt;example-vm-cirros&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;example-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;values.vmValues.namespace | object.default &amp;#34;kubevirt&amp;#34; }}&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;runStrategy&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:#000&#34;&gt;Always&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirt.io/vm&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:#000&#34;&gt;example-vm-cirros&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;domain&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;devices&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disks&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bus&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:#000&#34;&gt;virtio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;containerdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bus&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:#000&#34;&gt;virtio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;machine&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;type&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;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;64M&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;terminationGracePeriodSeconds&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;volumes&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;containerdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;containerDisk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;image&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:#000&#34;&gt;package.includes.containers.example.registry }}/{{ package.includes.containers.example.image }}:{{ package.includes.containers.example.tag }}&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;imagePullSecret&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:#000&#34;&gt;kubeops-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;imagePullPolicy&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:#000&#34;&gt;Always&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;cloudInitNoCloud&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;userDataBase64&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:#000&#34;&gt;IyEvYmluL3NoCgplY2hvICdwcmludGVkIGZyb20gY2xvdWQtaW5pdCB1c2VyZGF0YScK&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;YAML&lt;/th&gt;
&lt;th&gt;Value&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;metadata.labels&lt;/td&gt;
&lt;td&gt;kubevirt.io/vm: example-vm-cirros&lt;/td&gt;
&lt;td&gt;Labels of the virtual machine. Used to identifiy a specific VM.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;metadata.name&lt;/td&gt;
&lt;td&gt;example-vm&lt;/td&gt;
&lt;td&gt;The display name of the VM.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How to install KubeOps Virtualization (kubevirt)</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-install-kubeops-virtualisation-kubevirt/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-install-kubeops-virtualisation-kubevirt/</guid>
      <description>
        
        
        &lt;div class=&#34;alert note callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Note&lt;/strong&gt;
  
  This guide requires a Compliance Enterprise license.
  
&lt;/div&gt;
&lt;p&gt;KubeVirt provides a powerful way to run virtual machines on top of Kubernetes, creating a unified platform for both containerized and traditional workloads. This guide walks through the essential steps for getting KubeVirt up and running using the KOSI package manager - from pulling and preparing the KubeVirt package, to creating a custom configuration file with your credentials, and finally verifying a successful installation in the &lt;code&gt;kubevirt&lt;/code&gt;-namespace. Once these steps are complete, you’ll be ready to deploy and manage virtual machines alongside your existing container infrastructure - all within a single Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;KubeVirt is a specialized package that extends the capabilities of the KubeOps platform to support machine virtualization.&lt;/p&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;p&gt;To follow the next steps, make sure you have your credentials ready from your &lt;a href=&#34;https://kubeops.net/login&#34;&gt;KubeOps.net account&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Make sure you have prepared the following points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A KubeOps cluster with one master node.&lt;/li&gt;
&lt;li&gt;Access to the master node with root privileges.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;step-1---download-kubeopsvm&#34;&gt;Step 1 - Download KubeOpsVM&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Log in to the master node remotely. For example, using &lt;code&gt;ssh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;If necessary, switch to your cluster user. If you forgot your cluster user, check your &lt;code&gt;cluster-values.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;su &amp;lt;your linux username&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Log in to KOSI using your KOSI username.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi login -u &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;USERNAME&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Search for available software packages by using the KOSI package manager.
In this case, we restrict the search to KubeOps virtualization using &lt;code&gt;kubeops-vm&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi search --hub kubeops-vm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-iso-install-search-kosi-kubeopsvm.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Log in to the local container registry on the master node using &lt;code&gt;podman&lt;/code&gt;. Replace &lt;code&gt;&amp;lt;master-ip&amp;gt;&lt;/code&gt; with the IP address of your master node.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;podman login &amp;lt;master-ip&amp;gt;:30002 -u admin -p &amp;lt;harbor admin password&amp;gt; --tls-verify&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;The package is named &lt;code&gt;kubeops/kubevirt:2.2.0_Beta0&lt;/code&gt; and lies on the hub &lt;code&gt;kubeops-vm&lt;/code&gt;. Download the package using the &lt;code&gt;kosi pull&lt;/code&gt; command and save it with the desired file name. In this example, the file is saved as &lt;code&gt;kubevirt-2.2.0_Beta0.tgz&lt;/code&gt;. The &lt;code&gt;-r&lt;/code&gt; flag sets the source registry the container images are pulled from, and &lt;code&gt;-t&lt;/code&gt; sets the local target registry the images are pushed to.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi pull --hub kubeops-vm kubeops/kubevirt:2.2.0_Beta0 -o kubevirt-2.2.0_Beta0.tgz -r &amp;lt;master-ip&amp;gt;:30002/kubeops -t 127.0.0.1:30002/kubeops
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-2---remove-the-taint-of-the-master-node-only-necessary-on-single-node-cluster&#34;&gt;Step 2 - Remove the Taint of the Master Node (only necessary on single node cluster)&lt;/h2&gt;
&lt;p&gt;This step is only required for a single-node cluster.&lt;/p&gt;
&lt;p&gt;If your cluster consists of only one node, you must remove the taint from the master node so that workloads can be scheduled on it.&lt;/p&gt;
&lt;p&gt;Replace &lt;code&gt;[NODENAME]&lt;/code&gt; with the name of you master node.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl taint nodes [NODENAME] node-role.kubernetes.io/control-plane:NoSchedule-
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;step-3---create-kubevirt-configuration-file&#34;&gt;Step 3 - Create Kubevirt Configuration File&lt;/h2&gt;
&lt;p&gt;Before installing the package, create a YAML configuration file. Save the following content in the same directory as the package file and name the file &lt;code&gt;kubevirt-values.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Replace &lt;code&gt;[your username]&lt;/code&gt; and &lt;code&gt;[your harbor cli secret]&lt;/code&gt; with your &lt;strong&gt;KOSI username&lt;/strong&gt; and your &lt;strong&gt;Harbor CLI secret&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The harbor-values &lt;strong&gt;must&lt;/strong&gt; be adapted to your harbor instance.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;kubeops/kubeopsctl/enterprise/beta/v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;deleteNs&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;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;localRegistry&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;packages&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;kubevirt-manager&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;enabled&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;values&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;standard&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;kubevirt&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;hostname&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:#000&#34;&gt;kubeops-vms.local&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeport&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;30733&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;ingressName&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:#000&#34;&gt;nginx&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;advanced&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;kubevirt&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;enabled&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;hub&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:#000&#34;&gt;kubeops-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;values&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;standard&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;kubevirt&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;imagePullSecretCred&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;registry&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;127.0.0.1&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;30002&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;/kubeops&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;user&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:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;your username]&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;password&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:#000;font-weight:bold&#34;&gt;[&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;your harbor cli secret]&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;# must be CLI Token from harbor&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirtobject&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;configuration&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;developerConfiguration&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;logVerbosity&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;virtLauncher&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;2&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;virtHandler&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;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;virtController&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;4&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;virtAPI&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;virtOperator&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;6&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;featureGates&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;ExpandDisks&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;CPUManager&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;ExperimentalIgnitionSupport&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;HypervStrictCheck&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;Sidecar&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;HostDevices&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;Snapshot&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;VMExport&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;HotplugVolumes&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;HostDisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;ExperimentalVirtiofsSupport&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;DownwardMetricsFeatureGate&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;Root&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;ClusterProfiler&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;WorkloadEncryptionSEV&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;VSOCK&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;DisableCustomSELinuxPolicy&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;KubevirtSeccompProfile&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;DisableMDEVConfiguration&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;PersistentReservation&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;VMPersistentState&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;MultiArchitecture&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;AutoResourceLimitsGate&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;AlignCPUs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;VolumesUpdateStrategy&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;VolumeMigration&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                  &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;InstancetypeReferencePolicy&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;useEmulation&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;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;cdiobject&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;config&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;insecureRegistries&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;                &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;registry.kubeops.net&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;scratchSpaceStorageClass: rook-cephfs # Optional; Default&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:#000&#34;&gt;rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;harbor&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;enabled&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;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;values&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;standard&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;harbor&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;# optional, default is harbor&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;ingressClassName&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:#000&#34;&gt;nginx&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;# optional, default is nginx; set to &amp;#34;traefik&amp;#34; to route via Traefik&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;harborpass&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;password&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;# required: set password for harbor access&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;databasePassword&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;Postgres_Password&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;# required: set password for database access&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;redisPassword&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;Redis_Password&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;# required: set password for redis access&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;externalURL&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:#000&#34;&gt;http://10.2.10.11:30002&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;# required, the ip address and port, from which harbor is accessable outside of the cluster&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodePort&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;30002&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;# required&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;hostname&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:#000&#34;&gt;harbor.local&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;# required&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;harborPersistence&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;persistentVolumeClaim&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;registry&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;size&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:#000&#34;&gt;40Gi&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;# optional, default is 40Gi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storageClass&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;rook-cephfs&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;#optional, default is rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;jobservice&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;jobLog&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;size&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:#000&#34;&gt;1Gi&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;# optional, default is 1Gi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storageClass&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;rook-cephfs&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;#optional, default is rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;database&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;size&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:#000&#34;&gt;1Gi&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;# optional, default is 1Gi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storageClass&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;rook-cephfs&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;#optional, default is rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;redis&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;size&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:#000&#34;&gt;1Gi&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;# optional, default is 1Gi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storageClass&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;rook-cephfs&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;#optional, default is rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;trivy&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;size&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:#000&#34;&gt;5Gi&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;# optional, default is 5Gi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storageClass&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;rook-cephfs&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;#optional, default is rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;advanced&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;#  All values from https://artifacthub.io/packages/helm/harbor/harbor/1.8.1#configuration are overwritable&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-4---install-kubeops-vm&#34;&gt;Step 4 - Install KubeOps-VM&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Install the KubeVirt package using the prepared configuration file you created.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi install -p kubevirt-2.2.0_Beta0.tgz -f kubevirt-values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Verify the installation by checking the pods in the &lt;code&gt;kubevirt&lt;/code&gt; namespace.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get pods -n kubevirt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The installation is complete when the status of all pods show the status “Running”.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeopsvm-check-kubevirt-installation.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;alert troubleshoot callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Troubleshoot&lt;/strong&gt;
  
  &lt;p&gt;If you receive an &lt;code&gt;ImagePullBackOff&lt;/code&gt; error, recreate the image pull secret&lt;/p&gt;
&lt;p&gt;If the kubevirt-manager pod is in &lt;code&gt;ImagePullBackOff&lt;/code&gt; and reports an error similar to the following:
&lt;code&gt;Unable to retrieve some image pull secrets (kubeops-harbor-secret)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;create the required registry secret in the &lt;code&gt;kubevirt&lt;/code&gt; namespace:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; kubectl -n kubevirt create secret docker-registry kubeops-harbor-secret &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --docker-server&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;127.0.0.1:30002 &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --docker-username&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;_user_name_&amp;gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --docker-password&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;_password_&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After creating the secret, restart the affected kubevirt-manager pod.&lt;/p&gt;

  
&lt;/div&gt;
&lt;p&gt;the following example, the &lt;code&gt;kubevirt&lt;/code&gt; namespace is used. If KubeVirt is deployed in a different namespace, replace the value passed to the &lt;code&gt;-n&lt;/code&gt; parameter.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl -n kubevirt create secret docker-registry kubeops-vm --docker-server&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;127.0.0.1:30002 --docker-username&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;admin --docker-password&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;admin password - see harborpass value in kubeopsctl.yaml&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-5---pull-and-install-kubevirt-manager-package&#34;&gt;Step 5 - Pull and Install KubeVirt Manager Package&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Pull the KubeVirt Manager package.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi pull --hub kubeops kubeops/kubevirt-manager:2.2.0_Beta0 -o kubevirt-manager-2.2.0_Beta0.tgz -r master-ip:30002/kubeops -t 127.0.0.1:30002/kubeops
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;Install the KubeVirt Manager package.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi install -p kubevirt-manager-2.2.0_Beta0.tgz -f kubevirt-values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;next-steps&#34;&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;After the installation is complete, you can start creating and deploying a custom virtual machine. For more information, see &lt;a href=&#34;../how-to-create-and-deploy-a-custom-virtual-machine-using-kubeops/&#34;&gt;How to create and deploy a Custom Virtual Machine using KubeOps&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: Release Notes</title>
      <link>https://docs.kubeops.net/kubeopsvm/release-notes/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/release-notes/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: Troubleshooting</title>
      <link>https://docs.kubeops.net/kubeopsvm/reference/troubleshooting/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/reference/troubleshooting/</guid>
      <description>
        
        
        &lt;h1 id=&#34;troubleshooting&#34;&gt;Troubleshooting&lt;/h1&gt;
&lt;h2 id=&#34;virt-handler-pods-only-23-ready-and-status-is-crashloopbackoff&#34;&gt;virt-handler pods only 2/3 ready and status is CrashLoopBackOff&lt;/h2&gt;
&lt;details &gt;
  &lt;summary&gt;show details&lt;/summary&gt;
  &lt;div class=&#34;markdown-inner&#34;&gt;
    &lt;p&gt;Container &amp;lsquo;virt-handler&amp;rsquo; has the following error log:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;&amp;#34;component&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;virt-handler&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;level&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;fatal&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;msg&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;Failed to create an inotify watcher&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;pos&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;cert-manager.go:105&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;reason&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;too many open files&amp;#34;&lt;/span&gt;,&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;timestamp&amp;#34;&lt;/span&gt;:&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;2026-07-14T07:55:17.060525Z&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;}&lt;/span&gt;              │
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;│ panic: Failed to create an inotify watcher
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;solution&#34;&gt;Solution&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;fs.inotify.user_watches&lt;/code&gt; and &lt;code&gt;fs.inotify.user_instances&lt;/code&gt; must be increased. To do so, ssh to the corresponding node and execute the following commands&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;sudo sysctl -w fs.inotify.max_user_watches&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;1048576&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo sysctl -w fs.inotify.max_user_instances&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;512&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
  &lt;/div&gt;
&lt;/details&gt;


      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: Commandline Operations</title>
      <link>https://docs.kubeops.net/kubeopsvm/reference/commandline-operations/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/reference/commandline-operations/</guid>
      <description>
        
        
        &lt;p&gt;Learn the most common command-line operations for managing KubeOps virtual machines - including creating a VM with a YAML configuration file, starting or stopping the VM by patching its &lt;code&gt;runStrategy&lt;/code&gt;, viewing the VM or instance status with kubectl describe, restarting the VM (which deletes the instance and causes data loss), and deleting the VM either in a cascading manner (removing the VM and its instance) or by leaving orphaned instances.&lt;/p&gt;
&lt;h1 id=&#34;create-a-new-virtual-machine&#34;&gt;Create a new virtual machine&lt;/h1&gt;
&lt;p&gt;The command &lt;code&gt;kubectl&lt;/code&gt; with the paramater &lt;code&gt;create&lt;/code&gt; uses the VM configuration file &lt;code&gt;vm-config.yaml&lt;/code&gt;. For more detailed explaination on VM configuration files, see [Detailed Explanation for Configuration File for Custom VMs](Detailed Explanation for Configuration File for Custom VMs).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl create -f vm-config.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;start-the-virtual-machine&#34;&gt;Start the virtual machine&lt;/h1&gt;
&lt;p&gt;Start the virtual machine VMNAME. Replace VMNAME with the name of your virtual machine,&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl patch virtualmachine VMNAME --type merge -p &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;#39;{&amp;#34;spec&amp;#34;:{&amp;#34;runStrategy&amp;#34;:&amp;#34;Always&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;status-of-a-virtual-machine&#34;&gt;Status of a virtual machine&lt;/h1&gt;
&lt;p&gt;Print the status of the virtual machine VMNAME. Replace VMNAME with the name of your virtual machine,&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl describe virtualmachine VMNAME
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;status-of-a-virtual-machine-instance&#34;&gt;Status of a virtual machine instance&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl describe virtualmachineinstance VMNAME
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;stop-the-virtual-machine-instance&#34;&gt;Stop the virtual machine instance&lt;/h1&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl patch virtualmachine VMNAME --type merge -p &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;#39;{&amp;#34;spec&amp;#34;:{&amp;#34;runStrategy&amp;#34;:&amp;#34;Halted&amp;#34;}}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;restart-the-virtual-machine&#34;&gt;Restart the virtual machine&lt;/h1&gt;
&lt;p&gt;{{ hazard_notice }}
Restarting the virtual machine will delete the virtual machine instance.
This action cannot be undone.
{{ /hazard_notice }}&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl delete virtualmachineinstance vm
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;cascade-delete-implicit&#34;&gt;Cascade delete (implicit)&lt;/h1&gt;
&lt;p&gt;Kubectl first deletes the virtual machine, followed by deleting the corresponding virtual machine instance.&lt;/p&gt;
&lt;p&gt;Delete the virtual machine VMNAME. Replace VMNAME with the name of your virtual machine,&lt;/p&gt;
&lt;p&gt;{{ hazard_notice }}
This action cannot be undone.
{{ /hazard_notice }}&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl delete virtualmachine VMNAME
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;cascade-delete-explicit&#34;&gt;Cascade delete (explicit)&lt;/h1&gt;
&lt;p&gt;Kubectl first deletes the virtual machine, followed by deleting the corresponding virtual machine instance.&lt;/p&gt;
&lt;p&gt;Delete the virtual machine VMNAME. Replace VMNAME with the name of your virtual machine,&lt;/p&gt;
&lt;p&gt;{{ hazard_notice }}
This action cannot be undone.
{{ /hazard_notice }}&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl delete virtualmachine VMNAME --cascade&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;delete-orphans&#34;&gt;Delete orphans&lt;/h1&gt;
&lt;p&gt;The running virtual machine is only detached, but not deleted.&lt;/p&gt;
&lt;p&gt;Delete orphans of the virtual machine VMNAME. Replace VMNAME with the name of your virtual machine,&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl delete virtualmachine VMNAME --cascade&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: General Concepts of KubeOpsVM</title>
      <link>https://docs.kubeops.net/kubeopsvm/getting-started/general-concepts-of-kubeopsvm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/getting-started/general-concepts-of-kubeopsvm/</guid>
      <description>
        
        
        &lt;p&gt;This article explores the core concepts of KubeOpsVM, a virtualization solution that integrates with Kubernetes to manage virtual machines alongside containerized workloads. It highlights how KubeOpsVM bridges traditional VMs and cloud-native systems, offering scalability and streamlined orchestration for modern infrastructure.&lt;/p&gt;
&lt;h1 id=&#34;what-is-the-purpose-of-a-virtual-machine&#34;&gt;What is the purpose of a Virtual Machine?&lt;/h1&gt;
&lt;p&gt;A virtual machine (VM) is a software-based environment that simulates a physical computer, enabling it to run an operating system and applications independently from the host machine. Its primary purpose is to optimize hardware usage by allowing multiple operating systems to run on a single device. This setup is crucial for tasks like software development, where developers can test applications in various environments without needing separate hardware.&lt;/p&gt;
&lt;p&gt;Security and isolation are other key advantages, as VMs keep applications separate from the host system, reducing the risk of system-wide damage from potential threats. They also simplify disaster recovery, since entire VM states can be backed up, cloned, or transferred easily. Additionally, VMs provide flexibility by enabling cross-platform compatibility, allowing users to run different operating systems simultaneously. This feature supports legacy software that might not be compatible with modern systems, ensuring continued access to older applications.&lt;/p&gt;
&lt;p&gt;Virtual machines are integral to cloud computing, IT infrastructure, and personal computing due to their scalability, flexibility, and efficiency.&lt;/p&gt;
&lt;h1 id=&#34;how-does-kubeopsvm-work&#34;&gt;How does KubeOpsVM work?&lt;/h1&gt;
&lt;p&gt;KubeOpsVM is like a &amp;ldquo;computer inside a computer.&amp;rdquo; It allows you to run an operating system (OS) and applications in a sandboxed environment, separate from your actual physical machine.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/KubeVirtUebersicht.svg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;In the example shown, any VM can be hosted on any agent (worker or master) within the cluster.&lt;/p&gt;
&lt;p&gt;A virtual machine does not necessarily have to run on a specific machine. Depending on the current requirements, the VM is deployed on the appropriate machine in the cluster. kubevirt takes over the complete administration - no further intervention is necessary.&lt;/p&gt;
&lt;p&gt;One of the main advantages of KubeOps virtualization is the asynchronous use and access of a VM and the deployment and execution of the VM depending on the available resources or machines. This ensures that each VM can always work independently of workloads.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: Getting Started</title>
      <link>https://docs.kubeops.net/kubeopsvm/getting-started/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/getting-started/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How to create and deploy a Custom Virtual Machine using KubeOps</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-create-and-deploy-a-custom-virtual-machine-using-kubeops/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-create-and-deploy-a-custom-virtual-machine-using-kubeops/</guid>
      <description>
        
        
        &lt;div class=&#34;alert note callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Note&lt;/strong&gt;
  
  This guide requires a Compliance enterprise license.
  
&lt;/div&gt;
&lt;p&gt;Creating custom virtual machines on top of Kubernetes is a powerful way to unify containerized and traditional workloads. In this introductory guide, you’ll learn how to set up your KubeOps cluster to deploy a Cirros-based VM using KubeVirt, from checking off a few key prerequisites to preparing and applying a concise YAML configuration file.&lt;/p&gt;
&lt;p&gt;Whether you’re a seasoned Kubernetes user looking to expand your virtualization capabilities or just getting started with hybrid infrastructure, these steps will walk you through everything from generating the custom VM file to verifying its running status and accessing it over SSH. By following this process, you’ll have a seamlessly integrated virtual machine environment in no time - ready to support your application needs.&lt;/p&gt;
&lt;h1 id=&#34;requirements&#34;&gt;Requirements&lt;/h1&gt;
&lt;p&gt;Make sure you have prepared the following points:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A KubeOps cluster with at least one master node and root privileges.&lt;/li&gt;
&lt;li&gt;A running kubeVirt instance. (see &lt;a href=&#34;../how-to-guides/how-to-install-kubeops-virtualisation-kubevirt/&#34;&gt;How to install KubeOps Virtualisation (KubeVirt)&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Enough resources to support a virtual machine&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:
&lt;img src=&#34;https://docs.kubeops.net/assets/kubevirtvm-3-machines-and-vms.svg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;p&gt;To follow this guide, use the following values to configure the custom virtual machine. If you wish, you can adjust the values yourself. Make sure that the adjusted values are applied accordingly everywhere.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Filename (VM configuration file)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;custom-vm.yaml&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtual Machine Label&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubevirt.io/vm: customvm&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtual Machine Name&lt;/td&gt;
&lt;td&gt;&lt;code&gt;customvm&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtual Machine Namespace&lt;/td&gt;
&lt;td&gt;&lt;code&gt;kubevirt&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Virtual Machine Memory&lt;/td&gt;
&lt;td&gt;&lt;code&gt;64M&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;additional-information&#34;&gt;Additional Information&lt;/h2&gt;
&lt;p&gt;For users to understand the most basic functionality of KubeVirt, one must know about the following fundemental concepts:&lt;/p&gt;
&lt;p&gt;KubeVirt offers different methods to engage with the virtual machines through specialized custom resources (CR). On the lowest level is the VirtualMachineInstance (VMI) which represents the stateless instance of a virtual machine. These VMIs can be managed by higher level resources, such as VirtualMachine (VM), which realizes a stateful VMI that can be stopped and started while maintaining its data and state.&lt;/p&gt;
&lt;p&gt;The manifests for these resources contain a multitude of parameters that surpass the needs of most users. Consequently this guide will not explain all parameters.&lt;/p&gt;
&lt;h1 id=&#34;how-to-create-and-deploy-a-custom-virtual-machine&#34;&gt;How to create and deploy a Custom Virtual Machine&lt;/h1&gt;
&lt;p&gt;The following steps will show you, how to manually create and access a virtual machine, using Kubernetes with a running KubeVirt instance.&lt;/p&gt;
&lt;h2 id=&#34;step-1---create-a-configuration-file-for-the-virtual-machine&#34;&gt;Step 1 - Create a Configuration File for the Virtual Machine&lt;/h2&gt;
&lt;p&gt;To set up a virtual machine you need to create a configuration file. The configuration file contains information, such as &lt;strong&gt;name of the vm&lt;/strong&gt; as well as its &lt;strong&gt;namespace&lt;/strong&gt;, used &lt;strong&gt;resources&lt;/strong&gt; (e.g. RAM) and &lt;strong&gt;states&lt;/strong&gt; (e.g. running, halted). Use the file contents below and make desired changes.&lt;/p&gt;
&lt;p&gt;Use the following content to create a basic vm configuration file &lt;code&gt;custom-vm.yaml&lt;/code&gt;.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;This file needs to be adapted at &lt;code&gt;spec.spec.volumes[0].containerDisk.image&lt;/code&gt;. You need to insert your local harbor deployments&amp;rsquo; port.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;kubevirt.io/v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;VirtualMachine&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirt.io/vm&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:#000&#34;&gt;example-vm-cirros&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;example-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;kubevirt&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;runStrategy&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:#000&#34;&gt;Always&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirt.io/vm&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:#000&#34;&gt;example-vm-cirros&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;domain&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;devices&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disks&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bus&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:#000&#34;&gt;virtio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;containerdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bus&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:#000&#34;&gt;virtio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;machine&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;type&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;&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;64M&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;terminationGracePeriodSeconds&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;volumes&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;containerdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;containerDisk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;image&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;127.0.0.1:5001/kubeops/kubevirt/cirros-container-disk-demo:v1.4.0&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;imagePullSecret&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:#000&#34;&gt;kubeops-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;imagePullPolicy&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:#000&#34;&gt;Always&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;cloudInitNoCloud&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;userDataBase64&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:#000&#34;&gt;IyEvYmluL3NoCgplY2hvICdwcmludGVkIGZyb20gY2xvdWQtaW5pdCB1c2VyZGF0YScK&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The image, from which the virtual machine is created, can be found in the first section of &lt;em&gt;&lt;strong&gt;spec.templates.spec.volumes&lt;/strong&gt;&lt;/em&gt; of the manifest.
It is used in the form of a ContainerDisk, meaning the image is part of a container image, within a remote repository.&lt;/p&gt;
&lt;p&gt;This manifest will use a preconfigured image from the repository &lt;code&gt;kubevirt/cirros-container-disk-demo:latest&lt;/code&gt; with the following credentials:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User (cirros image)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;cirros&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password (cirros image)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gocubsgo&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;KubeVirt supports the ability to assign a startup script to a virtual machine. The script is executed automatically when the VM initializes. There are multiple datasources supported, which will inject those scripts through the use of ephemeral disks.&lt;/p&gt;
&lt;p&gt;One of those datasources is called &lt;strong&gt;cloudInitNoCloud&lt;/strong&gt;, which is mentioned here as the second volume in &lt;em&gt;&lt;strong&gt;spec.templates.spec.volumes&lt;/strong&gt;&lt;/em&gt;. VMs with the cloud-init package installed will detect the ephemeral disk and execute custom userdata scripts at boot.&lt;/p&gt;
&lt;h2 id=&#34;step-2---transfer-the-vm-image-to-your-local-registry&#34;&gt;Step 2 - Transfer the VM Image to your Local Registry&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Pull the image from the kubeops registry&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt; podman pull registry.kubeops.net/kubeops/kubeops/kubevirt/cirros-container-disk-demo:v1.4.0-patch0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Tag the image for the local registry&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In the following command you need to insert your master1 ip address into the placeholder&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;podman tag registry.kubeops.net/kubeops/kubeops/kubevirt/cirros-container-disk-demo:v1.4.0-patch0 &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;your master1 ip&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;:5001/kubeops/kubevirt/cirros-container-disk-demo:v1.4.0-patch0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;Push the image to the local registry&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;In the following command you need to insert your master1 ip address into the placeholder&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;podman push &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;your master1 ip&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;:5001/kubeops/kubevirt/cirros-container-disk-demo:v1.4.0-patch0 --tls-verify&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#204a87&#34;&gt;false&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-3---deploy-the-virtual-machine&#34;&gt;Step 3 - Deploy the Virtual Machine&lt;/h2&gt;
&lt;p&gt;Deploy the vm using the &lt;code&gt;kubectl&lt;/code&gt; command and the &lt;code&gt;custom-vm.yaml&lt;/code&gt; file.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl apply -f custom-vm.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Check the state of the vm.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl get vmi -A
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This command lists all virtual machine instances. Since we only have one VM installed, the output looks something like this.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NAMESPACE   NAME         AGE   PHASE     IP              NODENAME       READY
kubevirt    customvm   22h   Running   192.168.16.48   stackedadmin   True
&lt;/code&gt;&lt;/pre&gt;&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  We highly recommend documenting the basic settings of your virtual machines (especially the configurations). This includes in particular: the used &lt;strong&gt;configuration file (yaml)&lt;/strong&gt;, the &lt;strong&gt;label of the vm&lt;/strong&gt;, the **name of the vm **and the &lt;strong&gt;namespace of the vm&lt;/strong&gt;. You can also document the &lt;strong&gt;image&lt;/strong&gt; used.
Documentation makes it easier to maintain and expand the virtual machines.
  
&lt;/div&gt;
&lt;h2 id=&#34;step-4---access-the-custom-vm&#34;&gt;Step 4 - Access the Custom VM&lt;/h2&gt;
&lt;p&gt;To connect to your newly created VM follow the &lt;a href=&#34;../how-to-access-a-virtual-machine-in-a-kubeops-cluster/&#34;&gt;documentation on how to access a Virtual Machine in a KubeOps Cluster&lt;/a&gt;&lt;/p&gt;


&lt;div class=&#34;alert alert-info&#34; role=&#34;alert&#34;&gt;
&lt;h4 class=&#34;alert-heading&#34;&gt;References&lt;/h4&gt;

    &lt;ul&gt;
&lt;li&gt;
&lt;p&gt;To know how to create a ContainerDisk from a local image, see &lt;a href=&#34;../how-to-create-a-containerdisk-from-a-local-image/&#34;&gt;Create a ContainerDisk from a local image guide&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;For more detailed explanation for virtual machine configuration files , see &lt;a href=&#34;../../reference/detail-information-configfile-vm/&#34;&gt;Detailed Explanation for Configuration File for Custom VMs&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How to access a virtual machine in a KubeOps Cluster</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-access-a-virtual-machine-in-a-kubeops-cluster/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-access-a-virtual-machine-in-a-kubeops-cluster/</guid>
      <description>
        
        
        &lt;h1 id=&#34;requirements&#34;&gt;Requirements&lt;/h1&gt;
&lt;div class=&#34;alert note callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Note&lt;/strong&gt;
  
  This guide requires a Compliance enterprise license.
  
&lt;/div&gt;
&lt;p&gt;Before proceeding, ensure that the following prerequisites are met:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A KubeOps cluster with at least one master node.&lt;/li&gt;
&lt;li&gt;A running virtual machine in said cluster.&lt;/li&gt;
&lt;li&gt;The credentials of the running image within the virtual machine (username and password).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubevirtvm-3-machines-and-vms.svg&#34; alt=&#34;&#34;&gt;&lt;/p&gt;

  
  
  
&lt;ul class=&#34;nav nav-tabs&#34; id=&#34;tabs-1&#34; role=&#34;tablist&#34;&gt;
  &lt;li class=&#34;nav-item&#34;&gt;
      &lt;button class=&#34;nav-link disabled&#34;
          id=&#34;tabs-01-00-tab&#34; data-bs-toggle=&#34;tab&#34; data-bs-target=&#34;#tabs-01-00&#34; role=&#34;tab&#34;
          aria-controls=&#34;tabs-01-00&#34; aria-selected=&#34;false&#34;&gt;
        &lt;strong&gt;From where to access the vm&lt;/strong&gt;:
      &lt;/button&gt;
    &lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;
      &lt;button class=&#34;nav-link active&#34;
          id=&#34;tabs-01-01-tab&#34; data-bs-toggle=&#34;tab&#34; data-bs-target=&#34;#tabs-01-01&#34; role=&#34;tab&#34;
          data-td-tp-persist=&#34;nodes inside the cluster&#34; aria-controls=&#34;tabs-01-01&#34; aria-selected=&#34;true&#34;&gt;
        Nodes inside the cluster
      &lt;/button&gt;
    &lt;/li&gt;&lt;li class=&#34;nav-item&#34;&gt;
      &lt;button class=&#34;nav-link&#34;
          id=&#34;tabs-01-02-tab&#34; data-bs-toggle=&#34;tab&#34; data-bs-target=&#34;#tabs-01-02&#34; role=&#34;tab&#34;
          data-td-tp-persist=&#34;outside the cluster&#34; aria-controls=&#34;tabs-01-02&#34; aria-selected=&#34;false&#34;&gt;
        Outside the cluster
      &lt;/button&gt;
    &lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&#34;tab-content&#34; id=&#34;tabs-1-content&#34;&gt;
    &lt;div class=&#34;tab-body tab-pane fade&#34;
        id=&#34;tabs-01-00&#34; role=&#34;tabpanel&#34; aria-labelled-by=&#34;tabs-01-00-tab&#34; tabindex=&#34;1&#34;&gt;
        
    &lt;/div&gt;
    &lt;div class=&#34;tab-body tab-pane fade show active&#34;
        id=&#34;tabs-01-01&#34; role=&#34;tabpanel&#34; aria-labelled-by=&#34;tabs-01-01-tab&#34; tabindex=&#34;1&#34;&gt;
        &lt;p&gt;In the example shown, the &lt;strong&gt;custom VM&lt;/strong&gt; is accessed via the &lt;strong&gt;master node&lt;/strong&gt;**, Worker Node 1**, or &lt;strong&gt;Worker Node 2&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;A KubeOps virtual machine is not exposed by default and therefore cannot be accessed remotely by the admin node.&lt;/p&gt;
&lt;h2 id=&#34;step-1---identify-your-virtual-machine&#34;&gt;Step 1 - Identify your Virtual Machine&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Log in to the master or worker machine.&lt;/li&gt;
&lt;li&gt;Most kubeops software requires root privileges. Switch to the root user.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo -i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Identify your virtual machine by running the &lt;code&gt;kubectl get vmi&lt;/code&gt; command.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get vmi -A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command lists all virtual machine instances. Choose the &lt;code&gt;IP&lt;/code&gt; of the desired virtual machine.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NAMESPACE   NAME         AGE   PHASE     IP              NODENAME       READY
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubevirt    [CUSTOMVM-1]   22h   Running   [192.168.16.XXX]   stackedadmin   True
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubevirt    [CUSTOMVM-2]   22h   Running   [192.168.16.YYY]   stackedadmin   True
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-2---access-the-virtual-machine&#34;&gt;Step 2 - Access the Virtual Machine&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Log in to the example VM remotely (e.g. using &lt;code&gt;ssh&lt;/code&gt;). Use the IP address from the previous step. Use the credentials of the image.
Replace &lt;code&gt;[USERNAME]&lt;/code&gt; and &lt;code&gt;[IP-ADDRESS]&lt;/code&gt; accordingly.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;USERNAME&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;IP-ADDRESS&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
    &lt;/div&gt;
    &lt;div class=&#34;tab-body tab-pane fade&#34;
        id=&#34;tabs-01-02&#34; role=&#34;tabpanel&#34; aria-labelled-by=&#34;tabs-01-02-tab&#34; tabindex=&#34;1&#34;&gt;
        &lt;h2 id=&#34;step-1---create-a-service-forwarding-the-ssh-port-of-the-vm&#34;&gt;Step 1 - Create a Service forwarding the SSH port of the VM&lt;/h2&gt;
&lt;p&gt;The following YAML defines a Kubernetes Service that forwards the SSH port of your VM to the &lt;code&gt;spec.ports.nodePort&lt;/code&gt; value.
The Service connects to your VM by using the selector, so make sure that the given label matches the one of your VM.  Store it in a local YAML file &lt;code&gt;serviceforwarding.yaml&lt;/code&gt;&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-yml&#34; data-lang=&#34;yml&#34;&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;Service&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;vm-ssh-forwarding&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;kubevirt&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;type&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:#000&#34;&gt;NodePort&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;ports&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;22&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodePort&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;30226&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;targetPort&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;22&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;protocol&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:#000&#34;&gt;TCP&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;selector&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirt.io/vm&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:#000&#34;&gt;customvm&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;# Binds directly to the underlying VM pod&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Apply the Service with the following command:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt; kubectl apply -f serviceforwarding.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;To verify that the Service is connected to your VM, check the &lt;code&gt;Endpoints&lt;/code&gt; resource in your Kubernetes cluster. The output should look similar to this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;NAME                ENDPOINTS          AGE
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;vm-ssh-forwarding   10.244.138.61:22   5d23h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-2---access-the-custom-vm&#34;&gt;Step 2 - Access the Custom VM&lt;/h2&gt;
&lt;p&gt;You can access the custom VM remotely from any host that has network access to the cluster machines, for example by using &lt;code&gt;ssh&lt;/code&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Log in to the machine.&lt;/li&gt;
&lt;li&gt;Identify the IP address of your custom VM by using the &lt;code&gt;kubectl get vmi&lt;/code&gt; command.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get vmi -A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command lists all virtual machine instances. Since we only have one VM installed, the output looks similar to this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;NAMESPACE   NAME         AGE   PHASE     IP              NODENAME       READY
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubevirt    example-vm   22h   Running   192.168.16.48   stackedadmin   True
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;To connect to the example VM remotely using &lt;code&gt;ssh&lt;/code&gt;, use the IP address of a cluster node because the Service type is &lt;code&gt;NodePort&lt;/code&gt;. In this example, the master node IP address is used. Also use the credentials of the running &lt;code&gt;cirros image&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;vm user&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;your master1 ip&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; -p &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;30226&lt;/span&gt; &lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# this port must match the one defined in your service &lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How To Guides</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/</guid>
      <description>
        
        
        &lt;p&gt;In the following sections, you will find everything from initial setup and configuration, to advanced tips and tricks that will help you get the most out of the software. Our aim is to assist you in becoming proficient with KubeOpsVM, enhancing both your productivity and your user experience.&lt;/p&gt;
&lt;p&gt;Lets get started on your journey to mastering KubeOpsVM!&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: Install KubeOps virtualization on a Dedicated Machine</title>
      <link>https://docs.kubeops.net/kubeopsvm/getting-started/install-kubeops-virtualisation-on-a-dedicated-machine/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/getting-started/install-kubeops-virtualisation-on-a-dedicated-machine/</guid>
      <description>
        
        
        &lt;p&gt;This guide describes how to set up a Kubernetes-based virtualization environment by using &lt;strong&gt;kubevirt&lt;/strong&gt; automated installation routines. The setup is performed on a physical or virtual machine and runs largely automatically, requiring only minimal user input.&lt;/p&gt;
&lt;p&gt;As part of the installation, &lt;code&gt;KubeVirt&lt;/code&gt; and additional KubeOps components, such as the &lt;code&gt;KOSI package manager&lt;/code&gt;, are installed automatically on the target node.&lt;/p&gt;
&lt;p&gt;KubeVirt provides the virtualization layer within Kubernetes and enables virtual machines to run as Kubernetes-managed resources.&lt;/p&gt;
&lt;p&gt;System architecture after installation&lt;/p&gt;
&lt;p&gt;After the installation is complete, the environment consists of:&lt;/p&gt;
&lt;p&gt;-a single-node Kubernetes cluster&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;one running node functioning as both the control-plane and worker node&lt;/li&gt;
&lt;li&gt;one virtual machine &lt;code&gt;ubuntu vm&lt;/code&gt; running in the namespace &lt;code&gt;kubevirt&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;one preconfigured &lt;code&gt;ubuntu&lt;/code&gt; image running on that virtual machine&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The &lt;code&gt;ubuntu&lt;/code&gt; image includes predefined login credentials.&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubevirtvm-iso-install-rhel-9-6.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  &lt;p&gt;A virtual machine is not permanently bound to a specific machine. In Kubernetes-based virtualization environments, VM placement depends on resource availability and scheduling decisions within the cluster. KubeVirt manages this placement and execution automatically, so no manual intervention is required during normal operation.&lt;/p&gt;
&lt;p&gt;This behavior supports flexible resource usage and allows workloads to operate independently of a fixed host system.&lt;/p&gt;
&lt;p&gt;One of the main advantages of KubeOps virtualization is the asynchronous use and access of a VM and the deployment and execution of the VM depending on the available resources or machines.
This allows virtual machines to be scheduled independently based on available cluster resources.&lt;/p&gt;

  
&lt;/div&gt;
&lt;h2 id=&#34;requirements&#34;&gt;Requirements&lt;/h2&gt;
&lt;p&gt;Before you begin the installation, ensure that you have the credentials for the following accounts available:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;your &lt;a href=&#34;https://kubeops.net/login&#34;&gt;KubeOps.net account&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;your &lt;strong&gt;Red Hat Subscription Manager account&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For more information about Red Hat Subscription Manager, see the &lt;a href=&#34;https://docs.redhat.com/en/documentation/subscription_central/1-latest/html/getting_started_with_rhel_system_registration/adv-reg-rhel-using-rhsm_&#34;&gt;Red Hat online documentation&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;system-requirements&#34;&gt;System Requirements&lt;/h3&gt;
&lt;p&gt;The ISO can be installed on either a physical machine or a virtual machine. Ensure that the target system meets the following minimum requirements.&lt;/p&gt;
&lt;p&gt;The KubeOps-VM ISO is based on Red Hat Enterprise Linux (RHEL). Only RHEL 9.6 and 9.7 are supported.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;CPU&lt;/td&gt;
&lt;td&gt;4 cores&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Memory&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Disk space&lt;/td&gt;
&lt;td&gt;50 GB of unformatted, non-partitioned disk space&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  &lt;p&gt;Actual system requirements depend on the number and type of virtual machines that will run on the system.&lt;/p&gt;
&lt;p&gt;In general, the more virtual machines you plan to run, the more disk space is required. Depending on the expected workload, increasing CPU and memory resources may also be necessary.&lt;/p&gt;

  
&lt;/div&gt;
&lt;h2 id=&#34;step-1---download-the-kubeops-vm-iso-file&#34;&gt;Step 1 - Download the KubeOps-VM ISO File&lt;/h2&gt;
&lt;p&gt;Download the ISO file from the following location:&lt;br&gt;
&lt;a href=&#34;https://kubeops.net/users-only/welcome&#34;&gt;https://kubeops.net/users-only/welcome&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id=&#34;step-2---install-the-kubeops-vm-iso&#34;&gt;Step 2 - Install the KubeOps-VM ISO&lt;/h2&gt;
&lt;p&gt;During installation, you will be prompted to provide configuration values. Follow the on-screen instructions and enter the required information.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Boot your machine from the ISO.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Install Red Hat Enterprise&lt;/strong&gt; to start the installation.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-vm-start-iso-install.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Select the hard disk on which the system will be installed.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-iso-install-select-harddisk.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Configure the network settings:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Select your preferred &lt;strong&gt;networking device&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select whether the IP configuration is &lt;strong&gt;dynamic&lt;/strong&gt; or &lt;strong&gt;static&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;IP address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;subnet mask address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;gateway address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the &lt;strong&gt;DNS server address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter your preferred &lt;strong&gt;hostname&lt;/strong&gt;. This will be the name of the machine.
( Do not use special characters in the hostname.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-iso-network.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Select your preferred activation method for the Red Hat Subscription Manager.&lt;/li&gt;
&lt;li&gt;Select your preferred security method for the GRUB bootloader.&lt;br&gt;
We recommend the option &amp;ldquo;random password&amp;rdquo; - this will set up the security automatically. For more information about the GRUB bootloader and its security, refer to the respective documentation.&lt;/li&gt;
&lt;li&gt;Enter your &lt;strong&gt;KubeOps.net account&lt;/strong&gt; credentials.
&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  The setup process may take several minutes. Do not shut down the machine while the installation is in progress.
  
&lt;/div&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kosi-login-kubeops-iso.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;8&#34;&gt;
&lt;li&gt;Follow the remaining on-screen instructions to complete the installation.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;step-3---login-to-the-control-plane-node-on-the-cluster&#34;&gt;Step 3 - Login to the Control-plane Node on the Cluster&lt;/h2&gt;
&lt;p&gt;During setup using an ISO file, the control-plane node was automatically preconfigured with a user (root) and its password.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ko-admin&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password&lt;/td&gt;
&lt;td&gt;&lt;code&gt;KubeOps2024&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ol&gt;
&lt;li&gt;Log in to the control-plane node remotely.&lt;br&gt;
For example, using &lt;code&gt;ssh&lt;/code&gt;. The first time you log in, you must use the preconfigured password (see above). Use the &lt;strong&gt;hostname&lt;/strong&gt; or the &lt;strong&gt;IP address&lt;/strong&gt; that you assigned in a previous step during the installation.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh ko-admin@&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;HOSTNAME&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;or&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ssh ko-admin@&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;IP ADDRESS&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;
&lt;p&gt;At first login, you will be prompted to change the default password. ollow the on-screen instructions. After the password change is complete, you will be automatically logged out.
&lt;div class=&#34;alert notice callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Notice&lt;/strong&gt;
  
  During the first boot of the machine, additional software and parameters are configured in the background, such as the cluster setup and configuration.
  
&lt;/div&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Login to the machine again using your new credentials.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Most kubeops software require root privileges. Switch to root user.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo -i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;To check the state of background configuration tasks, run the &lt;code&gt;journalctl&lt;/code&gt; command.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;journalctl -u clustersetup.service
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Keep this view open while the installation finishes.&lt;/p&gt;
&lt;p&gt;Check your kubeops virtualization by using the &lt;code&gt;kubectl get pods&lt;/code&gt; command.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl get pods -n kubevirt
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The installation is complete when the status of all pods is set to “Running”. For example:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: Pods in the &lt;code&gt;kubevirt&lt;/code&gt; namespace may initially remain in the &lt;code&gt;Pending&lt;/code&gt; state. If this happens, you can either add worker nodes as described in &lt;a href=&#34;../how-to-guides/how-to-join-nodes-to-a-kubeops-cluster/&#34;&gt;How to join Nodes to a KubeOps Cluster&lt;/a&gt; or  or remove the control-plane taint from the single node with &lt;code&gt; kubectl taint nodes &amp;lt;control-plane-node-name&amp;gt; node-role.kubernetes.io/control-plane:NoSchedule-&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeopsvm-check-kubevirt-installation.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;To change the password of the root user, run command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;passwd
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-4---install-the-example-vm&#34;&gt;Step 4 - Install the example VM&lt;/h2&gt;
&lt;p&gt;After the platform installation is complete, you can deploy the example virtual machine.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Login to the machine using your updated credentials.&lt;/li&gt;
&lt;li&gt;Switch to root user as most kubeops software needs root privileges.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;sudo -i
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Create a values file for the virtual machines:&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;ubuntuvmValues&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;ubuntu-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;kubevirt-vm &lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;sshkeys&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;key&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:#000&#34;&gt;&amp;lt;public ssh key, p.e. id_rsa.pub file&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;dataVolume&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storageClassName&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:#000&#34;&gt;rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;secret&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:#000&#34;&gt;kubeops-auth&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In this example,these values are saved in the &lt;code&gt;vmvalues.yaml&lt;/code&gt; file.&lt;/p&gt;
&lt;ol start=&#34;4&#34;&gt;
&lt;li&gt;Ensure that you are still logged in to KOSI using your kosi username. KOSI sessions remain valid for 24 hours, after that time you need to login again.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi login -u &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;USERNAME&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ol start=&#34;5&#34;&gt;
&lt;li&gt;Use the KOSI package manager to search for available software packages.
In this case, we restrict the search to KubeOps virtualization using the hub &lt;code&gt;kubeops-vm&lt;/code&gt; and filter for &lt;code&gt;ubuntu&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi search --hub kubeops-vm --ps ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src=&#34;https://docs.kubeops.net/assets/kubeops-iso-install-search-kosi-kubeopsvm.png&#34; alt=&#34;&#34;&gt;&lt;/p&gt;
&lt;ol start=&#34;6&#34;&gt;
&lt;li&gt;Install the package using the &lt;code&gt;kosi install&lt;/code&gt; command. The example VM configuration is named &lt;code&gt;kubevirt-ubuntu-vm&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi install --hub kubeops-vm kubeops/kubevirt-ubuntu-vm:1.0.0 -f vmvalues.yaml --dname ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Create the required secret&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Create a custom secret for image access:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;kubectl create secret generic kubeops-auth --from-literal=accessKeyId=&amp;lt;kubeopsaccount&amp;gt; --from-literal=secretKey=&amp;#34;&amp;lt;password-token for imagepullregistry&amp;gt;&amp;#34; --namespace=&amp;lt;namespace of vm&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;blockquote&gt;
&lt;p&gt;Note: The image pull token is not the same as the account password. If the registry uses OIDC integration, for example with Keycloak, use the appropriate token instead of the user password.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Additional requirements for air-gapped environments&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;For an &lt;strong&gt;airgap&lt;/strong&gt; installation,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use a domain name for Harbor.&lt;/li&gt;
&lt;li&gt;Do &lt;strong&gt;not&lt;/strong&gt; use an IP address with a port&lt;/li&gt;
&lt;li&gt;Do &lt;strong&gt;not&lt;/strong&gt; manually copy images to the nodes or load them with containerd&lt;/li&gt;
&lt;li&gt;Ensure that all required images are available through the configured registry&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You may also need to create an image pull secret named &lt;code&gt;kubeops-vm&lt;/code&gt;. This secret uses the same registry credentials as the &lt;code&gt;kubeops-auth&lt;/code&gt; secret created by the KubeOps platform tool, like rook-ceph.&lt;/p&gt;
&lt;p&gt;You can create it with the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl -n kubevirt create secret docker-registry kubeops-vm --docker-server&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;registry &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; image pulling&amp;gt; --docker-username&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;username of registry&amp;gt; --docker-password&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;password-token &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;for&lt;/span&gt; imagepullregistry&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-5---access-the-example-virtual-machine&#34;&gt;Step 5 - Access the example virtual machine&lt;/h2&gt;
&lt;p&gt;After deployment, you can access the example virtual machine remotely from the control-plane node. For example, using &lt;code&gt;ssh&lt;/code&gt;.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Login to the machine using your updated credentials.&lt;/li&gt;
&lt;li&gt;Retrieve the IP address of your example VM with following command:&lt;/li&gt;
&lt;/ol&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get vmi -A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This command lists all virtual machine instances. Since we only have one VM installed, the output looks something like this.&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;NAMESPACE   NAME         AGE   PHASE     IP              NODENAME       READY

kubevirt    ubuntu-vm   22h   Running   192.168.16.48   stackedadmin   True
&lt;/code&gt;&lt;/pre&gt;&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;Log in to the example VM remotely (e.g. using &lt;code&gt;ssh&lt;/code&gt;). Use the IP address from the previous step. Use the credentials of the running &lt;code&gt;ubuntu image&lt;/code&gt; from the table below.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;ssh ubuntu@192.168.16.48
&lt;/code&gt;&lt;/pre&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User (ubuntu image)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ubuntu&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Password (ubuntu image)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;ubuntu&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;next-steps&#34;&gt;Next Steps&lt;/h2&gt;
&lt;p&gt;For additional commands and operational tasks for KubeOps virtual machines, see &lt;a href=&#34;../../reference/commandline-operations&#34;&gt;Commandline Operations&lt;/a&gt;.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl-2.0: KubeOps Compliance 2.0</title>
      <link>https://docs.kubeops.net/kubeopsctl-2.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl-2.0/</guid>
      <description>
        
        
        &lt;div class=&#34;td-card-group card-group p-0 mb-4&#34;&gt;
&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      Start with Kubeops Compliance 2.0
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;div class=&#34;card-text&#34;&gt;
        &lt;p&gt;Follow the quickstart guides to learn how to create cluster in a secure, fast way with &lt;code&gt;kubeopsctl&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../kubeopsctl-2.0/getting-started/about-kubeopsctl/&#34;&gt;About KubeOpsCtl&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../kubeopsctl-2.0/getting-started/prepare/&#34;&gt;KubeOpsCtl Prepare Cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../kubeopsctl-2.0/getting-started/setup/&#34;&gt;KubeOpsCtl Setup Cluster&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../kubeopsctl-2.0/reference/commands/&#34;&gt;KubeOpsCtl Commands&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: KubeOpsVM</title>
      <link>https://docs.kubeops.net/kubeopsvm/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/</guid>
      <description>
        
        
        &lt;div class=&#34;td-card-group card-group p-0 mb-4&#34;&gt;
&lt;div class=&#34;td-card card border me-4&#34;&gt;
&lt;div class=&#34;card-header&#34;&gt;
      Start with KubeopsVM
    &lt;/div&gt;
&lt;div class=&#34;card-body&#34;&gt;
    &lt;div class=&#34;card-text&#34;&gt;
        &lt;p&gt;Follow the getting started guides to learn what &lt;code&gt;KubeOpsVM&lt;/code&gt; is, and how to install the required components.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;../getting-started/about-kubeopsvm/&#34;&gt;About KubeOpsVM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../getting-started/general-concepts-of-kubeopsvm/&#34;&gt;General Concepts of KubeOpsVM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../getting-started/install-kubeops-virtualisation-on-a-dedicated-machine/&#34;&gt;Install KubeOpsVM on a Dedicated Machine&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;../how-to-guides/how-to-install-kubeops-virtualisation-kubevirt/&#34;&gt;How to Install KubeOps Virtualisation&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
      &lt;/div&gt;
  &lt;/div&gt;

&lt;/div&gt;


      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: Reference</title>
      <link>https://docs.kubeops.net/kubeopsvm/reference/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/reference/</guid>
      <description>
        
        
        
      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How to create a ContainerDisk from a local image</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-create-a-containerdisk-from-a-local-image/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-create-a-containerdisk-from-a-local-image/</guid>
      <description>
        
        
        &lt;div class=&#34;alert note callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Note&lt;/strong&gt;
  
  This feature requires a Compliance enterprise license.
  
&lt;/div&gt;
&lt;p&gt;KubeVirt supports multiple ways of using images to create virtual machines. One of the most convenient methods is using the ContainerDisk feature, which allows VM disks to be stored and distributed as container images through a registry.&lt;/p&gt;
&lt;p&gt;To create a ContainerDisk, users can simply inject the image into a container in &lt;strong&gt;qcow2&lt;/strong&gt; or &lt;strong&gt;raw&lt;/strong&gt; format. The container should be based on &lt;strong&gt;scratch&lt;/strong&gt; and the images must be placed into the &lt;strong&gt;/disk&lt;/strong&gt; directory. No other content is required.&lt;/p&gt;
&lt;p&gt;The following Dockerfile builds a ContainerDisk, which you can store in a OCI registry such as harbor or the Docker Hub:&lt;/p&gt;
&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;FROM kubevirt/container-disk-v1alpha
ADD &amp;lt;your Image&amp;gt;.qcow2 /disk
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You can the build the OCI arteiact with the command:&lt;/p&gt;
&lt;p&gt;podman build . -t &lt;your name and tag&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The ContainerDisk must be readable by the user with the UID 107 (qemu).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If you want to access the virtual machine, it is recommended to use a SSH key in the &lt;code&gt;userdata&lt;/code&gt; startup section of your YAML file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitdisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;cloudInitNoCloud&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;userData&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:#000;font-weight:bold&#34;&gt;|-&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;            #cloud-config
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;            ssh_authorized_keys:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;              - ssh-rsa AAAAB3NzaK8L93bWxnyp test@test.com&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How to import a VM from vSphere and deploy it in a Cluster using KubeVirt</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-import-a-vm-from-vsphere/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-import-a-vm-from-vsphere/</guid>
      <description>
        
        
        &lt;div class=&#34;alert note callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Note&lt;/strong&gt;
  
  This guide requires a Compliance enterprise license.
  
&lt;/div&gt;
&lt;p&gt;How to Import a VM from vSphere and Deploy it in a Cluster using KubeVirt&lt;/p&gt;
&lt;p&gt;This guide outlines the steps to export a virtual machine from vSphere, convert it to the qcow2 format, and deploy it inside a Kubernetes cluster using KubeVirt.&lt;/p&gt;
&lt;h1 id=&#34;requirements&#34;&gt;Requirements&lt;/h1&gt;
&lt;p&gt;To follow these steps, ensure you have:&lt;/p&gt;
&lt;p&gt;A VM in the vSphere environment.&lt;/p&gt;
&lt;p&gt;A Kubernetes cluster with KubeVirt installed.&lt;/p&gt;
&lt;p&gt;Access to a container registry to store the VM image.&lt;/p&gt;
&lt;h1 id=&#34;step-1---export-ovf-template-from-vsphere&#34;&gt;Step 1 - Export OVF Template from vSphere&lt;/h1&gt;
&lt;p&gt;In vSphere, locate the VM you want to export.&lt;/p&gt;
&lt;p&gt;Ensure the VM is powered off before exporting.&lt;/p&gt;
&lt;p&gt;Right-click the VM, navigate to Template, and select Export OVF Template.&lt;/p&gt;
&lt;p&gt;Provide a name for the exported template and click OK.&lt;/p&gt;
&lt;p&gt;The export process will generate three files: *.vmdk, *.nvram, and *.ovf.&lt;/p&gt;
&lt;p&gt;Only the *.vmdk file is required for further processing.&lt;/p&gt;
&lt;h1 id=&#34;step-2---convert-the-vmdk-file-to-qcow2-format&#34;&gt;Step 2 - Convert the VMDK File to QCOW2 Format&lt;/h1&gt;
&lt;p&gt;KubeVirt requires disk images in qcow2 format. Use the qemu-img tool to convert the .vmdk file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;qemu-img convert -f vmdk -O qcow2 &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;input-file&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.vmdk &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;output-file&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.qcow2
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Replace [input-file].vmdk with the name of your downloaded VMDK file and [output-file].qcow2 with your desired output name.&lt;/p&gt;
&lt;h1 id=&#34;step-3---create-a-container-image-from-the-qcow2-file&#34;&gt;Step 3 - Create a Container Image from the QCOW2 File&lt;/h1&gt;
&lt;p&gt;To use the converted disk inside KubeVirt, create a ContainerDisk by building a container image with the qcow2 file.&lt;/p&gt;
&lt;p&gt;Create a Dockerfile&lt;/p&gt;
&lt;p&gt;Create a Dockerfile with the following content:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;FROM scratch 
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ADD --chown&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;107:107 &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;filename&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;.qcow2 /disk/
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Replace [filename].qcow2 with the actual filename of your converted disk image.&lt;/p&gt;
&lt;p&gt;Build and Push the Image&lt;/p&gt;
&lt;p&gt;Execute the following commands to build the image and push it to a container registry:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;podman build -t &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;registry&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;namespace&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;vm-image-name&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;tag&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; -t localhost/&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;namespace&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;vm-image-name&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;tag&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;podman push &lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;[&lt;/span&gt;registry&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;namespace&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;vm-image-name&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;tag&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Replace the placeholders as follows:&lt;/p&gt;
&lt;p&gt;[registry]: The URL of your container registry&lt;/p&gt;
&lt;p&gt;[namespace]: Your project name&lt;/p&gt;
&lt;p&gt;[vm-image-name]: A name for the VM image&lt;/p&gt;
&lt;p&gt;[tag]: The version tag (e.g., 1.0.0)&lt;/p&gt;
&lt;p&gt;Once the image is pushed, it can be used as a ContainerDisk in KubeVirt to deploy a virtual machine.&lt;/p&gt;
&lt;h1 id=&#34;step-4---deploy-the-vm-using-kubevirt&#34;&gt;Step 4 - Deploy the VM using KubeVirt&lt;/h1&gt;
&lt;p&gt;Create a secret for authentication:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl create secret generic kubeops-vm-sec --from-literal&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;accessKeyId&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;kubeops --from-literal&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#000&#34;&gt;secretKey&lt;/span&gt;&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;registry-token --namespace kubevirt-vms-import
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl -n kubevirt-vms-import create secret docker-registry kubeops-vm --docker-server&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;registry.kubeops.net --docker-username&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;lt;username&amp;gt;&amp;#34;&lt;/span&gt; --docker-password&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;&amp;lt;registry-token&amp;gt;&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; kubectl patch serviceaccount default -n kubevirt-vms-import -p &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#39;{&amp;#34;imagePullSecrets&amp;#34;: [{&amp;#34;name&amp;#34;: &amp;#34;kubeops-vm&amp;#34;}]}&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Create a manifest file for the virtual machine:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;kubevirt.io/v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;VirtualMachine&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirt.io/vm&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:#000&#34;&gt;sk2-master01&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;sk2-master01-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;kubevirt-vms-import&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;runStrategy&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:#000&#34;&gt;Always&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirt.io/vm&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:#000&#34;&gt;sk2-master01&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;domain&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;devices&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disks&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;datavolumedisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bus&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:#000&#34;&gt;virtio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitvolume&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bus&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:#000&#34;&gt;virtio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;4092M&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;volumes&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;datavolumedisk&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;dataVolume&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;sk2-master01-dv&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitvolume&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;cloudInitNoCloud&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;userData&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:#000;font-weight:bold&#34;&gt;|-&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;            #cloud-config
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;            chpasswd:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;              list: |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;              expire: False
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;            ssh_pwauth: True
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;            disable_root: false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;            
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;dataVolumeTemplates&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;sk2-master01-dv&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storage&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storage&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:#000&#34;&gt;68Gi&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;storageClassName&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:#000&#34;&gt;rook-cephfs&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;accessModes&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;          &lt;/span&gt;- &lt;span style=&#34;color:#000&#34;&gt;ReadWriteMany&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;registry&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;url&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;docker://registry.kubeops.net/kubeops-vm/kubeops/kubevirt/sk2_master01_export:1.0.0&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;# (change the url to the image you want to deploy)&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;secretRef&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:#000&#34;&gt;kubeops-vm-sec&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl apply -f filename.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h1 id=&#34;step-5---verify-deployment&#34;&gt;Step 5 - Verify Deployment&lt;/h1&gt;
&lt;p&gt;Run the following commands to check if the VM is deployed successfully:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get dv -n kubevirt-vms-import
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get vmi -n kubevirt-vms-import
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Ensure that the DataVolume is successfully downloaded and the VirtualMachineInstance is running.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How to Monitor KubeVirt in Grafana</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-monitor-vms-in-grafana/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-monitor-vms-in-grafana/</guid>
      <description>
        
        
        &lt;div class=&#34;alert note callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Note&lt;/strong&gt;
  
  This guide requires a Compliance enterprise license.
  
&lt;/div&gt;
&lt;h1 id=&#34;monitor-kubevirt-vmis-with-grafana-and-prometheus&#34;&gt;Monitor KubeVirt VMIs with Grafana and Prometheus&lt;/h1&gt;
&lt;p&gt;This guide explains how to monitor KubeVirt Virtual Machine Instances (VMIs) using Grafana and Prometheus. By the end of this guide, you will have a Grafana dashboard that displays metrics related to KubeVirt VMIs.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;A &lt;strong&gt;running multi-node Kubernetes cluster&lt;/strong&gt; with &lt;strong&gt;KubeVirt&lt;/strong&gt; installed&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Note:&lt;/strong&gt; Single-node clusters are &lt;strong&gt;not supported&lt;/strong&gt; due to component scheduling and storage limitations.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A &lt;strong&gt;functional storage provider&lt;/strong&gt; (e.g., &lt;strong&gt;Rook-Ceph&lt;/strong&gt; or any other CSI-compatible solution) must be installed and available&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ Required for deploying both &lt;strong&gt;Prometheus&lt;/strong&gt; and &lt;strong&gt;Grafana&lt;/strong&gt;, as they rely on &lt;strong&gt;PersistentVolumeClaims (PVCs)&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Prometheus&lt;/strong&gt; deployed in the cluster&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Grafana&lt;/strong&gt; installed and configured to connect to Prometheus&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;step-1-ensure-prometheus-is-collecting-kubevirt-metrics&#34;&gt;Step 1: Ensure Prometheus is Collecting KubeVirt Metrics&lt;/h2&gt;
&lt;p&gt;KubeVirt exposes various metrics that Prometheus can scrape. These metrics are documented here: &lt;a href=&#34;https://github.com/kubevirt/monitoring/blob/main/docs/metrics.md&#34;&gt;KubeVirt Metrics&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To check whether Prometheus is collecting KubeVirt metrics:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Open the Prometheus Dashboard&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Search for KubeVirt-related metrics, for example &lt;code&gt;kubevirt_vmi_memory_available_bytes&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If no metrics appear, ensure the KubeVirt servicemonitor has been added to Prometheus:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt; kubectl get servicemonitor -A &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;|&lt;/span&gt; grep kubevirt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Verify that KubeVirt was installed correctly and that &lt;code&gt;monitorNamespace&lt;/code&gt; and &lt;code&gt;monitorAccount&lt;/code&gt; are configured correctly. &lt;a href=&#34;how-to-install-kubeops-virtualisation-(kubevirt).md&#34;&gt;How to install KubeOps Virtualization (kubevirt)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reload Prometheus operator.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Reload KubeVirt operator.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;step-2-import-the-kubevirt-grafana-dashboard&#34;&gt;Step 2: Import the KubeVirt Grafana Dashboard&lt;/h2&gt;
&lt;p&gt;KubeVirt provides a ready-to-use Grafana dashboard JSON file: &lt;a href=&#34;https://github.com/kubevirt/monitoring/blob/main/dashboards/grafana/kubevirt-control-plane.json&#34;&gt;KubeVirt Grafana Dashboard&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To import it into Grafana:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Open the Grafana Dashboard.&lt;/li&gt;
&lt;li&gt;Navigate to &lt;code&gt;Dashboards &amp;gt; New &amp;gt; Import&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Paste the JSON content from the KubeVirt dashboard file.&lt;/li&gt;
&lt;li&gt;Select Prometheus as the data source.&lt;/li&gt;
&lt;li&gt;Click &lt;code&gt;Load&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;step-3-customize-the-dashboard-optional&#34;&gt;Step 3: Customize the Dashboard (Optional)&lt;/h2&gt;
&lt;p&gt;To add specific VMI-related metrics to the dashboard:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Click &lt;code&gt;Edit&lt;/code&gt; on a panel.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Use PromQL queries to fetch desired VMI metrics, e.g.,&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CPU Usage:&lt;/strong&gt; &lt;code&gt;rate(kubevirt_vmi_cpu_usage_seconds_total[5m])&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Memory Usage:&lt;/strong&gt; &lt;code&gt;kubevirt_vmi_memory_available_bytes&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Network Traffic:&lt;/strong&gt; &lt;code&gt;rate(kubevirt_vmi_network_receive_bytes_total[5m])&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Save the dashboard.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: You can view query output in the Prometheus dashboard.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;conclusion&#34;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;You have successfully set up Grafana to monitor KubeVirt VMIs using Prometheus. You can now track VMI performance and resource usage effectively.&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How to create L3 networking for VMs</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-create-l3-networking-for-vms/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-create-l3-networking-for-vms/</guid>
      <description>
        
        
        &lt;div class=&#34;alert note callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Note&lt;/strong&gt;
  
  This guide requires a Compliance enterprise license.
  
&lt;/div&gt;
&lt;p&gt;This guide explains how to configure L3 networking for KubeVirt virtual machines (VMs) using Multus. With this setup, VMs can communicate across nodes through dedicated secondary networks, which improves network segmentation and deployment flexibility in Kubernetes environments.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;Before you begin, ensure that the following requirements are met:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A running Kubernetes cluster&lt;/li&gt;
&lt;li&gt;&lt;code&gt;kubectl&lt;/code&gt; command-line tool configured to connect to your cluster&lt;/li&gt;
&lt;li&gt;Calico and Multus installed and configured&lt;/li&gt;
&lt;li&gt;KOSI is installed and authenticated successfully&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&#34;configuring-node-networking-using-network-manager-state-nmstate&#34;&gt;Configuring Node Networking using Network Manager State (NMState)&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Network Manager State (nmstate)&lt;/em&gt;&lt;/strong&gt; is a declarative network configuration tool for Linux. It provides an API and CLI to manage network settings in a structured, state-driven manner.&lt;/p&gt;
&lt;p&gt;In Kubernetes, nmstate is often used with &lt;strong&gt;&lt;em&gt;NodeNetworkConfigurationPolicy (NNCP)&lt;/em&gt;&lt;/strong&gt; to configure node networking dynamically, allowing for changes such as setting up VLANs, bridges, bonds, and other networking features.&lt;/p&gt;
&lt;h3 id=&#34;1-deploy-the-nmstate-operator&#34;&gt;1. Deploy the nmstate Operator&lt;/h3&gt;
&lt;p&gt;First, create the nmstate-values.yaml:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# nmstate-values.yaml&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nmstateValues&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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:#000&#34;&gt;nmstate&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Deploy the nmstate operator and its CRDs using this file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi install --hub kubeops kubeops/nmstate:2.0.1 -f nmstate-values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;2-configure-node-networking-with-nncp&#34;&gt;2. Configure Node Networking with NNCP&lt;/h3&gt;
&lt;p&gt;Create an nncp-values.yaml file to define network configurations dynamically, including bridges and routes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# nncp-values.yaml&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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;nmstate&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodes&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeName&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:#000&#34;&gt;cluster1master1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeIP&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.2.10.11&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeIP&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.10.1.1&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;# bridge IP for cluster1master1.&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeSubnet&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.10.1.0&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;# `/24` subnet for bridge&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeInterface&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:#000&#34;&gt;ens192&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;# use `ip a` or `ifconfig` to identify interface&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeName&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:#000&#34;&gt;cluster1master2&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeIP&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.2.10.12&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeIP&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.10.2.1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeSubnet&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.10.2.0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeInterface&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:#000&#34;&gt;ens192&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeName&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:#000&#34;&gt;cluster1worker1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeIP&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.2.10.14&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeIP&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.10.3.1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeSubnet&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.10.3.0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeInterface&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:#000&#34;&gt;ens192&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeName&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:#000&#34;&gt;cluster1worker2&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeIP&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.2.10.15&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeIP&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.10.4.1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeSubnet&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.10.4.0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeInterface&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:#000&#34;&gt;ens192&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;blockquote class=&#34;book-hint IMP&#34;&gt;
  &lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you&amp;rsquo;re adding a new node, assign it a unique &lt;code&gt;bridgeIP&lt;/code&gt; and &lt;code&gt;bridgeSubnet&lt;/code&gt;, that follow the existing addressing pattern.&lt;/p&gt;
&lt;p&gt;For example, if your last node uses:&lt;/p&gt;
&lt;p&gt;bridgeIP: 10.10.4.1&lt;/p&gt;
&lt;p&gt;bridgeSubnet: 10.10.4.0/24&lt;/p&gt;
&lt;p&gt;add the next node like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#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;nodeName&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:#000&#34;&gt;&amp;lt;new_node&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeIP&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:#000&#34;&gt;&amp;lt;node_ip&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeIP&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.10.5.1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridgeSubnet&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.10.5.0&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeInterface&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:#000&#34;&gt;ens192&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/blockquote&gt;

&lt;p&gt;Use this values file to deploy the node network configuration policies on all nodes:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kosi install --hub kubeops kubeops/nncp:2.0.1 -f nncp-values.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;3-allow-forwarded-traffic-on-the-bridge&#34;&gt;3. Allow Forwarded Traffic on the Bridge&lt;/h3&gt;
&lt;p&gt;Run the following commands on the relevant nodes to allow traffic through the secondary bridge:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -A FORWARD -i br-secondary -j ACCEPT
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;iptables -A FORWARD -o br-secondary -j ACCEPT
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;4-verify-bridge-configuration-and-node-connectivity&#34;&gt;4. Verify Bridge Configuration and Node Connectivity&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;h4 id=&#34;verify-the-bridge-on-each-node&#34;&gt;Verify the Bridge on Each Node&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To confirm that the bridge exists and has the expected IP address:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip a show br-secondary
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;h4 id=&#34;verify-attached-interfaces&#34;&gt;Verify Attached Interfaces&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;List the bridge interfaces and verify that the expected interfaces are attached:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip link show &lt;span style=&#34;color:#204a87&#34;&gt;type&lt;/span&gt; bridge
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;h4 id=&#34;verify-routes-and-connectivity&#34;&gt;Verify Routes and Connectivity&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Check if the expected routes are in place:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ip route show
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;ul&gt;
&lt;li&gt;
&lt;h4 id=&#34;test-connectivity-between-nodes&#34;&gt;Test Connectivity Between Nodes&lt;/h4&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Test connectivity to another node&amp;rsquo;s bridge IP:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;ping -c &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;4&lt;/span&gt; &amp;lt;another_node_bridgeIP&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;install-kubevirt&#34;&gt;Install KubeVirt&lt;/h2&gt;
&lt;p&gt;For installation instructions, please refer to the &lt;a href=&#34;../how-to-install-kubeops-virtualisation-kubevirt&#34;&gt;KubeVirt Installation Guide&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;networks-and-interfaces&#34;&gt;Networks and Interfaces&lt;/h2&gt;
&lt;h3 id=&#34;l3-networking-with-multus&#34;&gt;L3 Networking with Multus&lt;/h3&gt;
&lt;p&gt;To set up L3 networking with Multus, each worker node requires a separate &lt;strong&gt;NetworkAttachmentDefinition (NAD)&lt;/strong&gt; with a unique IP address and subnet matching the node&amp;rsquo;s network configuration. This allows isolated network environments for each pod, enabling multi-interface support on pods and communication between nodes in the cluster.&lt;/p&gt;
&lt;h3 id=&#34;plan-the-network&#34;&gt;Plan the Network&lt;/h3&gt;
&lt;p&gt;Before creating the NADs, define the IP ranges and subnets for each worker node to avoid conflicts and routing conflicts.&lt;/p&gt;
&lt;p&gt;Example IP range mapping for worker nodes:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Node&lt;/th&gt;
&lt;th&gt;Subnet&lt;/th&gt;
&lt;th&gt;Example IP for Pod&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;cluster1worker1&lt;/td&gt;
&lt;td&gt;10.10.3.0/24&lt;/td&gt;
&lt;td&gt;10.10.3.10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cluster1worker2&lt;/td&gt;
&lt;td&gt;10.10.4.0/24&lt;/td&gt;
&lt;td&gt;10.10.4.10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&#34;example-nad-configuration-for-worker-node-1&#34;&gt;Example NAD Configuration for Worker Node 1&lt;/h3&gt;
&lt;p&gt;This example shows how to configure a &lt;strong&gt;NetworkAttachmentDefinition&lt;/strong&gt; (NAD) for worker node 1 (&lt;code&gt;cluster1worker1&lt;/code&gt;), with a static IP range assigned to its pods:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;#&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;nad_cluster&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;worker&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;apiVersion:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;k&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;s.cni.cncf.io/v&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;kind:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;NetworkAttachmentDefinition&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;metadata:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;name:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;secondary-network-node&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;#&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;Assign&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;unique&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;names&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;to&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;each&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;node&amp;#39;s&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;NAD&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;annotations:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#a40000&#34;&gt;k&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;8&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;s.v&lt;/span&gt;&lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;1&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;.cni.cncf.io/nodeSelector:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;&amp;#39;&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;&amp;#34;kubernetes.io/hostname&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;cluster1worker1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#a40000&#34;&gt;spec:&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;  &lt;span style=&#34;color:#a40000&#34;&gt;config:&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;|&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;cniVersion&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;0.3.1&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;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;secondary-network&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&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;bridge&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;bridge&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;br-secondary&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;ipam&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;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;type&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;static&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;addresses&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;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;address&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;10.10.3.10/24&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;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;use&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;correct&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;worker&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;node&amp;#39;s&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;subnet&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;and&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;mention&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;the&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;appropriate&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;IP&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;for&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;pod&amp;#39;s&lt;/span&gt; &lt;span style=&#34;color:#a40000&#34;&gt;network&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;gateway&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;10.10.3.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;routes&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;font-weight:bold&#34;&gt;[&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;dst&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;10.10.4.0/24&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;            &lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;&amp;#34;gw&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;10.10.3.1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;          &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;        &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;      &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#000;font-weight:bold&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;apply-the-k8s-manifest-definition-files&#34;&gt;Apply the K8s Manifest Definition files&lt;/h3&gt;
&lt;p&gt;To deploy the &lt;strong&gt;NetworkAttachmentDefinition (NAD)&lt;/strong&gt; objects for your nodes, apply the following Kubernetes manifest files:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl apply -f nad_cluster1worker1.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl apply -f nad_cluster1worker2.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;verify-the-created-network-attachment-definition-objects&#34;&gt;Verify the created Network Attachment Definition Objects&lt;/h3&gt;
&lt;p&gt;To ensure that the NetworkAttachmentDefinition (NAD) objects have been successfully created, run the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl get net-attach-def -A
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;deploy-virtual-machines-vms-and-attach-the-secondary-networks&#34;&gt;Deploy Virtual Machines (VMs) and Attach the Secondary Networks&lt;/h2&gt;
&lt;p&gt;Once the NADs are created, you can deploy Virtual Machines (VMs) and attach them to the secondary networks. The following is an example Kubernetes manifest for deploying a VM with a secondary network interface attached.&lt;/p&gt;
&lt;h3 id=&#34;network-selection-from-nads&#34;&gt;Network Selection from NADs&lt;/h3&gt;
&lt;p&gt;Each VM must be connected to the correct network defined by the NetworkAttachmentDefinition (NAD) for its corresponding node. For example, if you have created a NAD for &lt;strong&gt;cluster1worker1&lt;/strong&gt; named &lt;code&gt;secondary-network-node1&lt;/code&gt;, ensure that the VM manifest refers to this network in the &lt;code&gt;annotations&lt;/code&gt; section and correctly links to the &lt;code&gt;networkName&lt;/code&gt; under the &lt;code&gt;multus&lt;/code&gt; configuration.&lt;/p&gt;
&lt;p&gt;Ensure that the network name in the manifest matches the NAD definition.&lt;/p&gt;
&lt;h3 id=&#34;create-image-pull-secret&#34;&gt;Create Image Pull Secret&lt;/h3&gt;
&lt;p&gt;Please create a secret for pulling image from &lt;code&gt;registry.kubeops.net&lt;/code&gt;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl -n &lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;l3-networking&amp;#34;&lt;/span&gt; create secret docker-registry kubeops-vm &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --docker-server&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;registry.kubeops.net &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --docker-username&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;kubeops-user&amp;gt; &lt;span style=&#34;color:#4e9a06&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#4e9a06&#34;&gt;&lt;/span&gt;  --docker-password&lt;span style=&#34;color:#ce5c00;font-weight:bold&#34;&gt;=&lt;/span&gt;&amp;lt;harbor_token&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;example-vm-manifest-for-secondary-network&#34;&gt;Example VM Manifest for Secondary Network&lt;/h3&gt;
&lt;p&gt;The following is an example Kubernetes manifest for deploying a VM with a secondary network interface attached to a specific NAD:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;# vm1.yaml&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;kubevirt.io/v1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;VirtualMachine&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#4e9a06&#34;&gt;&amp;#34;ubuntu-vm&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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;l3-networking&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;k8s.v1.cni.cncf.io/networks&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:#000&#34;&gt;secondary-network-node1&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;# Ensure this matches the NAD network name&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;nodeSelector&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubernetes.io/hostname&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:#000&#34;&gt;cluster1worker1&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;# edit for scheduling node on other node&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;runStrategy&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:#000&#34;&gt;Always&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;kubevirt.io/size&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:#000&#34;&gt;small&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;domain&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;cores&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;1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;devices&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disks&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;containervolume&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bus&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:#000&#34;&gt;virtio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitvolume&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;disk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bus&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:#000&#34;&gt;virtio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;interfaces&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;masquerade&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;secondary-network&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;bridge&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;2048M&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;networks&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;default&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;pod&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;secondary-network&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;multus&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;networkName&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:#000&#34;&gt;secondary-network-node1&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;# Ensure this matches the NAD network name&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;volumes&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;containervolume&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;containerDisk&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;image&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:#000&#34;&gt;registry.kubeops.net/kubeops-vm/kubeops/ubuntu-cloudimg-focal:2.0.1&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;imagePullSecret&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:#000&#34;&gt;kubeops-vm&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;imagePullPolicy&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:#000&#34;&gt;Always&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;&lt;span style=&#34;color:#000&#34;&gt;cloudinitvolume&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;cloudInitNoCloud&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;userData&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:#000;font-weight:bold&#34;&gt;|-&lt;/span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;              #cloud-config
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;              chpasswd:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;                list: |
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;                  ubuntu:ubuntu
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;                  root:toor
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;                expire: False
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;              ssh_pwauth: True
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#8f5902;font-style:italic&#34;&gt;              disable_root: false&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;              
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;apply-the-vm-manifest&#34;&gt;Apply the VM Manifest&lt;/h3&gt;
&lt;p&gt;Once the &lt;code&gt;NetworkAttachmentDefinition&lt;/code&gt; (NAD) objects have been created, you can deploy the Virtual Machines (VMs) and apply the manifests. The following commands apply the VM manifests to your Kubernetes cluster.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl apply -f vm1.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl apply -f vm2.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;verify-the-networking&#34;&gt;Verify the Networking&lt;/h2&gt;
&lt;p&gt;After the VMs start successfully, verify that the secondary network interfaces and routes are configured correctly.&lt;/p&gt;
&lt;h3 id=&#34;on-each-vm&#34;&gt;On each VM&lt;/h3&gt;
&lt;h4 id=&#34;1-check-the-ip-address&#34;&gt;1. Check the IP Address&lt;/h4&gt;
&lt;p&gt;First, check the IP address assigned to the pod (VM). This is crucial to ensure that the secondary network interface has been correctly assigned an IP.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl &lt;span style=&#34;color:#204a87&#34;&gt;exec&lt;/span&gt; -n &amp;lt;namespace&amp;gt; &amp;lt;pod-1&amp;gt; -- ip a
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;2-assign-ip-address-if-not-automatically-assigned-optional&#34;&gt;2. Assign IP Address if Not Automatically Assigned (Optional)&lt;/h4&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl &lt;span style=&#34;color:#204a87&#34;&gt;exec&lt;/span&gt; -n &amp;lt;namespace&amp;gt; &amp;lt;pod-1&amp;gt; -- sudo dhclient enp2s0
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h4 id=&#34;3-check-the-routes&#34;&gt;3. Check the Routes&lt;/h4&gt;
&lt;p&gt;Verify the routing configuration on the VM to ensure that traffic can flow through the secondary network. Use the following command:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl &lt;span style=&#34;color:#204a87&#34;&gt;exec&lt;/span&gt; -n &amp;lt;namespace&amp;gt; &amp;lt;pod-1&amp;gt; -- ip r
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This will display the routing table for the VM and confirm if the secondary network is correctly set up.&lt;/p&gt;
&lt;h3 id=&#34;verify-vm-communication&#34;&gt;Verify VM Communication&lt;/h3&gt;
&lt;p&gt;After ensuring the network settings are correct, test the communication between VMs by pinging the secondary network IP of another pod.&lt;/p&gt;
&lt;h4 id=&#34;test-connectivity-between-vms&#34;&gt;Test Connectivity Between VMs&lt;/h4&gt;
&lt;p&gt;Use the ping command to check if the VMs can communicate over the secondary network. Replace &lt;code&gt;&amp;lt;pod2_secondary_network_IP&amp;gt;&lt;/code&gt; with the actual IP address of the secondary network interface on the second VM.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubectl &lt;span style=&#34;color:#204a87&#34;&gt;exec&lt;/span&gt; -n &amp;lt;namespace&amp;gt; &amp;lt;pod-1&amp;gt; -- ping -c &lt;span style=&#34;color:#0000cf;font-weight:bold&#34;&gt;2&lt;/span&gt; &amp;lt;pod2_secondary_network_IP&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the ping is successful, it confirms that the VMs are able to communicate over the secondary network.&lt;/p&gt;
&lt;blockquote class=&#34;book-hint Additional&#34;&gt;
  &lt;p&gt;&lt;strong&gt;Additional Notes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Ensure that you use the correct namespace and pod name while executing the commands.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make sure the secondary network interface is correctly configured on each VM, and the IP address and routes are properly assigned.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If communication fails, check for issues in the NetworkAttachmentDefinition (NAD) configuration or verify that the correct CNI plugins are running.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;/blockquote&gt;


      </description>
    </item>
    
    <item>
      <title>Kubeopsvm: How to back up VMs and vm snapshots with Velero</title>
      <link>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-backup-with-velero/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsvm/how-to-guides/how-to-backup-with-velero/</guid>
      <description>
        
        
        &lt;h2 id=&#34;overview&#34;&gt;Overview&lt;/h2&gt;
&lt;p&gt;This guide describes how to configure Velero to back up and restore KubeVirt virtual machines in a Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;Velero stores backup data in an S3-compatible object storage backend. In this example, MinIO is used as the backup storage target.&lt;/p&gt;
&lt;h2 id=&#34;prerequisites&#34;&gt;Prerequisites&lt;/h2&gt;
&lt;div class=&#34;alert note callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;Note&lt;/strong&gt;
  
  This feature requires a Compliance enterprise license.
  
&lt;/div&gt;
&lt;p&gt;Before you begin, ensure that the following prerequisites are met:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A running Kubernetes cluster is available.&lt;/li&gt;
&lt;li&gt;Rook-Ceph is configured as the storage provider.&lt;/li&gt;
&lt;li&gt;An S3-compatible object storage service is available.( in this case MinIO)&lt;/li&gt;
&lt;li&gt;A KubeVirt virtual machine is running in the cluster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In following example MinIO is used.&lt;/p&gt;
&lt;h2 id=&#34;step-1---configure-velero&#34;&gt;Step 1 - Configure Velero&lt;/h2&gt;
&lt;p&gt;Define the Velero configuration in your values file:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;veleroValues&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;namespace&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;velero&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;accessKeyId&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;minio&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;secretAccessKey&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;minio123&amp;#34;&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;backupLocationConfig&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&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#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;s3Url&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;http://10.2.10.110:30090&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;# nodeport of minio&lt;/span&gt;&lt;span style=&#34;color:#f8f8f8;text-decoration:underline&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Enable Velero in the kubeopsctl.yaml file :&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; 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;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#204a87;font-weight:bold&#34;&gt;velero&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&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Apply the configuration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;kubeopsctl apply -f kubeopsctl.yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id=&#34;step-2---verify-s3-bucket-access&#34;&gt;Step 2 - Verify S3 Bucket Access&lt;/h2&gt;
&lt;p&gt;The bucket for Velero ( default Velero ) in the s3 storage should be accessible for Velero, so ensure that the bucket exists and that Velero has permission to write to it.&lt;/p&gt;
&lt;p&gt;In this example, the bucket is configured so that Velero has write access:&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;../images/veleroscs1.png&#34; alt=&#34; Velero Bucket &#34;&gt;&lt;/p&gt;
&lt;h2 id=&#34;step-3---create-a-backup&#34;&gt;Step 3 - Create a Backup&lt;/h2&gt;
&lt;p&gt;To create a backup of the namespace containing the KubeVirt virtual machine, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero backup get
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero backup create kubeops-vm-backup --include-namespaces &amp;lt;Namespace of kubevirt vm&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The name of the backup &lt;strong&gt;must be unique&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;step-4---verify-the-backup&#34;&gt;Step 4 - Verify the Backup&lt;/h2&gt;
&lt;p&gt;To review the backup status and details, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero backup get
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero backup describe kubeops-vm-backup
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero backup logs kubeops-vm-backup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Confirm that the backup completed successfully before proceeding.&lt;/p&gt;
&lt;h2 id=&#34;step-5---restore-the-backup&#34;&gt;Step 5 - Restore the Backup&lt;/h2&gt;
&lt;p&gt;To restore the backup, run:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero restore get
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero restore create kubeops-vm-restore --from-backup kubeops-vm-backup
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The restore name &lt;strong&gt;must be unique&lt;/strong&gt;.&lt;br&gt;
After the restore is complete, verify that the virtual machine resources have been recreated successfully in the target namespace.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;background-color:#f8f8f8;-moz-tab-size:4;-o-tab-size:4;tab-size:4;&#34;&gt;&lt;code class=&#34;language-shell&#34; data-lang=&#34;shell&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero restore get
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero restore describe kubeops-vm-restore
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;velero restore logs kubeops-vm-restore
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.9</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.9/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.9/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-179---release-date-02032026&#34;&gt;KubeOps 1.7.9 - Release Date 02.03.2026&lt;/h1&gt;
&lt;h2 id=&#34;changelog-harbor-179&#34;&gt;changelog harbor 1.7.9&lt;/h2&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Implemented fixes for the following CVEs:
&lt;ul&gt;
&lt;li&gt;CVE-2025-27151&lt;/li&gt;
&lt;li&gt;CVE-2025-49844&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.8</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.8/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.8/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-178---release-date-04022026&#34;&gt;KubeOps 1.7.8 - Release Date 04.02.2026&lt;/h1&gt;
&lt;h2 id=&#34;changelog-ingress-nginx-178&#34;&gt;changelog ingress-nginx 1.7.8&lt;/h2&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Implemented fixes for the following CVEs:
&lt;ul&gt;
&lt;li&gt;CVE-2025-15467&lt;/li&gt;
&lt;li&gt;CVE-2025-49794&lt;/li&gt;
&lt;li&gt;CVE-2025-49796&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.7</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.7/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.7/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-177---release-date-28012026&#34;&gt;KubeOps 1.7.7 - Release Date 28.01.2026&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-177&#34;&gt;changelog Lima 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added support for Kubernetes 1.34.1&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Kubernetes 1.34.1 can be used with earlier versions of Kubeopsctl 1.7.x.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id=&#34;changelog-rook-ceph-177&#34;&gt;changelog rook-ceph 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-1&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-177&#34;&gt;changelog harbor 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-2&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kube-prometheus-stack-177&#34;&gt;changelog kube-prometheus-stack 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-3&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-177&#34;&gt;changelog kubeops-dashboard 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-4&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-logstash-177&#34;&gt;changelog logstash 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-5&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-177&#34;&gt;changelog filebeat 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-6&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-177&#34;&gt;changelog opensearch 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-7&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-177&#34;&gt;changelog opensearch-dashboards 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-8&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-177&#34;&gt;changelog keycloak 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-9&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-177&#34;&gt;changelog opa-gatekeeper 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-10&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-velero-177&#34;&gt;changelog velero 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-11&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-177&#34;&gt;changelog cert-manager 1.7.7&lt;/h2&gt;
&lt;h3 id=&#34;new-12&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated Image Pull Policy to ensure that it will stay on &lt;strong&gt;Always&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.6</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.6/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.6/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-176---release-date-30122025&#34;&gt;KubeOps 1.7.6 - Release Date 30.12.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-176&#34;&gt;changelog Lima 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;changed&#34;&gt;changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;increased Port range of hosts for rook-ceph to 6800-7568.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-176&#34;&gt;changelog rook-ceph 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-176&#34;&gt;changelog harbor 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-1&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fixed&#34;&gt;Fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where harbor upgrade was not possible because of postgres version mismatch&lt;/li&gt;
&lt;li&gt;fixed cve CVE-2024-56171, CVE-2025-49794, CVE-2025-49796, CVE-2024-3596, CVE-2025-5914, CVE-2024-46981 and CVE-2025-6965 - updated to appversion 2.14.0 and chartversion 1.18.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kube-prometheus-stack-176&#34;&gt;changelog kube-prometheus-stack 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-2&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-176&#34;&gt;changelog kubeops-dashboard 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-3&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-logstash-176&#34;&gt;changelog logstash 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-4&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;Fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;changed default loglevel to &amp;ldquo;INFO&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-176&#34;&gt;changelog filebeat 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-5&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;Fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;changed default loglevel to &amp;ldquo;INFO&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-176&#34;&gt;changelog opensearch 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-6&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fixed-3&#34;&gt;Fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;changed default loglevel to &amp;ldquo;INFO&amp;rdquo;&lt;/li&gt;
&lt;li&gt;updated package to version 3.2.1 and appversion 3.2.0 for compatibility&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-176&#34;&gt;changelog opensearch-dashboards 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-7&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fixed-4&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed CVE CVE-2025-7783, and updated package to version 3.2.2 with appVersion 3.2.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-176&#34;&gt;changelog keycloak 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-8&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-176&#34;&gt;changelog opa-gatekeeper 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-9&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-velero-176&#34;&gt;changelog velero 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-10&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-176&#34;&gt;changelog cert-manager 1.7.6&lt;/h2&gt;
&lt;h3 id=&#34;new-11&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Included Network Policies&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.4</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.4/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.4/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-174---release-date-30092025&#34;&gt;KubeOps 1.7.4 - Release Date 30.09.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kube-prometheus-stack-174&#34;&gt;changelog kube-prometheus-stack 1.7.4&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed cve CVE-2024-45337, updated helm chart to version 77.0.2 ( appVersion v0.85.0)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-174&#34;&gt;changelog kubeops-dashboard 1.7.4&lt;/h2&gt;
&lt;h3 id=&#34;added&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved issue with service account&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-174&#34;&gt;changelog cert-manager 1.7.4&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed cve CVE-2024-45337, updated helm chart to version v1.18.2 ( appVersion v1.18.2)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-velero-174&#34;&gt;changelog velero 1.7.4&lt;/h2&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed cve CVE-2024-24790, updated helm chart to version 10.1.0 ( appVersion 1.16.2)&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.3</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.3/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.3/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-173---release-date-23092025&#34;&gt;KubeOps 1.7.3 - Release Date 23.09.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-173&#34;&gt;changelog kubeopsctl 1.7.3&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where plattform upgrade was not possible&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.2</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.2/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-172---release-date-05092025&#34;&gt;KubeOps 1.7.2 - Release Date 05.09.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-172&#34;&gt;changelog kubeopsctl 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Prevented failure by adding fallback creation logic for missing &lt;code&gt;namespace&lt;/code&gt; and &lt;code&gt;secret&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;fixed issue where auditlog path was not templatable&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-172&#34;&gt;changelog lima 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;new&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added logic for updating from RHEL 8 to RHEL 9
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- fixed issue where auditlog path was not templatable 
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-rook-ceph-172&#34;&gt;changelog rook-ceph 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- fixed issue where the lableing was only after installing platform packages
- added logic for cerating crushmap for rook-ceph 
- added topologySpreadConstraints for spreading across the kubeops zones
- Removed external ingress and deployed using helm chart
- Updated `imagePullPolicy` to `Always` to comply with BSI security requirements.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-harbor-172&#34;&gt;changelog harbor 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-3&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
- Removed external ingress and deployed using helm chart
- Updated `imagePullPolicy` to `Always` to comply with BSI security requirements.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-opensearch-os-172&#34;&gt;changelog opensearch-os 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-4&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-172&#34;&gt;changelog opensearch-dashboards 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-5&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
- Removed external ingress and deployed using helm chart
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-172&#34;&gt;changelog opa-gatekeeper 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-6&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
- Updated `imagePullPolicy` to `Always` to comply with BSI security requirements.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-cert-manager-172&#34;&gt;changelog cert-manager 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-7&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
- Updated `imagePullPolicy` to `Always` to comply with BSI security requirements.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-ingress-nginx-172&#34;&gt;changelog ingress-nginx 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-8&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
- Updated `imagePullPolicy` to `Always` to comply with BSI security requirements.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-keycloak-172&#34;&gt;changelog keycloak 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-9&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
- Removed external ingress and deployed using helm chart
- Updated `imagePullPolicy` to `Always` to comply with BSI security requirements.
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-velero-172&#34;&gt;changelog velero 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-10&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
- Updated `imagePullPolicy` to `Always` to comply with BSI security requirements.
- Addressed the following CVEs:
  - CVE-2024-24790
  - CVE-2024-32002
  - CVE-2024-45491
  - CVE-2024-45492
  - CVE-2024-37371
  - CVE-2023-45853
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-172&#34;&gt;changelog kubeops-dashboard 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-11&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed external ingress and deployed using helm chart&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-172&#34;&gt;changelog prometheus 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixed-12&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed external ingress and deployed using helm chart&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-172&#34;&gt;changelog filebeat 1.7.2&lt;/h2&gt;
&lt;h3 id=&#34;fixes&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Addressed the following CVEs:
&lt;ul&gt;
&lt;li&gt;CVE-2024-41110&lt;/li&gt;
&lt;li&gt;CVE-2024-45337&lt;/li&gt;
&lt;li&gt;CVE-2023-24538&lt;/li&gt;
&lt;li&gt;CVE-2023-24540&lt;/li&gt;
&lt;li&gt;CVE-2024-24790&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-calico-multus&#34;&gt;changelog calico-multus&lt;/h2&gt;
&lt;h3 id=&#34;fixes-1&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.1</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.1/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-171---release-date-29072025&#34;&gt;KubeOps 1.7.1 - Release Date 29.07.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-171&#34;&gt;changelog lima 1.7.1&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;new&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added support of RHEL 9.6
- added containerd.io-1.7.27
- added container-selinux-2.237.0
- opened firewall ports for 30000-32767 tcp on all nodes
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-helm-171&#34;&gt;changelog helm 1.7.1&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- updated helm to 3.17.4 for Rhel 9.6 support
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-rook-ceph-171&#34;&gt;changelog rook-ceph 1.7.1&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added spreading the crushmap across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-171&#34;&gt;changelog kubeopsctl 1.7.1&lt;/h2&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added suport of RHEL 9.6&lt;/code&gt;&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.0</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-170---release-date-30062025&#34;&gt;KubeOps 1.7.0 - Release Date 30.06.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-170&#34;&gt;changelog lima 1.7.0&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;new&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added logic for updating from RHEL 8 to RHEL 9
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- fixed issue where auditlog path was not templatable
- fixed issue where nodes could not be joined after update registry was performed 
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-rook-ceph-170&#34;&gt;changelog rook-ceph 1.7.0&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-harbor-170&#34;&gt;changelog harbor 1.7.0&lt;/h2&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-opensearch-os-170&#34;&gt;changelog opensearch-os 1.7.0&lt;/h2&gt;
&lt;h3 id=&#34;fixed-3&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-170&#34;&gt;changelog opensearch-dashboards 1.7.0&lt;/h2&gt;
&lt;h3 id=&#34;fixed-4&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-170&#34;&gt;changelog kubeopsctl 1.7.0&lt;/h2&gt;
&lt;h3 id=&#34;fixed-5&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- fixed issue where auditlog path was not templatable
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-velero-170&#34;&gt;changelog Velero 1.7.0&lt;/h2&gt;
&lt;h3 id=&#34;fixes&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Addressed the following CVEs:
&lt;ul&gt;
&lt;li&gt;CVE-2024-24790&lt;/li&gt;
&lt;li&gt;CVE-2024-32002&lt;/li&gt;
&lt;li&gt;CVE-2024-45491&lt;/li&gt;
&lt;li&gt;CVE-2024-45492&lt;/li&gt;
&lt;li&gt;CVE-2024-37371&lt;/li&gt;
&lt;li&gt;CVE-2023-45853&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.0_Beta0</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0_beta0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0_beta0/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-170_beta0---release-date-30042025&#34;&gt;KubeOps 1.7.0_Beta0 - Release Date 30.04.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-170_beta0&#34;&gt;Changelog kubeopsctl 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added Licence verification&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved issue with &lt;code&gt;kubeopsctl status&lt;/code&gt; for keycloak&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-170_beta0&#34;&gt;Changelog lima 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-1&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a bug where ssh key support for &lt;code&gt;ed25519&lt;/code&gt; was not possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-170_beta0&#34;&gt;Changelog opensearch 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-2&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a bug where the secret &lt;code&gt;internal-users-config-secret&lt;/code&gt; was not created.&lt;/li&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-nginx-ingress-170_beta0&#34;&gt;Changelog nginx-ingress 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;updates&#34;&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Upgraded Helm chart to version 4.11.5 to address CVE-2025-1974.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bugfix-3&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-170_beta0&#34;&gt;changelog prometheus 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-4&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated execution permissions for the executable in the Grafana OpenSearch plugin.&lt;/li&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-170_beta0&#34;&gt;changelog kubeops-dashboard 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-5&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed CVE-2024-45337 issue&lt;/li&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-170_beta0&#34;&gt;changelog rook-ceph 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-6&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added missing ImagePullSecret in Rook Operator and Ceph Cluster.&lt;/li&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;li&gt;removed not templatable values&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-170_beta0&#34;&gt;changelog harbor 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-7&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added missing ImagePullSecret in Rook Operator and Ceph Cluster.&lt;/li&gt;
&lt;li&gt;Resolved the PostgreSQL issue encountered during the Harbor upgrade.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-setup-170_beta0&#34;&gt;changelog setup 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;updates-1&#34;&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added rhel9 support for kubedependencies, containerd, containerde-dependencies, nftablese&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-170_beta0-1&#34;&gt;changelog lima 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;new-1&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added Licence verification&lt;/li&gt;
&lt;li&gt;added new version of calicomultus&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;updates-2&#34;&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added rhel9 support for kubedependencies, containerd, containerde-dependencies, nftablese&lt;/li&gt;
&lt;li&gt;Lima will now create the file &lt;code&gt;/etc/systemd/system/containerd.service.d/override.conf&lt;/code&gt; in order to overwriten &lt;code&gt;LimitNOFILE=Infinity&lt;/code&gt; with &lt;code&gt;LimitNOFILE=1048576&lt;/code&gt; for ceph support in Red Hat Enterprise 9&lt;/li&gt;
&lt;li&gt;Lima will now add &lt;code&gt;SystemdCgroup = true&lt;/code&gt; below &lt;code&gt;[plugins.&amp;quot;io.containerd.grpc.v1.cri&amp;quot;.containerd.runtimes.runc.options]&lt;/code&gt; in file &lt;code&gt;/etc/containerd/config.toml&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resolved the login issue for non-root users when creating a Lima container&lt;/li&gt;
&lt;li&gt;fixed issue with reading clusterstorage.yaml&lt;/li&gt;
&lt;li&gt;fixed issue with kubernetes upgrade to 1.32 versions&lt;/li&gt;
&lt;li&gt;fixed issue with syntax error in lima update -r&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-170_beta0&#34;&gt;Changelog cert-manager 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-8&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-170_beta0&#34;&gt;Changelog filebeat 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-9&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-170_beta0&#34;&gt;Changelog keycloak 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-10&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;li&gt;fixed cves, updated version&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-logstash-170_beta0&#34;&gt;Changelog logstash 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-11&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-170_beta0&#34;&gt;Changelog opa-gatekeeper 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-12&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-170_beta0&#34;&gt;Changelog opensearch-dashboards 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-13&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-velero-170_beta0&#34;&gt;Changelog velero 1.7.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-14&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubevirt-100_beta0&#34;&gt;Changelog kubevirt 1.0.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;new-2&#34;&gt;new&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added package&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.0_Alpha2</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0_alpha2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0_alpha2/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-170_alpha2---release-date-11042025&#34;&gt;KubeOps 1.7.0_Alpha2 - Release Date 11.04.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-170_alpha2&#34;&gt;Changelog kubeopsctl 1.7.0_Alpha2&lt;/h2&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved issue with &lt;code&gt;kubeopsctl status&lt;/code&gt; for keycloak&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-170_alpha2&#34;&gt;Changelog lima 1.7.0_Alpha2&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-1&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a bug where ssh key support for &lt;code&gt;ed25519&lt;/code&gt; was not possible.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-170_alpha2&#34;&gt;Changelog opensearch 1.7.0_Alpha2&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-2&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a bug where the secret &lt;code&gt;internal-users-config-secret&lt;/code&gt; was not created.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.0_Alpha1</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0_alpha1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0_alpha1/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-170_alpha1---release-date-08042025&#34;&gt;KubeOps 1.7.0_Alpha1 - Release Date 08.04.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-nginx-ingress-170_alpha1&#34;&gt;Changelog nginx-ingress 1.7.0_Alpha1&lt;/h2&gt;
&lt;h3 id=&#34;updates&#34;&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Upgraded Helm chart to version 4.11.5 to address CVE-2025-1974.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-170_alpha1&#34;&gt;changelog prometheus 1.7.0_Alpha1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated execution permissions for the executable in the Grafana OpenSearch plugin.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-170_alpha1&#34;&gt;changelog kubeops-dashboard 1.7.0_Alpha1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-1&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed CVE-2024-45337 issue&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-170_alpha1&#34;&gt;changelog rook-ceph 1.7.0_Alpha1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-2&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added missing ImagePullSecret in Rook Operator and Ceph Cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-170_alpha1&#34;&gt;changelog harbor 1.7.0_Alpha1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-3&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added missing ImagePullSecret in Rook Operator and Ceph Cluster.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-setup-170_alpha1&#34;&gt;changelog setup 1.7.0_Alpha1&lt;/h2&gt;
&lt;h3 id=&#34;updates-1&#34;&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added rhel9 support for kubedependencies, containerd, containerde-dependencies, nftablese&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-170_alpha1&#34;&gt;changelog lima 1.7.0_Alpha1&lt;/h2&gt;
&lt;h3 id=&#34;updates-2&#34;&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added rhel9 support for kubedependencies, containerd, containerde-dependencies, nftablese&lt;/li&gt;
&lt;li&gt;Lima will now create the file &lt;code&gt;/etc/systemd/system/containerd.service.d/override.conf&lt;/code&gt; in order to overwriten &lt;code&gt;LimitNOFILE=Infinity&lt;/code&gt; with &lt;code&gt;LimitNOFILE=1048576&lt;/code&gt; for ceph support in Red Hat Enterprise 9&lt;/li&gt;
&lt;li&gt;Lima will now add &lt;code&gt;SystemdCgroup = true&lt;/code&gt; below &lt;code&gt;[plugins.&amp;quot;io.containerd.grpc.v1.cri&amp;quot;.containerd.runtimes.runc.options]&lt;/code&gt; in file &lt;code&gt;/etc/containerd/config.toml&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.7.0_Alpha0</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0_alpha0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.7.0_alpha0/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-170_alpha0---release-date-01042025&#34;&gt;KubeOps 1.7.0_Alpha0 - Release Date 01.04.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-170_alpha0&#34;&gt;Changelog kubeopsctl 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added Licence verification&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-170_alpha0&#34;&gt;Changelog lima 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;new-1&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added Licence verification&lt;/li&gt;
&lt;li&gt;added new version of calicomultus&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved the login issue for non-root users when creating a Lima container&lt;/li&gt;
&lt;li&gt;fixed issue with reading clusterstorage.yaml&lt;/li&gt;
&lt;li&gt;fixed issue with kubernetes upgrade to 1.32 versions&lt;/li&gt;
&lt;li&gt;fixed issue with syntax error in lima update -r&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-170_alpha0&#34;&gt;Changelog cert-manager 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-1&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-170_alpha0&#34;&gt;Changelog filebeat 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-2&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-nginx-ingress-170_alpha0&#34;&gt;Changelog nginx-ingress 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-3&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-170_alpha0&#34;&gt;Changelog keycloak 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-4&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;li&gt;fixed cves, updated version&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-170_alpha0&#34;&gt;changelog kubeops-dashboard 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-logstash-170_alpha0&#34;&gt;Changelog logstash 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-5&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-170_alpha0&#34;&gt;Changelog opa-gatekeeper 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-6&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-170_alpha0&#34;&gt;Changelog opensearch 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-7&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-170_alpha0&#34;&gt;Changelog opensearch-dashboards 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-8&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-170_alpha0&#34;&gt;Changelog prometheus 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-9&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-velero-170_alpha0&#34;&gt;Changelog velero 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-10&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-170_alpha0&#34;&gt;Changelog rook-ceph 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-11&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved imagePullSecrets warning in Kubernetes events&lt;/li&gt;
&lt;li&gt;added ressource limits&lt;/li&gt;
&lt;li&gt;removed not templatable values&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubevirt-170_alpha0&#34;&gt;Changelog kubevirt 1.7.0_Alpha0&lt;/h2&gt;
&lt;h3 id=&#34;new-2&#34;&gt;new&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added package&lt;/code&gt;&lt;/pre&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.11</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.11/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.11/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-1611---release-date-30092025&#34;&gt;KubeOps 1.6.11 - Release Date 30.09.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-1611&#34;&gt;changelog kubeops-dashboard 1.6.11&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved issue with service account&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.10</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.10/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.10/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-1610---release-date-05092025&#34;&gt;KubeOps 1.6.10 - Release Date 05.09.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-1610&#34;&gt;changelog kubeopsctl 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Prevented failure by adding fallback creation logic for missing &lt;code&gt;namespace&lt;/code&gt; and &lt;code&gt;secret&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-1610&#34;&gt;changelog rook-ceph 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed external ingress and deployed using helm chart&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-1610&#34;&gt;changelog opensearch-dashboards 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed external ingress and deployed using helm chart&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-1610&#34;&gt;changelog kubeops-dashboard 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixed-3&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed external ingress and deployed using helm chart&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-1610&#34;&gt;changelog keycloak 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixed-4&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed external ingress and deployed using helm chart&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-1610&#34;&gt;changelog harbor 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixed-5&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed external ingress and deployed using helm chart&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-1610&#34;&gt;changelog prometheus 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixed-6&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed external ingress and deployed using helm chart&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-1610&#34;&gt;changelog filebeat 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixes&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Addressed the following CVEs:
&lt;ul&gt;
&lt;li&gt;CVE-2024-41110&lt;/li&gt;
&lt;li&gt;CVE-2024-45337&lt;/li&gt;
&lt;li&gt;CVE-2023-24538&lt;/li&gt;
&lt;li&gt;CVE-2023-24540&lt;/li&gt;
&lt;li&gt;CVE-2024-24790&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-velero-1610&#34;&gt;changelog velero 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixes-1&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-1610&#34;&gt;changelog cert-manager 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixes-2&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-1610&#34;&gt;changelog OPA-Gatekeeper 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixes-3&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-nginx-ingress-1610&#34;&gt;changelog nginx-ingress 1.6.10&lt;/h2&gt;
&lt;h3 id=&#34;fixes-4&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-calico-multus&#34;&gt;changelog calico-multus&lt;/h2&gt;
&lt;h3 id=&#34;fixes-5&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Updated &lt;code&gt;imagePullPolicy&lt;/code&gt; to &lt;code&gt;Always&lt;/code&gt; to comply with BSI security requirements.&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.9</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.9/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.9/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-169---release-date-30062025&#34;&gt;KubeOps 1.6.9 - Release Date 30.06.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-169&#34;&gt;changelog lima 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;new&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added logic for updating from RHEL 8 to RHEL 9
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- fixed issue where auditlog path was not templatable 
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-rook-ceph-169&#34;&gt;changelog rook-ceph 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- fixed issue where the lableing was only after installing platform packages
- added logic for cerating crushmap for rook-ceph 
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-rook-ceph-169-1&#34;&gt;changelog rook-ceph 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-harbor-169&#34;&gt;changelog harbor 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-3&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-opensearch-os-169&#34;&gt;changelog opensearch-os 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-4&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-169&#34;&gt;changelog opensearch-dashboards 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-5&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-169&#34;&gt;changelog opa-gatekeeper 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-6&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-cert-manager-169&#34;&gt;changelog cert-manager 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-7&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-ingress-nginx-169&#34;&gt;changelog ingress-nginx 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-8&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-keycloak-169&#34;&gt;changelog keycloak 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-9&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-velero-169&#34;&gt;changelog velero 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-10&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- added topologySpreadConstraints for spreading across the kubeops zones
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-169&#34;&gt;changelog kubeopsctl 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixed-11&#34;&gt;fixed&lt;/h3&gt;
&lt;pre&gt;&lt;code&gt;- fixed issue where auditlog path was not templatable
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&#34;changelog-velero-169-1&#34;&gt;changelog Velero 1.6.9&lt;/h2&gt;
&lt;h3 id=&#34;fixes&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Addressed the following CVEs:
&lt;ul&gt;
&lt;li&gt;CVE-2024-24790&lt;/li&gt;
&lt;li&gt;CVE-2024-32002&lt;/li&gt;
&lt;li&gt;CVE-2024-45491&lt;/li&gt;
&lt;li&gt;CVE-2024-45492&lt;/li&gt;
&lt;li&gt;CVE-2024-37371&lt;/li&gt;
&lt;li&gt;CVE-2023-45853&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.8</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.8/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.8/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-168---release-date-30042025&#34;&gt;KubeOps 1.6.8 - Release Date 30.04.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-168&#34;&gt;changelog lima 1.6.8&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;new&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added logic for creating rook-ceph on rhel 9&lt;/li&gt;
&lt;li&gt;added new containerd and containerd packages for rhel9&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where setting the auditlog parameter to false did nothing&lt;/li&gt;
&lt;li&gt;fixed issue where setting the auditlog parameter to true only made changes on the clustermaster&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-168&#34;&gt;changelog opensearch 1.6.8&lt;/h2&gt;
&lt;h3 id=&#34;changed&#34;&gt;changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;updated opensearch to version: 2.32.0 and appVersion: 2.19.1&lt;/li&gt;
&lt;li&gt;Issue with creating and accessing secrets in OpenSearch has been resolved.&lt;/li&gt;
&lt;li&gt;Issue with creating namespace for opensearch has been resolved&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-168&#34;&gt;changelog opensearch dashboards 1.6.8&lt;/h2&gt;
&lt;h3 id=&#34;changed-1&#34;&gt;changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;updated opensearch to version: 2.28.0 and appVersion: 2.19.1&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-168&#34;&gt;changelog prometheus 1.6.8&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where grafana opnsearch datasource hat wrong permissions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-ingress-nginx-168&#34;&gt;changelog ingress nginx 1.6.8&lt;/h2&gt;
&lt;h3 id=&#34;changed-2&#34;&gt;changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;updated helm chart to appVersion: 1.11.5 and version: 4.11.5&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed critical cves:
&lt;ul&gt;
&lt;li&gt;CVE-2025-1097&lt;/li&gt;
&lt;li&gt;CVE-2025-1098&lt;/li&gt;
&lt;li&gt;CVE-2025-1974&lt;/li&gt;
&lt;li&gt;CVE-2025-24513&lt;/li&gt;
&lt;li&gt;CVE-2025-24514&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;fixed issue where advanced parameters did not work&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-168&#34;&gt;changelog kubeopsctl 1.6.8&lt;/h2&gt;
&lt;h3 id=&#34;fixed-3&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where clusterstorage was not updated after kubeopsctl commands&lt;/li&gt;
&lt;li&gt;fixed issue where kubeopsctl version command did not create a output&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.7</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.7/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.7/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-167---release-date-27032025&#34;&gt;KubeOps 1.6.7 - Release Date 27.03.2025&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-167&#34;&gt;changelog lima 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue in kubernetes 1.31.2 where the pause image has the tag 3.10.0 instead of 3.10&lt;/li&gt;
&lt;li&gt;fixed issue in kubernetes 1.31.4 where the pause image has the tag 3.10.0 instead of 3.10&lt;/li&gt;
&lt;li&gt;fixed issue where the kubernetes upgrade from 1.30 to 1.31 failed with the CreateContainerConfigError&lt;/li&gt;
&lt;li&gt;fixed issue where the kubernetes upgrade from 1.30 to 1.31 only applied on the worker nodes&lt;/li&gt;
&lt;li&gt;fixed issue where the kubernetes upgrade from 1.30 to 1.31 create a version conflict between the kube-apiserver of an upgraded master and an not upgraded master&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-167&#34;&gt;changelog kubeopsctl 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where the kubernetes upgrade from 1.30 to 1.31 only applied on the worker nodes&lt;/li&gt;
&lt;li&gt;fixed issue where the kubernetes upgrade from 1.30 to 1.31 create a version conflict between the kube-apiserver of an upgraded master and an not upgraded master&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-167&#34;&gt;changelog rook-ceph 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed templating of &lt;code&gt;mgr&lt;/code&gt; so that it can be modified via the advanced parameters&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;added&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for rook&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-167&#34;&gt;changelog harbor 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;fixed-3&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed templating of &lt;code&gt;postgres&lt;/code&gt; so that it can be modified via the advanced parameters&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;added-1&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-helm-167&#34;&gt;changelog helm 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-2&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for helm&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-167&#34;&gt;changelog cert-manager 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-3&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for cert-manager&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-167&#34;&gt;changelog filebeat 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-4&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for filebeat&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-ingress-nginx-167&#34;&gt;changelog ingress-nginx 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-5&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for ingress.nginx&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-167&#34;&gt;changelog keycloak 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-6&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for keycloak&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-package-167&#34;&gt;changelog kubeops-package 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-7&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for kubeops-package&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-setup-167&#34;&gt;changelog kubeops-setup 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-8&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for kubeops-setup&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-logstash-167&#34;&gt;changelog logstash 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-9&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for logstash&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opa-gtekeeper-167&#34;&gt;changelog opa-gtekeeper 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-10&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for opa-gatekeeper&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-167&#34;&gt;changelog opensearch 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-11&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for opensearch&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;known-issue&#34;&gt;known issue&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the installation can create the following error: &lt;code&gt;Failed loading builtin log types from disk! java.nio.file.FileSystemNotFoundException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-167&#34;&gt;changelog prometheus 1.6.7&lt;/h2&gt;
&lt;h3 id=&#34;added-12&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for prometheus&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.6</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.6/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.6/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-166&#34;&gt;KubeOps 1.6.6&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-166&#34;&gt;changelog lima 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where a non exiting cluster storage lead to exceptions&lt;/li&gt;
&lt;li&gt;fixed issue where the restart of the proxy in lima update registry lead to errors&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-166&#34;&gt;changelog opensearch 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-166&#34;&gt;changelog opensearch-dashboards 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-2&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;known-issue&#34;&gt;known issue&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the installation can create the following error: &lt;code&gt;Failed loading builtin log types from disk! java.nio.file.FileSystemNotFoundException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-logstash-166&#34;&gt;changelog logstash 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-3&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-166&#34;&gt;changelog filebeat 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-4&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-166&#34;&gt;changelog prometheus 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-5&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-166-1&#34;&gt;changelog prometheus 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-6&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-166&#34;&gt;changelog opa-gatekeeper 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-7&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-166&#34;&gt;changelog cert-manager 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-8&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-ingress-nginx-166&#34;&gt;changelog ingress-nginx 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-9&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-166&#34;&gt;changelog keycloak 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-10&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-velero-166&#34;&gt;changelog velero 1.6.6&lt;/h2&gt;
&lt;h3 id=&#34;fixed-11&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where package had automatically a imagepullsecret from the local harbor&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.5</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.5/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.5/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-165&#34;&gt;KubeOps 1.6.5&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-165&#34;&gt;changelog lima 1.6.5&lt;/h2&gt;
&lt;h3 id=&#34;added&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added kubernetes version 1.29.12&lt;/li&gt;
&lt;li&gt;added kubernetes version 1.30.8&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-165&#34;&gt;changelog kubeops-dashboard 1.6.5&lt;/h2&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where nodeport was randomly assigned&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-165&#34;&gt;Changelog opensearch-dashboards 1.6.5&lt;/h2&gt;
&lt;h3 id=&#34;known-issue&#34;&gt;known issue&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the installation can create the following error: &lt;code&gt;Failed loading builtin log types from disk! java.nio.file.FileSystemNotFoundException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.4</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.4/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.4/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-164&#34;&gt;KubeOps 1.6.4&lt;/h1&gt;
&lt;h2 id=&#34;changelog-lima-164&#34;&gt;changelog lima 1.6.4&lt;/h2&gt;
&lt;h3 id=&#34;added&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added kubernetes version to 1.29.10&lt;/li&gt;
&lt;li&gt;added kubernetes version to 1.30.6&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;changed&#34;&gt;changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;updated yq version in lima code for vulnerability fix&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;fixed&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where change auditlog only worked on clustermaster&lt;/li&gt;
&lt;li&gt;fixed issue where clusterstorage was not complete after cluster creation&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-164&#34;&gt;changelog rook-ceph 1.6.4&lt;/h2&gt;
&lt;h3 id=&#34;changed-1&#34;&gt;changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;updated app-version version of rook-ceph operator to 1.15.6, helm chart version to 1.15.6&lt;/li&gt;
&lt;li&gt;updated helm chart version of rook-ceph cluster to 1.15.6, helm chart version to 1.15.6&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kube-prometheus-stack-164&#34;&gt;changelog kube prometheus stack 1.6.4&lt;/h2&gt;
&lt;h3 id=&#34;changed-2&#34;&gt;changed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;updated the ingress configuration to enable HTTPS access for Prometheus and Grafana services&lt;/li&gt;
&lt;li&gt;updated to grafana plugin to 11.3.1&lt;/li&gt;
&lt;li&gt;updated prometheus image because of critical cves&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-164&#34;&gt;changelog kubeopsctl 1.6.4&lt;/h2&gt;
&lt;h3 id=&#34;fixed-1&#34;&gt;fixed&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where change auditlog only worked on clustermaster&lt;/li&gt;
&lt;li&gt;fixed issue where an warning message was thrown, that the node could be be upgraded, even if no upgrade was applied&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-164&#34;&gt;changelog opensearch 1.6.4&lt;/h2&gt;
&lt;h3 id=&#34;added-1&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added ressourcenlimits for opensearch&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;known-issue&#34;&gt;known issue&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the installation can create the following error: &lt;code&gt;Failed loading builtin log types from disk! java.nio.file.FileSystemNotFoundException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.3</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.3/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.3/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-163&#34;&gt;KubeOps 1.6.3&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-163&#34;&gt;changelog kubeopsctl 1.6.3&lt;/h2&gt;
&lt;h3 id=&#34;bugfixes&#34;&gt;bugfixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved issue where only masters in zones was not possible&lt;/li&gt;
&lt;li&gt;resolved issue where installation of harbor without password and external url was possible&lt;/li&gt;
&lt;li&gt;resolved issue where imagepullsecret was not created correctly for harbor with domain name&lt;/li&gt;
&lt;li&gt;resolved issue where harbor password was in logs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-163&#34;&gt;changelog lima 1.6.3&lt;/h2&gt;
&lt;h3 id=&#34;bugfixes-1&#34;&gt;bugfixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved the issue where the &lt;code&gt;kubectl&lt;/code&gt; command was not found&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;added&#34;&gt;added&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added kubernetes version to 1.31.2&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-163&#34;&gt;changelog rook-ceph 1.6.3&lt;/h2&gt;
&lt;h2 id=&#34;fixes&#34;&gt;fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;resolved issue with accessing ceph dashboard&lt;/li&gt;
&lt;li&gt;fixed issue with updating rook-cephfs storageClass&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-163&#34;&gt;Changelog Harbor 1.6.3&lt;/h2&gt;
&lt;h3 id=&#34;fixes-1&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;hardened images because of critical cves: CVE-2024-41110, CVE-2024-45491, CVE-2024-45492, CVE-2024-37371&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-stack-163&#34;&gt;Changelog prometheus-stack 1.6.3&lt;/h2&gt;
&lt;h3 id=&#34;fixes-2&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;changed scrape port of etcd for prometheus stack to 2381&lt;/li&gt;
&lt;li&gt;resolved issues with prometheus crds in prometheus upgrade&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-nginx-ingress-163&#34;&gt;Changelog nginx-ingress 1.6.3&lt;/h2&gt;
&lt;h3 id=&#34;fixes-3&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed the critical vulnerability CVE-2024-24790&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-163&#34;&gt;Changelog kubeops-dashboard 1.6.3&lt;/h2&gt;
&lt;h3 id=&#34;fixes-4&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;updated helm chart to 0.26.0 and app version 0.26.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-163&#34;&gt;Changelog opensearch-dashboards 1.6.3&lt;/h2&gt;
&lt;h3 id=&#34;updates&#34;&gt;updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;upgraded Helm chart version to 2.22.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;known-issue&#34;&gt;known issue&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the installation can create the following error: &lt;code&gt;Failed loading builtin log types from disk! java.nio.file.FileSystemNotFoundException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.2</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.2/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.2/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-162&#34;&gt;KubeOps 1.6.2&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-162&#34;&gt;changelog kubeopsctl 1.6.2&lt;/h2&gt;
&lt;h3 id=&#34;bugfixes&#34;&gt;bugfixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;resolved issue where images were not pinned, so images were deleted by kubernetes&lt;/li&gt;
&lt;li&gt;resolved issue where updateRegistry was not executed&lt;/li&gt;
&lt;li&gt;resolved issue where lima container did not properly stop after errors&lt;/li&gt;
&lt;li&gt;fixed issue with storageClassName in logstashValues&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph&#34;&gt;changelog rook-ceph&lt;/h2&gt;
&lt;h2 id=&#34;fixes&#34;&gt;fixes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;resolved issue where parameters useallnodes and usealldevivces, and deviceslist were not templated&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opa-gatekeeper-162&#34;&gt;Changelog opa gatekeeper 1.6.2&lt;/h2&gt;
&lt;h3 id=&#34;fixes-1&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue where opa gatekeeper namespace was controlled by helm&lt;/li&gt;
&lt;li&gt;updated helm chart of opa gatekeeper, changed curl image&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-162&#34;&gt;Changelog keycloak 1.6.2&lt;/h2&gt;
&lt;h3 id=&#34;fixes-2&#34;&gt;fixes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue with critical CVEs&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-162&#34;&gt;Changelog opensearch-dashboards 1.6.2&lt;/h2&gt;
&lt;h3 id=&#34;known-issue&#34;&gt;known issue&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the installation can create the following error: &lt;code&gt;Failed loading builtin log types from disk! java.nio.file.FileSystemNotFoundException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.1</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.1/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-161&#34;&gt;KubeOps 1.6.1&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-161&#34;&gt;Changelog kubeopsctl 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved the issue of missing master nodes details in &lt;code&gt;/usr/local/etc/haproxy/haproxy.cfg&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Resolved the issue where no error message was displayed when running kubeopsctl apply -f with a non-existent YAML file&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-161&#34;&gt;Changelog lima 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-1&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved issue with upgrading kubenetes versions&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-velero-161&#34;&gt;Changelog velero 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-2&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed issue with CVE-2024-24790 vulnerability&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-161&#34;&gt;Changelog kubeops-dashboard 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-3&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed issue with CVE-2024-24790 and CVE-2024-41110 vulnerabilities&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-cert-manager-161&#34;&gt;Changelog cert-manager 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-4&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Upgraded the cert-manager Helm chart to version 1.15.3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-161&#34;&gt;Changelog prometheus 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-5&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Upgraded the prometheus Helm chart to version 62.7.0&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-nginx-ingress-161&#34;&gt;Changelog nginx-ingress 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-6&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed issue with CVE-2024-24790 vulnerability&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-161&#34;&gt;Changelog harbor 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-7&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Upgraded the prometheus Helm chart to version 1.15.1&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-dashboards-161&#34;&gt;Changelog opensearch-dashboards 1.6.1&lt;/h2&gt;
&lt;h3 id=&#34;known-issue&#34;&gt;known issue&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;the installation can create the following error: &lt;code&gt;Failed loading builtin log types from disk! java.nio.file.FileSystemNotFoundException&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.0</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.0/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-160&#34;&gt;KubeOps 1.6.0&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-160&#34;&gt;Changelog kubeopsctl 1.6.0&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added apiVersion kubeops/kubeopsctl/alpha/v5&lt;/li&gt;
&lt;li&gt;Added a overwrite parameters for platform packages such as rook, harbor, logstash, filebeat etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed the issue where the platform was creating Harbor project despite it being set to false.&lt;/li&gt;
&lt;li&gt;Resolved the issue with status giving output for invalid argument/s&lt;/li&gt;
&lt;li&gt;Resolved the issue with multiline literal that converted &amp;ldquo;|&amp;rdquo; to &amp;ldquo;&amp;gt;&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-160&#34;&gt;Changelog lima 1.6.0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-1&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved issue with upgrading of clustermaster twice&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-keycloak-160&#34;&gt;Changelog keycloak 1.6.0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-2&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Issue with CVE-2024-37371 vulnerability resolved.&lt;/li&gt;
&lt;li&gt;Resolved issue with nodeport configuration&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-prometheus-160&#34;&gt;Changelog prometheus 1.6.0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-3&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Fixed the issue with the &amp;ldquo;ZBP&amp;rdquo; tag in the Grafana-Alertmanager dashboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-kubeops-dashboard-160&#34;&gt;Changelog kubeops-dashboard 1.6.0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-4&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Correct version has been adapted&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.0-Beta1</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.0-beta1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.0-beta1/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-160-beta1&#34;&gt;KubeOps 1.6.0-Beta1&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-160_beta1&#34;&gt;Changelog kubeopsctl 1.6.0_Beta1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved issue with log messages are written along with output on the screen&lt;/li&gt;
&lt;li&gt;Resolved issue with support for API versions v1, v2, v3, and v4&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-160_beta1&#34;&gt;Changelog lima 1.6.0_Beta1&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-1&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Resolved issue with &amp;lsquo;NullReferenceException&amp;rsquo; for unsupported packages&lt;/li&gt;
&lt;li&gt;Resolved issue with logging channels&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl: KubeOps 1.6.0-Beta0</title>
      <link>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.0-beta0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl/release-notes/rn-kubeops-1.6.0-beta0/</guid>
      <description>
        
        
        &lt;h1 id=&#34;kubeops-160-beta0&#34;&gt;KubeOps 1.6.0-Beta0&lt;/h1&gt;
&lt;h2 id=&#34;changelog-kubeopsctl-160_beta0&#34;&gt;Changelog kubeopsctl 1.6.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;new&#34;&gt;New&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Added apiVersion kubeops/kubeopsctl/alpha/v5&lt;/li&gt;
&lt;li&gt;Added a tutorial for using advanced parameters to overwrite values&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;bugfix&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Moved advancedParameter under cluster and operator in rookValues&lt;/li&gt;
&lt;li&gt;fixed issue where packages could not be upgraded&lt;/li&gt;
&lt;li&gt;fixed issue with v4 to v5 model conversion&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;known-issues&#34;&gt;Known Issues&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;log messages are written along with output on the screen&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-lima-160_beta0&#34;&gt;Changelog lima 1.6.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-1&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;added more parallelization in the clustercreation and update registry for more speed&lt;/li&gt;
&lt;li&gt;fixed problem where kubernetes upgrade was not possible&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-opensearch-160_beta0&#34;&gt;Changelog opensearch 1.6.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-2&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The initial dashboard password has been set to a neutral value&lt;/li&gt;
&lt;li&gt;fixed issue with &amp;rsquo;nil pointer evaluating interface&lt;/li&gt;
&lt;li&gt;Added a tutorial for using advanced parameters to overwrite values in kubeopsctl.yaml&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-rook-ceph-160_beta0&#34;&gt;Changelog rook-ceph 1.6.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-3&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Removed the image.tag specification from the values.yaml file in the Helm chart to allow for more dynamic configuration of the image version during deployments&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changlog-nginx-ingress-160_beta0&#34;&gt;Changlog nginx-ingress 1.6.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-4&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;number of replicas set to 3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-setup-160_beta0&#34;&gt;Changelog setup 1.6.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-5&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;fixed issue with installing &amp;lsquo;kubectl&amp;rsquo; on admin node&lt;/li&gt;
&lt;li&gt;updated calicomultus version to 0.0.4&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-harbor-160_beta0&#34;&gt;Changelog harbor 1.6.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-6&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;set replicas to 3&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;changelog-filebeat-160_beta0&#34;&gt;Changelog filebeat 1.6.0_Beta0&lt;/h2&gt;
&lt;h3 id=&#34;bugfix-7&#34;&gt;Bugfix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;changed toleration from master to control-plane&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Kubeopsctl-2.0: KubeOps 2.1.1</title>
      <link>https://docs.kubeops.net/kubeopsctl-2.0/release-notes/rn-kubeops-2.1.1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl-2.0/release-notes/rn-kubeops-2.1.1/</guid>
      <description>
        
        
        &lt;h2 id=&#34;kubeops-211---release-date-082026&#34;&gt;KubeOps 2.1.1 - Release Date ??.08.2026&lt;/h2&gt;
&lt;h3 id=&#34;changelog-kubeopsctl-211&#34;&gt;Changelog KubeOpsCtl 2.1.1&lt;/h3&gt;
&lt;h4 id=&#34;fixes&#34;&gt;Fixes&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;- fixed missing opensearch-dashboards plugins and wrong version 
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&#34;versions-kubeops-211&#34;&gt;Versions KubeOps 2.1.1&lt;/h3&gt;


  




	






  
  
  






  



      </description>
    </item>
    
    <item>
      <title>Kubeopsctl-2.0: KubeOps 2.2.0_Beta1</title>
      <link>https://docs.kubeops.net/kubeopsctl-2.0/release-notes/rn-kubeops-2.2.0_beta1/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl-2.0/release-notes/rn-kubeops-2.2.0_beta1/</guid>
      <description>
        
        
        &lt;h2 id=&#34;kubeops-220_beta1---release-date-02082026&#34;&gt;KubeOps 2.2.0_Beta1 - Release Date 02.08.2026&lt;/h2&gt;
&lt;h3 id=&#34;changelog-kubeopsctl-220_beta1&#34;&gt;Changelog KubeOpsCtl 2.2.0_Beta1&lt;/h3&gt;
&lt;h4 id=&#34;whats-new&#34;&gt;Whats new?&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;- Added Traefik support for kubeopsctl
- Added Kubevirt-Manager support for kubeopsctl
- Added Kubernetes 1.36 support
- Added Advanced Parameters for static Registry mount path, check out the file format [Cluster Values YAML](/kubeopsctl-2.0/reference/fileformats/#cluster-valuesyaml)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;fixes&#34;&gt;Fixes&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;- fixed a podman bug affecting pull packages
- fixed a harbor bug setting up cluster
- added creation of nginx ingressclass, when installing traefik for backwards compatabilty
- fixed default secret for kubeops-dashboard
- kubeopsctl pull command now verifies if the specified tool value file exists
- Added kubeops-harbor-secret for pulling images from the internal private harbor project &#39;kubeops&#39;
- fixed a bug that prevented to create the kubeops harbor project as private 
- fixed a bug that prevented to change the kubeops harbor project to private 
- fixed a bug that prevented the image push of the kubernetes images to local-registry 
- changed the &#39;localhost&#39; reference to &#39;127.0.0.1&#39; for enterprise-tools in preperation for the kubernetes 1.36 support
- fix image push in local registry
- fixed duplicated coredns in 1.36.1
- updated kosi versions for consistent installation
- updated Harbor ImagePullSecret with 127.0.0.1 instead of master1 IP
- remove hardcoded plugin versions in cluster prepare node
- fixed a bug in rook delete section
- fixed a bug in nginx ingressclass for traefik
- added default secret for grafana
- added role bindings for the kubevirt roles
- fixed delete ingresses in update process 
- OpenSearch users created in the Dashboards Security UI now persist across package updates 
- OpenSearch TLS certificates are no longer regenerated on every install/update, preventing certificate rotation on running clusters 
- Fixed OpenSearch SSO returning 401 Unauthorized by reliably applying the openid security configuration to the backend after deploy 
- Added a Keycloak protocol mapper so realm roles are propagated to OpenSearch for backend role mapping 
- Added Single Sign-On (SSO) with Keycloak (OpenID Connect) for OpenSearch and OpenSearch Dashboards 
- Added username/password fallback authentication for OpenSearch alongside SSO 
- Made the OpenSearch admin password configurable via the new `adminPassword` package value (opensearch-os &amp;amp; opensearch-dashboards) 
- Added `hostname` package value for opensearch-os to point OpenSearch at the Keycloak SSO endpoint 
- Refresh the Keycloak admin token before each step of the OpenSearch Dashboards OIDC join so long-running joins no longer fail with 401 once the 60s token lifespan is exceeded
- fixed an error in OpenSearch when it was not installed in the `logging` namespace
- fixed an issue in kubeopsctl where `tools-values.yaml` and `cluster-values.yaml` were not always stored as secrets in the cluster
- changed the netpols for traefik-nginx and ingress-nginx to make the dashboards available
- helm-plugin now parses the flags correctly in all possible actions (install, upgrade, delete)
- fixed missing kosi update on nodes, if packageRepository: local
- fixed missing opensearch-dashboards plugins and wrong version
- template network policies with default deny rules
- when installing the tools, apply cluster- and tools-values
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;known-issues&#34;&gt;Known Issues&lt;/h4&gt;
&lt;div class=&#34;alert warning callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;⚠ Warning&lt;/strong&gt;
  
  In an air-gapped scenario, the Harbor external URL cannot be set to a public domain name. It must remain http://&amp;laquo;controlplane1-ip&amp;raquo;:30002.
  
&lt;/div&gt;
&lt;div class=&#34;alert warning callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;⚠ Warning&lt;/strong&gt;
  
  WireGuard installation may fail when &lt;code&gt;packagerepo: local&lt;/code&gt; is used on cluster nodes that are not running Red Hat Enterprise Linux 9.6, due to its dependency on the &lt;code&gt;systemd-resolved&lt;/code&gt; version included in the release.
  
&lt;/div&gt;
&lt;div class=&#34;alert warning callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;⚠ Warning&lt;/strong&gt;
  
  If Cilium is selected as the CNI, all dashboards are currently unavailable.
  
&lt;/div&gt;
&lt;h3 id=&#34;versions-kubeops-220_beta1&#34;&gt;Versions KubeOps 2.2.0_Beta1&lt;/h3&gt;


  




	






  
  
  






  &lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;App Version&lt;/th&gt;
&lt;th&gt;Chart Version&lt;/th&gt;
&lt;th&gt;Package Version&lt;/th&gt;
&lt;th&gt;SHA256 Checksum&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;kernelmodules&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kernelmodules:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;476f5be30871160d6fef47f791f601f7a090a988dc0dd86de3c237b5aa5ef986&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sysctl&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/sysctl:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;3361e60dc684be44da3fbf6da355074219c4d03006a77445ec26b524f61ce83e&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;disable-swap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/disable-swap:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;e7fffe5cb73f9079c5d591293ba6b324314bd579c14dc4ff9a9866c356d11c09&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;runtime-setup&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/runtime-setup:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;08c5d65c06522ef7a96f9218f9cced7969baf1a77170c922dd582c515a767c78&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubeadm-init&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubeadm-init:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;a42cb150cfd8b722c54736951b1008ef28a52972dd448b03e2b473d8db868f75&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;local-registry&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/local-registry:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;cd184da0d8963c7afa0226b452d5c90223d6c74a51430141f3545f9c1b13f4c2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;load-balancer&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/load-balancer:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;ee9bf297c642b35e64da3a2ff5b6351a784afd4a50289affdeb881b0fca6a614&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;initial-controlplane&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/initial-controlplane:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;3eeca78df9a2936886a8de3fd34bcd6f13e863a17219e7f971a58f8c1a7bae79&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clustersetup&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/clustersetup:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;823088a03fa9a79e1098ca79df305fec2a2f40f65c8727d9d2125b99c4adac9d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-cni&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-cni:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;a95ce6f24430a419541a747d48d7e8647eb970c21f73ffc632e676b6577c9288&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;join-controlplane&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/join-controlplane:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;cce1d2f21ed4fdb5cd5bd8af33a3a17bc63a5b6cf6b2ba8fbaa078f5675c0151&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;join-worker&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/join-worker:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;8ce7e876cd88c6db2ae189d666c1e1cb6dabad09e1ea7e5131bcc852112b4b20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pull-packages&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/pull-packages:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;2c1ab9b35d0c56a027471ec83da24a6bdcb1184005a03877aff04379b7ecd13c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;prepare-node&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/prepare-node:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;9d197abcb9c845f47f6220e44b4be3d7af45e5c06c0ae9734001bd677f338dab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;firewall-setup&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/firewall-setup:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;2ec1d78c693956e2bf7617d9b8cf695ecfc41c259e45f03e3fc59039f9428483&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kube-vip&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kube-vip:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;21db077376cb1c69d6ada941aae9174a479fdbd5e397e8757a1034391a3bc0c6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;delete-node&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/delete-node:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;6745ba0018a95682a203205313ba5680d23cf26ac2e2b9263eaad2e372c77a4a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;auditlog&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/auditlog:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;a513f525362fd69bdd82f006f4cda1498ffb32fdd91c079a9a4a90c27475943a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubeadm-upgrade-initial-controlplane&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubeadm-upgrade-initial-controlplane:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;240d9754f3221347c352cafbde7d84a818c6a384913626825712f94c6bd04b55&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubeadm-upgrade-nodes&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubeadm-upgrade-nodes:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;3bfaa2a1142318c3fce2212ef183313dc03d57435e84e4d86f3ede042e32c4a7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.30.8&lt;/td&gt;
&lt;td&gt;ee9e8e41552be2d90f1f19700c251fd77fe01da31eabec6a3fcab318b01ceb2c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.30.8&lt;/td&gt;
&lt;td&gt;2677d909cd257c0b75de2d4bd9e9d198148310a9ecbbca384996700a54d3a9df&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.31.6&lt;/td&gt;
&lt;td&gt;0af110107067c17851375742d301f1da68aac2f732b626f8210ece17e17fd30b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.31.6&lt;/td&gt;
&lt;td&gt;41ac4282be31a9127ca403be3d0f03bab912e16e66f05febb506479574b3c4f1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.32.2&lt;/td&gt;
&lt;td&gt;9ddc947d61b69ff6121809d016411ffe50732a78b760e5d307f03dc24294e8da&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.32.2&lt;/td&gt;
&lt;td&gt;0b6c07788c320786b5f7cce1c809bd7305e28fecb804c223fc9b1dae6ee7bb1b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.32.9&lt;/td&gt;
&lt;td&gt;5587a13d33096c92f52ced4947815c44554a82a49091dd9d78c8eaa065534f7c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.32.9&lt;/td&gt;
&lt;td&gt;e4c34ddf29889d6a8f9075752a61a61fc62b7b7efa5e981d0d4ccbfc5cc1a939&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.33.5&lt;/td&gt;
&lt;td&gt;2598dd0c50a7f1d38f1929f34bbfe0ce7efccb614b9f48d417c9285cb3e1b949&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.33.5&lt;/td&gt;
&lt;td&gt;1f6000a20f57c17cf8c229269cb4c3abf076f68f336234d79dbb24656f4190f2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.34.1&lt;/td&gt;
&lt;td&gt;69ea34b7768e8de460f75b6a165a63b8de3e032d584fd43c4da87474d2e046ca&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.34.1&lt;/td&gt;
&lt;td&gt;32f294ab19e6a2b3769044a728c0d6a4bebeb1d393aee061d68ebef0a7c83b2b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.35.0&lt;/td&gt;
&lt;td&gt;00fdeb8f3816b04661c9d866c89a3fa79dd743c1989709a7d7ff581010b9d7e6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.35.0&lt;/td&gt;
&lt;td&gt;64e3c2fbc81d2973cc28d05cc517687570c07d8b3a9194fe0ee33455669efc58&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.36.1&lt;/td&gt;
&lt;td&gt;2b4ce27d375937f71b1760e93e19668de5e3c594ab332521cf7c1109560f0e34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.36.1&lt;/td&gt;
&lt;td&gt;079962600f3b361904d4972b6c59c10396630f62da0a33e6d1889142a10a0540&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;calico&lt;/td&gt;
&lt;td&gt;v3.29.1&lt;/td&gt;
&lt;td&gt;v3.29.1&lt;/td&gt;
&lt;td&gt;kubeops/calico:v3.29.2&lt;/td&gt;
&lt;td&gt;3d492518bb31ad078f9e6e091ff2d22e43cac5a8b3f84c127571a1545a891833&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;calico-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/calico-airgap:v3.29.2&lt;/td&gt;
&lt;td&gt;5923f633ea4136a64f0c0ddf56069b109704b61e542a530378a686292b4d034c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cilium&lt;/td&gt;
&lt;td&gt;1.18.2&lt;/td&gt;
&lt;td&gt;1.18.2&lt;/td&gt;
&lt;td&gt;kubeops/cilium:v1.18.3&lt;/td&gt;
&lt;td&gt;5451104fd9703d6039b6d6da6912bca5db62d9942f24b76549314a27774f0459&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cilium-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/cilium-airgap:v1.18.3&lt;/td&gt;
&lt;td&gt;a334071a23cdd2330ea2c723993e18822522c900481fabe7f1ee12b4c849f5ab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multus&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/multus:snapshot-thick2&lt;/td&gt;
&lt;td&gt;3585956f2b1b1687ba01f2592682fda07dd34005f169666cc815a289b9945130&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multus-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/multus-airgap:snapshot-thick2&lt;/td&gt;
&lt;td&gt;746eee2272ab13281d7540a21d696226e806c0d13380fdcce554564c7b84e709&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wireguard-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/wireguard-tools:v1.0.20210914&lt;/td&gt;
&lt;td&gt;70a49e1fec74e5c6b977e40264e1a084cd2f25d38a9df034141a9e165aea0f8c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;helm&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/helm:v3.16.4&lt;/td&gt;
&lt;td&gt;8e2def3efd54f2d149235e3ef71116c37514f7dcda81e8c793e081120c16f323&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;podman&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/podman:5.2.2&lt;/td&gt;
&lt;td&gt;faa2ca5552df3cf46da6b0c4afc55220bb751e59319c1157e7f3652479bde4e4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ingress-nginx&lt;/td&gt;
&lt;td&gt;1.15.6&lt;/td&gt;
&lt;td&gt;4.15.6&lt;/td&gt;
&lt;td&gt;kubeops/ingress-nginx:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;d9db2892127d3dd895439854c33d0ee7aa6c8280b134e34c0db34bb292a70128&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cert-manager&lt;/td&gt;
&lt;td&gt;v1.18.2&lt;/td&gt;
&lt;td&gt;v1.18.2&lt;/td&gt;
&lt;td&gt;kubeops/cert-manager:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;2f146fdfc04ed39454d606ac0fdbaef792c9c414c8ae27a589b67320b442a528&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opa-gatekeeper&lt;/td&gt;
&lt;td&gt;v3.17.1&lt;/td&gt;
&lt;td&gt;3.17.1&lt;/td&gt;
&lt;td&gt;kubeops/opa-gatekeeper:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;ac240161a7e1bcbc7ae62baa9d8af038d01725d6e0a580229730aaa10436a3bf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;velero&lt;/td&gt;
&lt;td&gt;1.16.2&lt;/td&gt;
&lt;td&gt;10.1.0&lt;/td&gt;
&lt;td&gt;kubeops/velero:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;b9cf523e5d84b5aba7cf70a106fb38036abfd3182bee0f4b1fbf8450256d3ac9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rook-ceph&lt;/td&gt;
&lt;td&gt;v1.15.6&lt;/td&gt;
&lt;td&gt;v1.15.6&lt;/td&gt;
&lt;td&gt;kubeops/rook-ceph:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;8507a3890439307573305c3412ed8a0605d89502b295c2933f5ff0ab3c691784&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rook-ceph-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/rook-ceph-airgap:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;63ba9218f2947992fb0878afe645d349c6d7c3c22e6f0c91ea9e2fad43f05101&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;harbor&lt;/td&gt;
&lt;td&gt;2.14.0&lt;/td&gt;
&lt;td&gt;1.18.0&lt;/td&gt;
&lt;td&gt;kubeops/harbor:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;bed605d28b7ab75076aff6e9cdd4c84e694897fa8b4b8537e515042740a04664&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;harbor-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/harbor-airgap:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;5f11608c2056e38615655568b53112a3d5436b12c0cf9e6b457f5ea3884d8b70&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kube-prometheus-stack&lt;/td&gt;
&lt;td&gt;v0.85.0&lt;/td&gt;
&lt;td&gt;77.0.2&lt;/td&gt;
&lt;td&gt;kubeops/kube-prometheus-stack:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;72690ac02de26e89fd22ab5c87ce4cf16b0d6f1e3bfa9c3abf626eb2f91556e6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;keycloak&lt;/td&gt;
&lt;td&gt;16.8.0&lt;/td&gt;
&lt;td&gt;1.2.0&lt;/td&gt;
&lt;td&gt;kubeops/keycloak:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;fc50a1ed40b6ec5c57793f0ae5841565925794c4508a9be9fa7351aec0f506d7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubeops-dashboard&lt;/td&gt;
&lt;td&gt;0.26.0&lt;/td&gt;
&lt;td&gt;0.26.0&lt;/td&gt;
&lt;td&gt;kubeops/kubeops-dashboard:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;ac2e1f7230adc914ec89c5d0ade57aacf917a2aa388b8897126ff7fcf0add526&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;filebeat-os&lt;/td&gt;
&lt;td&gt;8.5.1&lt;/td&gt;
&lt;td&gt;8.5.1&lt;/td&gt;
&lt;td&gt;kubeops/filebeat-os:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;28e96f41bb3869a2cc360aed2117dc4a60dba115c62f74ef8016334a50b0c9ce&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;logstash-os&lt;/td&gt;
&lt;td&gt;8.4.0&lt;/td&gt;
&lt;td&gt;8.4.0&lt;/td&gt;
&lt;td&gt;kubeops/logstash-os:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;d73fbac1760df25e7428cb717378fe3e38d98ac7c8f866e025fa9cb1eb7ec9c4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opensearch-os&lt;/td&gt;
&lt;td&gt;3.4.0&lt;/td&gt;
&lt;td&gt;3.4.0&lt;/td&gt;
&lt;td&gt;kubeops/opensearch-os:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;a11a77bb0e952c5269495720655004887ef939164fbe041fc9970c145b264b2a&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opensearch-dashboards&lt;/td&gt;
&lt;td&gt;3.4.0&lt;/td&gt;
&lt;td&gt;3.4.0&lt;/td&gt;
&lt;td&gt;kubeops/opensearch-dashboards:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;316d7f0b3a5afa70e4822f1bddb0b14f579e4cd1fd54cb779ea9c0627f7489b9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;traefik&lt;/td&gt;
&lt;td&gt;v3.6.7&lt;/td&gt;
&lt;td&gt;39.0.0&lt;/td&gt;
&lt;td&gt;kubeops/traefik:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;b53231c94b4b72bdeee41f3dc44effb15937eb4ca78c864611b7fbca7413ed4b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubevirt-manager&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubevirt-manager:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;bff3c27b0fa086e1698472af19b5f7dc9f65be01de56c7f9982732418cffbb0c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubevirt&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubevirt:2.2.0_Beta1&lt;/td&gt;
&lt;td&gt;f569cd38ddeb894eeac4cf65f9758d1c8effc200ec214dcfe80ce569d5e34011&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;




      </description>
    </item>
    
    <item>
      <title>Kubeopsctl-2.0: KubeOps 2.2.0_Beta0</title>
      <link>https://docs.kubeops.net/kubeopsctl-2.0/release-notes/rn-kubeops-2.2.0_beta0/</link>
      <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
      
      <guid>https://docs.kubeops.net/kubeopsctl-2.0/release-notes/rn-kubeops-2.2.0_beta0/</guid>
      <description>
        
        
        &lt;h2 id=&#34;kubeops-220_beta0---release-date-30072026&#34;&gt;KubeOps 2.2.0_Beta0 - Release Date 30.07.2026&lt;/h2&gt;
&lt;h3 id=&#34;changelog-kubeopsctl-220_beta0&#34;&gt;Changelog KubeOpsCtl 2.2.0_Beta0&lt;/h3&gt;
&lt;h4 id=&#34;whats-new&#34;&gt;Whats new?&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;- Added Traefik support for kubeopsctl
- Added Kubevirt-Manager support for kubeopsctl
- Added Kubernetes 1.36 support
- Added Advanced Parameters for static Registry mount path, check out the file format [Cluster Values YAML](/kubeopsctl-2.0/reference/fileformats/#cluster-valuesyaml)
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;fixes&#34;&gt;Fixes&lt;/h4&gt;
&lt;pre&gt;&lt;code&gt;- fixed a podman bug affecting pull packages
- fixed a harbor bug setting up cluster
- added creation of nginx ingressclass, when installing traefik for backwards compatabilty
- fixed default secret for kubeops-dashboard
- kubeopsctl pull command now verifies if the specified tool value file exists
- Added kubeops-harbor-secret for pulling images from the internal private harbor project &#39;kubeops&#39;
- fixed a bug that prevented to create the kubeops harbor project as private 
- fixed a bug that prevented to change the kubeops harbor project to private 
- fixed a bug that prevented the image push of the kubernetes images to local-registry 
- changed the &#39;localhost&#39; reference to &#39;127.0.0.1&#39; for enterprise-tools in preperation for the kubernetes 1.36 support
- fix image push in local registry
- fixed duplicated coredns in 1.36.1
- updated kosi versions for consistent installation
- updated Harbor ImagePullSecret with 127.0.0.1 instead of master1 IP
- remove hardcoded plugin versions in cluster prepare node
- fixed a bug in rook delete section
- fixed a bug in nginx ingressclass for traefik
- added default secret for grafana
- added role bindings for the kubevirt roles
- fixed delete ingresses in update process 
- OpenSearch users created in the Dashboards Security UI now persist across package updates 
- OpenSearch TLS certificates are no longer regenerated on every install/update, preventing certificate rotation on running clusters 
- Fixed OpenSearch SSO returning 401 Unauthorized by reliably applying the openid security configuration to the backend after deploy 
- Added a Keycloak protocol mapper so realm roles are propagated to OpenSearch for backend role mapping 
- Added Single Sign-On (SSO) with Keycloak (OpenID Connect) for OpenSearch and OpenSearch Dashboards 
- Added username/password fallback authentication for OpenSearch alongside SSO 
- Made the OpenSearch admin password configurable via the new `adminPassword` package value (opensearch-os &amp;amp; opensearch-dashboards) 
- Added `hostname` package value for opensearch-os to point OpenSearch at the Keycloak SSO endpoint 
- Refresh the Keycloak admin token before each step of the OpenSearch Dashboards OIDC join so long-running joins no longer fail with 401 once the 60s token lifespan is exceeded
&lt;/code&gt;&lt;/pre&gt;
&lt;h4 id=&#34;known-issues&#34;&gt;Known Issues&lt;/h4&gt;
&lt;div class=&#34;alert warning callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;⚠ Warning&lt;/strong&gt;
  
  In an air-gapped scenario, the Harbor external URL cannot be set to a public domain name. It must remain http://&amp;laquo;controlplane1-ip&amp;raquo;:30002.
  
&lt;/div&gt;
&lt;div class=&#34;alert warning callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;⚠ Warning&lt;/strong&gt;
  
  WireGuard installation may fail when &lt;code&gt;packagerepo: local&lt;/code&gt; is used on cluster nodes that are not running Red Hat Enterprise Linux 9.6, due to its dependency on the &lt;code&gt;systemd-resolved&lt;/code&gt; version included in the release.
  
&lt;/div&gt;
&lt;div class=&#34;alert warning callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;⚠ Warning&lt;/strong&gt;
  
  OpenSearch is not installed if a namespace other than &lt;code&gt;logging&lt;/code&gt; is used.
  
&lt;/div&gt;
&lt;div class=&#34;alert warning callout&#34;
     role=&#34;alert&#34;&gt;
  &lt;strong&gt;⚠ Warning&lt;/strong&gt;
  
  If Cilium is selected as the CNI, all dashboards are currently unavailable.
  
&lt;/div&gt;
&lt;h3 id=&#34;versions-kubeops-220_beta0&#34;&gt;Versions KubeOps 2.2.0_Beta0&lt;/h3&gt;


  




	






  
  
  






  &lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;App Version&lt;/th&gt;
&lt;th&gt;Chart Version&lt;/th&gt;
&lt;th&gt;Package Version&lt;/th&gt;
&lt;th&gt;SHA256 Checksum&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;kernelmodules&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kernelmodules:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;68d889dc1af5d7178ba726780002ef6d55632f8983cbde9bbeb6b62226d88715&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;sysctl&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/sysctl:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;9383df73d75b712ba901a908a9164dcf2ee73c24816bc83ed6551576a67c3d48&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;disable-swap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/disable-swap:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;5a1649104ffd6eef6624a58c7f21f1afec0815b5ded7a377e03f0cb222cec6a9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;runtime-setup&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/runtime-setup:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;ebb23938d9adba0291efdd452df0a609495a62687d38564639e033d8af6a02ab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubeadm-init&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubeadm-init:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;e0cb5a6f290bfcef9d44af0777f2f5f7889973192dcca90af5591bc12915b3c0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;local-registry&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/local-registry:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;d8be4d7857acb6d4a934ed78f4d189006d7196dbe6b20c9c5641bdcf92c05ac0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;load-balancer&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/load-balancer:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;1b325d8da7f18dc31baff8f2be372e8c5e425dd30135238e791bfc21c416070f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;initial-controlplane&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/initial-controlplane:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;fd1f442342336d2d6c728dfe6b0da4e939701014f883042c370d7772df9eeeb8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;clustersetup&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/clustersetup:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;279fb5152212362d25d1a342d1f277bd231fb9a02f4726b14bcba1cbb0fc864f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-cni&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-cni:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;95925111bd30f34e620763567012991ade1bdb5f29636ca8591e8e5723f4c864&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;join-controlplane&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/join-controlplane:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;6a4bdd593b15bcc1ca2d8a0283ae860287d17ebc7e83ca802847aa89f59c97b2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;join-worker&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/join-worker:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;2247094d87204722f2891db7599ebcd1bbdf581467b19d5ed2c2e22a31185086&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;pull-packages&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/pull-packages:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;b4823f7c72cf684f442f9bc2363997f58cb582f36ac9ab0081dfc3842bedca57&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;prepare-node&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/prepare-node:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;f02718afb5ce35561384bc8cda3d541dbf45dc2adfc8a87237813299c1f3adb9&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;firewall-setup&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/firewall-setup:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;f23fb5a14ca317ad6b432c5331048e83176592fb648352df4c8739d73e2f80f1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kube-vip&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kube-vip:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;8c2076a66c589839c1c25da3311248da167a372abdea68d79e3b028691a27851&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;delete-node&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/delete-node:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;f874d4d02b72a3e6d5bce8669df1aa203cb9a9f8caaabe96d67974e8bf115315&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;auditlog&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/auditlog:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;c848ce79a3ab528a853efbcb671eaf1ff200db2319bb05fd167139b1ac31e9ba&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubeadm-upgrade-initial-controlplane&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubeadm-upgrade-initial-controlplane:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;4506d301c855428cc929156715e3af1c61cba0a33e6d084472b011cf81a812e4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubeadm-upgrade-nodes&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubeadm-upgrade-nodes:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;736023f7a1924a40a82f01fc18db3688d114e4329c454970e8c90fd339b29c46&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.30.8&lt;/td&gt;
&lt;td&gt;ee9e8e41552be2d90f1f19700c251fd77fe01da31eabec6a3fcab318b01ceb2c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.30.8&lt;/td&gt;
&lt;td&gt;2677d909cd257c0b75de2d4bd9e9d198148310a9ecbbca384996700a54d3a9df&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.31.6&lt;/td&gt;
&lt;td&gt;0af110107067c17851375742d301f1da68aac2f732b626f8210ece17e17fd30b&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.31.6&lt;/td&gt;
&lt;td&gt;41ac4282be31a9127ca403be3d0f03bab912e16e66f05febb506479574b3c4f1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.32.2&lt;/td&gt;
&lt;td&gt;f7d5191a269dacfa12ad867b28b01bb7a80f506b6b01950c8a34c358bb22c6e3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.32.2&lt;/td&gt;
&lt;td&gt;954093914536cb21f6e8b407bd568210992d59db7ce80464ce12dd49679f4c35&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.32.9&lt;/td&gt;
&lt;td&gt;6baff46de7291b425f42d64d7563a3e3e11acf9abb27b1b8b467bab0fa3b0485&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.32.9&lt;/td&gt;
&lt;td&gt;d421afe96680942236f1576f453a9685e99e93496c0ac9cc4d7a61c0dfcf2037&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.33.5&lt;/td&gt;
&lt;td&gt;8b3e5ebbbfb8bdd4ce30990ab80f2a7ffadabeb0890f8fcf7f9365d9a3d2ef20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.33.5&lt;/td&gt;
&lt;td&gt;43960d74ba78ced9112aa5d46f58ffc053764a194e79631560b8ae79e17978ea&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.34.1&lt;/td&gt;
&lt;td&gt;be69bc3240dda743b185b8922e42ef2a535b24d4a01e83162e24c702d2214fea&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.34.1&lt;/td&gt;
&lt;td&gt;20bec465d22a385cf72de606a1a7ee599cc4b7e5cc81a7e7b7c4aecbb89606a0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.35.0&lt;/td&gt;
&lt;td&gt;ff2f7135ca0d3d1ecaa67d8463db4af75b06542024105c2b8fb6d0f02ddefc10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.35.0&lt;/td&gt;
&lt;td&gt;9d4b6dd4c9f9090ab8d20f1614f009b68c3479b07cdb347af57c3b5829932f05&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools:1.36.1&lt;/td&gt;
&lt;td&gt;ed52d7537780edd3c434f9233f875e1a59c73cc2b2b9426bc6f3d43a2ee2d079&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubernetes-tools-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubernetes-tools-airgap:1.36.1&lt;/td&gt;
&lt;td&gt;e3d89e76f9924d27b7073353fb597442a23aeed8f8d797f5b76537acefb2e8da&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;calico&lt;/td&gt;
&lt;td&gt;v3.29.1&lt;/td&gt;
&lt;td&gt;v3.29.1&lt;/td&gt;
&lt;td&gt;kubeops/calico:v3.29.2&lt;/td&gt;
&lt;td&gt;64c1c281c2a87b2a158fd182e14301a8bf6f19f9ea5b07aa8a5d5d7fe94d9698&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;calico-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/calico-airgap:v3.29.2&lt;/td&gt;
&lt;td&gt;5923f633ea4136a64f0c0ddf56069b109704b61e542a530378a686292b4d034c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cilium&lt;/td&gt;
&lt;td&gt;1.18.2&lt;/td&gt;
&lt;td&gt;1.18.2&lt;/td&gt;
&lt;td&gt;kubeops/cilium:v1.18.3&lt;/td&gt;
&lt;td&gt;c4913943eaf2bea8e5fc75c57792866a28bbd64e577e6e2b7b049dda69d067f7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cilium-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/cilium-airgap:v1.18.3&lt;/td&gt;
&lt;td&gt;a334071a23cdd2330ea2c723993e18822522c900481fabe7f1ee12b4c849f5ab&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multus&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/multus:snapshot-thick2&lt;/td&gt;
&lt;td&gt;186439bca4db89a9e23364bb77d000ccf906262d1db8d06716801563f9f9a72e&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;multus-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/multus-airgap:snapshot-thick2&lt;/td&gt;
&lt;td&gt;5a7f258eca3d534f37547de3c8126fba2c3e5e885fb6710abd62f08f22ede6de&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;wireguard-tools&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/wireguard-tools:v1.0.20210914&lt;/td&gt;
&lt;td&gt;a6a521dfef6a550a658a5626cb15ab935cb1bfff99f82a2ced7b21317ab12fed&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;helm&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/helm:v3.16.4&lt;/td&gt;
&lt;td&gt;8e2def3efd54f2d149235e3ef71116c37514f7dcda81e8c793e081120c16f323&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;podman&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/podman:5.2.2&lt;/td&gt;
&lt;td&gt;309d2cbae83687ef2bf151ad6486824348e807348bcd7cdadbecc1bc40db4f86&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ingress-nginx&lt;/td&gt;
&lt;td&gt;1.15.6&lt;/td&gt;
&lt;td&gt;4.15.6&lt;/td&gt;
&lt;td&gt;kubeops/ingress-nginx:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;57640157dbe06f169ab3e6a770a97bc83fb35269096bff37db498c5309e60bd3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;cert-manager&lt;/td&gt;
&lt;td&gt;v1.18.2&lt;/td&gt;
&lt;td&gt;v1.18.2&lt;/td&gt;
&lt;td&gt;kubeops/cert-manager:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;80870509663ad76eca9d2ec7147f43d1a89e21f1e31cb273d8d534c48621a47c&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opa-gatekeeper&lt;/td&gt;
&lt;td&gt;v3.17.1&lt;/td&gt;
&lt;td&gt;3.17.1&lt;/td&gt;
&lt;td&gt;kubeops/opa-gatekeeper:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;dae0d519d56b4044c771105047df68c76db61df4e2660309714a118b220b88a8&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;velero&lt;/td&gt;
&lt;td&gt;1.16.2&lt;/td&gt;
&lt;td&gt;10.1.0&lt;/td&gt;
&lt;td&gt;kubeops/velero:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;0769402efb9aae7f0d3c404aa5123f01d2324b1db167717147da324978a4d199&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rook-ceph&lt;/td&gt;
&lt;td&gt;v1.15.6&lt;/td&gt;
&lt;td&gt;v1.15.6&lt;/td&gt;
&lt;td&gt;kubeops/rook-ceph:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;0d98891d643524020f7062db66b6142b56d95933e8c118c456c4f24fc74e888d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;rook-ceph-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/rook-ceph-airgap:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;de2379884bcc658660706aef4729917f5fe41e093c8d9f5098d17a3dc2dd48b3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;harbor&lt;/td&gt;
&lt;td&gt;2.14.0&lt;/td&gt;
&lt;td&gt;1.18.0&lt;/td&gt;
&lt;td&gt;kubeops/harbor:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;34d3b20326be1be7e69d5242730394d4750c2b908378e543bc69b4d7a049db86&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;harbor-airgap&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/harbor-airgap:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;406e9fe9e8a77d900f3126e93c215f82d8dbbb680554f7ce003ecb5dec5f5c4f&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kube-prometheus-stack&lt;/td&gt;
&lt;td&gt;v0.85.0&lt;/td&gt;
&lt;td&gt;77.0.2&lt;/td&gt;
&lt;td&gt;kubeops/kube-prometheus-stack:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;bc2c5da217a58fa67040535dfbdd50933ee6f84411e7162e6c3de366275aa3c7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;keycloak&lt;/td&gt;
&lt;td&gt;16.8.0&lt;/td&gt;
&lt;td&gt;1.2.0&lt;/td&gt;
&lt;td&gt;kubeops/keycloak:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;a18016f2079eab2153a594f17bd0e91706eac6a264bbfabf4bd016d2e7148734&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubeops-dashboard&lt;/td&gt;
&lt;td&gt;0.26.0&lt;/td&gt;
&lt;td&gt;0.26.0&lt;/td&gt;
&lt;td&gt;kubeops/kubeops-dashboard:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;d4922db9d47c5569ae563a96d72524fa8a0e54b5e2578f1c71b91a5e214b484d&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;filebeat-os&lt;/td&gt;
&lt;td&gt;8.5.1&lt;/td&gt;
&lt;td&gt;8.5.1&lt;/td&gt;
&lt;td&gt;kubeops/filebeat-os:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;c98242a2488b0cd28782ba5435ca8bed6db6dc5a1d78625291192ad06a7db705&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;logstash-os&lt;/td&gt;
&lt;td&gt;8.4.0&lt;/td&gt;
&lt;td&gt;8.5.1&lt;/td&gt;
&lt;td&gt;kubeops/logstash-os:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;3e07746ce9b02d08ddcc65e111f64435c0603819ae197c14fa0516bf237826c7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opensearch-os&lt;/td&gt;
&lt;td&gt;3.4.0&lt;/td&gt;
&lt;td&gt;3.4.0&lt;/td&gt;
&lt;td&gt;kubeops/opensearch-os:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;755d96edd69433bbb2027833cea3768efc70ae717382b8dc89d2e290a18be3cf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;opensearch-dashboards&lt;/td&gt;
&lt;td&gt;3.4.0&lt;/td&gt;
&lt;td&gt;3.4.0&lt;/td&gt;
&lt;td&gt;kubeops/opensearch-dashboards:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;c7dcf941550bd41945cb589721a37f98f2e4593eb4d47d29499e12fd4f9a38ca&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;traefik&lt;/td&gt;
&lt;td&gt;v3.6.7&lt;/td&gt;
&lt;td&gt;39.0.0&lt;/td&gt;
&lt;td&gt;kubeops/traefik:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;a03d24eb8d153edcf4deefd8dd9a605be544e368018b9e9a0be06dcabe7579bf&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubevirt-manager&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubevirt-manager:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;22b89ccbd8b15fafd8ce25e7ba1b3c4818b81785e8d07d7414f022a1d52757a7&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;kubevirt&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;kubeops/kubevirt:2.2.0_Beta0&lt;/td&gt;
&lt;td&gt;c41a51da0fa7cc21d1fa0f10914acb62e6473fb27c0e34b68d6f4e435c50f361&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;



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