<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Kurator – Blog</title>
    <link>https://kurator.dev/blog/</link>
    <description>Recent content in Blog on Kurator</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Mon, 30 Oct 2023 00:00:00 +0000</lastBuildDate>
    
	  <atom:link href="https://kurator.dev/blog/index.xml" rel="self" type="application/rss+xml" />
    
    
      
        
      
    
    
    <item>
      <title>Blog: Kurator v0.5.0: Crafting a Unified Multi-Cluster Backup and Storage Experience</title>
      <link>https://kurator.dev/blog/0.5.0_release/</link>
      <pubDate>Mon, 30 Oct 2023 00:00:00 +0000</pubDate>
      
      <guid>https://kurator.dev/blog/0.5.0_release/</guid>
      <description>
        
        
        &lt;p&gt;Kurator is an open-source distributed cloud-native suite, designed to provide a one-stop solution for users looking to build their distributed cloud-native platform.
In the latest version v0.5.0, Kurator has enhanced its capabilities in application backup and recovery, as well as storage management in multi-cluster environments,
to meet the needs of complex deployments.
This update mainly introduces two new features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Unified Cluster Backup, Recovery, and Migration&lt;/strong&gt;:
Kurator now supports customized one-click backup and recovery of applications and resources across multiple clusters, with real-time monitoring of progress through a unified view.
It also offers a one-click migration feature for cross-cluster resources.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Unified Distributed Storage&lt;/strong&gt;:
Kurator implements a consistent distributed storage solution, enabling users to easily implement block, file, and object storage in a multi-cluster environment with one-stop deployment.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;unified-cluster-backup-recovery-and-migration&#34;&gt;Unified Cluster Backup, Recovery, and Migration&lt;/h2&gt;
&lt;p&gt;In the evolving landscape of multi-cloud and distributed environments, data security and recoverability have become paramount concerns for users.
For enterprises, data loss can be a devastating blow, potentially leading to severe business interruptions and reputational damage.
With Kubernetes becoming the industry standard, the complexity of data management increases alongside the growth in service numbers and cluster size, making efficient and flexible backup strategies crucial.&lt;/p&gt;
&lt;p&gt;Facing the expanding demands and challenges, traditional backup tools often show limitations in multi-environment setups, failing to provide a seamless unified solution.
Hence, Kurator&amp;rsquo;s unified backup solution was developed to offer a backup solution in this field.
Based on Velero, Kurator provides a one-click operation experience, allowing users to customize backups and recover applications and resources across multiple clusters.
With Kurator&amp;rsquo;s unified view feature, users can monitor the status and progress of backups in each cluster in real-time.
Its coverage includes Kubernetes native resources like Pods, Deployments, Services, and PersistentVolumes, meeting the diverse data protection needs of modern enterprises.&lt;/p&gt;
&lt;h3 id=&#34;unified-backup&#34;&gt;Unified Backup&lt;/h3&gt;
&lt;p&gt;Kurator&amp;rsquo;s backup solution offers a variety of choices to suit different data protection needs in various scenarios.
Its flexibility ensures that suitable backup strategies can be found for different business scenarios.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instant Backup&lt;/strong&gt;: In scenarios with frequent data changes, &amp;ldquo;instant backup&amp;rdquo; can quickly provide protection, ensuring the integrity of critical data at key moments.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scheduled Backup&lt;/strong&gt;: For data that changes less frequently but still requires persistent protection,
&amp;ldquo;scheduled backup&amp;rdquo; can automatically perform backups at preset intervals, meeting compliance requirements and ensuring data security.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Additionally, Kurator provides a range of highly customizable backup options.
For example, &amp;ldquo;specific cluster backup&amp;rdquo; allows operational teams to selectively back up specific clusters based on policies or specific needs.
The &amp;ldquo;resource filtering&amp;rdquo; feature provides fine-grained control, enabling administrators to precisely define the scope of backups based on attributes such as resource names, namespaces, or labels.&lt;/p&gt;
&lt;p&gt;These backup strategies&amp;rsquo; diversity and automation capabilities provide stable and reliable data protection in the ever-changing business landscape.&lt;/p&gt;
&lt;p&gt;Here is a practical example of unified backup:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: backup.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Backup
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: select-labels
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  destination:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    fleet: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  policy:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    resourceFilter:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      labelSelector:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        matchLabels:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          app: busybox
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    ttl: 720h
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;status:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  backupDetails:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  - backupNameInCluster: kurator-member1-backup-default-select-labels
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    backupStatusInCluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      completionTimestamp: &amp;#34;2023-10-28T03:37:13Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      expiration: &amp;#34;2023-11-27T03:37:07Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      formatVersion: 1.1.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      phase: Completed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      progress:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        itemsBackedUp: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        totalItems: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      startTimestamp: &amp;#34;2023-10-28T03:37:07Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      version: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterKind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterName: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  - backupNameInCluster: kurator-member2-backup-default-select-labels
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    backupStatusInCluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      completionTimestamp: &amp;#34;2023-10-28T03:37:13Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      expiration: &amp;#34;2023-11-27T03:37:07Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      formatVersion: 1.1.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      phase: Completed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      progress: {}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      startTimestamp: &amp;#34;2023-10-28T03:37:07Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      version: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterKind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterName: kurator-member2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Observing the spec configuration, the backup target is resources labeled with app:busybox across all clusters in the Fleet.
By configuring policies in the spec, relevant resources are ensured to be backed up.
The status allows real-time tracking of the backup task&amp;rsquo;s execution in each cluster, such as kurator-member1 and kurator-member2, maintaining transparency in operations.&lt;/p&gt;
&lt;p&gt;🔗 For more examples and details, please refer to: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/backup/backup/&#34;&gt;Kurator Backup Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;unified-recovery&#34;&gt;Unified Recovery&lt;/h3&gt;
&lt;p&gt;Based on the backup data generated from unified backups, Kurator supports cross-cluster application and resource recovery through its unified recovery feature.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Instant Backup Recovery&lt;/strong&gt;: Based on the backup data created from &amp;ldquo;instant backup,&amp;rdquo; you can quickly restore to a specified critical moment&amp;rsquo;s state.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scheduled Backup Recovery&lt;/strong&gt;: For &amp;ldquo;scheduled backup,&amp;rdquo; Kurator supports restoring backup data to the point of the last successful backup execution.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Similar to the backup function, Kurator also provides diverse and customizable options in recovery.
For example, &amp;ldquo;specific cluster recovery&amp;rdquo; allows users to restore data to designated clusters without covering all clusters included in the backup. The &amp;ldquo;resource filtering&amp;rdquo; feature enables further selection of backup data, allowing selective restoration of needed data items. Users can define the scope of recovery based on backup names, namespaces, or labels, enhancing the recovery process&amp;rsquo;s flexibility and ensuring high precision.&lt;/p&gt;
&lt;p&gt;Refer to the following operational example to understand how to use Kurator for unified recovery:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: backup.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Restore
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: minimal
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  backupName: select-labels
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;status:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  restoreDetails:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  - clusterKind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterName: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    restoreNameInCluster: kurator-member1-restore-default-minimal
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    restoreStatusInCluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      completionTimestamp: &amp;#34;2023-10-28T09:24:07Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      phase: Completed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      progress:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        itemsRestored: 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        totalItems: 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      startTimestamp: &amp;#34;2023-10-28T09:24:05Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  - clusterKind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterName: kurator-member2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    restoreNameInCluster: kurator-member2-restore-default-minimal
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    restoreStatusInCluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      completionTimestamp: &amp;#34;2023-10-28T09:24:07Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      phase: Completed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      progress:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        itemsRestored: 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        totalItems: 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      startTimestamp: &amp;#34;2023-10-28T09:24:05Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;By examining the recovery task&amp;rsquo;s spec configuration, we can confirm that this recovery operation targets the previously mentioned backup data labeled as select-labels.
Here, the minimum configuration is used, not filtering during recovery but directly restoring according to the backup&amp;rsquo;s settings.
In the status, the execution condition of the recovery task in each cluster can be tracked in real-time.&lt;/p&gt;
&lt;p&gt;🔗 For more examples and details, please refer to: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/backup/restore/&#34;&gt;Kurator Recovery Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;unified-migration&#34;&gt;Unified Migration&lt;/h3&gt;
&lt;p&gt;Unified migration aims to simplify the process of migrating applications and their resources from one cluster to several others.
Users need to define a migrate-type resource configuration, specifying source clusters, target clusters, and related policies.
Similar to Kurator&amp;rsquo;s unified backup and recovery functions, users can also perform a wealth of customized configurations.&lt;/p&gt;
&lt;p&gt;Once the configuration is complete, Kurator&amp;rsquo;s corresponding controllers will automatically start the migration tasks.
This series of tasks includes uploading resources from the source cluster to object storage and eventually migrating to the designated target clusters.
The specific migration process can be referred to in the following diagram:&lt;/p&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/../docs/fleet-manager/backup/image/migrate.svg&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/../docs/fleet-manager/backup/image/migrate.svg&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;Compared to using Velero, Kurator provides a more integrated and clear migration process description.
All necessary configuration details are centralized in a single migrate object, thus reducing the configuration burden as the number of target clusters increases.
Additionally, Kurator automatically manages the entire process from creating backups to completing migration,
simplifying operational procedures and reducing the risk of manual errors.
Moreover, users can also monitor the migration progress in multiple clusters in real-time through this single object,
staying informed of the latest migration status and ensuring the entire process runs as expected.&lt;/p&gt;
&lt;p&gt;Here is a practical example of unified migration:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: backup.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Migrate
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: select-labels
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  policy:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    resourceFilter:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      labelSelector:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        matchLabels:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          app: busybox
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  sourceCluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      name: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    fleet: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  targetCluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      name: kurator-member2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    fleet: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;status:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  conditions:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  - lastTransitionTime: &amp;#34;2023-10-28T15:55:23Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    status: &amp;#34;True&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    type: sourceReady
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  phase: Completed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  sourceClusterStatus:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    backupNameInCluster: kurator-member1-migrate-default-select-labels
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    backupStatusInCluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      completionTimestamp: &amp;#34;2023-10-28T15:55:18Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      expiration: &amp;#34;2023-11-27T15:55:13Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      formatVersion: 1.1.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      phase: Completed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      progress: {}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      startTimestamp: &amp;#34;2023-10-28T15:55:13Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      version: 1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterKind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterName: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  targetClusterStatus:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  - clusterKind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    clusterName: kurator-member2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    restoreNameInCluster: kurator-member2-migrate-default-select-labels
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    restoreStatusInCluster:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      completionTimestamp: &amp;#34;2023-10-28T15:56:00Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      phase: Completed
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      startTimestamp: &amp;#34;2023-10-28T15:55:58Z&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the spec configuration, the source cluster is set as kurator-member1, with the target cluster being kurator-member2,
focusing the migration process only on resources containing the label app:busybox.
In the status, the migration phase displays as Completed, indicating that the migration operation has been accomplished.
sourceClusterStatus and targetClusterStatus provide details of the backup in the source cluster and the recovery in the target cluster, respectively.&lt;/p&gt;
&lt;p&gt;🔗 For more details, please refer to: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/backup/migrate/&#34;&gt;Kurator Migration Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;unified-distributed-storage&#34;&gt;Unified Distributed Storage&lt;/h2&gt;
&lt;p&gt;Distributed storage, an indispensable part of modern cloud-native architectures, provides scalability and reliability of data.
However, implementing a consistent distributed storage solution across different clusters often involves complex configurations and management tasks.&lt;/p&gt;
&lt;p&gt;Kurator is committed to simplifying the deployment and management of distributed storage.
Based on the leading open-source project Rook, Kurator supports easy and automated management of distributed storage across multiple clusters.
This includes various storage types such as block, filesystem, and object storage, to meet the demands of various application scenarios.&lt;/p&gt;
&lt;p&gt;Utilizing the Fleet plugin, Kurator offers a one-click cross-cluster deployment solution for distributed storage,
simplifying configuration steps and significantly reducing the likelihood of configuration errors. The architecture is illustrated in the following diagram:&lt;/p&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/../docs/fleet-manager/image/distributedstorage.svg&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/../docs/fleet-manager/image/distributedstorage.svg&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;Here is an example of deploying multi-cluster distributed storage through the Fleet plugin:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: fleet.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Fleet
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  clusters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - name: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - name: kurator-member2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  plugin:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    distributedStorage:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      storage:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        dataDirHostPath: /var/lib/rook
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        monitor:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          count: 3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          labels:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;            role: MonitorNodeLabel
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        manager:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          count: 2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          labels:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;            role: ManagerNodeLabel
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the spec, clusters indicate where the storage will be deployed.
In the status, under the plugin configuration, distributedStorage signifies the installation of a distributed storage plugin.
Additionally, dataDirHostPath defines the storage path, while monitor and manager configurations specify parameters for the Ceph components.&lt;/p&gt;
&lt;p&gt;🔗 For more examples and details, please refer to: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/distributedstorage-plugin/&#34;&gt;Kurator Distributed Storage Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;reference-links&#34;&gt;Reference Links&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Unified Backup Recovery Migration Feature Introduction: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/backup/&#34;&gt;Kurator Backup Recovery Migration&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Fleet Backup Plugin Installation: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/backup/backup-plugin/&#34;&gt;Fleet Backup Plugin&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unified Backup Operation Guide: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/backup/backup/&#34;&gt;Kurator Backup Operation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unified Recovery Operation Guide: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/backup/restore/&#34;&gt;Kurator Recovery Operation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unified Migration Operation Guide: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/backup/migrate/&#34;&gt;Kurator Migration Operation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Unified Distributed Storage Operation Guide: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/distributedstorage-plugin/&#34;&gt;Kurator Distributed Storage Operation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;community-contact-information&#34;&gt;Community Contact Information&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;GitHub: &lt;a href=&#34;https://github.com/kurator-dev/kurator&#34;&gt;Kurator on GitHub&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kurator Homepage: &lt;a href=&#34;https://kurator.dev/&#34;&gt;Kurator Website&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Slack: &lt;a href=&#34;https://join.slack.com/t/kurator-hq/shared_invite/zt-1sowqzfnl-Vu1AhxgAjSr1XnaFoogq0A&#34;&gt;Join Kurator on Slack&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Kurator v0.4.0: Leading a New Chapter in Distributed Cloud-Native Management</title>
      <link>https://kurator.dev/blog/0.4.0_release/</link>
      <pubDate>Wed, 28 Jun 2023 00:00:00 +0000</pubDate>
      
      <guid>https://kurator.dev/blog/0.4.0_release/</guid>
      <description>
        
        
        &lt;p&gt;Kurator is an open-source distributed cloud-native platform that integrates numerous mainstream cloud-native software stacks, such as Kubernetes, Istio, Prometheus, etc.
It is designed to help users build and manage their distributed cloud-native infrastructure, thus driving the digital transformation of enterprises.
Kurator embodies the concept of &amp;ldquo;Infrastructure as Code,&amp;rdquo; allowing users to manage infrastructure in cloud, edge, or local environments declaratively.
Its &amp;ldquo;out-of-the-box&amp;rdquo; feature enables users to install cloud-native software stacks with a single click.
Leveraging Fleet, Kurator further offers unified management of multi-cloud and multi-cluster environments, greatly enhancing management efficiency.&lt;/p&gt;
&lt;p&gt;In the newly released version v0.4.0, Kurator further enriches the unified management capabilities for applications in distributed cloud-native scenarios
to better meet the complex requirements of multi-cloud environments. This update primarily includes the following four aspects:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Adopting GitOps and utilizing Fleet for unified application distribution in multi-cloud environments.
This new approach reduces the complexity of configuration in multi-cloud heterogeneous environments and simplifies the management process of distributed deployment.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Providing a unified cluster metric monitoring solution based on Fleet, Prometheus, and Thanos.
This solution aims to improve the comprehensiveness, accuracy, and real-time nature of metric monitoring in complex multi-cloud and multi-cluster environments,
thereby increasing operational efficiency and reducing complexity.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Utilizing Kyverno and Fleet for unified policy management in multi-cloud and multi-cluster environments.
This feature will enhance the efficiency of policy management, ensuring consistency and security of policies across all clusters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Introducing a new cluster type called &amp;ldquo;Attached Cluster.&amp;rdquo;
This type allows Kurator to manage Kubernetes clusters built by any tool, located anywhere, further strengthening Kurator&amp;rsquo;s management of distributed cloud environments.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;unified-application-distribution&#34;&gt;Unified Application Distribution&lt;/h2&gt;
&lt;p&gt;As multi-cloud and multi-cluster become more common, effectively deploying and distributing applications in distributed cloud-native environments is becoming increasingly important.
Kurator&amp;rsquo;s unified application distribution function aims to solve the following problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Cumbersome configuration for multi-cloud, multi-cluster environments:
In traditional multi-cloud environments, deploying the same application in each environment requires complex configuration,
increasing the difficulty of deployment and consuming unnecessary time and human resources.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Maintaining version consistency challenges:
In distributed multi-cloud environments, keeping the application version consistent across all clusters and updating them in a timely manner is challenging.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Difficulties in managing distributed deployments:
After deploying applications in various clusters, one must enter each cluster separately to check whether the deployment was successful and view the deployment status.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kurator&amp;rsquo;s unified application distribution function uses GitOps, making it possible to deploy applications to multiple cloud environments with one click and simplifying the configuration process. This method ensures that the application versions in each cluster remain consistent and can be updated promptly. On the Kurator host cluster, users can view and manage the application deployment status of all clusters in a unified manner, thereby improving operational efficiency.&lt;/p&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/../docs/fleet-manager/image/fleet-application.svg&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/../docs/fleet-manager/image/fleet-application.svg&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;Kurator, based on FluxCD, optimizes deployment efficiency and accuracy with automated application synchronization and deployment processes.
Leveraging the advantages of Fleet, it can flexibly adapt to various business and cluster needs, meeting the diverse requirements of users for application distribution.&lt;/p&gt;
&lt;p&gt;Kurator&amp;rsquo;s unified application distribution function provides rich and flexible configuration options.
Users can define key parameters such as the application&amp;rsquo;s source and synchronization policy through YAML configuration files. Additionally, Kurator supports a combination of various source types (including gitRepository, helmRelease, etc.) and synchronization strategies.&lt;/p&gt;
&lt;p&gt;Here is an example of unified application distribution:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: apps.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Application
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: gitrepo-kustomization-demo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  source:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    gitRepository:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      interval: 3m0s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      ref:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        branch: master
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      timeout: 1m0s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      url: https://github.com/stefanprodan/podinfo
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  syncPolicies:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - destination:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        fleet: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kustomization:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        interval: 5m0s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        path: ./deploy/webapp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        prune: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        timeout: 2m0s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - destination:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        fleet: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kustomization:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        targetNamespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        interval: 5m0s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        path: ./kustomize
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        prune: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        timeout: 2m0s
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This example configuration demonstrates how to achieve unified application distribution across multiple clusters with Kurator:
retrieving application configuration from a Git source, followed by synchronization and deployment through Fleet. Users only need simple configuration to quickly deploy applications to multiple clusters.&lt;/p&gt;
&lt;p&gt;For more examples and related information, please refer to: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/application/&#34;&gt;Kurator Unified Application Distribution Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;unified-cluster-metric-monitoring&#34;&gt;Unified Cluster Metric Monitoring&lt;/h2&gt;
&lt;p&gt;In complex multi-cloud and multi-cluster environments, unified cluster metric monitoring can enhance work efficiency and reduce operational complexity.
Many enterprises face the challenge of effectively monitoring and managing across various clusters to ensure service stability and optimize resource utilization.&lt;/p&gt;
&lt;p&gt;Single monitoring tools often fail to meet the needs for comprehensive, timely, and accurate monitoring.
This requires operational personnel to enter each cluster separately for checks, increasing the workload and potentially leading to missed or delayed critical metric information. Moreover, different clusters may have different requirements, making management even more complex.&lt;/p&gt;
&lt;p&gt;To address these issues, Kurator offers a multi-cluster metric monitoring solution based on Prometheus, Thanos, Grafana, and Fleet,
enabling users to easily achieve unified metric monitoring across multiple clusters.&lt;/p&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/../docs/fleet-manager/image/fleet-metric.svg&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/../docs/fleet-manager/image/fleet-metric.svg&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;Typically, the process of achieving unified metric monitoring in multi-cluster environments can be summarized as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Each cluster runs a Prometheus instance responsible for collecting local monitoring data.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Each Prometheus instance is accompanied by a Thanos Sidecar, which pushes the data collected by Prometheus to remote storage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Thanos Query aggregates data from all Thanos Sidecars and remote storage, providing a unified query interface.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Grafana connects to Thanos Query, thus displaying a unified monitoring view of all clusters.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With the capabilities of Kurator&amp;rsquo;s Fleet, users do not have to handle the above complex process themselves.
Users simply define related configurations in Fleet, and the Fleet Manager automatically completes the process.&lt;/p&gt;
&lt;p&gt;Here is an example Fleet configuration that can complete the above process:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: fleet.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Fleet
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  clusters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - name: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - name: kurator-member2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  plugin:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    metric:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      thanos:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        objectStoreConfig:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          secretName: thanos-objstore
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;grafana: {}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After executing the above configuration, the Fleet Manager will install Prometheus and Thanos Sidecar on both the kurator-member1 and kurator-member2 clusters.
Then, users can view the unified monitoring view of all clusters on the Kurator host through the Grafana dashboard.&lt;/p&gt;
&lt;p&gt;For more details on using unified cluster metric monitoring, please refer to: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/metric-plugin/&#34;&gt;Kurator Unified Cluster Metric Monitoring Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;unified-policy-management&#34;&gt;Unified Policy Management&lt;/h2&gt;
&lt;p&gt;In the distributed cloud environment, to meet the unified security protection needs of multi-cloud and multi-cluster,
Kurator introduces unified policy management functionality to solve the following problems:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Inability to manage policies across multiple clusters and apply the same policy across clusters.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Scattered management of policies in multiple sub-clusters, leading to redundancy and high complexity, preventing unified, efficient configuration and management.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Inability to uniformly limit resource usage across multiple clusters to ensure all clusters follow the same operational rules and business requirements.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Kurator&amp;rsquo;s policy management capability is based on Kyverno and utilizes Fleet to implement the cross-cluster distribution and application of policies.
This mechanism allows for unified and efficient management of policies across the entire cluster group, avoiding the complexity of managing policies in each sub-cluster separately.&lt;/p&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/../docs/fleet-manager/image/fleet-policy.svg&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/../docs/fleet-manager/image/fleet-policy.svg&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;Kurator&amp;rsquo;s policy management capability is nearly identical to policy management in a single Kubernetes cluster,
allowing users to quickly familiarize themselves and get started. Here is an example of implementing unified policy management in Fleet with Kurator:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: fleet.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Fleet
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  clusters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - name: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - name: kurator-member2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kind: Cluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - name: kurator-member3
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kind: CustomCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  plugin:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    policy:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kyverno:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        podSecurity:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          standard: baseline
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          severity: high
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;          validationFailureAction: Audit
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the above configuration file, we apply a Pod security policy with podSecurityStandard as baseline and podSecuritySeverity as high to the clusters in Fleet.
When Pod configurations violate the security policy, the corresponding events are recorded in the PolicyReport during their creation process;
when validationFailureAction is set to Enforce, the creation or update of illegal resources will be intercepted.
All clusters in Fleet will apply this policy, and application operations and development personnel will adjust and configure applications following these Pod security regulations.
With Kurator&amp;rsquo;s unified policy management capability, policy management efficiency can be effectively improved while ensuring the consistency and security of policies across all clusters.&lt;/p&gt;
&lt;p&gt;For more information on Kurator&amp;rsquo;s unified policy management, please refer to: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/policy/&#34;&gt;Kurator Unified Policy Management Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;attachedcluster&#34;&gt;AttachedCluster&lt;/h2&gt;
&lt;p&gt;In the world of cloud-native, the complexity and diversity of infrastructure are unavoidable challenges.
For large organizations or companies, they may have deployed multiple Kubernetes clusters in different environments,
created by various tools and distributed around the world. To better address this issue, Kurator introduces a new type of cluster in its latest version, the AttachedCluster.&lt;/p&gt;
&lt;p&gt;The main purpose of the AttachedCluster is to manage Kubernetes clusters that were not created by Kurator but need to be included in the Kurator fleet management scope.
These clusters can be created by any tool and located anywhere.
The introduction of this new cluster type extends Kurator&amp;rsquo;s management capabilities to effectively manage truly distributed cloud environments.
In practice, users need to create AttachedCluster resources for Kubernetes clusters they plan to manage with Kurator.
These resources contain the cluster&amp;rsquo;s connection and authentication information, securely stored and managed through Secret.
With this information, Kurator can effectively interact with and manage these clusters.&lt;/p&gt;
&lt;p&gt;Here is an example:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: cluster.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  kubeconfig:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    name: kurator-member1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    key: kurator-member1.config
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Once the AttachedCluster resources are created, users also need to add these resources to the Kurator Fleet to include these clusters in Kurator&amp;rsquo;s management scope.
In this way, regardless of where these clusters are or what tools created them, they can be uniformly managed and monitored in Kurator.&lt;/p&gt;
&lt;p&gt;Here is an example of adding the above AttachedCluster to the Fleet:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: fleet.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Fleet 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: quickstart
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  clusters:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - name: kurator-member1 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      kind: AttachedCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;With the introduction of AttachedCluster, Kurator provides convenient management of all Kubernetes clusters on a unified platform,
avoiding frequent switching between various tools and effectively monitoring and managing clusters in the distributed cloud environment.
This improvement not only strengthens Kurator&amp;rsquo;s management capabilities in the cloud-native field but also expands its management scope,
significantly enhancing Kurator&amp;rsquo;s adaptability and management efficiency in handling complex and diverse cloud computing environments.&lt;/p&gt;
&lt;p&gt;For more information on Kurator&amp;rsquo;s unified policy management, please refer to: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/manage-attachedcluster/&#34;&gt;Kurator AttachedCluster Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;reference-links&#34;&gt;Reference Links&lt;/h2&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/kurator-dev/kurator/releases/tag/v0.4.0&#34;&gt;Release Notes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kurator.dev/docs/fleet-manager/application/&#34;&gt;Unified Application Distribution Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kurator.dev/docs/fleet-manager/metric-plugin/&#34;&gt;Unified Cluster Metrics Monitoring Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kurator.dev/docs/fleet-manager/policy/&#34;&gt;Unified Policy Management Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kurator.dev/docs/fleet-manager/manage-attachedcluster/&#34;&gt;AttachedCluster Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kurator.dev/docs/fleet-manager/&#34;&gt;Fleet Manager Documentation&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://github.com/kurator-dev/kurator&#34;&gt;GitHub Address&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kurator.dev/&#34;&gt;Kurator Homepage&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://join.slack.com/t/kurator-hq/shared_invite/zt-1sowqzfnl-Vu1AhxgAjSr1XnaFoogq0A&#34;&gt;Slack Address&lt;/a&gt;&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Kubernetes Cluster Management: Kurator or Kubespray</title>
      <link>https://kurator.dev/blog/kurator_or_kubespray/</link>
      <pubDate>Sat, 27 May 2023 00:00:00 +0000</pubDate>
      
      <guid>https://kurator.dev/blog/kurator_or_kubespray/</guid>
      <description>
        
        
        &lt;p&gt;As cloud computing technology rapidly evolves, Kubernetes has become the de facto standard in the container orchestration domain.
Users can automate the deployment, scaling, and management of containerized applications through Kubernetes.
However, creating highly reliable Kubernetes clusters in different cloud environments can be complex and time-consuming.
In response, many users have started looking for tools that can automate the deployment and management of Kubernetes clusters,
with Kubespray and Kurator being typical representatives of such open-source tools.
This article will compare these two tools.&lt;/p&gt;
&lt;h2 id=&#34;kubespray&#34;&gt;Kubespray&lt;/h2&gt;
&lt;p&gt;Kubespray is an open-source project aimed at helping users deploy and manage Kubernetes clusters in multi-cloud environments.
To achieve this, Kubespray utilizes Ansible, a trusted open-source automation tool used for automated application deployment, configuration management, and task execution.
Based on this, Kubespray can deploy on various cloud platforms such as AWS, GCE, Azure, OpenStack, as well as on bare metal hardware. Additionally, Kubespray has the following advantages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Support for high-availability clusters&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Composable properties like network plugins&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Support for various popular Linux distributions&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Continuous integration testing&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Using Kubespray, users can choose to execute an Ansible script,
which then communicates with each target host via SSH protocol and performs tasks such as cluster deployment, cleanup, and upgrades based on the script.&lt;/p&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/image/kubespray-arch.svg&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/image/kubespray-arch.svg&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;h2 id=&#34;kurator&#34;&gt;Kurator&lt;/h2&gt;
&lt;p&gt;Kurator, developed by a cloud-native team, draws from years of excellent practice in the field of distributed cloud-native technology.
While Kurator manages the lifecycle of local data center clusters based on Kubespray,
its main difference lies in the more understandable and configurable cloud-native declarative approach to cluster management.
Specifically, Kurator has designed declarative APIs to express the desired state of a Kubernetes cluster (such as cluster version, node scale, network configuration, etc.) and manages the cluster lifecycle through the Cluster Operator. This approach greatly simplifies user operations: users only need to declare the desired state in the API object, and all remaining tasks can be automatically completed by Kurator&amp;rsquo;s Cluster Operator. In distributed cloud scenarios, this declarative method provides higher automation and better scalability, making management and operation more convenient and efficient.&lt;/p&gt;
&lt;p&gt;The following example shows how to use Kurator to deploy a local data center Kubernetes cluster:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install Kurator&amp;rsquo;s Cluster Operator on machines with an already installed Kubernetes cluster.&lt;/li&gt;
&lt;li&gt;Create a secret containing SSH keys (an object in Kubernetes used to store sensitive data).&lt;/li&gt;
&lt;li&gt;Declare CRDs (Custom Resource Definitions) containing machine and cluster information.&lt;/li&gt;
&lt;li&gt;Apply these CRDs to the cluster, and the Cluster Operator will start the automatic installation of the target cluster.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Here are some CRD instances used in the above steps:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;CustomMachine for declaring target cluster host information&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;CustomCluster for declaring cluster properties like network plugins and high availability&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;KubeadmControlPlane for declaring cluster control plane configurations&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The following code example shows how to define &amp;lsquo;CustomMachine&amp;rsquo; and &amp;lsquo;CustomCluster&amp;rsquo;.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: CustomMachine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: cc-custommachine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  master:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - hostName: master1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      publicIP: 200.x.x.1 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      privateIP: 192.x.x.1 
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      sshKey:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        apiVersion: v1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        kind: Secret
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        name: cluster-secret
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  node:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    - hostName: node1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      publicIP: 200.x.x.2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      privateIP: 192.x.x.2
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;      sshKey:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        apiVersion: v1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        kind: Secret
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;        name: cluster-secret
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;---
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: infrastructure.cluster.x-k8s.io/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: CustomCluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  name: cc-customcluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  cni:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    type: cilium
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  controlPlaneConfig:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    address: 192.x.x.0
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    certSANs: [200.x.x.1,200.x.x.2]
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  machineRef:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    apiVersion: cluster.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    kind: CustomMachine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    name: cc-custommachine
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;    namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;  ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h3 id=&#34;implementation-details-of-the-cluster-operator&#34;&gt;Implementation details of the Cluster Operator&lt;/h3&gt;
&lt;p&gt;In a Kubernetes environment, once these custom resources (CRs) are created or updated, related events are sent to the API server.
The Cluster Operator listens to these CR-related events and creates corresponding manager workers based on the desired state (defined by the spec fields) to adjust the state, i.e.,
from the current state to the desired state.&lt;/p&gt;
&lt;p&gt;These manager workers, created and managed by the Cluster Operator, are special Pods capable of executing the corresponding Ansible cluster management commands to adjust the state.
Depending on the difference between the current state and the desired state, the Cluster Operator creates different workers for different adjustments.
The Cluster Operator also monitors the completion of these workers to confirm task completion and state updates.&lt;/p&gt;
&lt;p&gt;Apart from cluster creation and deletion, processes like cluster node scaling and upgrades follow the same procedure.
For example, to upgrade, one simply modifies the version field in the KubeadmControlPlane.
Similarly, for scaling, one just adds or deletes node information fields in CustomMachine.&lt;/p&gt;
&lt;p&gt;The entire process is illustrated in the following diagram:&lt;/p&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/image/customcluster-controller.svg&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/image/customcluster-controller.svg&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;h2 id=&#34;comparison-of-kubespray-and-kurator&#34;&gt;Comparison of Kubespray and Kurator&lt;/h2&gt;
&lt;p&gt;Both Kurator and Kubespray can deploy production-ready Kubernetes clusters in various cloud environments.
Kubespray has the previously mentioned advantages, including high-availability options. Kurator inherits Kubespray&amp;rsquo;s capabilities and also supports high availability.
However, these two differ significantly in technical implementation, user experience, and project vision and community.&lt;/p&gt;
&lt;h3 id=&#34;technical-implementation&#34;&gt;Technical Implementation&lt;/h3&gt;
&lt;p&gt;In Kubespray, cluster configuration is mainly done through inventory files and variable files.
The inventory file defines the hosts that Ansible needs to manage, while the variable file customizes the Kubernetes cluster.
In terms of cluster management, Kubespray relies on executing a series of Ansible playbook commands.
Each type of cluster operation has a corresponding Ansible script, covering cluster deployment, scaling, upgrades, and lifecycle management.
Executing these scripts requires using the Ansible-playbook command, including the script, access permissions, and other parameter information.&lt;/p&gt;
&lt;p&gt;In contrast, Kurator&amp;rsquo;s implementation method differs. In Kurator, all configuration information is unified in API objects.
This means users do not need to manage these configurations from Ansible&amp;rsquo;s perspective but through declaring API object states.
For example, once a user declares the desired state of an API object, the Cluster Operator automatically triggers and executes the corresponding operation.
Users do not need to know the specific Ansible scripts used, making the operation more concise and intuitive.&lt;/p&gt;
&lt;p&gt;Overall, while Kubespray provides more flexible customization,
Kurator offers a simpler and more intuitive cluster configuration and management method with better scalability in a cloud-native environment.&lt;/p&gt;
&lt;h3 id=&#34;user-experience&#34;&gt;User Experience&lt;/h3&gt;
&lt;p&gt;As mentioned above, in Kubespray, users need to configure inventory files and variable files, adjust, and execute corresponding Ansible commands based on their needs.&lt;/p&gt;
&lt;p&gt;Kurator, on the other hand, uses declarative configuration to manage local Kubernetes clusters, aligning highly with Kubernetes&amp;rsquo; core design philosophy.
Therefore, for Kubernetes users, Kurator is easier to understand and has a lower learning curve.
Compared to Kurator&amp;rsquo;s approach of merely describing the desired state, Kubespray&amp;rsquo;s use of Ansible commands may pose a learning challenge for users without Ansible experience.&lt;/p&gt;
&lt;p&gt;Additionally, by using API objects, Kurator can save cluster information and management operation records, facilitating user review and tracking.
Since the current cluster information is preserved, Kurator can also perform pre-checks before executing operations.
For instance, when a user wants to upgrade the Kubernetes version of a cluster, Kurator can judge the appropriateness of the upgrade span before starting the operation.&lt;/p&gt;
&lt;p&gt;With the Operator pattern, Kurator can automate the creation and management of clusters.
If a cluster operation fails, users can delete the erroneous worker, and Kurator will immediately automatically create a new,
functionally identical cluster management worker, ensuring operation idempotency, i.e., repeated operations do not change the system state.&lt;/p&gt;
&lt;p&gt;This highly automated approach helps reduce the time and cost of manual intervention, thereby lowering the incidence of human error and improving overall efficiency.&lt;/p&gt;
&lt;h3 id=&#34;project-vision-and-community&#34;&gt;Project Vision and Community&lt;/h3&gt;
&lt;p&gt;In terms of community vision, Kubespray is positioned to deploy production-ready Kubernetes clusters in various cloud environments
and does not focus on managing clusters in distributed cloud environments.
In contrast, Kurator aims to be a one-click distributed cloud-native suite.
Beyond supporting cluster deployment in various cloud environments,
Kurator&amp;rsquo;s broader goal is to help users build a personalized distributed cloud-native infrastructure
to support business distributed upgrades across different cloud and edge environments.
Therefore, Kurator&amp;rsquo;s latest version introduces the concept of &amp;ldquo;fleet&amp;rdquo; to provide the ability to consistently manage clusters distributed in any cloud environment.&lt;/p&gt;
&lt;p&gt;Additionally, there is a clear difference in the stages of community development.
Kubespray is currently very active and mature, with a large number of contributors and users.
In contrast, Kurator is still in its early stages but is full of potential and innovation.
The Kurator community gathers experienced open-source project contributors and highly values and respects the discussions and contributions of each participant.
For newcomers to Kubernetes, Kurator can help easily create clusters and integrate common open-source tools, facilitating a better experience with cloud-native technology.
For developers seeking breakthroughs and innovation, Kurator also offers ample space for exploration.&lt;/p&gt;
&lt;h2 id=&#34;conclusion-and-outlook&#34;&gt;Conclusion and Outlook&lt;/h2&gt;
&lt;p&gt;The following comparison table summarizes the differences between Kubespray and Kurator in various aspects:&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Comparison Aspect&lt;/th&gt;
&lt;th&gt;Kubespray&lt;/th&gt;
&lt;th&gt;Kurator&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Underlying Implementation&lt;/td&gt;
&lt;td&gt;Ansible&lt;/td&gt;
&lt;td&gt;Ansible&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-Cloud Environment Cluster Deployment&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reliability&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;td&gt;High&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cluster Configuration and Management&lt;/td&gt;
&lt;td&gt;Inventory/Variable Files + Ansible Commands&lt;/td&gt;
&lt;td&gt;API Objects + Automated Cluster Operator&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User Friendliness&lt;/td&gt;
&lt;td&gt;High customization capability, possibly requiring more learning&lt;/td&gt;
&lt;td&gt;Simplified configuration management, reducing learning costs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Community&lt;/td&gt;
&lt;td&gt;Active and mature community&lt;/td&gt;
&lt;td&gt;Early stage, full of innovation and development potential&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Suitable Scenarios&lt;/td&gt;
&lt;td&gt;Deploying and managing clusters&lt;/td&gt;
&lt;td&gt;Building distributed cloud platforms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;From the comparison above, Kubespray and Kurator each have their strengths and characteristics.
Kubespray is a mature project with an active community and a high degree of cluster customization.
However, Kurator offers more simplified and user-friendly configuration management, making it easier for users to get started and use.
Although Kurator&amp;rsquo;s community is currently not as large as Kubespray&amp;rsquo;s, it is full of innovation and development potential.
Therefore, whether you are a newcomer to Kubernetes or a developer seeking innovation and potential, Kurator can meet your needs.&lt;/p&gt;
&lt;p&gt;In future development plans, Kurator will further strengthen its management of the Kubernetes cluster lifecycle,
enhancing cluster management capabilities, providing cross-cloud, cross-region, cross-cluster unified and consistent policy management to ensure security and compliance&lt;/p&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Kurator v0.3.0 Version Released! Cluster Fleet Powering Unified Management of Distributed Clouds</title>
      <link>https://kurator.dev/blog/0.3.0_release/</link>
      <pubDate>Sat, 08 Apr 2023 00:00:00 +0000</pubDate>
      
      <guid>https://kurator.dev/blog/0.3.0_release/</guid>
      <description>
        
        
        &lt;p&gt;April 8, 2023 - Kurator officially releases version v0.3.0.&lt;/p&gt;
&lt;p&gt;Kurator is an open-source distributed cloud-native suite that helps users construct a personalized distributed cloud-native infrastructure by integrating mainstream open-source technology stacks, thus facilitating the digital transformation and distributed upgrade of enterprise businesses. The v0.2 version of Kurator already had the core capability to manage multi-cloud and heterogeneous infrastructures, introducing the Cluster Operator component to support lifecycle management features such as cluster creation and cleanup for &amp;ldquo;AWS self-built clusters&amp;rdquo; and &amp;ldquo;local data center clusters.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;In the latest v0.3.0 release, Cluster Operator not only enhances the lifecycle management capabilities for both types of clusters but also abstracts multiple API objects from the v0.2.0 version into a single API object, cluster, for ease of use. Additionally, based on the cluster object, Kurator introduces the concept of a fleet. Each fleet represents a physical cluster group, facilitating unified orchestration, scheduling, traffic governance, and monitoring operations for Kurator in the future. Currently, Kurator&amp;rsquo;s fleet management supports several features, including the lifecycle management of the fleet control plane and cluster registration and deregistration to the fleet.&lt;/p&gt;
&lt;p&gt;With this, Kurator unifies the cluster view through cluster fleets. This means that Kurator now possesses the ability to manage clusters distributed across any cloud with a consistent user experience, further assisting users in upgrading their distributed cloud-native architecture.&lt;/p&gt;
&lt;h2 id=&#34;kurator-v030-key-features-introduction&#34;&gt;Kurator v0.3.0 Key Features Introduction&lt;/h2&gt;
&lt;h3 id=&#34;enhanced-cluster-lifecycle-management&#34;&gt;Enhanced Cluster Lifecycle Management&lt;/h3&gt;
&lt;p&gt;Kurator manages the lifecycle of clusters through the Cluster Operator component. Based on Cluster API, the Cluster Operator not only manages the cluster lifecycle but also unifies and simplifies the configurations needed to create clusters, providing a simple and user-friendly API for managing clusters on different cloud platforms. Currently, Cluster Operator supports &amp;ldquo;local data center clusters&amp;rdquo; and &amp;ldquo;AWS self-built clusters.&amp;rdquo;&lt;/p&gt;
&lt;h4 id=&#34;on-premise-clusters&#34;&gt;On-Premise Clusters&lt;/h4&gt;
&lt;p&gt;Kurator manages the lifecycle of local data center clusters based on kubespray. Different from kubespray, Kurator uses an easier-to-understand and configure cloud-native declarative approach to manage clusters.&lt;/p&gt;
&lt;p&gt;Compared to the v0.2.0 version, the v0.3.0 version of Kurator brings the following enhanced features:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Batch scaling of worker nodes. Kurator now supports adding, deleting, or replacing multiple worker nodes in an existing cluster in a declarative manner. Users only need to declare the final desired state of the worker nodes, and Kurator can complete the batch scaling of the nodes without any external intervention.&lt;/li&gt;
&lt;li&gt;Cluster version upgrade. Users can declare the Kubernetes version they want to upgrade to on the API object, and Kurator will automatically upgrade the nodes of the target cluster.&lt;/li&gt;
&lt;li&gt;Enhanced high availability of the cluster control plane. Kurator provides a VIP-based enhanced cluster control plane high availability solution. In this scheme, Kurator utilizes the capabilities of kube-vip to achieve inbound traffic load balancing across multiple control plane replicas using a VIP.&lt;/li&gt;
&lt;/ul&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/image/on-premise-vip.png&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/image/on-premise-vip.png&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;User Manual: &lt;a href=&#34;https://kurator.dev/docs/cluster-operator/on-premise-cluster-lifecycle/&#34;&gt;Kurator on-premise Cluster Lifecycle&lt;/a&gt;&lt;/p&gt;
&lt;h4 id=&#34;aws-self-built-clusters&#34;&gt;AWS Self-Built Clusters&lt;/h4&gt;
&lt;p&gt;Kurator manages the lifecycle of AWS self-built clusters through the Cluster Operator. Compared to the Cluster API support for AWS self-built clusters, Kurator simplifies the deployment model provided by the Cluster API, obtaining full management capabilities by deploying the Kurator cluster operator component.&lt;/p&gt;
&lt;p&gt;v0.3.0 brings the following feature enhancements:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Improved usability. Kurator has added a series of user experience improvements, including validating credentials before creating a cluster, automatically managing IAM roles and policies required by cloud platform operators, verifying the existence of dependent resources, and centrally displaying error information.&lt;/li&gt;
&lt;li&gt;One-click association of IAM with K8s identity. By associating AWS IAM roles with Kubernetes Pod identities, IAM can verify and accept tokens issued by Kubernetes, eliminating the need to create and distribute AWS credentials. This association has advantages like minimum privilege, credential isolation, and auditability, but it requires multiple steps to set up. Kurator now enables this feature with one click through Cluster.Spec.PodIdentity, simplifying the configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-console&#34; data-lang=&#34;console&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;apiVersion: cluster.kurator.dev/v1alpha1
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;kind: Cluster
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;metadata:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt; name: pod-identity
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt; namespace: default
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;spec:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt; ...
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt; podIdentity:
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;go&#34;&gt;   enabled: true
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;User Manuals:&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kurator.dev/docs/cluster-operator/kurator-cluster-api/&#34;&gt;Kurator Cluster API&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://kurator.dev/docs/cluster-operator/aws-irsa/&#34;&gt;AWS IRSA&lt;/a&gt;&lt;/p&gt;
&lt;h3 id=&#34;cloud-native-fleet-management&#34;&gt;Cloud-Native Fleet Management&lt;/h3&gt;
&lt;p&gt;Kurator introduces the logical unit &amp;ldquo;fleet,&amp;rdquo; representing a physical cluster group, aiming to manage a set of clusters uniformly. Fleets allow you to manage clusters distributed across any cloud easily and consistently.&lt;/p&gt;
&lt;p&gt;Kurator implements fleet control plane lifecycle management through the Fleet Manager and can easily add or remove clusters from a fleet. In the future, Kurator will support Fleet-level application orchestration and provide unified namespaces, ServiceAccounts, and Services across all clusters in the Fleet to enable service discovery and communication between multiple clusters. Additionally, Kurator will aggregate monitoring metrics from all clusters.&lt;/p&gt;
&lt;p&gt;The Kurator Fleet Manager operates as a Kubernetes Operator, responsible for the lifecycle management of the Fleet control plane and the registration and deregistration of clusters.&lt;/p&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/image/fleet-arch.png&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/image/fleet-arch.png&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;User Manual: &lt;a href=&#34;https://kurator.dev/docs/fleet-manager/&#34;&gt;Kurator Fleet Manager&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Kurator: One-Click Construction of Distributed Cloud-Native Platform&lt;/p&gt;
&lt;p&gt;Visit &lt;a href=&#34;https://github.com/kurator-dev/kurator/releases/tag/v0.3.0&#34;&gt;Kurator Release v0.3.0&lt;/a&gt; to experience and upgrade to the latest version of Kurator v0.3.0, and build your personalized distributed cloud-native platform. If you are interested in or have insights into the new features of Kurator, you are also welcome to join the Kurator community to participate in community discussions and development.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;GitHub Address: &lt;a href=&#34;https://github.com/kurator-dev/kurator&#34;&gt;Kurator on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Slack Address: &lt;a href=&#34;https://join.slack.com/t/kurator-hq/shared_invite/zt-1sowqzfnl-Vu1AhxgAjSr1XnaFoogq0A&#34;&gt;Join Kurator on Slack&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

      </description>
    </item>
    
    <item>
      <title>Blog: Distributed Cloud-Native Platform Kurator v0.2.0 Officially Released! One-Click Construction of Distributed Cloud-Native Platform</title>
      <link>https://kurator.dev/blog/0.2.0_release/</link>
      <pubDate>Thu, 09 Feb 2023 00:00:00 +0000</pubDate>
      
      <guid>https://kurator.dev/blog/0.2.0_release/</guid>
      <description>
        
        
        &lt;p&gt;Beijing Time, February 9, 2023 - Kurator has officially released version v0.2.0.&lt;/p&gt;
&lt;p&gt;Kurator is an open-source distributed cloud-native platform that helps users build their own distributed cloud-native infrastructure, aiding in the digital transformation of enterprises. Version v0.1 of Kurator integrated mainstream open-source projects like Karmada, Volcano, Istio, and Prometheus, providing unified multi-cluster management, scheduling, traffic governance, and unified application monitoring capabilities for distributed cloud-native environments.&lt;/p&gt;
&lt;p&gt;In the latest release, v0.2.0, Kurator has added two major categories of key features, enhancing observability and introducing cluster lifecycle management, including the following significant updates:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Multi-cluster monitoring and metric persistence storage based on Thanos&lt;/li&gt;
&lt;li&gt;Real-time K8s application monitoring based on Pixie&lt;/li&gt;
&lt;li&gt;Support for lifecycle management of local data center clusters&lt;/li&gt;
&lt;li&gt;Support for lifecycle management of self-built clusters on AWS Cloud&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;With these updates, Kurator now provides management capabilities for distributed cloud-native infrastructure, meaning that Kurator can rely on infrastructure and Kubernetes clusters to better manage various cloud-native middleware, providing out-of-the-box distributed cloud-native capabilities for users.&lt;/p&gt;
&lt;h2 id=&#34;key-features-of-kurator&#34;&gt;Key Features of Kurator&lt;/h2&gt;
&lt;h3 id=&#34;observability&#34;&gt;Observability&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Multi-Cluster Monitoring and Metric Persistence Storage Based on Thanos&lt;/strong&gt;: Thanos is an open-source, highly available Prometheus solution with persistent storage capabilities. It is a CNCF incubation project and one of the most popular multi-cluster monitoring projects. Core features of Thanos include global query views, high availability, data backup, history, and low-cost data access.&lt;/p&gt;
&lt;p&gt;Kurator offers a simple command to install Thanos, facilitating the quick construction of multi-cloud and multi-cluster monitoring systems.&lt;/p&gt;
&lt;p&gt;User Manual: &lt;a href=&#34;https://kurator.dev/docs/integrations/thanos/&#34;&gt;Thanos Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Real-Time K8s Application Monitoring with Pixie&lt;/strong&gt;: Pixie, an open-source Kubernetes observability tool, enables users to view advanced cluster states (service topology, cluster resources, application traffic) and delve into more detailed views (Pod status, flame graphs, individual full-body application requests). Pixie uses eBPF to automatically collect telemetry data such as requests, resource and network metrics, application profiles, offering a completely non-intrusive approach to application monitoring with very low CPU usage, typically under 2%. Users can now enable Pixie&amp;rsquo;s real-time monitoring with one click.&lt;/p&gt;
&lt;p&gt;User Manual: &lt;a href=&#34;https://kurator.dev/docs/integrations/pixie-vizier/&#34;&gt;Pixie Vizier Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&#34;cluster-lifecycle-management&#34;&gt;Cluster Lifecycle Management&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;New Component, Cluster Operator&lt;/strong&gt;: Provides cloud-native ways to manage Kubernetes clusters. Cluster Operator can easily manage the lifecycle of Kubernetes clusters across various infrastructures, including public clouds, hybrid clouds, and local data centers.&lt;/p&gt;
&lt;p&gt;The overall architecture of the Kurator Cluster Operator is as follows:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/image/cluster-operator.png&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/image/cluster-operator.png&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;The Kurator Cluster Operator is equipped with various controllers that monitor cluster API objects and then create Kubernetes clusters on designated infrastructures.&lt;/p&gt;
&lt;p&gt;Design Document: &lt;a href=&#34;https://kurator.dev/docs/cluster-operator/&#34;&gt;Cluster Operator Documentation&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Support for Local Data Center Self-Built Clusters&lt;/strong&gt;: Lifecycle management capabilities for local data center clusters are primarily based on KubeSpray. It allows for the deployment of production-grade Kubernetes clusters on existing virtual machines and bare-metal servers using a declarative API and manages their lifecycle. Local data center self-built clusters fully utilize the open-source K8s software stack for rapid deployment, setting up container networking, DNS servers, and more.&lt;/p&gt;
&lt;p&gt;User Manual: &lt;a href=&#34;https://kurator.dev/docs/cluster-operator/on-premise-cluster-lifecycle/&#34;&gt;On-Premise Deploy Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Support for AWS Cloud Self-Built Clusters&lt;/strong&gt;: Kurator supports building clusters in the AWS public cloud using the integrated Cluster API Provider AWS. It offers an experience consistent with the AWS managed Kubernetes service EKS, leveraging AWS infrastructure (Elastic Cloud Servers, VPC networks, load balancers, etc.). Resources required for AWS self-built clusters include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cluster&lt;/strong&gt;: Represents a complete cluster, including references to the KubeadmControlPlane and the infrastructure AWSCluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;KubeadmControlPlane&lt;/strong&gt;: Represents all the configurations needed for kubeadm to install the Kubernetes control plane.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWSCluster&lt;/strong&gt;: Represents AWS as the infrastructure for the Cluster.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWSMachineTemplate&lt;/strong&gt;: Represents the template for creating AWS EC2 instances.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The cluster resource topology structure is as follows:&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure style=&#34;width:100%&#34;&gt;
        &lt;div class=&#34;wrapper-with-intrinsic-ratio&#34;&gt;
            &lt;a data-skipendnotes=&#34;true&#34; href=&#34;https://kurator.dev/blog/image/clusterapi-aws.png&#34; title=&#34;&#34;&gt;
                &lt;img class=&#34;element-to-stretch&#34; src=&#34;https://kurator.dev/blog/image/clusterapi-aws.png&#34; alt=&#34;&#34; /&gt;
            &lt;/a&gt;
        &lt;/div&gt;
    &lt;/figure&gt;

&lt;p&gt;Through the Cluster, KubeadmControlPlane, and other Cluster API controllers, as well as the provider offered by AWS, Kurator manages the lifecycle of self-built clusters in AWS according to given configurations.&lt;/p&gt;
&lt;p&gt;User Manual: &lt;a href=&#34;https://kurator.dev/docs/cluster-operator/kurator-cluster-api/&#34;&gt;AWS Deploy Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;kurator-one-click-construction-of-distributed-cloud-native-platform&#34;&gt;Kurator: One-Click Construction of Distributed Cloud-Native Platform&lt;/h2&gt;
&lt;p&gt;Kurator, first launched in June 2022, is the industry&amp;rsquo;s first open-source distributed cloud-native platform. By integrating mainstream open-source technology stacks and excellent cloud-native fleet management performance, Kurator provides a one-stop, ready-to-use distributed cloud-native capability, building a solid foundation for distributed cloud-native technology and helping businesses upgrade to distributed, cloud, and edge computing.&lt;/p&gt;
&lt;p&gt;GitHub Address: &lt;a href=&#34;https://github.com/kurator-dev/kurator&#34;&gt;Kurator on GitHub&lt;/a&gt;&lt;/p&gt;

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