<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Philip Miglinci</title>
    <description>The latest articles on DEV Community by Philip Miglinci (@pmig).</description>
    <link>https://dev.to/pmig</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1115085%2F5d7c1f99-2e52-4874-8a8a-721abfbeadee.jpg</url>
      <title>DEV Community: Philip Miglinci</title>
      <link>https://dev.to/pmig</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pmig"/>
    <language>en</language>
    <item>
      <title>Glasskube is now part of the CNCF Landscape</title>
      <dc:creator>Philip Miglinci</dc:creator>
      <pubDate>Thu, 08 Feb 2024 17:12:53 +0000</pubDate>
      <link>https://dev.to/distr/glasskube-is-now-part-of-the-cncf-landscape-1ae5</link>
      <guid>https://dev.to/distr/glasskube-is-now-part-of-the-cncf-landscape-1ae5</guid>
      <description>&lt;p&gt;&lt;strong&gt;🧊 Glasskube is the missing Package Manager for Kubernetes 📦&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Featuring a GUI and a CLI. Glasskube packages are dependency aware, GitOps ready and can get automatic updates via a central public package repository.&lt;/p&gt;

&lt;p&gt;Support us by leaving a star on GitHub: &lt;a href="https://github.com/glasskube/glasskube/" rel="noopener noreferrer"&gt;⭐ &lt;code&gt;glasskube/glasskube&lt;/code&gt; ⭐&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  We got accepted into the CNCF Landscape
&lt;/h2&gt;

&lt;p&gt;Glasskube is now visible next other relevant projects in the cloud native ecosystem landscape like Helm or Backstage.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube/" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ncfysocuicvvojstvzf.png" alt="Glasskube CNCF Landscape" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The goal of the cloud-native landscape is to gather and categorize projects that are relevant to the cloud native developers,&lt;br&gt;
offering a comprehensive overview of the existing ecosystem.&lt;/p&gt;

&lt;p&gt;By exploring this landscape, project teams can make informed decisions about tooling, technology stack selection, and best practices.&lt;br&gt;
Moreover, it facilitates access to emerging innovations, fosters community collaboration, and ensures compatibility and interoperability,&lt;br&gt;
all of which are critical for the success of Kubernetes deployments.&lt;/p&gt;

&lt;h2&gt;
  
  
  Glasskube is part of the Application Definition &amp;amp; Image Build category
&lt;/h2&gt;

&lt;p&gt;Application definition and image build tools encompass developer-focused and operations-focused functionalities,&lt;br&gt;
aiming to simplify Kubernetes deployment and app management.&lt;br&gt;
They address challenges of complexity in containerized environments, offering solutions for reproducible image creation,&lt;br&gt;
standardized app deployment, and simplifying developer and operator experiences. Tools include Helm for deploying third-party apps,&lt;br&gt;
the Operator Framework for building and deploying operators, and Cloud Native Buildpacks for containerizing application code.&lt;br&gt;
These tools help streamline Kubernetes development and operations, offering diverse solutions for various use cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accepted in just 7 days after the launch
&lt;/h2&gt;

&lt;p&gt;The pull request &lt;a href="https://github.com/cncf/landscape/pull/3735" rel="noopener noreferrer"&gt;#3735&lt;/a&gt; got accepted just 7 days after the released of our first &lt;a href="https://glasskube.dev/blog/technical-preview/" rel="noopener noreferrer"&gt;technical preview&lt;/a&gt; of &lt;a href="https://glasskube.dev" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Glasskube was accepted into the CNCF landscape category due to its ability to effectively address the critical challenges&lt;br&gt;
within application definition and image build, underscoring its importance in streamlining Package Management on Kubernetes.&lt;/p&gt;

&lt;h3&gt;
  
  
  View Glasskube in the CNCF Landscape
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://landscape.cncf.io/?item=app-definition-and-development--application-definition-image-build--glasskube" rel="noopener noreferrer"&gt;Glasskubes entry in the CNCF landscape&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Try out Glasskube yourself
&lt;/h2&gt;

&lt;p&gt;You can already get your hands on Glasskube and install the first available packages.&lt;br&gt;
You can find the correct installation instruction for your operating system: &lt;a href="https://glasskube.dev/docs/getting-started/install/" rel="noopener noreferrer"&gt;https://glasskube.dev/docs/getting-started/install/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get involved
&lt;/h2&gt;

&lt;p&gt;The easiest way to get involved is to tackle one of our &lt;a href="https://github.com/glasskube/glasskube/issues" rel="noopener noreferrer"&gt;open issues&lt;/a&gt;.&lt;br&gt;
You are also welcome to join our &lt;a href="https://discord.gg/SxH6KUCGH7" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you are a cloud native developer, please &lt;a href="https://github.com/glasskube/glasskube/discussions/90" rel="noopener noreferrer"&gt;submit your package&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As Glasskube is still in its very early days, your feedback is highly appreciated.&lt;/p&gt;

&lt;p&gt;Let us know what you think, we would love to hear from you or support us by leaving a star:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube/" rel="noopener noreferrer"&gt;⭐ &lt;code&gt;glasskube/glasskube&lt;/code&gt; ⭐&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>opensource</category>
      <category>news</category>
    </item>
    <item>
      <title>Introducing Glasskube🧊 — The Missing Package Manager For Kubernetes 📦</title>
      <dc:creator>Philip Miglinci</dc:creator>
      <pubDate>Fri, 02 Feb 2024 10:19:10 +0000</pubDate>
      <link>https://dev.to/distr/introducing-glasskube-the-missing-package-manager-for-kubernetes-1dfi</link>
      <guid>https://dev.to/distr/introducing-glasskube-the-missing-package-manager-for-kubernetes-1dfi</guid>
      <description>&lt;p&gt;&lt;em&gt;The aim of this post is to share our technical preview of how a cloud native package manager could work and what challenges need to be solved.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Glasskube is fully open-source. Support us by leaving a star: &lt;a href="https://github.com/glasskube/glasskube/" rel="noopener noreferrer"&gt;⭐ &lt;code&gt;glasskube/glasskube&lt;/code&gt; ⭐&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  We Want Your Feedback! 🫶
&lt;/h2&gt;

&lt;p&gt;Share your thoughts in the comments below! Let us know what topics you'd like more content on. If this guide helps, click on the cat and leave a star to support us in creating more developer-centric content. Your feedback matters!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Introducing Glasskube — The Missing Package Manager For Kubernetes
&lt;/h2&gt;

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

&lt;p&gt;Package Management on Kubernetes is one of the most pressing issues in the Cloud Native community. A concept which is widely known from other ecosystems like desktop and mobile computing has yet not been realized for cloud computing. For example on Android and iOS, millions of developers publish their packages in the Play Store or App Store to reach their users.&lt;/p&gt;

&lt;p&gt;The package manager also makes sure all users receive the latest version published by the developer and the developer receives crash reports and user feedback as a return to improve their applications, but as a cloud native developer there is no package manager you can rely on — yet.&lt;/p&gt;

&lt;p&gt;Our first release (v0.0.1) already features a working prototype that can install basic packages, but a lot of challenges still need to be solved.&lt;/p&gt;

&lt;h3&gt;
  
  
  A cloud native architecture
&lt;/h3&gt;

&lt;p&gt;Glasskube itself is designed as a cloud native application. Featuring an easy to install client that comes with a graphical user interface and autocompletion for your favorite shell.&lt;/p&gt;

&lt;p&gt;At the heart of the Glasskube package ecosystem lies our central package registry which holds the package manifests. In a future version we also plan to support 3rd party registries and the possibility to use multiple registries in a cluster.&lt;/p&gt;

&lt;p&gt;The Glasskube package operator syncs the latest manifest into the cluster and makes sure it will be updated as soon as a new manifest is available.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Challenges that need to be solved
&lt;/h3&gt;

&lt;p&gt;We already covered some our upcoming features in our &lt;a href="https://glasskube.dev/roadmap" rel="noopener noreferrer"&gt;public roadmap&lt;/a&gt;, but I would also like to take this opportunity to shortly speak about broader challenges.&lt;/p&gt;

&lt;h4&gt;
  
  
  Kubernetes version compatibility
&lt;/h4&gt;

&lt;p&gt;Kubernetes releases minor versions every 4 months, which often come with new API versions. Package authors need to adapt their packages to these changes. In Kubernetes, a particular release might include more than one API version of a resource, so that packages can be compatible with a broader range of Kubernetes versions.&lt;/p&gt;

&lt;p&gt;These compatible versions are often only documented in the package distributors' changelog. Glasskube aims to incorporate this kind of metadata in combination with automatic checks from tools like &lt;a href="https://github.com/doitintl/kube-no-trouble" rel="noopener noreferrer"&gt;kube-no-trouble&lt;/a&gt; or &lt;a href="https://github.com/FairwindsOps/pluto" rel="noopener noreferrer"&gt;Pluto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The user should not be required to drudgingly check all packages for compatibility and package developers should get feedback if their package is not compatible with the latest API versions.&lt;/p&gt;

&lt;h4&gt;
  
  
  Package dependencies
&lt;/h4&gt;

&lt;p&gt;Cloud native applications often interoperate and there are some packages that can be found in almost every Kubernetes cluster. For example: cert-manager, Ingress controllers or database operators. Due to the lack of a package manager and ecosystem these dependencies are still often only documented in the Getting started section of an application.&lt;/p&gt;

&lt;p&gt;In an ideal world a package author could simply specify a dependency of their package and the package manager ensures that all these prerequisites are fulfilled.&lt;/p&gt;

&lt;h4&gt;
  
  
  Testing
&lt;/h4&gt;

&lt;p&gt;In order to support multiple Kubernetes versions, dependencies and packages Glasskube needs to build massive automated testing infrastructure for all packages in its central package registry.&lt;/p&gt;

&lt;h4&gt;
  
  
  Feedback and package quality
&lt;/h4&gt;

&lt;p&gt;As seen in other package managers like the &lt;a href="https://aur.archlinux.org/" rel="noopener noreferrer"&gt;arch user repository&lt;/a&gt; or the Play Store and App Store users' feedback and reviews help other users to decide between different packages. Also, application developer will incorporate users' feedback to gain popularity and better ratings in the package manager.&lt;/p&gt;

&lt;h2&gt;
  
  
  Glasskube and Helm
&lt;/h2&gt;

&lt;p&gt;Glasskube is no replacement for Helm. Helm has its strengths in configuring releases through templating and having the ability to perform upgrades and rollbacks.&lt;/p&gt;

&lt;p&gt;Glasskube is laser focused on the administrator who needs to only install and kustomize (pun intended 😉) a single application, but who also needs to make sure multiple&lt;br&gt;
packages are kept up-to-date and secure throughout multiple Kubernetes version upgrades and adapting to inevitable breaking changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Follow our &lt;a href="https://glasskube.dev/docs/getting-started/install" rel="noopener noreferrer"&gt;Getting Started guide&lt;/a&gt; if you want to try Glasskube for yourself and install your first package.&lt;/p&gt;



&lt;h2&gt;
  
  
  Release Notes
&lt;/h2&gt;

&lt;p&gt;All release notes can be found on GitHub: &lt;a href="https://github.com/glasskube/glasskube/releases/tag/v0.0.1" rel="noopener noreferrer"&gt;https://github.com/glasskube/glasskube/releases/tag/v0.0.1&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get involved
&lt;/h2&gt;

&lt;p&gt;The easiest way to get involved is to tackle one of our &lt;a href="https://github.com/glasskube/glasskube/issues" rel="noopener noreferrer"&gt;open issues&lt;/a&gt;.&lt;br&gt;
You are also welcome to join our &lt;a href="https://discord.gg/SxH6KUCGH7" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If you are a cloud native developer, please &lt;a href="https://github.com/glasskube/glasskube/discussions/90" rel="noopener noreferrer"&gt;submit your package&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;As Glasskube is still in its very early days, your feedback is highly appreciated.&lt;br&gt;
Let us know what you think, we would love to hear from you.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Star Glasskube:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;code&gt;glasskube/glasskube&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>opensource</category>
      <category>go</category>
    </item>
    <item>
      <title>🔥 Kubernetes Enterprise: Rancher vs OpenShift vs Tanzu - Features, Evaluation &amp; Comparison ✅</title>
      <dc:creator>Philip Miglinci</dc:creator>
      <pubDate>Wed, 10 Jan 2024 12:53:18 +0000</pubDate>
      <link>https://dev.to/distr/kubernetes-enterprise-rancher-vs-openshift-vs-tanzu-features-evaluation-comparison-4gc6</link>
      <guid>https://dev.to/distr/kubernetes-enterprise-rancher-vs-openshift-vs-tanzu-features-evaluation-comparison-4gc6</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR 🔍
&lt;/h2&gt;

&lt;p&gt;The article provides an introduction to enterprise Kubernetes solutions, focusing on Rancher, OpenShift, and VMware Tanzu.&lt;/p&gt;

&lt;p&gt;Rancher is praised for its multi-cluster management, supporting various Kubernetes distributions. &lt;/p&gt;

&lt;p&gt;OpenShift extends Kubernetes with enterprise features but requires a subscription. &lt;/p&gt;

&lt;p&gt;VMware Tanzu specializes in centralized management across clusters and clouds. &lt;/p&gt;

&lt;p&gt;The comparison emphasizes deployment and management capabilities, security features, and operational complexities. &lt;/p&gt;

&lt;p&gt;Each platform's ecosystem, integrations, and potential vendor lock-in are discussed. &lt;/p&gt;

&lt;p&gt;Organizations are advised to align their choice with specific needs and DevOps workflows, considering factors like deployment strategies, day-to-day management, and potential vendor lock-in. &lt;/p&gt;

&lt;p&gt;The article concludes by highlighting key offerings from each platform, urging hands-on experience for a comprehensive evaluation.&lt;/p&gt;




&lt;h2&gt;
  
  
  We Want Your Feedback! 🫶
&lt;/h2&gt;

&lt;p&gt;Share your thoughts in the comments below! Let us know what topics you'd like more content on. If this guide helps, click on the cat and leave a star to support us in creating more developer-centric content. Your feedback matters!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Introduction to Enterprise Kubernetes Solutions
&lt;/h2&gt;

&lt;p&gt;Kubernetes is now recognized as the main standard for container orchestration, playing a critical role in automating container management. Enterprises selecting a Kubernetes platform must consider their unique requirements to empower their DevOps and Kubernetes developers. Let's explore the features of Rancher, OpenShift, and VMware Tanzu in the context of container orchestration and management.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rancher&lt;/strong&gt;: A Kubernetes management platform acclaimed for multi-cluster management (&lt;a href="https://www.densify.com/openshift-tutorial/rancher-vs-openshift/" rel="noopener noreferrer"&gt;Rancher vs. OpenShift&lt;/a&gt;). It supports a variety of Kubernetes distributions, like RKE and K3s. Rancher simplifies managing multiple Kubernetes clusters, which is key for orchestrating a single application across various clusters. (&lt;a href="https://www.spectrocloud.com/blog/why-you-need-kubernetes-multi-cluster-management" rel="noopener noreferrer"&gt;SpectroCloud&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenShift&lt;/strong&gt;: Extends Kubernetes, offering additional enterprise features like developer tools, an integrated container registry, and advanced security. It does require a subscription for full functionality (&lt;a href="https://aws.amazon.com/rosa/pricing" rel="noopener noreferrer"&gt;OpenShift Pricing&lt;/a&gt;, &lt;a href="https://www.redhat.com/en/technologies/cloud-computing/openshift/red-hat-openshift-kubernetes" rel="noopener noreferrer"&gt;Red Hat OpenShift&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VMware Tanzu&lt;/strong&gt;: Specializes in delivering a single control point for managing applications across multiple clusters and clouds. It provides cluster lifecycle management, diagnostics, and data protection (&lt;a href="https://www.peerspot.com/products/comparisons/rancher-labs_vs_vmware-tanzu-mission-control" rel="noopener noreferrer"&gt;VMware Tanzu Mission Control&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The effectiveness of Kubernetes can partially be measured through specific metrics like CPU usage, memory usage, network traffic, and disk usage (&lt;a href="https://www.aquasec.com/cloud-native-academy/kubernetes-101/kubernetes-monitoring/" rel="noopener noreferrer"&gt;Aqua Security&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In terms of security, best practices include enabling Kubernetes Role-Based Access Control (RBAC), using third-party authentication, protecting etcd with TLS, firewall, and encryption (&lt;a href="https://www.aquasec.com/cloud-native-academy/kubernetes-in-production/kubernetes-security-best-practices-10-steps-to-securing-k8s/" rel="noopener noreferrer"&gt;Aqua Security&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Regarding market share and adoption, Kubernetes boasts 92% of the market among container orchestration tools, with over half of Fortune 100 companies and 78% of SMEs using it (&lt;a href="https://humalect.com/blog/kubernetes-statistics" rel="noopener noreferrer"&gt;Humalect&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Rancher's capabilities in multi-cluster management do not currently have a quantitative comparison in terms of the number of supported clusters or operational efficiency metrics (&lt;a href="https://ranchermanager.docs.rancher.com/pages-for-subheaders/kubernetes-clusters-in-rancher-setup" rel="noopener noreferrer"&gt;Rancher Docs&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;When looking at enterprise subscription costs for OpenShift, you'll find various options with different features and price points, such as the Red Hat OpenShift Container Platform and additional features like OpenShift Data Foundation Essentials and Red Hat Quay (&lt;a href="https://www.redhat.com/en/resources/self-managed-openshift-sizing-subscription-guide" rel="noopener noreferrer"&gt;Red Hat Subscription Guide&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Community and official support for Rancher, OpenShift, and Tanzu offer a range of options, with varying response times and satisfaction rates based mainly on user experiences (&lt;a href="https://kubevious.io/blog/post/vmware-tanzu-kubernetes-intro-features-and-comparison-with-openshift-rancher/" rel="noopener noreferrer"&gt;Kubevious&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In conclusion, whether you prefer Rancher's multi-cluster flexibility, OpenShift's enterprise-oriented features, or Tanzu's centralized management approach, your choice will align with your organization's container management strategies and objectives.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features of Rancher, OpenShift, and Tanzu
&lt;/h2&gt;

&lt;p&gt;In the dynamic realm of Kubernetes management, the comparison of Rancher vs OpenShift offers a glimpse into diverse strategies catering to multi-cloud environments. Rancher has firmly established itself with a strong feature set that includes centralized authentication and access control, easily deploying and securing clusters consistently across any location. Notable unique capabilities of Rancher include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Infrastructure orchestration across various environments.&lt;/li&gt;
&lt;li&gt;Enhanced container orchestration via Kubernetes integration.&lt;/li&gt;
&lt;li&gt;Comprehensive application catalog with Helm charts and templates.&lt;/li&gt;
&lt;li&gt;The unified multi-cluster management interface for consistent cluster deployment.&lt;/li&gt;
&lt;li&gt;Its offerings, such as RKE and K3s, do not necessitate a SUSE subscription for use.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For users with a SUSE subscription, additional benefits are accessible, such as priority support and regular security patches. &lt;a href="https://rancher.com/kubernetes" rel="noopener noreferrer"&gt;Rancher Capabilities and SUSE Subscription Benefits&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Red Hat OpenShift is distinguished for its integrated approach towards hybrid multi-cloud deployments and edge environments. It emphasizes automation, scalability, security, and developer experience, offering:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Support for hybrid, multi-cloud, and edge architectures.&lt;/li&gt;
&lt;li&gt;Streamlined processes with tool integrations.&lt;/li&gt;
&lt;li&gt;Enhanced developer tools for an improved user experience.&lt;/li&gt;
&lt;li&gt;Scalable application deployment and management.&lt;/li&gt;
&lt;li&gt;Automated installations and upgrades across varied cloud environments.&lt;/li&gt;
&lt;li&gt;Inherent security features for cloud applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;OpenShift adapts Kubernetes for enterprise-ready deployments in a hybrid multi-cloud strategy. &lt;a href="https://cloud.redhat.com/blog/a-guide-to-creating-a-true-hybrid/multi-cloud-architecture-with-ossm-federation" rel="noopener noreferrer"&gt;OpenShift Hybrid Multi-Cloud Integration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In parallel, VMware Tanzu Mission Control equips IT teams with flexible control for Kubernetes management. Tanzu Mission Control is designed to simplify and unify cluster lifecycle management and policy governance across multiple clouds, ensuring strong Kubernetes architecture governance with features such as unified policy management, templating, resource grouping, and centralized access management. These capabilities are pivotal for organizations prioritizing strong governance of their Kubernetes setup. &lt;a href="https://tanzu.vmware.com/content/blog/vmware-tanzu-mission-control-self-managed-announcement" rel="noopener noreferrer"&gt;VMware Tanzu Mission Control Governance Features&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Comparing Deployment and Management Capabilities
&lt;/h2&gt;

&lt;p&gt;DevOps engineers comparing Rancher, OpenShift, and Tanzu encounter distinct feature sets that influence DevOps workflows for Kubernetes deployment and management. Here's how these platforms match up:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Rancher&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Provides multi-cluster management enhancing multitenancy support.&lt;/li&gt;
&lt;li&gt;Simplifies container deployment processes, crucial for teams operating containers in production.&lt;/li&gt;
&lt;li&gt;Features a significant user base, indicative of its ease of deployment and management (&lt;a href="https://www.peerspot.com/products/comparisons/rancher-labs_vs_vmware-tanzu-mission-control" rel="noopener noreferrer"&gt;Rancher's popularity&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;Specific management features that contribute to Rancher's popularity include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simplified cluster management, access control, and application deployment.&lt;/li&gt;
&lt;li&gt;Integration with Helm for predefined app templates.&lt;/li&gt;
&lt;li&gt;Single dashboard management for all Kubernetes clusters.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Advanced security features and built-in tools for managing multitenancy (&lt;a href="https://www.techtarget.com/searchitoperations/post/Compare-Rancher-vs-OpenShift-vs-Tanzu-for-Kubernetes" rel="noopener noreferrer"&gt;Rancher vs. OpenShift&lt;/a&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;OpenShift&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Integrates Kubernetes orchestration with developer tools in a hybrid cloud environment.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Offers an automated, cohesive platform designed to enhance scalability and automate operations.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Provides additional features over Kubernetes for improved scalability, flexibility, developer experience, and automated upgrades (&lt;a href="https://www.dynatrace.com/news/blog/openshift-vs-kubernetes/" rel="noopener noreferrer"&gt;OpenShift features&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;OpenShift's security features stand out with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Robust RBAC capabilities and secure execution policies.&lt;/li&gt;
&lt;li&gt;Compliance tools woven into the platform (&lt;a href="https://www.techtarget.com/searchitoperations/post/Compare-Rancher-vs-OpenShift-vs-Tanzu-for-Kubernetes" rel="noopener noreferrer"&gt;Comparison of Security Policies&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Automated operations that align with modern DevOps practices include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Streamlining deployments via automated installation.&lt;/li&gt;
&lt;li&gt;Enhancing security with integrated monitoring.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Facilitating CI/CD processes for swift development to production transitions (&lt;a href="https://www.oreilly.com/library/view/devops-with-openshift/9781491975954/ch01.html" rel="noopener noreferrer"&gt;Automated Operations in OpenShift&lt;/a&gt;).&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VMware Tanzu&lt;/strong&gt;:&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Supports cluster operations including creation, deletion, resizing, and upgrades.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Prioritizes operational resilience with robust data protection capabilities (&lt;a href="https://www.peerspot.com/products/comparisons/openshift-container-platform_vs_vmware-tanzu-mission-control" rel="noopener noreferrer"&gt;Tanzu’s data protection&lt;/a&gt;).&lt;br&gt;&lt;br&gt;
Cluster lifecycle management in Tanzu caters to different cloud providers with:&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Custom features for AWS, Azure, and vSphere.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Global cluster management across multiple cloud environments (&lt;a href="https://tanzu.vmware.com/content/blog/preview-lifecycle-management-amazon-eks-clusters-tanzu-mission-control" rel="noopener noreferrer"&gt;Cluster Lifecycle Management Features&lt;/a&gt;).&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;To orchestrate containers efficiently in a hybrid cloud, each platform brings its strengths to the table:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rancher&lt;/strong&gt;: Known for its user-friendly interface and extended multitenancy support, making it a top choice for container management (&lt;a href="https://komodor.com/learn/kubernetes-rancher-the-basics-and-a-quick-tutorial/" rel="noopener noreferrer"&gt;Rancher Management Features&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OpenShift&lt;/strong&gt;: Stands out for integrated CI/CD pipelines, security enhancements, and a web console for application management. It simplifies both architecture and DevOps operations (&lt;a href="https://radixweb.com/blog/kubernetes-vs-openshift" rel="noopener noreferrer"&gt;Why OpenShift is better than Kubernetes&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;VMware Tanzu&lt;/strong&gt;: Focuses on managing the cluster lifecycle, ensuring data protection and flexibility across cloud providers (&lt;a href="https://docs.vmware.com/en/VMware-Tanzu-Mission-Control/index.html" rel="noopener noreferrer"&gt;Tanzu VMware&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To illustrate their direct impact on operational choices, the automation and multitenancy of OpenShift play a pivotal role in enhancing productivity and security within DevOps practices. In contrast, Rancher is often chosen for its simplicity and powerful management of multitenant Kubernetes environments. Meanwhile, VMware Tanzu's approach to hybrid clouds and its container orchestration appeal by optimizing lifecycle operations for diverse cloud infrastructures (&lt;a href="https://www.qovery.com/blog/vmware-tanzu-vs-openshift" rel="noopener noreferrer"&gt;Tanzu vs. OpenShift&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;To facilitate efficient container orchestration and deployment, while ensuring robust multitenancy and hybrid cloud compatibility, teams should consider the nuanced differences in DevOps workflows offered by each of these platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Evaluating Ecosystems and Integrations
&lt;/h2&gt;

&lt;p&gt;When considering Kubernetes management solutions, it is key to compare the ecosystems of various platforms like Red Hat OpenShift, Rancher, and VMware Tanzu. Each offers a different approach to integration, flexibility, and potential vendor lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Red Hat OpenShift
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Red Hat OpenShift is a comprehensive container platform&lt;/strong&gt; that enhances Kubernetes functionalities.&lt;/li&gt;
&lt;li&gt;It is powered by &lt;a href="https://github.com/okd-project/okd" rel="noopener noreferrer"&gt;OKD&lt;/a&gt;, the Open Source community distribution Kubernetes.&lt;/li&gt;
&lt;li&gt;OpenShift provides scalability, flexibility, and adherence to open-source standards, which are essential for many enterprise-grade applications (&lt;a href="https://www.redhat.com/en/technologies/cloud-computing/openshift/features" rel="noopener noreferrer"&gt;Red Hat OpenShift Features&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Notable benefits include built-in security, automated installation, and enhanced developer experiences, along with an integrated open-source community (&lt;a href="https://www.dynatrace.com/news/blog/what-is-openshift-2/" rel="noopener noreferrer"&gt;OpenShift Benefits&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Key open source community projects enhancing OpenShift's ecosystem include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Kubernetes&lt;/strong&gt; for container orchestration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tekton&lt;/strong&gt; that provides CI/CD pipelines automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OperatorHub&lt;/strong&gt; delivering pre-configured applications.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OKD (OpenShift Origin)&lt;/strong&gt; as the foundational upstream project.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OCI&lt;/strong&gt; containers enabling industry-standard image portability.&lt;/li&gt;
&lt;li&gt;Certification by the &lt;strong&gt;CNCF&lt;/strong&gt; for Kubernetes compatibility (&lt;a href="https://www.dynatrace.com/news/blog/what-is-openshift-2/" rel="noopener noreferrer"&gt;Community Projects&lt;/a&gt;).&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Rancher vs OpenShift
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;strong&gt;Rancher platform&lt;/strong&gt; prioritizes reducing lock-in with its cluster manager, which supports CNCF-certified clusters from various infrastructures.&lt;/li&gt;
&lt;li&gt;Rancher's host operating system support is broader than OpenShift's, which mainly focuses on Red Hat-based systems like RHEL, CentOS, or Fedora, enhancing interoperability and user choice (&lt;a href="https://www.densify.com/openshift-tutorial/rancher-vs-openshift/" rel="noopener noreferrer"&gt;Rancher vs OpenShift&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  VMware Tanzu
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;VMware Tanzu&lt;/strong&gt; is renowned for its versatility, allowing for multi-cluster management across different clouds, giving administrators the power to create, delete, resize, and upgrade clusters with ease.&lt;/li&gt;
&lt;li&gt;Tanzu's management capabilities dramatically improve resilience and scalability, two metrics that are quantitatively beneficial compared to industry standards.&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Tanzu Impact&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Resilience&lt;/td&gt;
&lt;td&gt;Increases with centralized management for multi-cloud provider clusters&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scalability&lt;/td&gt;
&lt;td&gt;Streamlined with efficient provisioning and lifecycle management capabilities&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;(Source: &lt;a href="https://tanzu.vmware.com/mission-control" rel="noopener noreferrer"&gt;Tanzu Mission Control&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;In summary, each platform has its unique set of partnerships and third-party support integral to the ecosystem which determines the ease of workflow integration, tool availability, and future scalability. The value derived from these platforms grows as support and partnerships within their ecosystems expand, maintaining the agility required for modern cloud computing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Operational Complexity and Vendor Lock-in
&lt;/h2&gt;

&lt;p&gt;When selecting a Kubernetes management platform, it's crucial for DevOps teams to balance the ease of use with concerns about vendor lock-in. A comparison between &lt;strong&gt;Rancher&lt;/strong&gt; and &lt;strong&gt;OpenShift&lt;/strong&gt; illustrates this point clearly. Rancher offers an open and flexible approach to Kubernetes, enabling workflows with RKE and K3s that don't require a SUSE subscription, thus simplifying DevOps workflows and reducing lock-in risks (&lt;a href="https://www.densify.com/openshift-tutorial/rancher-vs-openshift/" rel="noopener noreferrer"&gt;Rancher vs. OpenShift: The Guide&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In contrast, OpenShift from Red Hat offers a more integrated ecosystem, which could lead to vendor lock-in, especially when utilizing their subscription services. OpenShift simplifies development workflows with features like S2I, allowing developers to create containerized applications efficiently (&lt;a href="https://www.techtarget.com/searchitoperations/post/Compare-Rancher-vs-OpenShift-vs-Tanzu-for-Kubernetes" rel="noopener noreferrer"&gt;Compare Rancher vs OpenShift&lt;/a&gt;). For businesses deeply embedded within the Red Hat infrastructure, the benefits of this integration may outweigh lock-in concerns.&lt;/p&gt;

&lt;p&gt;VMware &lt;strong&gt;Tanzu&lt;/strong&gt; provides a suite that includes several multi-cloud management features. With tools like Tanzu Kubernetes Grid and Mission Control, Tanzu offers a moderate level of complexity alongside consistent management across cloud and on-premises setups (&lt;a href="https://www.techtarget.com/searchitoperations/post/Compare-Rancher-vs-OpenShift-vs-Tanzu-for-Kubernetes" rel="noopener noreferrer"&gt;TechTarget - Compare Rancher vs. OpenShift vs. Tanzu&lt;/a&gt;). However, this portfolio may lead to a dependence on VMware's infrastructure, representing a potential lock-in scenario.&lt;/p&gt;

&lt;p&gt;A &lt;a href="https://platform9.com/resource/buyers-guide-to-enterprise-kubernetes-solutions-a-comparison-of-openshift-vs-vwware-tanzu-vs-google-anthos-vs-rancher-vs-platform9-managed-kubernetes/" rel="noopener noreferrer"&gt;comparative analysis&lt;/a&gt; outlines how operational complexity and the threat of vendor lock-in significantly influence enterprise decisions. To circumvent lock-in, organizations might use open-source tools, steer clear of proprietary APIs, or choose platforms fostering infrastructure portability.&lt;/p&gt;

&lt;p&gt;Adopting a multi-cloud strategy serves as a key method for mitigating vendor lock-in risks while capitalizing on these platforms' operational efficiency. Multicloud Kubernetes usage allows running clusters across different public and private clouds, offering true portability and avoiding reliance on a single provider (&lt;a href="https://www.mirantis.com/cloud-native-concepts/getting-started-with-kubernetes/what-is-kubernetes-hybrid-cloud-multi-cloud/" rel="noopener noreferrer"&gt;What is Kubernetes hybrid cloud multi-cloud?&lt;/a&gt;). Assessing trade-offs on each platform leads to maintaining simplicity and reducing dependence on a single provider.&lt;/p&gt;

&lt;p&gt;To offer insights into the technical demands and complexities of implementing Kubernetes platforms like Rancher, OpenShift, and Tanzu, here's a comparative table:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Technical Requirements&lt;/th&gt;
&lt;th&gt;Complexity&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Rancher&lt;/td&gt;
&lt;td&gt;- Role-based access control (RBAC)&lt;br&gt;- Multi-tenancy support&lt;br&gt;- Cluster isolation capabilities&lt;br&gt;- Secure secret management&lt;br&gt;- Support for standard operating systems&lt;br&gt;- Rancher UI and CLI for management&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OpenShift&lt;/td&gt;
&lt;td&gt;- RBAC policies&lt;br&gt;- Built-in CI/CD workflows&lt;br&gt;- Integration with Red Hat security tools&lt;br&gt;- Provisioning on various clouds&lt;br&gt;- Full installer for deployment&lt;br&gt;- Integration with different Red Hat tools&lt;/td&gt;
&lt;td&gt;Complex&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Tanzu&lt;/td&gt;
&lt;td&gt;- High availability across environments&lt;br&gt;- Tanzu Kubernetes Grid for management&lt;br&gt;- Support for running on vSphere and bare-metal&lt;br&gt;- Consistent management across all infrastructures&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Source: &lt;a href="https://www.techtarget.com/searchitoperations/post/Compare-Rancher-vs-OpenShift-vs-Tanzu-for-Kubernetes" rel="noopener noreferrer"&gt;TechTarget - Compare Rancher vs. OpenShift vs. Tanzu&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Furthermore, notable enterprises are deploying multi-cloud strategies to avoid vendor lock-in. For example, OpenShift provides pre-configured tools for a variety of deployment models, while VMware Tanzu TKGI incorporates a range of technologies for flexible Kubernetes management (&lt;a href="https://www.thestack.technology/avoiding-cloud-lock-in/" rel="noopener noreferrer"&gt;Avoiding cloud lock-in&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;In conclusion, evaluating each Kubernetes platform in light of your organization’s unique DevOps workflows and your stance on vendor lock-in will lead to a solution that offers agility without undue constraint.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion: Choosing the Right Enterprise Kubernetes Platform
&lt;/h2&gt;

&lt;p&gt;In selecting the right enterprise Kubernetes platform, it's essential to align with the specific needs of your enterprise, as this choice significantly impacts DevOps workflows. Let's delve into how this decision affects various aspects:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Deployment&lt;/strong&gt;: The chosen platform dictates the deployment strategies.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Management&lt;/strong&gt;: Day-to-day operations hinge on the platform's ease of use.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vendor Lock-in&lt;/strong&gt;: Opting for fully integrated ecosystems may limit flexibility.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Exploring key offerings from prominent players in the market:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;VMware Tanzu&lt;/strong&gt;: A standout for enterprises seeking comprehensive multi-cloud management and enterprise support, VMware Tanzu offers robust capabilities, including advanced monitoring, observability, and enhanced enterprise security features (&lt;a href="https://www.peerspot.com/products/comparisons/rancher-labs_vs_vmware-tanzu-mission-control" rel="noopener noreferrer"&gt;Compare Rancher Labs vs VMware Tanzu Mission Control&lt;/a&gt;). Tanzu is a suite of services that extends Kubernetes with new tools for maintaining cloud-native apps and additional management capabilities across clouds and data centers &lt;a href="https://cyfuture.cloud/blog/is-tanzu-the-same-as-kubernetes/" rel="noopener noreferrer"&gt;Cyfuture Blog: Is Tanzu the Same as Kubernetes?&lt;/a&gt;].&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rancher&lt;/strong&gt;: Flexible and adaptable, Rancher excels as a Kubernetes cluster manager. It allows enterprises to implement centralized authentication, enterprise security, and even integrate non-standard solutions, making it suitable for a diversified IT infrastructure (&lt;a href="https://www.densify.com/openshift-tutorial/rancher-vs-openshift/" rel="noopener noreferrer"&gt;Rancher vs. Openshift: The Guide&lt;/a&gt;). Rancher extends Kubernetes by allowing efficient management of multiple Kubernetes clusters  &lt;a href="https://dsstream.com/kubernetes-vs-rancher-or-kubernetes-and-rancher/" rel="noopener noreferrer"&gt;Dsstream: Kubernetes vs. Rancher or Kubernetes and Rancher?&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;OpenShift&lt;/strong&gt;: OpenShift presents an integrated ecosystem designed for developers. While it can lead to a higher likelihood of vendor lock-in, it also provides a strong set of tools for consistent application delivery across various platforms. OpenShift offers a container platform that is more secure by default and is designed to be enterprise-ready &lt;a href="https://www.dynatrace.com/news/blog/openshift-vs-kubernetes/" rel="noopener noreferrer"&gt;Dynatrace Blog: OpenShift vs. Kubernetes&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When selecting a platform, avoid the complexity and potential constraints by consulting a detailed comparison guide to understand key considerations (&lt;a href="https://platform9.com/resource/buyers-guide-to-enterprise-kubernetes-solutions-a-comparison-of-openshift-vs-vwware-tanzu-vs-google-anthos-vs-rancher-vs-platform9-managed-kubernetes/" rel="noopener noreferrer"&gt;WP-Buyer's Guide to Enterprise Kubernetes Solutions&lt;/a&gt;). To truly determine a platform's suitability, nothing beats hands-on experience. DevOps teams should engage in trials and testing to ensure their operational needs align with the platform's offerings.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Star Glasskube:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;code&gt;glasskube/glasskube&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>kubernetes</category>
      <category>developer</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>🔥Matomo 5 UPGRADE - A step-by-step GUIDE 🤌</title>
      <dc:creator>Philip Miglinci</dc:creator>
      <pubDate>Thu, 04 Jan 2024 12:40:27 +0000</pubDate>
      <link>https://dev.to/distr/matomo-5-upgrade-a-step-by-step-guide-1ohe</link>
      <guid>https://dev.to/distr/matomo-5-upgrade-a-step-by-step-guide-1ohe</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR 🔍
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://matomo.org/" rel="noopener noreferrer"&gt;Matomo&lt;/a&gt; just released their &lt;a href="https://matomo.org/changelog/matomo-5-0-0/" rel="noopener noreferrer"&gt;major v5 upgrade&lt;/a&gt; with following key improvements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A transition to the frontend framework Vue.js which most notably brings a fresh new icon set &lt;/li&gt;
&lt;li&gt;Improved query performance for faster reports&lt;/li&gt;
&lt;li&gt;Support the latest PHP version including 8.1, 8.2 and 8.3&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In total the Matomo team and contributors closed 270 tickets. All changes can be found in this &lt;a href="https://fossies.org/diffs/matomo/4.16.0_vs_5.0.0/index.html" rel="noopener noreferrer"&gt;diff from "Fossies"&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;But Upgrading Matomo - especially in a containerized environment - can be quite challenging.&lt;br&gt;
We recently implemented Matomo 5 support into &lt;a href="https://github.com/glasskube/operator" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt; and are happy to share our learnings.&lt;/p&gt;

&lt;p&gt;We already wrote a guide about &lt;a href="https://glasskube.eu/en/r/guides/matomo-kubernetes/" rel="noopener noreferrer"&gt;Installing Matomo on Kubernetes&lt;/a&gt;. This guide takes care about how to upgrade Matomo.&lt;/p&gt;


&lt;h2&gt;
  
  
  We Want Your Feedback! 🫶
&lt;/h2&gt;

&lt;p&gt;Share your thoughts in the comments below! Let us know what topics you'd like more content on. If this guide helps, click on the cat and leave a star to support us in creating more developer-centric content. Your feedback matters!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Matomo upgrade methods
&lt;/h2&gt;
&lt;h3&gt;
  
  
  One-Click Matomo Update (Auto Update)
&lt;/h3&gt;

&lt;p&gt;If Matomo is installed and operated on a single VM Matomos auto update feature can be used and the update can be triggered via the user interface. After the initial upgrade also a database migration can be performed via the UI.&lt;br&gt;
Make sure to update the file permissions before starting the upgrade and revert these permission after the successful upgrade.&lt;/p&gt;

&lt;p&gt;If Matomo is installed via Docker or in a Kubernetes cluster the update process might be a little more tricky.&lt;/p&gt;
&lt;h3&gt;
  
  
  Matomo Docker Upgrade
&lt;/h3&gt;

&lt;p&gt;After switching to the latest Docker image make sure to use the &lt;code&gt;docker exec&lt;/code&gt; command to open a shell inside the container and execute &lt;code&gt;./console core:update&lt;/code&gt;. This will start the upgrade process for a Docker based deployment.&lt;/p&gt;
&lt;h2&gt;
  
  
  Matomo upgrade dependencies
&lt;/h2&gt;

&lt;p&gt;When upgrading Matomo it is always important to make sure that dependencies are also up-to-date. Matomo recommends the latest PHP 8.x release to improve memory efficiency and benefit from the latest security improvements.&lt;br&gt;
Also, the latest version of a MySQL or MariaDB is highly recommended to increase upgrade speed by supporting index renaming and many more features.&lt;br&gt;
In addition to the runtime and database it is also recommended to keep the webserver (Apache2 or NGINX) up to date - and of course all other packages and operating system itself.&lt;/p&gt;

&lt;p&gt;When running Matomo in a dockerized environment, virtualization takes care about the runtime dependencies as the latest matomo image is based upon the &lt;code&gt;php:8.2-apache&lt;/code&gt; base image.&lt;/p&gt;
&lt;h2&gt;
  
  
  Matomo upgrade errors and resolutions
&lt;/h2&gt;

&lt;p&gt;After upgrading Matomo different errors can occur that need immediate resolution as your Matomo instance might not be available at the moment.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/14ut8PhnIwzros/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/14ut8PhnIwzros/giphy.gif" width="483" height="325"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Matomo upgrade failed: File integrity check failed
&lt;/h3&gt;

&lt;p&gt;The file integrity check can either be a warning inside the system check section of Matomo itself or can lead to more severe errors like Matomo not starting or throwing different Exceptions.&lt;/p&gt;

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

&lt;p&gt;The root cause of this issue is that Matomo doesn't work if other files are in the working directory. If a new release of Matomo was just copied into the Matomo working directory without deleting the old files this error might occur.&lt;br&gt;
The Matomo docker image uses following entrypoint script to overwrite the working directory with latest Matomo release downloaded into the  &lt;code&gt;/usr/src/matomo&lt;/code&gt; directory.&lt;/p&gt;

&lt;p&gt;The full script can be found in GitHub &lt;a href="https://github.com/matomo-org/docker/blob/dfe3c8fc32922f7fbf8b90ffce89b6b1bae5b992/apache/docker-entrypoint.sh" rel="noopener noreferrer"&gt;&lt;code&gt;matomo/docker&lt;/code&gt; docker-entrypoint.sh&lt;/a&gt;. &lt;/p&gt;
&lt;h3&gt;
  
  
  Matomo upgrade failed: Console not working
&lt;/h3&gt;

&lt;p&gt;If the Matomo console does not produce any output your Matomo installation is corrupt. This can have multiple reasons, but most likely your there are some &lt;code&gt;.php&lt;/code&gt; files in the working directory that do not belong to the latest release.&lt;/p&gt;

&lt;p&gt;Make sure to clean the Matomo directory before installing the latest release.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Make sure to back up your Matomo configuration located in &lt;code&gt;config/config.ini.php&lt;/code&gt; as it holds your configurations for example database and caching credentials. &lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Matomo upgrade failed: Uncaught exception
&lt;/h3&gt;

&lt;p&gt;If Matomo be opened in the web browser, but an Exceptions appears in the server logs your Matomo installation is also corrupt. Again, the most likely reason for this error to occur is that the working directory is not clean.&lt;/p&gt;

&lt;p&gt;An example stack trace can look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Uncaught exception in /var/www/html/plugins/Goals/Commands/CalculateConversionPages.php line 34:
Call to undefined method Piwik\Plugins\Goals\Commands\CalculateConversionPages::addOptionalValueOption()
ERROR [2024-01-01 17:04:10] 7  Uncaught exception: Error: Call to undefined method Piwik\Plugins\Goals\Commands\CalculateConversionPages::addOptionalValueOption() in /var/www/html/plugins/Goals/Commands/CalculateConversionPages.php:34
Stack trace:
#0 /var/www/html/vendor/symfony/console/Symfony/Component/Console/Command/Command.php(65): Piwik\Plugins\Goals\Commands\CalculateConversionPages-&amp;gt;configure()
#1 /var/www/html/core/Console.php(171): Symfony\Component\Console\Command\Command-&amp;gt;__construct()
#2 /var/www/html/core/Console.php(133): Piwik\Console-&amp;gt;addCommandIfExists('Piwik\\Plugins\\G...')
#3 /var/www/html/core/Console.php(87): Piwik\Console-&amp;gt;doRunImpl(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#4 /var/www/html/vendor/symfony/console/Symfony/Component/Console/Application.php(126): Piwik\Console-&amp;gt;doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#5 /var/www/html/console(32): Symfony\Component\Console\Application-&amp;gt;run()
#6 {main}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
`&lt;/p&gt;

&lt;h2&gt;
  
  
  Matomo 5 Plugin compatibility
&lt;/h2&gt;

&lt;p&gt;Before upgrading to version 5 make sure that your plugins already support the latest Matomo release.&lt;/p&gt;

&lt;p&gt;The best way to check plugin compatibility is their &lt;a href="https://plugins.matomo.org/" rel="noopener noreferrer"&gt;Matomo On-Premise Marketplace&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If a plugin is not compatible it is recommended to deactivate it before the upgrade via the console:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;./console plugin:deactivate ProblematicPlugin&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Matomo 5 Upgrade via the Glasskube Kubernetes Operator
&lt;/h2&gt;

&lt;p&gt;If Matomo was installed in Kubernetes via the &lt;a href="https://glasskube.eu/docs/crd-reference/matomo/" rel="noopener noreferrer"&gt;Glasskube Kubernetes Operator&lt;/a&gt; your current custom resource definition probably looks similar to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Matomo.yaml&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;yaml&lt;br&gt;
apiVersion: glasskube.eu/v1alpha1&lt;br&gt;
kind: Matomo&lt;br&gt;
metadata:&lt;br&gt;
  name: matomo&lt;br&gt;
spec:&lt;br&gt;
  host: stats.mycompany.eu&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before upgrading to the latest Matomo version make sure that at least &lt;strong&gt;Glasskube Operator v0.13.10&lt;/strong&gt; is installed as it introduced &lt;a href="https://github.com/glasskube/operator/releases/tag/0.13.10" rel="noopener noreferrer"&gt;Matomo 5 Support&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;An explicit version needs to be added in order to upgrade to the latest version.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Matomo.yaml&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;yaml&lt;br&gt;
apiVersion: glasskube.eu/v1alpha1&lt;br&gt;
kind: Matomo&lt;br&gt;
metadata:&lt;br&gt;
  name: matomo&lt;br&gt;
spec:&lt;br&gt;
  version: 5.0.0 # Checkout https://github.com/glasskube/images/releases for the latest release&lt;br&gt;
  host: stats.mycompany.eu&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After changing your custom resource you need to execute &lt;code&gt;kubectl apply -f Matomo.yaml&lt;/code&gt;. The Glasskube operator will automatically perform the upgrade and all database migrations.&lt;/p&gt;

&lt;h3&gt;
  
  
  What happens under the hood during the Matomo 5 upgrade on Kubernetes?
&lt;/h3&gt;

&lt;p&gt;Glasskube uses init containers to perform all the tasks that would have needed manual interactions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Making sure necessary plugins are installed or unnecessary plugins are removed&lt;/li&gt;
&lt;li&gt;Syncing the latest Matomo release into the working directory and making sure to not remove your geo ip database und &lt;code&gt;/tmp&lt;/code&gt; folder&lt;/li&gt;
&lt;li&gt;Perform a database upgrade if needed&lt;/li&gt;
&lt;li&gt;Installs an initial site if no site is yet installed&lt;/li&gt;
&lt;li&gt;Convert your database to &lt;code&gt;utf8mb4&lt;/code&gt; if it was not yet correctly initialized&lt;/li&gt;
&lt;li&gt;Create needed security files&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The exact commands can be found in our &lt;a href="https://github.com/glasskube/operator/blob/main/operator/src/main/resources/eu/glasskube/operator/apps/matomo/dependent/install.sh" rel="noopener noreferrer"&gt;&lt;code&gt;install.sh&lt;/code&gt;&lt;/a&gt; file will be executed as in init container.&lt;/p&gt;

&lt;h2&gt;
  
  
  Matomo System Check
&lt;/h2&gt;

&lt;p&gt;Always make sure that the Matomo system check is green and doesn't report any warnings or errors.&lt;/p&gt;

&lt;p&gt;The system check can either be viewed as an administrator in the settings page or via the console&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;code&gt;&lt;br&gt;
./console diagnostics:run&lt;br&gt;
&lt;/code&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The desired state will look like:&lt;/p&gt;

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

&lt;p&gt;Installing Matomo via Glasskube will help you to reach the desired system check state that no errors or warnings are present.&lt;/p&gt;

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

&lt;p&gt;Running the latest version of Matomo can require some heavy plumbing especially if you need to take care about dependencies, backups and database upgrades, but utilizing the latest features and security features will definitely make it worth.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>devops</category>
      <category>opensource</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>🛠️ Ready to Launch: Our TOP 11 OPEN SOURCE Tools to START your business! 💻✨</title>
      <dc:creator>Philip Miglinci</dc:creator>
      <pubDate>Wed, 20 Dec 2023 10:25:42 +0000</pubDate>
      <link>https://dev.to/distr/ready-to-launch-our-top-11-open-source-tools-to-start-your-business-358f</link>
      <guid>https://dev.to/distr/ready-to-launch-our-top-11-open-source-tools-to-start-your-business-358f</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR 🔍
&lt;/h2&gt;

&lt;p&gt;Embarking on your startup adventure? Discover essential open source tools straight from our experience! From streamlining operations and managing data to fostering collaboration and ensuring security, we've got your back. Dive in and set the stage for a smooth and successful venture with these must-have tools at your fingertips. &lt;/p&gt;




&lt;h2&gt;
  
  
  We Want Your Feedback! 🫶
&lt;/h2&gt;

&lt;p&gt;Share your thoughts in the comments below! Let us know what topics you'd like more content on. If this guide helps, click on the cat and leave a star to support us in creating more developer-centric content. Your feedback matters!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Odoo: The Open Source Swiss Army Knife 🛠️
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/odoo" rel="noopener noreferrer"&gt;
        odoo
      &lt;/a&gt; / &lt;a href="https://github.com/odoo/odoo" rel="noopener noreferrer"&gt;
        odoo
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Odoo. Open Source Apps To Grow Your Business.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Odoo&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://runbot.odoo.com/runbot" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cc2e383154eafbb289a7f0cbbc0ccb6335085c1629beb16861c52565c31eb6d7/68747470733a2f2f72756e626f742e6f646f6f2e636f6d2f72756e626f742f62616467652f666c61742f312f6d61737465722e737667" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://www.odoo.com/documentation/master" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1fbe260288a2f10a84265ec401c62246101d322823601c0a6e8942fbf7f354bd/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61737465722d646f63732d3837354137422e7376673f7374796c653d666c617426636f6c6f72413d384638463846" alt="Tech Doc"&gt;&lt;/a&gt;
&lt;a href="https://www.odoo.com/forum/help-1" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/33bacb5cd4123535c0d1d2983dc89a4028896e92d6734e2dddcef660335aea0d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61737465722d68656c702d3837354137422e7376673f7374796c653d666c617426636f6c6f72413d384638463846" alt="Help"&gt;&lt;/a&gt;
&lt;a href="https://nightly.odoo.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f2fda5f54809252981d80862b73c7f95921eca36de061ac4b40b80ed9ee5aaef/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61737465722d6e696768746c792d3837354137422e7376673f7374796c653d666c617426636f6c6f72413d384638463846" alt="Nightly Builds"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Odoo is a suite of web based open source business apps.&lt;/p&gt;
&lt;p&gt;The main Odoo Apps include an &lt;a href="https://www.odoo.com/page/crm" rel="nofollow noopener noreferrer"&gt;Open Source CRM&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/website" rel="nofollow noopener noreferrer"&gt;Website Builder&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/ecommerce" rel="nofollow noopener noreferrer"&gt;eCommerce&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/inventory" rel="nofollow noopener noreferrer"&gt;Warehouse Management&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/project" rel="nofollow noopener noreferrer"&gt;Project Management&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/accounting" rel="nofollow noopener noreferrer"&gt;Billing &amp;amp; Accounting&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/point-of-sale-shop" rel="nofollow noopener noreferrer"&gt;Point of Sale&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/employees" rel="nofollow noopener noreferrer"&gt;Human Resources&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/social-marketing" rel="nofollow noopener noreferrer"&gt;Marketing&lt;/a&gt;,
&lt;a href="https://www.odoo.com/app/manufacturing" rel="nofollow noopener noreferrer"&gt;Manufacturing&lt;/a&gt;,
&lt;a href="https://www.odoo.com/" rel="nofollow noopener noreferrer"&gt;...&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Odoo Apps can be used as stand-alone applications, but they also integrate seamlessly so you get
a full-featured &lt;a href="https://www.odoo.com" rel="nofollow noopener noreferrer"&gt;Open Source ERP&lt;/a&gt; when you install several Apps.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting started with Odoo&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;For a standard installation please follow the &lt;a href="https://www.odoo.com/documentation/master/administration/install/install.html" rel="nofollow noopener noreferrer"&gt;Setup instructions&lt;/a&gt;
from the documentation.&lt;/p&gt;
&lt;p&gt;To learn the software, we recommend the &lt;a href="https://www.odoo.com/slides" rel="nofollow noopener noreferrer"&gt;Odoo eLearning&lt;/a&gt;,
or &lt;a href="https://www.odoo.com/page/scale-up-business-game" rel="nofollow noopener noreferrer"&gt;Scale-up, the business game&lt;/a&gt;.
Developers can start with &lt;a href="https://www.odoo.com/documentation/master/developer/howtos.html" rel="nofollow noopener noreferrer"&gt;the developer tutorials&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Security&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;If you believe you have found a security issue, check our &lt;a href="https://www.odoo.com/security-report" rel="nofollow noopener noreferrer"&gt;Responsible Disclosure page&lt;/a&gt;
for details and get in touch with us via email.&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/odoo/odoo" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;When it comes to versatility in the open-source realm, Odoo stands out as the ultimate Swiss army knife for startups. Picture this: a single platform that seamlessly integrates Customer Relationship Management (CRM), Time Tracking, Employee Management, and Accounting. It might not boast the flashiness of some other tools, but don't let that fool you—Odoo is all about crazy functionality for nearly every aspect of your business.&lt;/p&gt;

&lt;p&gt;Need a reliable CRM system to nurture those client relationships? Check. Looking for a straightforward way to track time and manage your team's schedules? Odoo's got you covered. How about simplifying employee management tasks or handling complex accounting processes? Odoo does it all, making it the go-to tool for startups ready to streamline their operations with efficiency and finesse. Stay tuned as we unravel more open source gems to fuel your startup journey! &lt;/p&gt;

&lt;h2&gt;
  
  
  Matomo: Your Ultimate Analytics Powerhouse Beyond Google!
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/matomo-org" rel="noopener noreferrer"&gt;
        matomo-org
      &lt;/a&gt; / &lt;a href="https://github.com/matomo-org/matomo" rel="noopener noreferrer"&gt;
        matomo
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Empowering People Ethically 🚀 — Matomo is hiring! Join us → https://matomo.org/jobs Matomo is the leading open-source alternative to Google Analytics, giving you complete control and built-in privacy. Easily collect, visualise, and analyse data from websites &amp;amp; apps. Star us on GitHub ⭐️  – Pull Requests welcome! 
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Matomo (formerly Piwik) - matomo.org&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://matomo.org/download/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/395a04c8dfddc93e0d4c193101970d785637b4db398c600b0e03fa6ff5645395/68747470733a2f2f706f7365722e707567782e6f72672f6d61746f6d6f2f6d61746f6d6f2f762f737461626c65" alt="Latest Stable Version"&gt;&lt;/a&gt;
&lt;a href="https://builds.matomo.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0808d28d82964d47eae50a35f691a8cea76ff0f137c13c2950018b2ac6d49551/68747470733a2f2f706f7365722e707567782e6f72672f6d61746f6d6f2f6d61746f6d6f2f762f756e737461626c65" alt="Latest Unstable Version"&gt;&lt;/a&gt;
&lt;a href="https://matomo.org/free-software/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5f0e212f188cc616689a160ee3ad9d7903412cf4825b5286717bd8b7b1a012f7/68747470733a2f2f706f7365722e707567782e6f72672f706977696b2f706977696b2f6c6963656e7365" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Code Status&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/matomo-org/matomo/actions/workflows/matomo-tests.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/matomo-org/matomo/actions/workflows/matomo-tests.yml/badge.svg" alt="Matomo Tests"&gt;&lt;/a&gt;
&lt;a href="http://isitmaintained.com/project/matomo-org/matomo" title="Percentage of issues still open" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9b15e0e60e85b3b4a639670f099df28925b0ed91d252efa26023c1c69c85c651/687474703a2f2f697369746d61696e7461696e65642e636f6d2f62616467652f6f70656e2f6d61746f6d6f2d6f72672f6d61746f6d6f2e737667" alt="Percentage of issues still open"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Description&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Matomo is the leading Free/Libre open analytics platform.&lt;/p&gt;
&lt;p&gt;Matomo is a full-featured PHP MySQL software program that you download and install on your own webserver.
At the end of the five-minute installation process, you will be given a JavaScript code.
Simply copy and paste this tag on websites you wish to track and access your analytics reports in real-time.&lt;/p&gt;
&lt;p&gt;Matomo aims to be a Free software alternative to Google Analytics and is already used on more than 1,400,000 websites. Privacy is built-in!&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Mission Statement&lt;/h2&gt;

&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;« To create, as a community, the leading international open source digital analytics platform, that gives every user full control of their data, to empower better decisions. »&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Our purpose is to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;« Empower People Ethically »&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;License&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Matomo is released under the GPL v3 (or later) license, see &lt;a href="https://github.com/matomo-org/matomo/LICENSE" rel="noopener noreferrer"&gt;LICENSE&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Requirements&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;PHP 7.2.5 or greater&lt;/li&gt;
&lt;li&gt;MySQL version…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/matomo-org/matomo" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Step aside, Google Analytics—Matomo is not just an alternative; it's a game-changer. Why settle for less when Matomo not only prioritizes user privacy but also goes above and beyond by offering Server-Side tracking and &lt;a href="https://glasskube.eu/en/r/knowledge/cookieless-tracking/" rel="noopener noreferrer"&gt;cookieless tracking&lt;/a&gt; options?&lt;/p&gt;

&lt;p&gt;In the ever-evolving landscape of analytics, Matomo stands tall, allowing you to gather comprehensive insights without compromising on ethical data practices. Whether you're keen on server-side tracking for a deeper understanding of user interactions or opting for cookieless tracking for a consent-driven experience, Matomo gives you the flexibility and control you've always wanted.&lt;/p&gt;

&lt;h2&gt;
  
  
  Glasskube: Navigating the Kubernetes Universe with Ease! 🚀🔍
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/glasskube" rel="noopener noreferrer"&gt;
        glasskube
      &lt;/a&gt; / &lt;a href="https://github.com/glasskube/operator" rel="noopener noreferrer"&gt;
        operator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🧊 Glasskube Apps Operator
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://github.com/glasskube/operator" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/367a783a5e557d9886339b8b082a5842e6dfd7bcd4a58c4dbf293d0cc96df11b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f676c6173736b7562652f6f70657261746f72" alt="GitHub Repo stars"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/r/glasskube/operator" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4981ba593265c288bcac2afc9a1ed3be93f2fb565e326693715481bd553dc834/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f676c6173736b7562652f6f70657261746f72" alt="Docker Pulls"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/license/lgpl-3-0/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d935352b52ef04cb2c1df62a182eee999f715687fc3e25a97d79f278978ee70c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4c47504c5f332e302d626c7565" alt="license"&gt;&lt;/a&gt;
&lt;a href="https://glasskube.eu/docs/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a951185fd92b15e2eb48257ef36352e89da1b2b84cddf3a2b90683c9e9f87f82/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63732d676c6173736b7562652e6575253246646f63732d626c7565" alt="Docs"&gt;&lt;/a&gt;
&lt;a href="https://artifacthub.io/packages/helm/glasskube/glasskube-operator" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b1749b5cadf374097c5cb860aef64e188dce12dc1c477c19eda780202de34445/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f61727469666163746875622e696f2f62616467652f7265706f7369746f72792f676c6173736b756265" alt="Artifact Hub"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;div&gt;
  &lt;a href="https://glasskube.eu/" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fglasskube%2F.github%2Fmain%2Fimages%2Fglasskube-logo.png" alt="Glasskube Logo" height="160"&gt;
  &lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Kubernetes Operator&lt;/h3&gt;
&lt;/div&gt;
  &lt;p&gt;
    Open Source Tools on autopilot
    &lt;br&gt;&lt;br&gt;
    &lt;a href="https://glasskube.eu/docs/getting-started/install" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Getting started »&lt;/strong&gt;&lt;/a&gt;
    &lt;br&gt; &lt;br&gt;
    &lt;a href="https://glasskube.eu/" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Explore our website »&lt;/strong&gt;&lt;/a&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;a href="https://github.com/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
    &lt;a href="https://hub.docker.com/u/glasskube" rel="nofollow noopener noreferrer"&gt;Docker Hub&lt;/a&gt;
    &lt;a href="https://artifacthub.io/packages/helm/glasskube/glasskube-operator" rel="nofollow noopener noreferrer"&gt;Artifact Hub&lt;/a&gt;
    .
    &lt;a href="https://www.linkedin.com/company/glasskube/" rel="nofollow noopener noreferrer"&gt;LinkedIn&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⭐️ Why Glasskube?&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Turn on autopilot and deploy and manage Open Source Tools fully automated on Kubernetes. Our Open Source Glasskube Operator is the simplest and fastest way to manage all your favorite Open Source Tools and the related infrastructure components like databases, caches, and keep them up to date without manual hassle.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;👌 Easy installation with little to no configuration&lt;/li&gt;
&lt;li&gt;✅ Automatic setup of databases and caches&lt;/li&gt;
&lt;li&gt;🔄 Automate and schedule version updates and patches&lt;/li&gt;
&lt;li&gt;🗓️ Scheduled database backups&lt;/li&gt;
&lt;li&gt;⚙️ Interface for simple SMTP configuration&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🗄️ Table Of Contents&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-supported-tools" rel="noopener noreferrer"&gt;Supported Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-screencast" rel="noopener noreferrer"&gt;Screencast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-need-help" rel="noopener noreferrer"&gt;Need help?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-related-projects" rel="noopener noreferrer"&gt;Related projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-how-to-contribute" rel="noopener noreferrer"&gt;How to Contribute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-supported-by" rel="noopener noreferrer"&gt;Supported by&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;The Glasskube operator is simply deployed via Helm. To install the Open Source Tool simply apply the Custom…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/glasskube/operator" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Enter the world of seamless Kubernetes deployment of you favourite Open Source tools with Glasskube. If Kubernetes seems like a complex galaxy, Glasskube is your trusty navigation system, making deployment a breeze.&lt;/p&gt;

&lt;p&gt;Picture this: With Glasskube, you can effortlessly deploy, manage, and scale your favourite Open Source Tools on Kubernetes and automaticlly keep them up-to-date without breaking a sweat. It's the tool that transforms the intricacies of Kubernetes into a user-friendly experience, allowing even Kubernetes newcomers to harness its power. 🌐🛠️  &lt;/p&gt;

&lt;h2&gt;
  
  
  Plane: Soaring Through Agile Software Development Without the Jira Jumble! ✈️🛠️
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/makeplane" rel="noopener noreferrer"&gt;
        makeplane
      &lt;/a&gt; / &lt;a href="https://github.com/makeplane/plane" rel="noopener noreferrer"&gt;
        plane
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🔥🔥🔥 Open-source Jira, Linear, Monday, and ClickUp alternative. Plane is a modern project management platform to manage tasks, sprints, docs, and triage.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
&lt;a href="https://plane.so" rel="nofollow noopener noreferrer"&gt;
  &lt;img src="https://camo.githubusercontent.com/6c4162487ccb5565b581a8e48b273356683bfa70f3e35f2d0cd6787b3ffad8db/68747470733a2f2f6d656469612e646f63732e706c616e652e736f2f6c6f676f2f706c616e655f6769746875625f726561646d652e706e67" alt="Plane Logo" width="400"&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Modern project management for all teams&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://discord.com/invite/A92xrEGCge" rel="nofollow noopener noreferrer"&gt;
&lt;img alt="Discord online members" src="https://camo.githubusercontent.com/6794bdd06593e639b89bf0381a05fd238635c4e622b3bf7aa5592fd3df1ba8c3/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f313033313534373736343032303038343834363f636f6c6f723d353836354632266c6162656c3d446973636f7264267374796c653d666f722d7468652d6261646765"&gt;
&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3205ddc643cc076449adce9680a1bfdff57c1ceb1062fa604c46d73c4412130a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f6d616b65706c616e652f706c616e653f7374796c653d666f722d7468652d6261646765"&gt;&lt;img alt="Commit activity per month" src="https://camo.githubusercontent.com/3205ddc643cc076449adce9680a1bfdff57c1ceb1062fa604c46d73c4412130a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f6d616b65706c616e652f706c616e653f7374796c653d666f722d7468652d6261646765"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://plane.so/" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Website&lt;/b&gt;&lt;/a&gt; •
    &lt;a href="https://github.com/makeplane/plane/releases" rel="noopener noreferrer"&gt;&lt;b&gt;Releases&lt;/b&gt;&lt;/a&gt; •
    &lt;a href="https://twitter.com/planepowers" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Twitter&lt;/b&gt;&lt;/a&gt; •
    &lt;a href="https://docs.plane.so/" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Documentation&lt;/b&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://app.plane.so/#gh-light-mode-only" rel="nofollow noopener noreferrer"&gt;
      &lt;img src="https://camo.githubusercontent.com/24f5cc3a680e4ca217837a5e04e6621d2d01a8134a034da8c55ecbdf444f8e6d/68747470733a2f2f6d656469612e646f63732e706c616e652e736f2f4769744875622d726561646d652f6769746875622d746f702e77656270" alt="Plane Screens" width="100%"&gt;
    &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Meet &lt;a href="https://plane.so/" rel="nofollow noopener noreferrer"&gt;Plane&lt;/a&gt;, an open-source project management tool to track issues, run &lt;del&gt;sprints&lt;/del&gt; cycles, and manage product roadmaps without the chaos of managing the tool itself. 🧘‍♀️&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Plane is evolving every day. Your suggestions, ideas, and reported bugs help us immensely. Do not hesitate to join in the conversation on &lt;a href="https://discord.com/invite/A92xrEGCge" rel="nofollow noopener noreferrer"&gt;Discord&lt;/a&gt; or raise a GitHub issue. We read everything and respond to most.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Installation&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Getting started with Plane is simple. Choose the setup that works best for you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Plane Cloud&lt;/strong&gt;
Sign up for a free account on &lt;a href="https://app.plane.so" rel="nofollow noopener noreferrer"&gt;Plane Cloud&lt;/a&gt;—it's the fastest way to get up and running without worrying about infrastructure.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Self-host Plane&lt;/strong&gt;
Prefer full control over your data and infrastructure? Install and run Plane on your own servers. Follow our detailed &lt;a href="https://developers.plane.so/self-hosting/overview" rel="nofollow noopener noreferrer"&gt;deployment guides&lt;/a&gt; to get started.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;br&gt;
&lt;thead&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;th&gt;Installation methods&lt;/th&gt;
&lt;br&gt;
&lt;th&gt;Docs link&lt;/th&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/thead&gt;
&lt;br&gt;
&lt;tbody&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Docker&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;&lt;a href="https://developers.plane.so/self-hosting/methods/docker-compose" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/97af73d098e049bf2d11e027500814d62dd2c840ce11d1cb5270607ae9949b2f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f636b65722d2532333064623765642e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d646f636b6572266c6f676f436f6c6f723d7768697465" alt="Docker"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;tr&gt;
&lt;br&gt;
&lt;td&gt;Kubernetes&lt;/td&gt;
&lt;br&gt;
&lt;td&gt;&lt;a href="https://developers.plane.so/self-hosting/methods/kubernetes" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a7dfef554afa4a384788bb87c246f094f7048362db9c835b50ac92e605ce4999/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6b756265726e657465732d2532333332366365352e7376673f7374796c653d666f722d7468652d6261646765266c6f676f3d6b756265726e65746573266c6f676f436f6c6f723d7768697465" alt="Kubernetes"&gt;&lt;/a&gt;&lt;/td&gt;
&lt;br&gt;
&lt;/tr&gt;
&lt;br&gt;
&lt;/tbody&gt;
&lt;br&gt;
&lt;/table&gt;&lt;/div&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Instance admins&lt;/code&gt;…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/makeplane/plane" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Say farewell to the Jira jumble and welcome Plane—a streamlined solution for Agile Software Development that keeps your team soaring high. Designed with simplicity in mind, Plane offers a refreshing alternative to the often complex and overwhelming world of project management tools.&lt;/p&gt;

&lt;p&gt;Imagine a tool that aligns perfectly with Agile principles, allowing your team to plan sprints (or how they call it "cycles"), track tasks ("issues"), and collaborate seamlessly—all without the unnecessary complications. Plane is your ticket to efficient project management, offering a user-friendly interface that doesn't sacrifice functionality.&lt;/p&gt;

&lt;p&gt;Whether you're a seasoned Agile enthusiast or a newcomer looking for a straightforward way to manage software development, Plane takes the stress out of the process. As it is still quite a young company, there are still a few bugs, but we are already excited about the progress and future development. &lt;/p&gt;

&lt;h2&gt;
  
  
  Penpot: Unleashing Creative Freedom—Your Open Source Figma Alternative! 🖌️✨
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/penpot" rel="noopener noreferrer"&gt;
        penpot
      &lt;/a&gt; / &lt;a href="https://github.com/penpot/penpot" rel="noopener noreferrer"&gt;
        penpot
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Penpot: The open-source design tool for design and code collaboration
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
  
  
  &lt;img alt="penpot header image" src="https://camo.githubusercontent.com/c1fc85084a7b31db77a330977ca9b00c97390ee20b0aec50c70561657a554721/68747470733a2f2f70656e706f742e6170702f696d616765732f726561646d652f6769746875622d6c696768742d6d6f64652e706e67"&gt;

&lt;p&gt;
&lt;a href="https://www.mozilla.org/en-US/MPL/2.0" rel="nofollow noopener noreferrer"&gt;&lt;img alt="License: MPL-2.0" src="https://camo.githubusercontent.com/0d433bf1013a998c8b0db6c4c9eefd9edae1111aad142e998918e179fdd5c54a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d504c2d322e302d626c75652e737667"&gt;&lt;/a&gt;
&lt;a href="https://community.penpot.app" rel="nofollow noopener noreferrer"&gt;&lt;img alt="Penpot Community" src="https://camo.githubusercontent.com/608d7ad63d5dd51331463cdcc583715033bf50f77ea52e68f94cb7ea26f95e1b/68747470733a2f2f696d672e736869656c64732e696f2f646973636f757273652f706f7374733f7365727665723d6874747073253341253246253246636f6d6d756e6974792e70656e706f742e617070"&gt;&lt;/a&gt;
&lt;a href="https://tree.taiga.io/project/penpot/" title="Managed with Taiga.io" rel="nofollow noopener noreferrer"&gt;&lt;img alt="Managed with Taiga.io" src="https://camo.githubusercontent.com/3352207d59d443f294c31f36995ecedf5212b7e7b1ed4b7d4ca825f0c739e5c2/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d616e61676564253230776974682d54414947412e696f2d3730396631342e737667"&gt;&lt;/a&gt;
&lt;a href="https://gitpod.io/#https://github.com/penpot/penpot" rel="nofollow noopener noreferrer"&gt;&lt;img alt="Gitpod ready-to-code" src="https://camo.githubusercontent.com/c01324668ea00cd2b02dc9fbf541676fb30543b69ef99a070d62a110917126d0/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f476974706f642d72656164792d2d746f2d2d636f64652d626c75653f6c6f676f3d676974706f64"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://penpot.app/" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Website&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://help.penpot.app/user-guide/" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;User Guide&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://penpot.app/learning-center" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Learning Center&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://community.penpot.app/" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Community&lt;/b&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
    &lt;a href="https://www.youtube.com/@Penpot" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Youtube&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://peertube.kaleidos.net/a/penpot_app/video-channels" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Peertube&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://www.linkedin.com/company/penpot/" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Linkedin&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://instagram.com/penpot.app" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Instagram&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://fosstodon.org/@penpot/" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Mastodon&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://bsky.app/profile/penpot.app" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;Bluesky&lt;/b&gt;&lt;/a&gt;  •
    &lt;a href="https://twitter.com/penpotapp" rel="nofollow noopener noreferrer"&gt;&lt;b&gt;X&lt;/b&gt;&lt;/a&gt;
&lt;/p&gt;




  
    

    &lt;span class="m-1"&gt;Penpot_OpenYourEyes_.mp4&lt;/span&gt;
  
  

  




&lt;p&gt;Penpot is the first &lt;strong&gt;open-source&lt;/strong&gt; design tool for design and code collaboration. Designers can create stunning designs, interactive prototypes, design systems at scale, while developers enjoy ready-to-use code and make their workflow easy and fast. And all of this with no handoff drama.&lt;/p&gt;

&lt;p&gt;Available on browser or self-hosted, Penpot works with open standards like SVG, CSS, HTML and JSON, and it’s free!&lt;/p&gt;

&lt;p&gt;The latest updates take Penpot even further. It’s the first design tool to integrate native &lt;a href="https://penpot.dev/collaboration/design-tokens" rel="nofollow noopener noreferrer"&gt;design tokens&lt;/a&gt;—a single source of truth to improve efficiency and collaboration between product design and development
With the &lt;a href="https://penpot.app/dev-diaries" rel="nofollow noopener noreferrer"&gt;huge 2.0 release&lt;/a&gt;, Penpot took the platform to a whole new level. This update introduces the ground-breaking &lt;a href="https://penpot.app/penpot-2.0" rel="nofollow noopener noreferrer"&gt;CSS Grid Layout feature&lt;/a&gt;, a complete UI redesign, a new Components system,…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/penpot/penpot" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Enter the world of design innovation with Penpot—the open-source maestro that gives Figma a run for its money. If you're tired of design tools with hefty price tags and closed-source limitations, Penpot is here to redefine your creative journey.&lt;/p&gt;

&lt;p&gt;Imagine a tool that blends the best of collaborative design, prototyping, and user interface creation—all while embracing the principles of open source. Penpot is your canvas for unleashing creative freedom, allowing teams to seamlessly collaborate on design projects without the constraints of proprietary software.&lt;/p&gt;

&lt;p&gt;Whether you're a solo designer or part of a collaborative powerhouse, Penpot empowers you to bring your ideas to life, share them effortlessly, and iterate with ease. &lt;/p&gt;

&lt;h2&gt;
  
  
  Cal.com: Streamlining Your Schedule Hassle-Free! 🗓️🚀
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/calcom" rel="noopener noreferrer"&gt;
        calcom
      &lt;/a&gt; / &lt;a href="https://github.com/calcom/cal.com" rel="noopener noreferrer"&gt;
        cal.com
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Scheduling infrastructure for absolutely everyone.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://github.com/calcom/cal.com" rel="noopener noreferrer"&gt;
   &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F8019099%2F210054112-5955e812-a76e-4160-9ddd-58f2c72f1cce.png" alt="Logo"&gt;
  &lt;/a&gt;
  &lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Cal.com&lt;/h3&gt;
&lt;/div&gt;
  &lt;p&gt;
    The open-source Calendly successor
    &lt;br&gt;
    &lt;a href="https://cal.com" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Learn more »&lt;/strong&gt;&lt;/a&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;a href="https://github.com/calcom/cal.com/discussions" rel="noopener noreferrer"&gt;Discussions&lt;/a&gt;
    ·
    &lt;a href="https://cal.com" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt;
    ·
    &lt;a href="https://github.com/calcom/cal.com/issues" rel="noopener noreferrer"&gt;Issues&lt;/a&gt;
    ·
    &lt;a href="https://cal.com/roadmap" rel="nofollow noopener noreferrer"&gt;Roadmap&lt;/a&gt;
  &lt;/p&gt;
&lt;p&gt;
   &lt;a href="https://www.producthunt.com/products/cal-com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3166a2e765f0dc875c403410b8a4b0b389468f96b3a79066004709d44c7a2a49/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50726f6475637425323048756e742d2532333125323050726f647563742532306f662532307468652532304d6f6e74682d253233444135353245" alt="Product Hunt"&gt;&lt;/a&gt;
   &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/bc5546e640d4a4131dba6abe7854a2fd1de402cb83a3e9552a80cdd2045a7945/68747470733a2f2f6170692e636865636b6c7968712e636f6d2f76312f6261646765732f67726f7570732f313132303731383f7374796c653d666c6174267468656d653d64656661756c74"&gt;&lt;img src="https://camo.githubusercontent.com/bc5546e640d4a4131dba6abe7854a2fd1de402cb83a3e9552a80cdd2045a7945/68747470733a2f2f6170692e636865636b6c7968712e636f6d2f76312f6261646765732f67726f7570732f313132303731383f7374796c653d666c6174267468656d653d64656661756c74" alt="Checkly QA"&gt;&lt;/a&gt;
   &lt;a href="https://status.cal.com" rel="nofollow noopener noreferrer"&gt;&lt;img height="20px" src="https://camo.githubusercontent.com/886673a4f800b760d231c453a95ffdca5789f883d6502b7e51340951f4d2aa47/68747470733a2f2f626574746572757074696d652e636f6d2f7374617475732d6261646765732f76312f6d6f6e69746f722f61396b662e737667" alt="Uptime"&gt;&lt;/a&gt;
   &lt;a href="https://github.com/calcom/cal.com/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1038e430306459d5cfbabfa3175843bcfe440c97355e8ef3c829cdd08a83dfc5/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f63616c636f6d2f63616c2e636f6d" alt="Github Stars"&gt;&lt;/a&gt;
   &lt;a href="https://news.ycombinator.com/item?id=34507672" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/56e8f11cd5b91f8b7483ee88b3497f08c0671b2ccd31d52fa8fa0f59ecece67d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4861636b65722532304e6577732d253233312d253233464636363030" alt="Hacker News"&gt;&lt;/a&gt;
   &lt;a href="https://github.com/calcom/cal.com/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0e718976d4c505466af986fed237f65b0f684c953924f3c5c35815628dc1cd95/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4147504c76332d707572706c65" alt="License"&gt;&lt;/a&gt;
   &lt;a href="https://github.com/calcom/cal.com/pulse" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/182033d28d87eef1e903fdbddbe0c962617fb6627a7e6906245d0d564c9d7275/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6d6d69742d61637469766974792f6d2f63616c636f6d2f63616c2e636f6d" alt="Commits-per-month"&gt;&lt;/a&gt;
   &lt;a href="https://cal.com/pricing" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08fe01a13101988df184defd04f233bbf54c2a485cd7690bbc277ba04d44accb/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f50726963696e672d467265652d627269676874677265656e" alt="Pricing"&gt;&lt;/a&gt;
   &lt;a href="https://jitsu.com?utm_source=github/calcom/cal.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2e746a874067564d05d736c2da0961457dd41f9c79a6ab2020432b8b7d097260/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4d6574726963735f747261636b65645f62792d4a495453552d4141303046463f6c6f676f3d646174613a696d6167652f706e673b6261736536342c6956424f5277304b47676f414141414e5355684555674141414134414141414f434159414141416653433352414141414358424957584d41414173544141414c457745416d7077594141414141584e535230494172733463365141414141526e51553142414143786a777638595155414141434b5355524256486742725a445243594177444551763667434f6f4b4f34684f4358493951566e455a77695935694635476156436c61424e74696f43535576435233744d4a617849665a6757344147556f4550567767505a6f5330446d6767334e425644464e624d49736d5943616b334a316a446b3969435176734b4a766b7a7237314e3831476a367644542f4c5532503652685936336a6361666b33594a456267655a70694679632f35484a4b763845663237334e5366414247625166555a686e4f534141414141415355564f524b35435949493d" alt="Jitsu Tracked"&gt;&lt;/a&gt;
   &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/dfd60d8837d49921e20822ea6c7ae20fa33544031b18f9fd9a50173fca1be82c/68747470733a2f2f6170692e636865636b6c7968712e636f6d2f76312f6261646765732f636865636b732f35653034383034382d316235312d343762612d393230392d3630363037353037363232653f726573706f6e736554696d653d74727565"&gt;&lt;img src="https://camo.githubusercontent.com/dfd60d8837d49921e20822ea6c7ae20fa33544031b18f9fd9a50173fca1be82c/68747470733a2f2f6170692e636865636b6c7968712e636f6d2f76312f6261646765732f636865636b732f35653034383034382d316235312d343762612d393230392d3630363037353037363232653f726573706f6e736554696d653d74727565" alt="Checkly Availability"&gt;&lt;/a&gt;
   &lt;a href="https://hub.docker.com/r/calcom/cal.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9fa054cd16b558d1c8160b785000f6d353cc08a4f3df73aef95b999bc6f0614d/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f63616c636f6d2f63616c2e636f6d"&gt;&lt;/a&gt;
   &lt;a href="https://twitch.tv/calcomtv" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ad6181fea43b167ed7f6ea91243d13dfa5714ca9e7146c20de19ac5be8837e12/68747470733a2f2f696d672e736869656c64732e696f2f7477697463682f7374617475732f63616c636f6d74763f7374796c653d666c6174"&gt;&lt;/a&gt;
   &lt;a href="https://github.com/calcom/cal.com/issues?q=is:issue+is:open+label:%22%F0%9F%99%8B%F0%9F%8F%BB%E2%80%8D%E2%99%82%EF%B8%8Fhelp+wanted%22" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/31a98e2f6168c80a1341bf98ceb889c7a2dab7dce5ada2013b2cca51e3a79a23/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f48656c7025323057616e7465642d436f6e747269627574652d626c7565"&gt;&lt;/a&gt;
   &lt;a href="https://cal.com/figma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5c5e2f8ede446ec59343fed3a1fd8991462bc366519e8d302f5b543e50a9d8a1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4669676d612d44657369676e25323053797374656d2d626c756576696f6c6574"&gt;&lt;/a&gt;
   &lt;a href="https://contributor-covenant.org/version/1/4/code-of-conduct/%20" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/127f26818af61d3b4b9e5a0333cec3d4fad20e7dcf3dddf9b7cd12ee418bd1ca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f6e7472696275746f72253230436f76656e616e742d312e342d707572706c65"&gt;&lt;/a&gt;
   &lt;a href="https://console.algora.io/org/cal/bounties?status=open" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b8e25d1080d735eb15b67ceeb3f3e2b0f1ecc9d26a7bc5f808b75cea71a502f6/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d6874747073253341253246253246636f6e736f6c652e616c676f72612e696f253246617069253246736869656c647325324663616c253246626f756e746965732533467374617475732533446f70656e"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;About the Project&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://private-user-images.githubusercontent.com/8019099/250881880-407e727e-ff19-4ca4-bcae-049dca05cf02.gif?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzAzMjE4MTUsIm5iZiI6MTc3MDMyMTUxNSwicGF0aCI6Ii84MDE5MDk5LzI1MDg4MTg4MC00MDdlNzI3ZS1mZjE5LTRjYTQtYmNhZS0wNDlkY2EwNWNmMDIuZ2lmP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDIwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjAyMDVUMTk1ODM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Zjk2NzFhNWJiZTA5OWJjMzJiM2RiMzA3NDgxNGJkMjU2ZTBlMTI4NDg5OWFhMzkwNTYxNWZhYWU5ZWM2YmVmYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.HinxxIV2cr8YZDk0CRPMpB1vA5h64r7KO7cxaV1Ixg8"&gt;&lt;img width="100%" alt="booking-screen" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fprivate-user-images.githubusercontent.com%2F8019099%2F250881880-407e727e-ff19-4ca4-bcae-049dca05cf02.gif%3Fjwt%3DeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3NzAzMjE4MTUsIm5iZiI6MTc3MDMyMTUxNSwicGF0aCI6Ii84MDE5MDk5LzI1MDg4MTg4MC00MDdlNzI3ZS1mZjE5LTRjYTQtYmNhZS0wNDlkY2EwNWNmMDIuZ2lmP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI2MDIwNSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNjAyMDVUMTk1ODM1WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9Zjk2NzFhNWJiZTA5OWJjMzJiM2RiMzA3NDgxNGJkMjU2ZTBlMTI4NDg5OWFhMzkwNTYxNWZhYWU5ZWM2YmVmYyZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QifQ.HinxxIV2cr8YZDk0CRPMpB1vA5h64r7KO7cxaV1Ixg8"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Scheduling infrastructure for absolutely everyone&lt;/h1&gt;

&lt;/div&gt;

&lt;p&gt;The open source Calendly successor. You are in charge
of your own data, workflow, and appearance.&lt;/p&gt;
&lt;p&gt;Calendly and other scheduling tools are awesome. It made our lives massively easier. We're using it for business meetings, seminars, yoga classes, and even calls with our families. However, most tools are very limited in terms of control and customization.&lt;/p&gt;
&lt;p&gt;That's where Cal.com comes in. Self-hosted or hosted by us. White-label by design. API-driven and ready to be deployed on your own domain. Full control of your events and data.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Recognition&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;&lt;a href="https://news.ycombinator.com/from?site=cal.com" rel="nofollow noopener noreferrer"&gt;Hacker News&lt;/a&gt;&lt;/h4&gt;

&lt;/div&gt;
&lt;a href="https://news.ycombinator.com/item?id=34507672" rel="nofollow noopener noreferrer"&gt;
  &lt;img width="250" height="54" alt="Featured on Hacker News" src="https://camo.githubusercontent.com/9ae1d2ea46a830ec146487bae51143fee8d40ae9a50ca0960481703eeb96c6ac/68747470733a2f2f6861636b65726e6577732d62616467652e76657263656c2e6170702f6170693f69643d3334353037363732"&gt;
&lt;/a&gt;
&lt;a href="https://news.ycombinator.com/item?id=26817795" rel="nofollow noopener noreferrer"&gt;
  &lt;img width="250" height="54" alt="Featured on Hacker News" src="https://camo.githubusercontent.com/677e1d22be0c66a3651442acfc6632985beba4d85e09a4a34fee7d1080cac96d/68747470733a2f2f6861636b65726e6577732d62616467652e76657263656c2e6170702f6170693f69643d3236383137373935"&gt;
&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;&lt;a href="https://producthunt.com/products/cal-com?utm_source=badge-top-post-badge&amp;amp;utm_medium=badge" rel="nofollow noopener noreferrer"&gt;Product Hunt&lt;/a&gt;&lt;/h4&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://producthunt.com/posts/calendso?utm_source=badge-top-post-badge&amp;amp;utm_medium=badge&amp;amp;utm_souce=badge-calendso" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5e390a91d86f2dd3399407459b4edd9169dfa5c677abfb3843aae4d91efb815c/68747470733a2f2f6170692e70726f6475637468756e742e636f6d2f776964676574732f656d6265642d696d6167652f76312f746f702d706f73742d62616467652e7376673f706f73745f69643d323931393130267468656d653d6c6967687426706572696f643d6d6f6e74686c79" alt="Cal.com - The open source Calendly alternative | Product Hunt" width="250" height="54"&gt;&lt;/a&gt; &lt;a href="https://producthunt.com/posts/calendso?utm_source=badge-featured&amp;amp;utm_medium=badge&amp;amp;utm_souce=badge-calendso" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/16fa34ec839553bd81d63cd0dfedfd34cc9d4b7f77b75385c05fb69aa34dadf3/68747470733a2f2f6170692e70726f6475637468756e742e636f6d2f776964676574732f656d6265642d696d6167652f76312f66656174757265642e7376673f706f73745f69643d323931393130267468656d653d6c69676874" alt="Cal.com - The open source Calendly alternative | Product Hunt" width="250" height="54"&gt;&lt;/a&gt; &lt;a href="https://producthunt.com/stories/how-this-open-source-calendly-alternative-rocketed-to-product-of-the-day" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/11f9197c35a3e417f92948e341a5437280f508861e5df64c3f2f676cd0644343/68747470733a2f2f63616c2e636f6d2f6d616b65722d6772616e742e737667" alt="Cal.com - The open source Calendly alternative | Product Hunt" width="250" height="54"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This project is tested with browserstack&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Built With&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://nextjs.org/?ref=cal.com" rel="nofollow noopener noreferrer"&gt;Next.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://trpc.io/?ref=cal.com" rel="nofollow noopener noreferrer"&gt;tRPC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://reactjs.org/?ref=cal.com" rel="nofollow noopener noreferrer"&gt;React.js&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tailwindcss.com/?ref=cal.com" rel="nofollow noopener noreferrer"&gt;Tailwind CSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://prisma.io/?ref=cal.com" rel="nofollow noopener noreferrer"&gt;Prisma.io&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://go.cal.com/daily" rel="nofollow noopener noreferrer"&gt;Daily.co&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contact us&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Meet our sales team for any commercial inquiries.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://cal.com/sales" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7b0e4faa27e2e0d93f63aea8930b975db5e667ff3ea868adf1e2acdc2b4d76dc/68747470733a2f2f63616c2e636f6d2f626f6f6b2d776974682d63616c2d6461726b2e737667" alt="Book us with Cal.com"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Stay Up-to-Date&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Cal.com officially launched as v.1.0 on the 15th of…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/calcom/cal.com" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Tired of scheduling headaches? Enter Cal.com—an open-source marvel that streamlines appointment scheduling. Share your availability, let clients or colleagues pick a slot hassle-free, and wave goodbye to email ping-pong. With seamless calendar integration, it's your go-to for efficient and stress-free calendar management. Embed it on your homepage and say hello to time saved scheduling calls with customers, partners, investors, and more. &lt;/p&gt;

&lt;h2&gt;
  
  
  NextCloud: Your Reliable Self-Hosted File Storage with a Dash of Cool! ☁️🔒
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/nextcloud" rel="noopener noreferrer"&gt;
        nextcloud
      &lt;/a&gt; / &lt;a href="https://github.com/nextcloud/server" rel="noopener noreferrer"&gt;
        server
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ☁️ Nextcloud server, a safe home for all your data
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Nextcloud Server ☁&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://api.reuse.software/info/github.com/nextcloud/server" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c44cb94d239e17ff3908b5823c08b936bd56dd3e9056533504149bbe6315eed9/68747470733a2f2f6170692e72657573652e736f6674776172652f62616467652f6769746875622e636f6d2f6e657874636c6f75642f736572766572" alt="REUSE status"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/nextcloud/server" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b231b9598c5243a404f26b42344f6ac7a366ef838d5f2b9f4bbe44e0854fc211/68747470733a2f2f636f6465636f762e696f2f67682f6e657874636c6f75642f7365727665722f6272616e63682f6d61737465722f67726170682f62616467652e737667" alt="codecov"&gt;&lt;/a&gt;
&lt;a href="https://bestpractices.coreinfrastructure.org/projects/209" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/832c98c79dd92f2bec5dcd833e460aa879110b3ebf18c878aa88fddad88ba84b/68747470733a2f2f626573747072616374696365732e636f7265696e6672617374727563747572652e6f72672f70726f6a656374732f3230392f6261646765" alt="CII Best Practices"&gt;&lt;/a&gt;
&lt;a href="https://contribute.design/nextcloud/server" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/984529423f15ce2a87df8c0db8572c0a55590b511fad9cb66317039cb6da887b/68747470733a2f2f636f6e747269627574652e64657369676e2f6170692f736869656c642f6e657874636c6f75642f736572766572" alt="Design"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A safe home for all your data.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/nextcloud/screenshots/master/nextcloud-hub-25-files.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fnextcloud%2Fscreenshots%2Fmaster%2Fnextcloud-hub-25-files.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why is this so awesome? 🤩&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;📁 &lt;strong&gt;Access your Data&lt;/strong&gt; You can store your files, contacts, calendars, and more on a server of your choosing.&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Sync your Data&lt;/strong&gt; You keep your files, contacts, calendars, and more synchronized amongst your devices.&lt;/li&gt;
&lt;li&gt;🙌 &lt;strong&gt;Share your Data&lt;/strong&gt; …by giving others access to the stuff you want them to see or to collaborate with.&lt;/li&gt;
&lt;li&gt;🚀 &lt;strong&gt;Expandable with hundreds of Apps&lt;/strong&gt; ...like &lt;a href="https://github.com/nextcloud/calendar" rel="noopener noreferrer"&gt;Calendar&lt;/a&gt;, &lt;a href="https://github.com/nextcloud/contacts" rel="noopener noreferrer"&gt;Contacts&lt;/a&gt;, &lt;a href="https://github.com/nextcloud/mail" rel="noopener noreferrer"&gt;Mail&lt;/a&gt;, &lt;a href="https://github.com/nextcloud/spreed" rel="noopener noreferrer"&gt;Video Chat&lt;/a&gt; and all those you can discover in our &lt;a href="https://apps.nextcloud.com" rel="nofollow noopener noreferrer"&gt;App Store&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🔒 &lt;strong&gt;Security&lt;/strong&gt; with our encryption mechanisms, &lt;a href="https://hackerone.com/nextcloud" rel="nofollow noopener noreferrer"&gt;HackerOne bounty program&lt;/a&gt; and two-factor authentication.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Do you want to learn more about how you can use Nextcloud to access, share, and protect your files, calendars, contacts, communication &amp;amp; more at home and in your organization? &lt;a href="https://nextcloud.com/athome/" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Learn about all our Features&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Get your Nextcloud 🚚&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;☑️ &lt;a href="https://nextcloud.com/signup/" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Simply&lt;/strong&gt;&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/nextcloud/server" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Meet NextCloud—a no-nonsense, down-to-earth solution for self-hosted file storage. It goes beyond the basics, offering cool features like end-to-end encryption and integrated office tools. Keep your files secure, collaborate effortlessly, and enjoy the simplicity of having your own cloud storage solution. &lt;/p&gt;

&lt;h2&gt;
  
  
  Metabase: Simplify Your Reporting Process with Ease! 📊
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/metabase" rel="noopener noreferrer"&gt;
        metabase
      &lt;/a&gt; / &lt;a href="https://github.com/metabase/metabase" rel="noopener noreferrer"&gt;
        metabase
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The easy-to-use open source Business Intelligence and Embedded Analytics tool that lets everyone work with data 📊
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Metabase&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://www.metabase.com" rel="nofollow noopener noreferrer"&gt;Metabase&lt;/a&gt; is the easy, open-source way for everyone in your company to ask questions and learn from data.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/e0f5299cbda9a5d805475e6b99d8a2a7ce124766c572adfc4a579b33894e3c35/68747470733a2f2f7777772e6d657461626173652e636f6d2f696d616765732f6d657461626173652d70726f647563742d73637265656e73686f742d757064617465642e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/e0f5299cbda9a5d805475e6b99d8a2a7ce124766c572adfc4a579b33894e3c35/68747470733a2f2f7777772e6d657461626173652e636f6d2f696d616765732f6d657461626173652d70726f647563742d73637265656e73686f742d757064617465642e706e67" alt="Metabase Product Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/metabase/metabase/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/65237a6d5839db85bd1694867afc45a658db2cb69daca788a6c29402afa74cac/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f6d657461626173652f6d657461626173652e7376673f6c6162656c3d6c617465737425323072656c65617365" alt="Latest Release"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/metabase/metabase" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a03aeab38797cfc20c9a4e9d5bac87e1f9551a9e05958555f04b1dfe728a97be/68747470733a2f2f636f6465636f762e696f2f67682f6d657461626173652f6d657461626173652f6272616e63682f6d61737465722f67726170682f62616467652e737667" alt="codecov"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3026bdce542cf4d23fbb126abcc14db85dd1c72bbb1578f67898c22f1e11ea15/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6d657461626173652f6d65746162617365"&gt;&lt;img src="https://camo.githubusercontent.com/3026bdce542cf4d23fbb126abcc14db85dd1c72bbb1578f67898c22f1e11ea15/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6d657461626173652f6d65746162617365" alt="Docker Pulls"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Get started&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The easiest way to get started with Metabase is to sign up for a free trial of &lt;a href="https://store.metabase.com/checkout" rel="nofollow noopener noreferrer"&gt;Metabase Cloud&lt;/a&gt;. You get support, backups, upgrades, an SMTP server, SSL certificate, SoC2 Type 2 security auditing, and more (plus your money goes toward improving Metabase). Check out our quick overview of &lt;a href="https://www.metabase.com/docs/latest/cloud/cloud-vs-self-hosting" rel="nofollow noopener noreferrer"&gt;cloud vs self-hosting&lt;/a&gt;. If you need to, you can always switch to &lt;a href="https://www.metabase.com/docs/latest/installation-and-operation/installing-metabase" rel="nofollow noopener noreferrer"&gt;self-hosting&lt;/a&gt; Metabase at any time (or vice versa).&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Key Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.metabase.com/docs/latest/configuring-metabase/setting-up-metabase" rel="nofollow noopener noreferrer"&gt;Set up in five minutes&lt;/a&gt; (we're not kidding).&lt;/li&gt;
&lt;li&gt;Let anyone on your team &lt;a href="https://www.metabase.com/docs/latest/questions/introduction" rel="nofollow noopener noreferrer"&gt;ask questions&lt;/a&gt; without knowing SQL.&lt;/li&gt;
&lt;li&gt;Use the &lt;a href="https://www.metabase.com/docs/latest/questions/native-editor/writing-sql" rel="nofollow noopener noreferrer"&gt;SQL editor&lt;/a&gt; for more complex queries.&lt;/li&gt;
&lt;li&gt;Build handsome, interactive &lt;a href="https://www.metabase.com/docs/latest/dashboards/introduction" rel="nofollow noopener noreferrer"&gt;dashboards&lt;/a&gt; with filters, auto-refresh, fullscreen, and custom click behavior.&lt;/li&gt;
&lt;li&gt;Create &lt;a href="https://www.metabase.com/learn/metabase-basics/getting-started/models" rel="nofollow noopener noreferrer"&gt;models&lt;/a&gt; that clean up, annotate, and/or combine raw tables.&lt;/li&gt;
&lt;li&gt;Define canonical &lt;a href="https://www.metabase.com/docs/latest/data-modeling/metrics" rel="nofollow noopener noreferrer"&gt;segments and metrics&lt;/a&gt; for your team…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/metabase/metabase" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Metabase is your go-to open-source tool for hassle-free reporting. Say goodbye to complex data handling and hello to straightforward insights. Whether you're a data enthusiast or a business professional, Metabase empowers you to create insightful reports without the need for extensive training. It's all about connecting your data source, exploring possibilities, and effortlessly generating reports. From interactive dashboards to easy sharing options, Metabase streamlines your reporting journey. Ready to simplify how you handle and present your data? Dive into Metabase for a straightforward reporting experience. 📊🔍&lt;/p&gt;

&lt;h2&gt;
  
  
  Gitea: A Cool Option for Resource-Efficient Version Control in Small Teams! 🚀🛠️
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/go-gitea" rel="noopener noreferrer"&gt;
        go-gitea
      &lt;/a&gt; / &lt;a href="https://github.com/go-gitea/gitea" rel="noopener noreferrer"&gt;
        gitea
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Gitea&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml?query=branch%3Amain" title="Release Nightly" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/go-gitea/gitea/actions/workflows/release-nightly.yml/badge.svg?branch=main" alt=""&gt;&lt;/a&gt;
&lt;a href="https://discord.gg/Gitea" title="Join the Discord chat at https://discord.gg/Gitea" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/fabe7f28ff47f06e810c9888a19f80b115b037047fbc92b604e292a75579c6e2/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3332323533383935343131393138343338342e7376673f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465266c6162656c3d446973636f726426636f6c6f723d353836354632" alt=""&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/code.gitea.io/gitea" title="Go Report Card" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/df0c7ba3c7fd4016f0c97eb101d86f717d8f58076916443db092e71f4d383858/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f636f64652e67697465612e696f2f6769746561" alt=""&gt;&lt;/a&gt;
&lt;a href="https://pkg.go.dev/code.gitea.io/gitea" title="GoDoc" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/47b91a8eb5e5b5cfdef3e1b9eab15c4ad3eb2ceb64cc6534d7df38552e9dbda7/68747470733a2f2f706b672e676f2e6465762f62616467652f636f64652e67697465612e696f2f67697465613f7374617475732e737667" alt=""&gt;&lt;/a&gt;
&lt;a href="https://github.com/go-gitea/gitea/releases/latest" title="GitHub release" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1737232be62de4b03290f5a4ac19d40cf5eda5b1faa3c499c71dd849fd4317e2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f676f2d67697465612f67697465612e737667" alt=""&gt;&lt;/a&gt;
&lt;a href="https://www.codetriage.com/go-gitea/gitea" title="Help Contribute to Open Source" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/79e974d133c528369aeff2ce3a967a9ecb2dd8e071bce974b475d53f3bdc757f/68747470733a2f2f7777772e636f64657472696167652e636f6d2f676f2d67697465612f67697465612f6261646765732f75736572732e737667" alt=""&gt;&lt;/a&gt;
&lt;a href="https://opencollective.com/gitea" title="Become a backer/sponsor of gitea" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d2116817151a5febf6c5389ea9ee1cdbea5475fcca2739f14a8b67c6bee75644/68747470733a2f2f6f70656e636f6c6c6563746976652e636f6d2f67697465612f74696572732f6261636b6572732f62616467652e7376673f6c6162656c3d6261636b65727326636f6c6f723d627269676874677265656e" alt=""&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/licenses/MIT" title="License: MIT" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667" alt=""&gt;&lt;/a&gt;
&lt;a href="https://gitpod.io/#https://github.com/go-gitea/gitea" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/aa8c7aecc2410535d84082c7dc83f8c31c5d02b8e7b76eb4751f63a08f58c447/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f436f6e74726962757465253230776974682d476974706f642d3930386138353f6c6f676f3d676974706f6426636f6c6f723d677265656e" alt="Contribute with Gitpod"&gt;&lt;/a&gt;
&lt;a href="https://translate.gitea.com" title="Crowdin" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f2407fe4780de49d1bed3ab49ad5956c2cb5aed44bb61eced2972a4eed7c3132/68747470733a2f2f6261646765732e63726f7764696e2e6e65742f67697465612f6c6f63616c697a65642e737667" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/go-gitea/gitea/./README.zh-tw.md" rel="noopener noreferrer"&gt;繁體中文&lt;/a&gt; | &lt;a href="https://github.com/go-gitea/gitea/./README.zh-cn.md" rel="noopener noreferrer"&gt;简体中文&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Purpose&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;The goal of this project is to make the easiest, fastest, and most
painless way of setting up a self-hosted Git service.&lt;/p&gt;
&lt;p&gt;As Gitea is written in Go, it works across &lt;strong&gt;all&lt;/strong&gt; the platforms and
architectures that are supported by Go, including Linux, macOS, and
Windows on x86, amd64, ARM and PowerPC architectures
This project has been
&lt;a href="https://blog.gitea.com/welcome-to-gitea/" rel="nofollow noopener noreferrer"&gt;forked&lt;/a&gt; from
&lt;a href="https://gogs.io" rel="nofollow noopener noreferrer"&gt;Gogs&lt;/a&gt; since November of 2016, but a lot has changed.&lt;/p&gt;
&lt;p&gt;For online demonstrations, you can visit &lt;a href="https://demo.gitea.com" rel="nofollow noopener noreferrer"&gt;demo.gitea.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;For accessing free Gitea service (with a limited number of repositories), you can visit &lt;a href="https://gitea.com/user/login" rel="nofollow noopener noreferrer"&gt;gitea.com&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To quickly deploy your own dedicated Gitea instance on Gitea Cloud, you can start a free trial at &lt;a href="https://cloud.gitea.com" rel="nofollow noopener noreferrer"&gt;cloud.gitea.com&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;You can find comprehensive documentation on our official &lt;a href="https://docs.gitea.com/" rel="nofollow noopener noreferrer"&gt;documentation website&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;It includes installation, administration, usage, development, contributing guides, and more to help you get started and explore all features effectively.&lt;/p&gt;
&lt;p&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/go-gitea/gitea" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;In the realm of version control, Gitea emerges as a cool and pragmatic choice, especially for smaller teams. This open-source platform offers a refreshing alternative to larger counterparts like GitLab, providing essential functionalities without the resource footprint.&lt;/p&gt;

&lt;p&gt;With Gitea, the emphasis is on simplicity and efficiency. Managing repositories, tracking issues, and collaborating seamlessly become straightforward tasks, making it an excellent fit for teams that prefer a nimble and focused approach to version control.&lt;/p&gt;

&lt;p&gt;If you're navigating the landscape of version control tools and aiming for a solution that effortlessly caters to the needs of a smaller team, Gitea stands out as a cool option worth exploring. Give it a try and experience version control without unnecessary complexities. 🛠️👥&lt;/p&gt;

&lt;h2&gt;
  
  
  Mattermost: Your Secure Slack Alternative with Powerful Chat and Jitsi Integration! 💬🔒
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/mattermost" rel="noopener noreferrer"&gt;
        mattermost
      &lt;/a&gt; / &lt;a href="https://github.com/mattermost/mattermost" rel="noopener noreferrer"&gt;
        mattermost
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Mattermost is an open source platform for secure collaboration across the entire software development lifecycle..
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;&lt;a href="https://mattermost.com" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F7205829%2F137170381-fe86eef0-bccc-4fdd-8e92-b258884ebdd7.png" alt="Mattermost logo"&gt;&lt;/a&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://mattermost.com" rel="nofollow noopener noreferrer"&gt;Mattermost&lt;/a&gt; is an open core, self-hosted collaboration platform that offers chat, workflow automation, voice calling, screen sharing, and AI integration. This repo is the primary source for core development on the Mattermost platform; it's written in Go and React, runs as a single Linux binary, and relies on PostgreSQL. A new compiled version is released under an MIT license every month on the 16th.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://mattermost.com/deploy/?utm_source=github-mattermost-server-readme" rel="nofollow noopener noreferrer"&gt;Deploy Mattermost on-premises&lt;/a&gt;, or &lt;a href="https://mattermost.com/sign-up/?utm_source=github-mattermost-server-readme" rel="nofollow noopener noreferrer"&gt;try it for free in the cloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/7205829/136107976-7a894c9e-290a-490d-8501-e5fdbfc3785a.png"&gt;&lt;img width="1006" alt="mattermost user interface" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F7205829%2F136107976-7a894c9e-290a-490d-8501-e5fdbfc3785a.png"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Learn more about the following use cases with Mattermost:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://mattermost.com/solutions/use-cases/devops/?utm_source=github-mattermost-server-readme" rel="nofollow noopener noreferrer"&gt;DevSecOps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mattermost.com/solutions/use-cases/incident-resolution/?utm_source=github-mattermost-server-readme" rel="nofollow noopener noreferrer"&gt;Incident Resolution&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mattermost.com/solutions/use-cases/it-service-desk/?utm_source=github-mattermost-server-readme" rel="nofollow noopener noreferrer"&gt;IT Service Desk&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other useful resources:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://docs.mattermost.com/guides/deployment.html" rel="nofollow noopener noreferrer"&gt;Download and Install Mattermost&lt;/a&gt; - Install, setup, and configure your own Mattermost instance.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.mattermost.com/" rel="nofollow noopener noreferrer"&gt;Product documentation&lt;/a&gt; - Learn how to run a Mattermost instance and take advantage of all the features.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://developers.mattermost.com/" rel="nofollow noopener noreferrer"&gt;Developer documentation&lt;/a&gt; - Contribute code to Mattermost or build an integration via APIs, Webhooks, slash commands, Apps, and plugins.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Table of contents&lt;/h1&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/mattermost/mattermost#install-mattermost" rel="noopener noreferrer"&gt;Install Mattermost&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/mattermost/mattermost#native-mobile-and-desktop-apps" rel="noopener noreferrer"&gt;Native&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/mattermost/mattermost" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Discover Mattermost, the open-source Slack alternative that prioritizes secure team communication. With robust chat functionalities, file sharing, and the added bonus of seamless Jitsi integration, Mattermost creates a private and efficient collaboration space for your team.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Strapi: The Cool Choice for Flexible and Customizable Content Management! 🚀📝
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/strapi" rel="noopener noreferrer"&gt;
        strapi
      &lt;/a&gt; / &lt;a href="https://github.com/strapi/strapi" rel="noopener noreferrer"&gt;
        strapi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🚀 Strapi is the leading open-source headless CMS. It’s 100% JavaScript/TypeScript, fully customizable, and developer-first.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://strapi.io/#gh-light-mode-only" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/4812363dc27a3adce86bdf2c7151af174144fa23e4d8c26b3fee4d661300f8e0/68747470733a2f2f7374726170692e696f2f6173736574732f7374726170692d6c6f676f2d6461726b2e737667" width="318px" alt="Strapi logo"&gt;
  &lt;/a&gt;
  &lt;a href="https://strapi.io/#gh-dark-mode-only" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/1c2411509a8929055f8e5804457c3faacc4d191262c686c7d436dcd7bdc91a2c/68747470733a2f2f7374726170692e696f2f6173736574732f7374726170692d6c6f676f2d6c696768742e737667" width="318px" alt="Strapi logo"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Open-source headless CMS, self-hosted or Cloud you’re in control.&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;The leading open-source headless CMS, 100% JavaScript/TypeScript, flexible and fully customizable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://cloud.strapi.io/signups?source=github1" rel="nofollow noopener noreferrer"&gt;Cloud&lt;/a&gt; · &lt;a href="https://strapi.io/demo?utm_campaign=Growth-Experiments&amp;amp;utm_source=strapi%2Fstrapi%20README.md" rel="nofollow noopener noreferrer"&gt;Try live demo&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;
  &lt;a href="https://www.npmjs.org/package/@strapi/strapi" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/f49c2cc3dea0a8b2ec4485b3627a102d29b642b561755f907f6b945966ddc937/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f407374726170692f7374726170692f6c61746573742e737667" alt="NPM Version"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/strapi/strapi/actions/workflows/tests.yml" rel="noopener noreferrer"&gt;
    &lt;img src="https://github.com/strapi/strapi/actions/workflows/tests.yml/badge.svg?branch=main" alt="Tests"&gt;
  &lt;/a&gt;
  &lt;a href="https://discord.strapi.io" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/a786751a365e8f3f5c5d40ca8a2c16c143474977dcbe4e4caf50dd3509f275bb/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3831313938393136363738323032313633333f6c6162656c3d446973636f7264" alt="Strapi on Discord"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/strapi/strapi/actions/workflows/nightly.yml" rel="noopener noreferrer"&gt;
    &lt;img src="https://github.com/strapi/strapi/actions/workflows/nightly.yml/badge.svg" alt="Strapi Nightly Release Build Status"&gt;
  &lt;/a&gt;
&lt;/p&gt;



&lt;p&gt;
  &lt;a href="https://strapi.io" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fstrapi%2Fstrapi%2Fmain%2Fpublic%2Fassets%2Fadmin-demo.gif" alt="Administration panel"&gt;
  &lt;/a&gt;
&lt;/p&gt;



&lt;p&gt;Strapi Community Edition is a free and open-source headless CMS enabling you to manage any content, anywhere.&lt;/p&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;strong&gt;Self-hosted or Cloud&lt;/strong&gt;: You can host and scale Strapi projects the way you want. You can save time by deploying to &lt;a href="https://cloud.strapi.io/signups?source=github1" rel="nofollow noopener noreferrer"&gt;Strapi Cloud&lt;/a&gt; or deploy to the hosting platform you want**: AWS, Azure, Google Cloud, DigitalOcean.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Modern Admin Panel&lt;/strong&gt;: Elegant, entirely customizable and a fully extensible admin panel.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Multi-database support&lt;/strong&gt;: You can choose the database you prefer: PostgreSQL, MySQL, MariaDB, and SQLite.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Customizable&lt;/strong&gt;: You can quickly build your logic by fully customizing APIs, routes, or plugins to fit your needs perfectly.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Blazing Fast and Robust&lt;/strong&gt;: Built on top of Node.js and TypeScript, Strapi delivers reliable and solid performance.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Front-end Agnostic&lt;/strong&gt;: Use any…&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/strapi/strapi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;For those in search of a content management system that's both flexible and customizable, Strapi stands out as a cool option worth exploring. This open-source headless CMS puts you in control, allowing developers and content creators alike to shape and manage digital content effortlessly.&lt;/p&gt;

&lt;p&gt;With a user-friendly interface and customizable APIs, Strapi offers a refreshing alternative for those seeking a dynamic approach to content management. It's the kind of tool that understands the importance of flexibility, giving you the freedom to design and structure your content according to your vision.&lt;/p&gt;

&lt;p&gt;If you're after a cool and adaptable solution that breaks away from the traditional CMS mold, consider giving Strapi a spin. It might just be the key to unlocking a new level of creativity and efficiency in managing your digital content. &lt;/p&gt;

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

&lt;p&gt;To sum up, the realm of open-source tools not only provides cost-effective solutions for emerging businesses but often comes with the added benefits of being usually free when self-hosted, privacy-friendly, and scalable. These established tools showcased here have proven themselves as reliable options for various business needs—from project management to analytics, collaboration, and beyond. Their open-source nature fosters a sense of transparency and community-driven development.&lt;/p&gt;

&lt;p&gt;In the spirit of constant improvement and discovery, if there's an open-source gem that we haven't covered, we invite you to share your insights in the comments below. Here's to the ever-growing world of open-source possibilities! 🌐🛠️ &lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Star Glasskube:&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;code&gt;glasskube/glasskube&lt;/code&gt;&lt;/a&gt;
&lt;/h2&gt;

</description>
      <category>opensource</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>🔥Our TOP 13 DEPLOYMENT &amp; TEMPLATING tools for KUBERNETES 🚀</title>
      <dc:creator>Philip Miglinci</dc:creator>
      <pubDate>Thu, 14 Dec 2023 14:51:22 +0000</pubDate>
      <link>https://dev.to/distr/our-top-13-deployment-templating-tools-for-kubernetes-4mei</link>
      <guid>https://dev.to/distr/our-top-13-deployment-templating-tools-for-kubernetes-4mei</guid>
      <description>&lt;h1&gt;
  
  
  TL;DR 🔍
&lt;/h1&gt;

&lt;p&gt;Feeling a bit lost in the Kubernetes deployment and packaging tool jungle? Don't worry!&lt;br&gt;
We've got your back with a comprehensive cheat sheet. Dive into our curated list, breaking down each tool, its purpose, and a user-friendliness rating to make your Kubernetes journey a breeze.&lt;br&gt;
Say goodbye to overwhelm and hello to clarity with our go-to guide! 🌐🚀&lt;/p&gt;


&lt;h1&gt;
  
  
  We Want Your Feedback! 🫶
&lt;/h1&gt;

&lt;p&gt;Share your thoughts in the comments below! Let us know what topics you'd like more content on. If this guide helps, click on the cat and leave a star to support us in creating more developer-centric content. Your feedback matters!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;Lizenz&lt;/th&gt;
&lt;th&gt;GitHub  Stars&lt;/th&gt;
&lt;th&gt;Ease of Use&lt;/th&gt;
&lt;th&gt;UI&lt;/th&gt;
&lt;th&gt;Commercial  Support&lt;/th&gt;
&lt;th&gt;Templating&lt;/th&gt;
&lt;th&gt;Deployment&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s" rel="noopener noreferrer"&gt;cdk8s&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;3.9k&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/kubernetes/kubectl" rel="noopener noreferrer"&gt;kubectl&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;2.6k&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/glasskube/operator" rel="noopener noreferrer"&gt;Glasskube&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;LGPL.v3&lt;/td&gt;
&lt;td&gt;152&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/helm/helm" rel="noopener noreferrer"&gt;Helm&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;25.3k&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/kubernetes-sigs/kustomize" rel="noopener noreferrer"&gt;Kustomize&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;10.2k&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/fluxcd/flux2" rel="noopener noreferrer"&gt;Flux&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;5.5k&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/argoproj/argo-cd" rel="noopener noreferrer"&gt;Argo CD&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;14.9k&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/stefanprodan/timoni" rel="noopener noreferrer"&gt;Timoni&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;981&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/carvel-dev/carvel" rel="noopener noreferrer"&gt;Carvel&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;325&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/pulumi/pulumi" rel="noopener noreferrer"&gt;Pulumi&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;18.4k&lt;/td&gt;
&lt;td&gt;⭐⭐⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/hashicorp/terraform" rel="noopener noreferrer"&gt;Terraform&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;BSL&lt;/td&gt;
&lt;td&gt;39.8k&lt;/td&gt;
&lt;td&gt;⭐&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/grafana/tanka" rel="noopener noreferrer"&gt;Tanka with Jsonnet&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;MIT&lt;/td&gt;
&lt;td&gt;2.1k&lt;/td&gt;
&lt;td&gt;⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://github.com/dhall-lang/dhall-kubernetes" rel="noopener noreferrer"&gt;Dhall&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Apache  2.0&lt;/td&gt;
&lt;td&gt;600&lt;/td&gt;
&lt;td&gt;⭐⭐⭐&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✅&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;


&lt;h2&gt;
  
  
  cdk8s: Where Kubernetes Meets Familiar Programming Languages
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/cdk8s-team" rel="noopener noreferrer"&gt;
        cdk8s-team
      &lt;/a&gt; / &lt;a href="https://github.com/cdk8s-team/cdk8s" rel="noopener noreferrer"&gt;
        cdk8s
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Define Kubernetes native apps and abstractions using object-oriented programming
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Cloud Development Kit for Kubernetes&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/cdk8s-team/cdk8s/./website/static/images/animation.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fcdk8s-team%2Fcdk8s%2F.%2Fwebsite%2Fstatic%2Fimages%2Fanimation.gif" alt=""&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s/actions/workflows/website.yml" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/cdk8s-team/cdk8s/workflows/website/badge.svg" alt="Website"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://constructs.dev/packages/cdk8s" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/488e810662fc19df276fa93c9b2f2dbde2a35c518cebfe29a219f54c786594bb/68747470733a2f2f636f6e737472756374732e6465762f62616467653f7061636b6167653d63646b3873" alt="View on Construct Hub"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;cdk8s&lt;/strong&gt; is an open-source software development framework for defining Kubernetes applications and reusable abstractions using familiar
programming languages and rich object-oriented APIs. cdk8s apps synthesize into standard Kubernetes
manifests which can be applied to any Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;cdk8s is a &lt;a href="https://www.cncf.io" rel="nofollow noopener noreferrer"&gt;Cloud Native Computing Foundation&lt;/a&gt; Sandbox Project, built with ❤️ at AWS. We encourage you to &lt;a href="https://github.com/cdk8s-team/cdk8s#getting-started" rel="noopener noreferrer"&gt;try it out&lt;/a&gt;, &lt;a href="https://github.com/cdk8s-team/cdk8s#help--feedback" rel="noopener noreferrer"&gt;leave feedback&lt;/a&gt;, and &lt;a href="https://github.com/cdk8s-team/cdk8s#contributing" rel="noopener noreferrer"&gt;jump in to help&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Contents:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#repositories" rel="noopener noreferrer"&gt;Repositories&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#overview" rel="noopener noreferrer"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#getting-started" rel="noopener noreferrer"&gt;Getting Started&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#help--feedback" rel="noopener noreferrer"&gt;Help &amp;amp; Feedback&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#documentation" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#examples" rel="noopener noreferrer"&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#roadmap" rel="noopener noreferrer"&gt;Roadmap&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#community" rel="noopener noreferrer"&gt;Community&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#contributing" rel="noopener noreferrer"&gt;Contributing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#cdk8sio-website" rel="noopener noreferrer"&gt;CDK8s.io website&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/cdk8s-team/cdk8s#license" rel="noopener noreferrer"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Repositories&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;This project consists of multiple packages, maintained and released via the following repositories:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/cdk8s-team/cdk8s-core" rel="noopener noreferrer"&gt;cdk8s&lt;/a&gt; - Core library. For historical reasons note that the &lt;a href="https://www.npmjs.com/package/cdk8s" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;cdk8s&lt;/code&gt;&lt;/a&gt; package is maintained in the &lt;code&gt;cdk8s-team/cdk8s-core&lt;/code&gt; repository.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cdk8s-team/cdk8s-cli" rel="noopener noreferrer"&gt;cdk8s-cli&lt;/a&gt; - Command-Line interface.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/cdk8s-team/cdk8s-plus" rel="noopener noreferrer"&gt;cdk8s-plus&lt;/a&gt; - High-Level constructs for Kubernetes core.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The current repository acts as an umbrella repository for cross module concerns, as well as the deployment of…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/cdk8s-team/cdk8s" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Cloud Development Kit for Kubernetes (cdk8s) lets you write Kubernetes Manifests / Helm-charts in an object orientated way.&lt;br&gt;
You can easily extend existing classes, use interfaces and make sure you don't have to repeat yourself.&lt;br&gt;
All your code will get compiled to &lt;code&gt;yaml&lt;/code&gt; resources which than can easily deployed to your cluster.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Beginner-friendly, object-oriented APIs, integrates with AWS CDK.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  kubectl: The Swiss Army Knife for Kubernetes Deployments
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kubernetes" rel="noopener noreferrer"&gt;
        kubernetes
      &lt;/a&gt; / &lt;a href="https://github.com/kubernetes/kubectl" rel="noopener noreferrer"&gt;
        kubectl
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Issue tracker and mirror of kubectl code
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;This is an automatically published &lt;a href="https://git.k8s.io/kubernetes/staging#external-repository-staging-area" rel="nofollow noopener noreferrer"&gt;staged repository&lt;/a&gt; for Kubernetes&lt;/strong&gt;.&lt;br&gt;
Pull requests, should be made to the main Kubernetes repository: &lt;a href="https://github.com/kubernetes/kubernetes" rel="noopener noreferrer"&gt;https://github.com/kubernetes/kubernetes&lt;/a&gt;.&lt;br&gt;
This repository is read-only for importing, and not used for direct contributions.&lt;br&gt;
See &lt;a href="https://github.com/kubernetes/kubectl/./CONTRIBUTING.md" rel="noopener noreferrer"&gt;CONTRIBUTING.md&lt;/a&gt; for more details.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Kubectl&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/kubernetes/kubectl/./images/kubectl-logo-medium.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fkubernetes%2Fkubectl%2F.%2Fimages%2Fkubectl-logo-medium.png" alt="kubectl logo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://travis-ci.org/kubernetes/kubectl" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/180f79f00733a04b516db38fb531f9e63eeda130bb102f2a7f492610373ee629/68747470733a2f2f7472617669732d63692e6f72672f6b756265726e657465732f6b75626563746c2e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt; &lt;a href="https://godoc.org/k8s.io/kubectl" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7c5c90823b288e197e83044a367577f35c26ddfcb47234c4c23daa6c1609a74e/68747470733a2f2f676f646f632e6f72672f6b38732e696f2f6b75626563746c3f7374617475732e737667" alt="GoDoc"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;k8s.io/kubectl&lt;/code&gt; repo is used to track issues for the kubectl cli distributed
with &lt;code&gt;k8s.io/kubernetes&lt;/code&gt;. It also contains packages intended for use by client
programs. E.g. these packages are vendored into &lt;code&gt;k8s.io/kubernetes&lt;/code&gt; for use in
the &lt;a href="https://github.com/kubernetes/kubernetes/tree/master/cmd/kubectl" rel="noopener noreferrer"&gt;kubectl&lt;/a&gt;
cli client. That client will eventually move here too.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Contribution Requirements&lt;/h2&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Full unit-test coverage.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Go tools compliant (&lt;code&gt;go get&lt;/code&gt;, &lt;code&gt;go test&lt;/code&gt;, etc.). It needs to be vendorable
somewhere else.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;No dependence on &lt;code&gt;k8s.io/kubernetes&lt;/code&gt;. Dependence on other repositories is fine.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Code must be usefully &lt;a href="https://go.dev/doc/effective_go#commentary" rel="nofollow noopener noreferrer"&gt;commented&lt;/a&gt;
Not only for developers on the project, but also for external users of these packages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;When reviewing PRs, you are encouraged to…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kubernetes/kubectl" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Meet the command-line hero! kubectl is Kubernetes' official command-line interface.&lt;br&gt;
It's your go-to tool for applying configurations, managing clusters, and handling everything Kubernetes from the terminal.&lt;br&gt;
Using &lt;code&gt;kubectl edit&lt;/code&gt; you can even directly edit and modify resources. (NOT RECOMMENDED)&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Standard, versatile, direct control over resources.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Glasskube: The simple Path to Kubernetes Deployment
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/glasskube" rel="noopener noreferrer"&gt;
        glasskube
      &lt;/a&gt; / &lt;a href="https://github.com/glasskube/operator" rel="noopener noreferrer"&gt;
        operator
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🧊 Glasskube Apps Operator
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://github.com/glasskube/operator" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/367a783a5e557d9886339b8b082a5842e6dfd7bcd4a58c4dbf293d0cc96df11b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f676c6173736b7562652f6f70657261746f72" alt="GitHub Repo stars"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/r/glasskube/operator" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4981ba593265c288bcac2afc9a1ed3be93f2fb565e326693715481bd553dc834/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f676c6173736b7562652f6f70657261746f72" alt="Docker Pulls"&gt;&lt;/a&gt;
&lt;a href="https://opensource.org/license/lgpl-3-0/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d935352b52ef04cb2c1df62a182eee999f715687fc3e25a97d79f278978ee70c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4c47504c5f332e302d626c7565" alt="license"&gt;&lt;/a&gt;
&lt;a href="https://glasskube.eu/docs/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a951185fd92b15e2eb48257ef36352e89da1b2b84cddf3a2b90683c9e9f87f82/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63732d676c6173736b7562652e6575253246646f63732d626c7565" alt="Docs"&gt;&lt;/a&gt;
&lt;a href="https://artifacthub.io/packages/helm/glasskube/glasskube-operator" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b1749b5cadf374097c5cb860aef64e188dce12dc1c477c19eda780202de34445/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f61727469666163746875622e696f2f62616467652f7265706f7369746f72792f676c6173736b756265" alt="Artifact Hub"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;div&gt;
  &lt;a href="https://glasskube.eu/" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fglasskube%2F.github%2Fmain%2Fimages%2Fglasskube-logo.png" alt="Glasskube Logo" height="160"&gt;
  &lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Kubernetes Operator&lt;/h3&gt;
&lt;/div&gt;
  &lt;p&gt;
    Open Source Tools on autopilot
    &lt;br&gt;&lt;br&gt;
    &lt;a href="https://glasskube.eu/docs/getting-started/install" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Getting started »&lt;/strong&gt;&lt;/a&gt;
    &lt;br&gt; &lt;br&gt;
    &lt;a href="https://glasskube.eu/" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Explore our website »&lt;/strong&gt;&lt;/a&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;a href="https://github.com/glasskube" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;
    &lt;a href="https://hub.docker.com/u/glasskube" rel="nofollow noopener noreferrer"&gt;Docker Hub&lt;/a&gt;
    &lt;a href="https://artifacthub.io/packages/helm/glasskube/glasskube-operator" rel="nofollow noopener noreferrer"&gt;Artifact Hub&lt;/a&gt;
    .
    &lt;a href="https://www.linkedin.com/company/glasskube/" rel="nofollow noopener noreferrer"&gt;LinkedIn&lt;/a&gt;
  &lt;/p&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;⭐️ Why Glasskube?&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Turn on autopilot and deploy and manage Open Source Tools fully automated on Kubernetes. Our Open Source Glasskube Operator is the simplest and fastest way to manage all your favorite Open Source Tools and the related infrastructure components like databases, caches, and keep them up to date without manual hassle.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;👌 Easy installation with little to no configuration&lt;/li&gt;
&lt;li&gt;✅ Automatic setup of databases and caches&lt;/li&gt;
&lt;li&gt;🔄 Automate and schedule version updates and patches&lt;/li&gt;
&lt;li&gt;🗓️ Scheduled database backups&lt;/li&gt;
&lt;li&gt;⚙️ Interface for simple SMTP configuration&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🗄️ Table Of Contents&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-quick-start" rel="noopener noreferrer"&gt;Quick Start&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-supported-tools" rel="noopener noreferrer"&gt;Supported Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-screencast" rel="noopener noreferrer"&gt;Screencast&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-need-help" rel="noopener noreferrer"&gt;Need help?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-related-projects" rel="noopener noreferrer"&gt;Related projects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-how-to-contribute" rel="noopener noreferrer"&gt;How to Contribute&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/glasskube/operator#-supported-by" rel="noopener noreferrer"&gt;Supported by&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Quick Start&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;The Glasskube operator is simply deployed via Helm. To install the Open Source Tool simply apply the Custom…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/glasskube/operator" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Glasskube is your window into transparent Kubernetes deployments.&lt;br&gt;
It pre-packages popular open-source apps and components and abstracts them via custom resources.&lt;br&gt;
Glasskube utilizes a Kubernetes operator to install components in the correct namespaces and directly make sure apps and components are probably connected and configured.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; User-friendly, transparent deployment, emphasis on simplicity.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Helm: Kubernetes Package Manager
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/helm" rel="noopener noreferrer"&gt;
        helm
      &lt;/a&gt; / &lt;a href="https://github.com/helm/helm" rel="noopener noreferrer"&gt;
        helm
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The Kubernetes Package Manager
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Helm&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/helm/helm/actions?workflow=release" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/helm/helm/workflows/release/badge.svg" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/helm.sh/helm/v4" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cea2b44a51aa4c950fb98fe8802206763290f726b5a1ca94bee4d13b8514a1a6/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f68656c6d2e73682f68656c6d2f7634" alt="Go Report Card"&gt;&lt;/a&gt;
&lt;a href="https://pkg.go.dev/helm.sh/helm/v4" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4204d449c8ac17196f1a3a04ee0beb1b8c1b33e9cc5a11749b70dbac04462146/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d676f646f63266d6573736167653d7265666572656e636526636f6c6f723d626c7565" alt="GoDoc"&gt;&lt;/a&gt;
&lt;a href="https://bestpractices.coreinfrastructure.org/projects/3131" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ccdc5737a3016a1ed7f84e7b93dc82ec81fc85fbf2c0ece2c67d0bd833b73939/68747470733a2f2f626573747072616374696365732e636f7265696e6672617374727563747572652e6f72672f70726f6a656374732f333133312f6261646765" alt="CII Best Practices"&gt;&lt;/a&gt;
&lt;a href="https://scorecard.dev/viewer/?uri=github.com/helm/helm" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/757edc0f70ae27b50a75c2177a157fdabcd8203e96c2dad40225511cd7853ea2/68747470733a2f2f6170692e73636f7265636172642e6465762f70726f6a656374732f6769746875622e636f6d2f68656c6d2f68656c6d2f6261646765" alt="OpenSSF Scorecard"&gt;&lt;/a&gt;
&lt;a href="https://insights.linuxfoundation.org/project/helm" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/26d0875853b088d147a5d5de07211e40576a6951e54566e0c8c65b8a5b1766aa/68747470733a2f2f696e7369676874732e6c696e7578666f756e646174696f6e2e6f72672f6170692f62616467652f6865616c74682d73636f72653f70726f6a6563743d68656c6d" alt="LFX Health Score"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Helm is a tool for managing Charts. Charts are packages of pre-configured Kubernetes resources.&lt;/p&gt;
&lt;p&gt;Use Helm to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Find and use &lt;a href="https://artifacthub.io/packages/search?kind=0" rel="nofollow noopener noreferrer"&gt;popular software packaged as Helm Charts&lt;/a&gt; to run in Kubernetes&lt;/li&gt;
&lt;li&gt;Share your own applications as Helm Charts&lt;/li&gt;
&lt;li&gt;Create reproducible builds of your Kubernetes applications&lt;/li&gt;
&lt;li&gt;Intelligently manage your Kubernetes manifest files&lt;/li&gt;
&lt;li&gt;Manage releases of Helm packages&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Helm in a Handbasket&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Helm is a tool that streamlines installing and managing Kubernetes applications
Think of it like apt/yum/homebrew for Kubernetes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Helm renders your templates and communicates with the Kubernetes API&lt;/li&gt;
&lt;li&gt;Helm runs on your laptop, CI/CD, or wherever you want it to run.&lt;/li&gt;
&lt;li&gt;Charts are Helm packages that contain at least two things:
&lt;ul&gt;
&lt;li&gt;A description of the package (&lt;code&gt;Chart.yaml&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;One or more templates, which contain Kubernetes manifest files&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Charts can be stored on disk, or fetched from remote chart repositories
(like Debian or RedHat packages)&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Helm Development and Stable Versions&lt;/h2&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/helm/helm" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Helm is a common package manager for Kubernetes.&lt;br&gt;
It simplifies complex app deployments by packaging them into "charts" that can be shared and deployed.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Package management, community charts, versioning.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Kustomize: Tailoring Kubernetes Configurations Like a Pro
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/kubernetes-sigs" rel="noopener noreferrer"&gt;
        kubernetes-sigs
      &lt;/a&gt; / &lt;a href="https://github.com/kubernetes-sigs/kustomize" rel="noopener noreferrer"&gt;
        kustomize
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Customization of kubernetes YAML configurations
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;kustomize&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;code&gt;kustomize&lt;/code&gt; lets you customize raw, template-free YAML
files for multiple purposes, leaving the original YAML
untouched and usable as is.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;kustomize&lt;/code&gt; targets kubernetes; it understands and can
patch &lt;a href="https://kubectl.docs.kubernetes.io/references/kustomize/glossary/#kubernetes-style-object" rel="nofollow noopener noreferrer"&gt;kubernetes style&lt;/a&gt; API objects.  It's like
&lt;a href="https://www.gnu.org/software/make" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;make&lt;/code&gt;&lt;/a&gt;, in that what it does is declared in a file
and it's like &lt;a href="https://www.gnu.org/software/sed" rel="nofollow noopener noreferrer"&gt;&lt;code&gt;sed&lt;/code&gt;&lt;/a&gt;, in that it emits edited text.&lt;/p&gt;
&lt;p&gt;This tool is sponsored by &lt;a href="https://github.com/kubernetes/community/blob/master/sig-cli/README.md" rel="noopener noreferrer"&gt;sig-cli&lt;/a&gt; (&lt;a href="https://github.com/kubernetes/enhancements/blob/master/keps/sig-cli/2377-Kustomize/README.md" rel="noopener noreferrer"&gt;KEP&lt;/a&gt;).&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://kubectl.docs.kubernetes.io/installation/kustomize/" rel="nofollow noopener noreferrer"&gt;Installation instructions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://kubectl.docs.kubernetes.io/references/kustomize/" rel="nofollow noopener noreferrer"&gt;General documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/kubernetes-sigs/kustomize/examples" rel="noopener noreferrer"&gt;Examples&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="https://prow.k8s.io/job-history/kubernetes-jenkins/pr-logs/directory/kustomize-presubmit-master" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7d9716d37b818cccc5758595a01fa1ded2e2f27bdb9de473beea2cecf2a0221b/68747470733a2f2f70726f772e6b38732e696f2f62616467652e7376673f6a6f62733d6b7573746f6d697a652d7072657375626d69742d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;
&lt;a href="https://goreportcard.com/report/github.com/kubernetes-sigs/kustomize" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0217c4e54978d6d90c25c99cba8e29c2181895ed54afe3ca02d6e3fbb18dfd7e/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f6b756265726e657465732d736967732f6b7573746f6d697a65" alt="Go Report Card"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;kubectl integration&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;To find the kustomize version embedded in recent versions of kubectl, run &lt;code&gt;kubectl version&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;&amp;gt;&lt;/span&gt; kubectl version --client
Client Version: v1.31.0
Kustomize Version: v5.4.2&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The kustomize build flow at &lt;a href="https://github.com/kubernetes-sigs/kustomize/releases/tag/v2.0.3" rel="noopener noreferrer"&gt;v2.0.3&lt;/a&gt; was added
to &lt;a href="https://kubernetes.io/blog/2019/03/25/kubernetes-1-14-release-announcement" rel="nofollow noopener noreferrer"&gt;kubectl v1.14&lt;/a&gt;.  The kustomize
flow in kubectl remained frozen at v2.0.3 until kubectl v1.21,
which &lt;a href="https://github.com/kubernetes/kubernetes/blob/4d75a6238a6e330337526e0513e67d02b1940b63/CHANGELOG/CHANGELOG-1.21.md#kustomize-updates-in-kubectl" rel="noopener noreferrer"&gt;updated it to v4.0.5&lt;/a&gt;. It will
be updated on a regular basis going forward, and such updates
will be reflected in the Kubernetes release notes.&lt;/p&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/kubernetes-sigs/kustomize" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Kustomize is part of kubectl and helps you to not duplicate your Kubernetes manifests.&lt;br&gt;
You can reuse the same resources in multiple kustomizations and apply patches to modify only specific values.&lt;br&gt;
You can also create reusable components to better organize your kustomize projects.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Config customization, simplicity, integrates with GitOps.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Flux: GitOps Magic for Continuous Delivery
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/fluxcd" rel="noopener noreferrer"&gt;
        fluxcd
      &lt;/a&gt; / &lt;a href="https://github.com/fluxcd/flux2" rel="noopener noreferrer"&gt;
        flux2
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Open and extensible continuous delivery solution for Kubernetes. Powered by GitOps Toolkit.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Flux version 2&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/fluxcd/flux2/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e74776c007c3613e66fa65539eb22f3af80ffa63af0584cc197f6b9a3f21ed81/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f666c757863642f666c7578322f616c6c2e737667" alt="release"&gt;&lt;/a&gt;
&lt;a href="https://bestpractices.coreinfrastructure.org/projects/4782" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d618fc56276c69fc4ec18955d47b66ad34e9e28797a03d12aa78222a7fff3735/68747470733a2f2f626573747072616374696365732e636f7265696e6672617374727563747572652e6f72672f70726f6a656374732f343738322f6261646765" alt="CII Best Practices"&gt;&lt;/a&gt;
&lt;a href="https://scorecard.dev/viewer/?uri=github.com/fluxcd/flux2" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ee5472bc0d52bca1e1d3dfa80c3963d675ac2a0bad971e0ad0d81c8f7717ae56/68747470733a2f2f6170692e736563757269747973636f726563617264732e6465762f70726f6a656374732f6769746875622e636f6d2f666c757863642f666c7578322f6261646765" alt="OpenSSF Scorecard"&gt;&lt;/a&gt;
&lt;a href="https://app.fossa.com/projects/custom%2B162%2Fgithub.com%2Ffluxcd%2Fflux2?ref=badge_shield" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b73c9f61fa114494ca1b05ff106bb864bdbcb3109098323413b07c0711573834/68747470733a2f2f6170702e666f7373612e636f6d2f6170692f70726f6a656374732f637573746f6d2532423136322532466769746875622e636f6d253246666c75786364253246666c7578322e7376673f747970653d736869656c64" alt="FOSSA Status"&gt;&lt;/a&gt;
&lt;a href="https://artifacthub.io/packages/helm/fluxcd-community/flux2" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0b020454e96661940139a31745f4ca9a8b48ad22c598b53c24ef6c54d0d09529/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f61727469666163746875622e696f2f62616467652f7265706f7369746f72792f666c757832" alt="Artifact HUB"&gt;&lt;/a&gt;
&lt;a href="https://fluxcd.io/flux/security/slsa-assessment" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/dc294f15fb5f1c96307863a1e96860310be940504e7ee370cee94bf4400cbac9/68747470733a2f2f736c73612e6465762f696d616765732f67682d62616467652d6c6576656c332e737667" alt="SLSA 3"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Flux is a tool for keeping Kubernetes clusters in sync with sources of
configuration (like Git repositories and OCI artifacts)
and automating updates to configuration when there is new code to deploy.&lt;/p&gt;
&lt;p&gt;Flux version 2 ("v2") is built from the ground up to use Kubernetes'
API extension system, and to integrate with Prometheus and other core
components of the Kubernetes ecosystem. In version 2, Flux supports
multi-tenancy and support for syncing an arbitrary number of Git
repositories, among other long-requested features.&lt;/p&gt;
&lt;p&gt;Flux v2 is constructed with the &lt;a href="https://github.com/fluxcd/flux2#gitops-toolkit" rel="noopener noreferrer"&gt;GitOps Toolkit&lt;/a&gt;, a
set of composable APIs and specialized tools for building Continuous
Delivery on top of Kubernetes.&lt;/p&gt;
&lt;p&gt;Flux is a Cloud Native Computing Foundation (&lt;a href="https://www.cncf.io/" rel="nofollow noopener noreferrer"&gt;CNCF&lt;/a&gt;) graduated project, used in
production by various &lt;a href="https://fluxcd.io/adopters" rel="nofollow noopener noreferrer"&gt;organisations&lt;/a&gt; and &lt;a href="https://fluxcd.io/ecosystem" rel="nofollow noopener noreferrer"&gt;cloud providers&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Quickstart and documentation&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;To get started check out this &lt;a href="https://fluxcd.io/flux/get-started/" rel="nofollow noopener noreferrer"&gt;guide&lt;/a&gt;
on how to bootstrap Flux on Kubernetes and deploy…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/fluxcd/flux2" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Flux is a complete CD solution for Kubernetes.&lt;br&gt;
It syncs your Kubernetes cluster with Manifests stored in a git repository.&lt;br&gt;
It also has controllers for kustomizations and helm repositories which interact with the Kubernetes api by packaging helm in helm-controller.&lt;br&gt;
With weaveworks there is also an UI and commercial support available.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; GitOps, automated syncing, continuous delivery.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Argo CD: The Maestro of GitOps
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/argoproj" rel="noopener noreferrer"&gt;
        argoproj
      &lt;/a&gt; / &lt;a href="https://github.com/argoproj/argo-cd" rel="noopener noreferrer"&gt;
        argo-cd
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Declarative Continuous Deployment for Kubernetes
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;strong&gt;Releases:&lt;/strong&gt;
&lt;a href="https://github.com/argoproj/argo-cd/releases/latest" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b913014444cf0b32ab0a062061a87a08470ea4211f30e0aadb77fbfc84249ea7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f6172676f70726f6a2f6172676f2d63643f6c6162656c3d6172676f2d6364" alt="Release Version"&gt;&lt;/a&gt;
&lt;a href="https://artifacthub.io/packages/helm/argo/argo-cd" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b9fc29b63ccf5a8df7240f24281f33e3f818441c19cc9c204e02372ecfeedff5/68747470733a2f2f696d672e736869656c64732e696f2f656e64706f696e743f75726c3d68747470733a2f2f61727469666163746875622e696f2f62616467652f7265706f7369746f72792f6172676f2d6364" alt="Artifact HUB"&gt;&lt;/a&gt;
&lt;a href="https://slsa.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/dc294f15fb5f1c96307863a1e96860310be940504e7ee370cee94bf4400cbac9/68747470733a2f2f736c73612e6465762f696d616765732f67682d62616467652d6c6576656c332e737667" alt="SLSA 3"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Code:&lt;/strong&gt;
&lt;a href="https://github.com/argoproj/argo-cd/actions?query=workflow%3A%22Integration+tests%22" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/argoproj/argo-cd/workflows/Integration%20tests/badge.svg?branch=master" alt="Integration tests"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/argoproj/argo-cd" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2f4edf6d14ba89a74dbd6429732ac72a90e29d9f1de3990811190e90eee17039/68747470733a2f2f636f6465636f762e696f2f67682f6172676f70726f6a2f6172676f2d63642f6272616e63682f6d61737465722f67726170682f62616467652e737667" alt="codecov"&gt;&lt;/a&gt;
&lt;a href="https://bestpractices.coreinfrastructure.org/projects/4486" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/71256ff234577418c4b1e29dd52a3705d76bd4bda494e340258c0911ccec9e05/68747470733a2f2f626573747072616374696365732e636f7265696e6672617374727563747572652e6f72672f70726f6a656374732f343438362f6261646765" alt="CII Best Practices"&gt;&lt;/a&gt;
&lt;a href="https://scorecard.dev/viewer/?uri=github.com/argoproj/argo-cd" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/405747c558e533f254020b63bbffd1b6e67f9feddd6f31833db8ace97826ace5/68747470733a2f2f6170692e736563757269747973636f726563617264732e6465762f70726f6a656374732f6769746875622e636f6d2f6172676f70726f6a2f6172676f2d63642f6261646765" alt="OpenSSF Scorecard"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Social:&lt;/strong&gt;
&lt;a href="https://twitter.com/argoproj" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4b84ba68c968e346a01b5928f8df6d1e5dae4581e71e12213ef9cac7cda25ac2/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6172676f70726f6a3f7374796c653d736f6369616c" alt="Twitter Follow"&gt;&lt;/a&gt;
&lt;a href="https://argoproj.github.io/community/join-slack" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/05e01afde016eaef413853df9360939c995c64b825c3f1ecaac8e535589d8ac7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f736c61636b2d6172676f70726f6a2d627269676874677265656e2e7376673f6c6f676f3d736c61636b" alt="Slack"&gt;&lt;/a&gt;
&lt;a href="https://www.linkedin.com/company/argoproj/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f6e8ad291940d597e0f787bd729322709094ec67d0d1c3340ffa6b08e06bb5b4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c696e6b6564496e2d6172676f70726f6a2d626c75652e7376673f6c6f676f3d6c696e6b6564696e" alt="LinkedIn"&gt;&lt;/a&gt;
&lt;a href="https://bsky.app/profile/argoproj.bsky.social" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/bffdd7eb5daccd56132e86b7197f09b7103ee9aa7329fef29e7a90be2a922f9b/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f426c7565736b792d6172676f70726f6a2d626c75652e7376673f7374796c653d736f6369616c266c6f676f3d626c7565736b79" alt="Bluesky"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Argo CD - Declarative Continuous Delivery for Kubernetes&lt;/h1&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is Argo CD?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/argoproj/argo-cd/docs/assets/argocd-ui.gif"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fargoproj%2Fargo-cd%2Fdocs%2Fassets%2Fargocd-ui.gif" alt="Argo CD UI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://youtu.be/0WAm0y2vLIo" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/ac607e1e6516b14f2bd21d7c02990ffba84f3f34108dc7a182a32f6b752666cb/68747470733a2f2f696d672e796f75747562652e636f6d2f76692f3057416d307932764c496f2f302e6a7067" alt="Argo CD Demo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why Argo CD?&lt;/h2&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;Application definitions, configurations, and environments should be declarative and version controlled.&lt;/li&gt;
&lt;li&gt;Application deployment and lifecycle management should be automated, auditable, and easy to understand.&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Who uses Argo CD?&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/argoproj/argo-cd/USERS.md" rel="noopener noreferrer"&gt;Official Argo CD user list&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Documentation&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;To learn more about Argo CD &lt;a href="https://argo-cd.readthedocs.io/" rel="nofollow noopener noreferrer"&gt;go to the complete documentation&lt;/a&gt;.
Check live demo at &lt;a href="https://cd.apps.argoproj.io/" rel="nofollow noopener noreferrer"&gt;https://cd.apps.argoproj.io/&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Community&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Contribution, Discussion and Support&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;You can reach the Argo CD community and developers via the following channels:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Q &amp;amp; A : &lt;a href="https://github.com/argoproj/argo-cd/discussions" rel="noopener noreferrer"&gt;Github Discussions&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Chat : &lt;a href="https://argoproj.github.io/community/join-slack" rel="nofollow noopener noreferrer"&gt;The #argo-cd Slack channel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Contributors Office Hours: &lt;a href="https://calendar.google.com/calendar/u/0/embed?src=argoproj@gmail.com" rel="nofollow noopener noreferrer"&gt;Every Thursday&lt;/a&gt; | &lt;a href="https://docs.google.com/document/d/1xkoFkVviB70YBzSEa4bDnu-rUZ1sIFtwKKG1Uw8XsY8" rel="nofollow noopener noreferrer"&gt;Agenda&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;User Community meeting: &lt;a href="https://calendar.google.com/calendar/u/0/embed?src=argoproj@gmail.com" rel="nofollow noopener noreferrer"&gt;First Wednesday of the month&lt;/a&gt; | &lt;a href="https://docs.google.com/document/d/1ttgw98MO45Dq7ZUHpIiOIEfbyeitKHNfMjbY5dLLMKQ" rel="nofollow noopener noreferrer"&gt;Agenda&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Participation in the Argo CD project is governed by the &lt;a href="https://github.com/cncf/foundation/blob/master/code-of-conduct.md" rel="noopener noreferrer"&gt;CNCF Code of Conduct&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Blogs and Presentations&lt;/h3&gt;

&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/terrytangyuan/awesome-argo" rel="noopener noreferrer"&gt;Awesome-Argo: A Curated List of&lt;/a&gt;…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/argoproj/argo-cd" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Argo CD is an alternative to flux with a stronger focus on a user interface to sync your manifests to your cluster.&lt;br&gt;
It also follows the declarative approach where manifests should be stored in a git repository.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; GitOps, continuous delivery, declarative configuration.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Timoni: Simplicity in Kubernetes Deployment
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/stefanprodan" rel="noopener noreferrer"&gt;
        stefanprodan
      &lt;/a&gt; / &lt;a href="https://github.com/stefanprodan/timoni" rel="noopener noreferrer"&gt;
        timoni
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Timoni is a package manager for Kubernetes, powered by CUE and inspired by Helm.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;timoni&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/sponsors/stefanprodan" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/4fb86fe610d66d4dac7bf1a539fb03d90ef21bcfd6717cb95c3ab2c8de73f696/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d53706f6e736f72266d6573736167653d254532253944254134266c6f676f3d476974487562266c696e6b3d68747470733a2f2f6769746875622e636f6d2f73706f6e736f72732f73746566616e70726f64616e" alt="Sponsor this"&gt;&lt;/a&gt;
&lt;a href="https://github.com/stefanprodan/timoni/releases" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/579a62d0ad4077c260b54778130c999632b328c886f8641ab13ce34e390088e7/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f73746566616e70726f64616e2f74696d6f6e692f616c6c2e737667" alt="release"&gt;&lt;/a&gt;
&lt;a href="https://timoni.sh/install" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/99bc6b69d1fbff53c36aed7008520cb2a60f45d7ab330416a0ccae5004188010/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f706c6174666f726d732d6c696e75782537436d61636f7325374377696e646f77732d3963662e737667" alt="platforms"&gt;&lt;/a&gt;
&lt;a href="https://github.com/stefanprodan/timoni/actions" rel="noopener noreferrer"&gt;&lt;img src="https://github.com/stefanprodan/timoni/workflows/build/badge.svg" alt="build"&gt;&lt;/a&gt;
&lt;a href="https://github.com/stefanprodan/timoni/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0a893e52b62d5cd8f82a6cb66f46fe1f26ebbaca4e7da9464196bb0f208ac79a/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f73746566616e70726f64616e2f74696d6f6e692e737667" alt="license"&gt;&lt;/a&gt;
&lt;a href="https://slsa.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/dc294f15fb5f1c96307863a1e96860310be940504e7ee370cee94bf4400cbac9/68747470733a2f2f736c73612e6465762f696d616765732f67682d62616467652d6c6576656c332e737667" alt="SLSA 3"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://timoni.sh" rel="nofollow noopener noreferrer"&gt;Timoni&lt;/a&gt; is a package manager for Kubernetes
powered by &lt;a href="https://cuelang.org/" rel="nofollow noopener noreferrer"&gt;CUE&lt;/a&gt;
and inspired by &lt;a href="https://helm.sh/" rel="nofollow noopener noreferrer"&gt;Helm&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Timoni project strives to improve the UX of authoring Kubernetes configs
Instead of mingling Go templates with YAML like Helm,
or layering YAML on top of each-other like Kustomize,
Timoni relies on cuelang's type safety, code generation and data validation features
to offer a better experience of creating, packaging and delivering apps to Kubernetes.&lt;/p&gt;
&lt;div class="markdown-alert markdown-alert-important"&gt;
&lt;p class="markdown-alert-title"&gt;Important&lt;/p&gt;
&lt;p&gt;Note that Timoni in under active development and is still in its infancy.
The APIs and command-line interface may change in a backwards incompatible manner.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Get Started&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;To get started with Timoni please visit the documentation website at &lt;a href="https://timoni.sh/quickstart/" rel="nofollow noopener noreferrer"&gt;timoni.sh&lt;/a&gt;.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Concepts&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://timoni.sh/concepts/#module" rel="nofollow noopener noreferrer"&gt;Module&lt;/a&gt; - App definition containing Kubernetes CUE templates and configuration schema, distributed as OCI artifacts.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://timoni.sh/concepts/#instance" rel="nofollow noopener noreferrer"&gt;Instance&lt;/a&gt; - App instantiation referencing the module and workloads deployed on a Kubernetes cluster.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://timoni.sh/concepts/#bundle" rel="nofollow noopener noreferrer"&gt;Bundle&lt;/a&gt; - App composition bundling multiple modules and…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/stefanprodan/timoni" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Timoni is an alternative to helm that.&lt;br&gt;
It uses the nomenclature "bundle" to package applications. It also aims to manage the life cycle of applications and its CRDs.&lt;br&gt;
It uses the CUE data validation language.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; User-friendly, streamlined deployment, minimal learning curve.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Carvel: The Swiss Army Knife for Kubernetes Configuration
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/carvel-dev" rel="noopener noreferrer"&gt;
        carvel-dev
      &lt;/a&gt; / &lt;a href="https://github.com/carvel-dev/carvel" rel="noopener noreferrer"&gt;
        carvel
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Carvel provides a set of reliable, single-purpose, composable tools that aid in your application building, configuration, and deployment to Kubernetes. This repo contains information regarding the Carvel open-source community.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/carvel-dev/carvel/develop/logos/CarvelLogo.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fcarvel-dev%2Fcarvel%2Fdevelop%2Flogos%2FCarvelLogo.png" alt="logo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://bestpractices.coreinfrastructure.org/projects/7746" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0d36987b98681d071da3ecc33fd7b0d85e171231dd5e1f3c6e927f780644a4d8/68747470733a2f2f626573747072616374696365732e636f7265696e6672617374727563747572652e6f72672f70726f6a656374732f373734362f6261646765" alt="OpenSSF Best Practices"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Carvel&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;Carvel provides a set of reliable, single-purpose, composable tools that aid in your application building, configuration, and deployment to Kubernetes.&lt;/p&gt;
&lt;p&gt;This is a list of repos associated with the &lt;a href="https://carvel.dev" rel="nofollow noopener noreferrer"&gt;Carvel&lt;/a&gt; project.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/carvel-dev/ytt" rel="noopener noreferrer"&gt;ytt&lt;/a&gt; - Template and overlay Kubernetes configuration via YAML structures, not text documents&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/carvel-dev/kapp" rel="noopener noreferrer"&gt;kapp&lt;/a&gt; - Install, upgrade, and delete multiple Kubernetes resources as one "application"&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/carvel-dev/kbld" rel="noopener noreferrer"&gt;kbld&lt;/a&gt; - Build or reference container images in Kubernetes configuration in an immutable way&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/carvel-dev/imgpkg" rel="noopener noreferrer"&gt;imgpkg&lt;/a&gt; - Bundle and relocate application configuration (with images) via Docker registries&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/carvel-dev/kapp-controller" rel="noopener noreferrer"&gt;kapp-controller&lt;/a&gt; - Capture application deployment workflow in App CRD. Reliable GitOps experience powered by kapp.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/carvel-dev/vendir" rel="noopener noreferrer"&gt;vendir&lt;/a&gt; - Declaratively state what files should be in a directory.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/carvel-dev/secretgen-controller" rel="noopener noreferrer"&gt;secretgen-controller&lt;/a&gt; - Provides CRDs to specify what secrets need to be on a cluster (generated or not).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Experimental:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/kwt" rel="noopener noreferrer"&gt;kwt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/terraform-provider-carvel" rel="noopener noreferrer"&gt;terraform-provider-carvel&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Installation:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/homebrew" rel="noopener noreferrer"&gt;homebrew&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/docker-image" rel="noopener noreferrer"&gt;docker-image&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/asdf" rel="noopener noreferrer"&gt;asdf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/setup-action" rel="noopener noreferrer"&gt;setup-action&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Plugins:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/ytt.vim" rel="noopener noreferrer"&gt;ytt.vim&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/vscode-ytt" rel="noopener noreferrer"&gt;vscode-ytt&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/simple-app-on-kubernetes" rel="noopener noreferrer"&gt;simple-app-on-kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/ytt-library-for-kubernetes" rel="noopener noreferrer"&gt;ytt-library-for-kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/ytt-library-for-kubernetes-demo" rel="noopener noreferrer"&gt;ytt-library-for-kubernetes-demo&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/carvel-dev/guestbook-example-on-kubernetes" rel="noopener noreferrer"&gt;guestbook-example-on-kubernetes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See what's planned in &lt;a href="https://github.com/orgs/carvel-dev/projects/1" rel="noopener noreferrer"&gt;our backlog&lt;/a&gt;.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Join&lt;/h1&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/carvel-dev/carvel" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Carvel is your all-in-one toolkit for managing Kubernetes configurations. It offers a suite of tools, including &lt;code&gt;ytt&lt;/code&gt; for templating and &lt;code&gt;kapp&lt;/code&gt; for deploying applications.&lt;br&gt;
Think of it as a Swiss Army Knife for fine-tuning your Kubernetes setup.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Comprehensive toolkit, powerful templating, configuration management.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Pulumi: Kubernetes Deployments with a Dash of Code
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/pulumi" rel="noopener noreferrer"&gt;
        pulumi
      &lt;/a&gt; / &lt;a href="https://github.com/pulumi/pulumi" rel="noopener noreferrer"&gt;
        pulumi
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Pulumi - Infrastructure as Code in any programming language 🚀
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
    &lt;a href="https://www.pulumi.com/?utm_source=github.com&amp;amp;utm_medium=referral&amp;amp;utm_campaign=pulumi-pulumi-github-repo&amp;amp;utm_content=top+logo" title="Pulumi - Modern Infrastructure as Code - AWS Azure Kubernetes Containers Serverless" rel="nofollow noopener noreferrer"&gt;
        &lt;img src="https://camo.githubusercontent.com/43e1518a5c2e01e662a5799d4739f9e57391dde2c3bb30d228ac8649b8e4fc74/68747470733a2f2f7777772e70756c756d692e636f6d2f696d616765732f6c6f676f2f6c6f676f2d6f6e2d77686974652d626f782e7376673f" width="350"&gt;
    &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://slack.pulumi.com/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/c4c0380fb4dc8eff82dc42047c2458849f38c7fbfd76b66f10e3998c7737de66/687474703a2f2f7777772e70756c756d692e636f6d2f696d616765732f646f63732f6261646765732f736c61636b2e737667" alt="Slack"&gt;&lt;/a&gt;
&lt;a href="https://github.com/pulumi/pulumi/discussions" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b10cec5600a82b0340ae0239ebba644a837c23c4fb9b41b3f6e1ae8e5c9cb2b8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f64697363757373696f6e732f70756c756d692f70756c756d69" alt="GitHub Discussions"&gt;&lt;/a&gt;
&lt;a href="https://npmjs.com/package/@pulumi/pulumi" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/63d3be87a2c17c6459173f05fa73068c602f192ca7cd12df86374f027b63598e/68747470733a2f2f62616467652e667572792e696f2f6a732f25343070756c756d6925324670756c756d692e737667" alt="NPM version"&gt;&lt;/a&gt;
&lt;a href="https://pypi.org/project/pulumi" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/44669e4c96ab7eb81b17e332337af3e38330ae07d510b8d8a385025e4c4d301f/68747470733a2f2f62616467652e667572792e696f2f70792f70756c756d692e737667" alt="Python version"&gt;&lt;/a&gt;
&lt;a href="https://badge.fury.io/nu/pulumi" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/7a0ae4614eb20c9bf39be28d37f447f1b9e0083a1eb7de023ede44b592153437/68747470733a2f2f62616467652e667572792e696f2f6e752f70756c756d692e737667" alt="NuGet version"&gt;&lt;/a&gt;
&lt;a href="https://godoc.org/github.com/pulumi/pulumi" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/9a2d651a56359e29b41a78c3b6776d789691f05677471d3560e5c29b9497cd60/68747470733a2f2f676f646f632e6f72672f6769746875622e636f6d2f70756c756d692f70756c756d693f7374617475732e737667" alt="GoDoc"&gt;&lt;/a&gt;
&lt;a href="https://github.com/pulumi/pulumi/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6231ff79d127faf22f2c11a2e16fc09fc58305a695965886bb7304cef184a5a8/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f70756c756d692f70756c756d69" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Infrastructure as Code in any Programming Language&lt;/h1&gt;
&lt;/div&gt;
&lt;a href="https://www.pulumi.com/docs/iac/get-started/" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/2d0e776b3fffbfd237988808042cc6b0a9d5a9e3a803dc332eb1aa5636fe000e/68747470733a2f2f7777772e70756c756d692e636f6d2f696d616765732f6765742d737461727465642e7376673f" width="120"&gt;
&lt;/a&gt;
&lt;p&gt;&lt;strong&gt;Pulumi Infrastructure as Code&lt;/strong&gt; is the easiest way to build and deploy infrastructure, of any architecture and on any cloud, using programming languages that you already know and love. Code and ship infrastructure faster with your favorite languages and tools, and embed IaC anywhere with &lt;a href="https://www.pulumi.com/docs/iac/using-pulumi/automation-api/" rel="nofollow noopener noreferrer"&gt;Automation API&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Simply write code in your favorite language and Pulumi automatically provisions and manages your resources on
&lt;a href="https://www.pulumi.com/docs/iac/clouds/aws/" rel="nofollow noopener noreferrer"&gt;AWS&lt;/a&gt;
&lt;a href="https://www.pulumi.com/docs/iac/clouds/azure/" rel="nofollow noopener noreferrer"&gt;Azure&lt;/a&gt;
&lt;a href="https://www.pulumi.com/docs/iac/clouds/gcp/" rel="nofollow noopener noreferrer"&gt;Google Cloud Platform&lt;/a&gt;,
&lt;a href="https://www.pulumi.com/docs/iac/clouds/kubernetes/" rel="nofollow noopener noreferrer"&gt;Kubernetes&lt;/a&gt;, and &lt;a href="https://www.pulumi.com/registry/" rel="nofollow noopener noreferrer"&gt;120+ providers&lt;/a&gt; using an
&lt;a href="https://www.pulumi.com/what-is/what-is-infrastructure-as-code/" rel="nofollow noopener noreferrer"&gt;infrastructure-as-code&lt;/a&gt; approach.
Skip the YAML, and use standard language features like loops, functions, classes,
and package management that you already know and love.&lt;/p&gt;
&lt;p&gt;For example, create three web servers:&lt;/p&gt;
&lt;div class="highlight highlight-source-ts notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;aws&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;require&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"@pulumi/aws"&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;sg&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-k"&gt;new&lt;/span&gt; &lt;span class="pl-s1"&gt;aws&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;ec2&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;SecurityGroup&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;"web-sg"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    &lt;span class="pl-c1"&gt;ingress&lt;/span&gt;: &lt;span class="pl-kos"&gt;[&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;protocol&lt;/span&gt;: &lt;span class="pl-s"&gt;"tcp"&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;fromPort&lt;/span&gt;: &lt;span class="pl-c1"&gt;80&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;toPort&lt;/span&gt;: &lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/pulumi/pulumi" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Pulumi brings a unique twist to Kubernetes deployments by allowing you to define infrastructure as code using your favorite programming languages.&lt;br&gt;
It can we used as an alternative to cdk8s.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Infrastructure as code, multi-language support, easy to integrate.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Terraform: Infrastructure as Code for Kubernetes
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/hashicorp" rel="noopener noreferrer"&gt;
        hashicorp
      &lt;/a&gt; / &lt;a href="https://github.com/hashicorp/terraform" rel="noopener noreferrer"&gt;
        terraform
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Terraform&lt;/h1&gt;
&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;Website: &lt;a href="https://developer.hashicorp.com/terraform" rel="nofollow noopener noreferrer"&gt;https://developer.hashicorp.com/terraform&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Forums: &lt;a href="https://discuss.hashicorp.com/c/terraform-core" rel="nofollow noopener noreferrer"&gt;HashiCorp Discuss&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Documentation: &lt;a href="https://developer.hashicorp.com/terraform/docs" rel="nofollow noopener noreferrer"&gt;https://developer.hashicorp.com/terraform/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Tutorials: &lt;a href="https://developer.hashicorp.com/terraform/tutorials" rel="nofollow noopener noreferrer"&gt;HashiCorp's Learn Platform&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Certification Exam: &lt;a href="https://www.hashicorp.com/certification/#hashicorp-certified-terraform-associate" rel="nofollow noopener noreferrer"&gt;HashiCorp Certified: Terraform Associate&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/ce54e29fc160f7c26656bf5d473805e7e13afbd65033a0089f8d46be4521e5e7/68747470733a2f2f7777772e6461746f636d732d6173736574732e636f6d2f323838352f313733313337333331302d7465727261666f726d5f77686974652e737667"&gt;&lt;img alt="Terraform" src="https://camo.githubusercontent.com/ce54e29fc160f7c26656bf5d473805e7e13afbd65033a0089f8d46be4521e5e7/68747470733a2f2f7777772e6461746f636d732d6173736574732e636f6d2f323838352f313733313337333331302d7465727261666f726d5f77686974652e737667" width="600px"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. Terraform can manage existing and popular service providers as well as custom in-house solutions.&lt;/p&gt;
&lt;p&gt;The key features of Terraform are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Infrastructure as Code&lt;/strong&gt;: Infrastructure is described using a high-level configuration syntax. This allows a blueprint of your datacenter to be versioned and treated as you would any other code. Additionally, infrastructure can be shared and re-used.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Execution Plans&lt;/strong&gt;: Terraform has a "planning" step where it generates an execution plan. The execution plan shows what Terraform will do when you call apply. This lets you avoid any surprises when Terraform manipulates infrastructure.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Resource Graph&lt;/strong&gt;: Terraform builds a graph of all your resources, and parallelizes the creation and modification of any non-dependent resources. Because of this, Terraform builds…&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/hashicorp/terraform" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Terraform is the seasoned veteran in the infrastructure-as-code realm.&lt;br&gt;
It extends its prowess to Kubernetes, providing a declarative way to manage infrastructure.&lt;br&gt;
If you're comfortable with HashiCorp's templating language &lt;code&gt;hcl&lt;/code&gt; it can be valid alternative to using kustomize.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Infrastructure as code, robust ecosystem, widely adopted.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐&lt;/p&gt;
&lt;h2&gt;
  
  
  Grafana Tanka with Jsonnet: Templating Magic for Kubernetes Configurations
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/grafana" rel="noopener noreferrer"&gt;
        grafana
      &lt;/a&gt; / &lt;a href="https://github.com/grafana/tanka" rel="noopener noreferrer"&gt;
        tanka
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Flexible, reusable and concise configuration for Kubernetes
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/grafana/tanka/main/docs/img/logo.svg"&gt;&lt;img width="400" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fgrafana%2Ftanka%2Fmain%2Fdocs%2Fimg%2Flogo.svg" alt="Grafana Tanka Logo"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/grafana/tanka/releases" rel="noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/cdfb4350509a5de855132a693c660a467cfefa2f83b9b84d4de96e33219a21bd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f67726166616e612f74616e6b613f7374796c653d666c61742d737175617265"&gt;
  &lt;/a&gt;
  &lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/1d2808267b691c4f4c3856ea0d0c2ed28a18f836dfbdbb2b96fc317f2b991975/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f67726166616e612f74616e6b613f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/1d2808267b691c4f4c3856ea0d0c2ed28a18f836dfbdbb2b96fc317f2b991975/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f67726166616e612f74616e6b613f7374796c653d666c61742d737175617265"&gt;&lt;/a&gt;
  &lt;a href="https://grafana.slack.com" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/0d745b10101b0966ddeef58ae00e40d3f17200a1f252f18fada1e9d18c802fe4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536c61636b2d47726166616e614c6162732d6f72616e67653f6c6f676f3d736c61636b267374796c653d666c61742d737175617265"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://tanka.dev" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt;
  ·
  &lt;a href="https://tanka.dev/install" rel="nofollow noopener noreferrer"&gt;Installation&lt;/a&gt;
  ·
  &lt;a href="https://tanka.dev/tutorial/overview" rel="nofollow noopener noreferrer"&gt;Tutorial&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Grafana Tanka&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://raw.githubusercontent.com/grafana/tanka/main/docs/img/example.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Fgrafana%2Ftanka%2Fmain%2Fdocs%2Fimg%2Fexample.png" width="50%"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The clean, concise and super flexible alternative to YAML for your
&lt;a href="https://k8s.io" rel="nofollow noopener noreferrer"&gt;Kubernetes&lt;/a&gt; cluster&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;💥 Clean&lt;/strong&gt;: The
&lt;a href="https://jsonnet.org" rel="nofollow noopener noreferrer"&gt;Jsonnet language&lt;/a&gt; expresses your apps more obviously than YAML ever did&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📚 Reusable&lt;/strong&gt;: Build libraries, import them anytime and even share them on GitHub!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;📌 Concise&lt;/strong&gt;: Using the Kubernetes library and abstraction, you will
never see boilerplate again!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🎯 Confidence&lt;/strong&gt;: Stop guessing and use &lt;code&gt;tk diff&lt;/code&gt; to see what exactly will happen&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔭 Helm&lt;/strong&gt;: Vendor in, modify, and export &lt;a href="https://tanka.dev/helm#helm-support" rel="nofollow noopener noreferrer"&gt;Helm charts reproducibly&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🚀 Production ready&lt;/strong&gt;: Tanka deploys &lt;a href="https://grafana.com/products/cloud/" rel="nofollow noopener noreferrer"&gt;Grafana Cloud&lt;/a&gt; and many more production setups&lt;/li&gt;
&lt;/ul&gt;
&lt;br&gt;
&lt;p&gt;
  &lt;a href="https://tanka.dev/tutorial/overview" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Let's kill some YAML together  ▶&lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🚀 Getting started&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;To get started, &lt;a href="https://tanka.dev/install" rel="nofollow noopener noreferrer"&gt;install Tanka&lt;/a&gt; first, and then
&lt;a href="https://tanka.dev/tutorial/overview" rel="nofollow noopener noreferrer"&gt;follow the tutorial&lt;/a&gt;. This should get you
on track quickly.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;👥 Community&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;There are several places to connect with the Tanka community:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://github.com/grafana/tanka/discussions/442" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;: Primary support channel&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;#tanka&lt;/code&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/grafana/tanka" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Grafana Tanka is another alternative to kustomize using the Jsonnet templating to create more powerful and extensible libraries of Kubernetes manifests&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Templating, reliability, dynamic configurations.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐&lt;/p&gt;

&lt;h2&gt;
  
  
  Dhall: Functional Purity in Kubernetes Configuration
&lt;/h2&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dhall-lang" rel="noopener noreferrer"&gt;
        dhall-lang
      &lt;/a&gt; / &lt;a href="https://github.com/dhall-lang/dhall-kubernetes" rel="noopener noreferrer"&gt;
        dhall-kubernetes
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Typecheck, template and modularize your Kubernetes definitions with Dhall
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;&lt;code&gt;dhall-kubernetes&lt;/code&gt;&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/dhall-lang/dhall-kubernetes/logo/dhall-kubernetes-logo.svg"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fdhall-lang%2Fdhall-kubernetes%2Flogo%2Fdhall-kubernetes-logo.svg" alt="dhall-kubernetes logo" height="300px"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;dhall-kubernetes&lt;/code&gt; contains &lt;a href="https://github.com/dhall-lang/dhall-lang" rel="noopener noreferrer"&gt;Dhall&lt;/a&gt; bindings to &lt;a href="https://kubernetes.io/" rel="nofollow noopener noreferrer"&gt;Kubernetes&lt;/a&gt;
so you can generate Kubernetes objects definitions from Dhall expressions
This will let you easily typecheck, template and modularize your Kubernetes definitions.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why do I need this&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Once you build a slightly non-trivial Kubernetes setup, with many objects floating
around, you'll encounter several issues:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Writing the definitions in YAML is really verbose, and the actually important
things don't stand out that much&lt;/li&gt;
&lt;li&gt;Ok I have a bunch of objects that'll need to be configured together, how do I share data?&lt;/li&gt;
&lt;li&gt;I'd like to reuse an object for different environments, but I cannot make it parametric..&lt;/li&gt;
&lt;li&gt;In general, I'd really love to reuse parts of some definitions in other definitions&lt;/li&gt;
&lt;li&gt;Oh no, I typoed a key and I had to wait until I pushed to the cluster to get an error back :(&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The natural tendency is to reach for a templating language…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/dhall-lang/dhall-kubernetes" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;em&gt;What it is:&lt;/em&gt; Dhall brings functional programming goodness to Kubernetes configuration as an alternative to kustomize and tanka with jsonnet.&lt;br&gt;
It offers a declarative language that's both human-readable and type-safe.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Strengths:&lt;/em&gt; Functional programming, type safety, human-readable syntax.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Ease of Use:&lt;/em&gt; ⭐⭐⭐&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;In conclusion, the Kubernetes deployment landscape is undoubtedly vast, but armed with our comprehensive cheat sheet, you're now equipped to navigate it like a seasoned explorer.&lt;br&gt;
From the simplicity of cdk8s to the coding magic of Pulumi, the Swiss Army finesse of Carvel, the templating sorcery of Jsonnet, and the functional purity of Dhall, each tool offers a unique journey in the realm of Kubernetes.&lt;br&gt;
With user-friendliness ratings as your compass, embark on your deployment adventure with confidence.&lt;br&gt;
Say goodbye to overwhelm and hello to clarity – you're now ready to conquer the Kubernetes universe! 🚀🌐✨&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>👋 Why we say GOODBYE to HELM 👋</title>
      <dc:creator>Philip Miglinci</dc:creator>
      <pubDate>Mon, 11 Dec 2023 09:47:59 +0000</pubDate>
      <link>https://dev.to/distr/why-we-say-goodbye-to-helm-3bmf</link>
      <guid>https://dev.to/distr/why-we-say-goodbye-to-helm-3bmf</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR 🔍
&lt;/h2&gt;

&lt;p&gt;In this blog post, we address our issues withwith Helm, a popular Kubernetes deployment tool, discussing shortcomings like Custom Resource Definition upgrades, dependency management, user-unfriendly chart creation, values.yaml complexity, and the inability to interact with the Kubernetes API post-installation.&lt;/p&gt;




&lt;h2&gt;
  
  
  We Want Your Feedback! 🫶
&lt;/h2&gt;

&lt;p&gt;Share your thoughts in the comments below! Let us know what topics you'd like more content on. If this guide helps, click on the cat and leave a star to support us in creating more developer-centric content. Your feedback matters!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  5 reasons we are trying to build the next generation of deployment automation for Kubernetes.
&lt;/h2&gt;

&lt;p&gt;Do you want to follow our journey? Star Glasskube on GitHub: &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;code&gt;glasskube/glasskube&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a seasoned DevOps engineer, I found that Helm, the popular Kubernetes deployment tool, has some shocking shortcomings. &lt;br&gt;
In this post I want to discuss some of those which, in my opinion, require a new vision of a more modern deployment solution.&lt;br&gt;
If you never heard about Helm before, in a nutshell it is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A framework for packaging Kubernetes resources (apps) to charts, publish them and let them easily be installed via a command line interface.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The goal of this post is &lt;em&gt;not&lt;/em&gt; to hate on the smart and talented people who built Helm, but maybe we can kindle a productive and healthy discussion about where we need to go as the DevOps industry to stay relevent in the coming years. But to fully undestand the following, I think it is important to understand what developments lead us to where we are today. &lt;br&gt;
So, before we start, let's quickly dive into the history of Helm. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/VbbKTXH8zaJsQOkfau/giphy-downsized-large.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/VbbKTXH8zaJsQOkfau/giphy-downsized-large.gif" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In 2015, a company called Deis created Helm, a package manager for Kubernetes. &lt;br&gt;
Deis is now part of Azure Kubernetes Service but the original project still exists as &lt;a href="https://github.com/helm/helm-classic" rel="noopener noreferrer"&gt;Helm Classic&lt;/a&gt;. At the same time, Google had a project called &lt;em&gt;Kubernetes Deployment Manager&lt;/em&gt;, which was similar to &lt;a href="https://cloud.google.com/deployment-manager/docs" rel="noopener noreferrer"&gt;Google Deployment Manager&lt;/a&gt; but for kubernetes resources, rather than GCS resources. &lt;/p&gt;

&lt;p&gt;At the beginning of 2016, the two projects decided to merge, which resulted in the release of &lt;a href="https://v2.helm.sh/" rel="noopener noreferrer"&gt;Helm v2&lt;/a&gt; later that year. &lt;br&gt;
Helm v2 consists of a client and server component (helm and tiller, respectively), where the latter was the continuation of the original Kubernetes Deployment Manager project.&lt;br&gt;
Tiller was designed to handle deployment states to make it easier for multiple users to use Helm without interfering with each other.&lt;/p&gt;

&lt;p&gt;In 2018, Helm &lt;a href="https://helm.sh/blog/intro-helm-hub/" rel="noopener noreferrer"&gt;launched&lt;/a&gt; the Helm Hub as a central place to discover charts which are otherwise found in distributed repositories. &lt;br&gt;
Helm Hub was &lt;a href="https://helm.sh/blog/helm-hub-moving-to-artifact-hub/" rel="noopener noreferrer"&gt;rebranded&lt;/a&gt; to &lt;a href="https://artifacthub.io/" rel="noopener noreferrer"&gt;Artifact Hub&lt;/a&gt; in 2020.&lt;/p&gt;

&lt;p&gt;With the release of Kubernetes 1.6, which had Role Based Access Control (RBAC) enabled by default, production deployments of Helm became more difficult, because of the many security policies that were required by tiller.&lt;br&gt;
So, people started to experiment with a new approach that could do the same thing without requiring a server component, which resulted in the release of Helm v3 in 2019.&lt;/p&gt;

&lt;p&gt;As you can see, Helm has a very rich history. It became the gold-standard of packaging apps for Kubernetes and is used by DevOps engineers all over the world. But just because Helm is the biggest player on the field, it doesn't mean that it is without flaws. &lt;strong&gt;So then, why say goodbye to Helm?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/5gUnOrltPvZzW/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/5gUnOrltPvZzW/giphy.gif" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  1. Helm doesn't provide a mechanism for upgrading Custom Resource Definitions
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;helm&lt;/code&gt; does provide a method of packaging Custom Resource Definitions (CRDs) by placing them in a dedicated &lt;code&gt;crds&lt;/code&gt; directory, but these are ignored during upgrades!&lt;br&gt;
&lt;a href="https://helm.sh/docs/chart_best_practices/custom_resource_definitions/#some-caveats-and-explanations" rel="noopener noreferrer"&gt;This is intentional&lt;/a&gt; and designed to prevent accidental data loss.&lt;br&gt;
Therefore, upgrading a chart does &lt;em&gt;not&lt;/em&gt; automatically upgrade it's associated CRDs, which is unexpected for many engineers and leads to more manually involved and error-prone upgrade procedures and other anti-patterns.&lt;/p&gt;

&lt;p&gt;To combat this major design flaw, chart developers have come up with several strategies, the most popular of which are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Putting the CRDs into the chart's &lt;code&gt;template&lt;/code&gt; directory&lt;/li&gt;
&lt;li&gt;Creating separate sub-charts just for CRDs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An alternative way to overcome this shortcoming is to not invoke Helm commands directly, but rather use a CI/CD solution, like &lt;a href="https://github.com/fluxcd/flux2" rel="noopener noreferrer"&gt;Flux&lt;/a&gt;.&lt;br&gt;
Flux provides a setting to automatically update CRDs during a Helm upgrade, but it is &lt;a href="https://fluxcd.io/flux/components/helm/api/v2beta1/#helm.toolkit.fluxcd.io/v2beta1.CRDsPolicy" rel="noopener noreferrer"&gt;off by default&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;
  
  
  2. Helm dependency management
&lt;/h2&gt;

&lt;p&gt;The way to specify a dependency in a Helm chart is to reference it as a sub-chart. &lt;br&gt;
This method can work great for tightly coupled dependencies that you might want to install separately or as part of another chart, but it has some weaknesses that are important to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sub-charts are &lt;strong&gt;always installed in the same namespace&lt;/strong&gt; as the primary release and there is no way to change this.&lt;/li&gt;
&lt;li&gt;There exists &lt;strong&gt;no mechanism to share a dependency&lt;/strong&gt; between two releases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/xiSZGYjpYgzkipNS7x/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/xiSZGYjpYgzkipNS7x/giphy.gif" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For example, our &lt;a href="https://github.com/glasskube/operator/tree/main/charts/glasskube-operator" rel="noopener noreferrer"&gt;Glasskube Operator Helm Chart&lt;/a&gt; depends on kube-prometheus-stack, velero and a bunch of other dependencies, some of which are already installed in many Kubernetes clusters.&lt;br&gt;
To provide an installation experience that is as simple as possible, the chart references all those dependencies as sub-charts, but using this approach, all those dependencies are bundled in the Glasskube Operator release and can not be changed or updated separately.&lt;br&gt;
Additionally, there is no way to check whether a dependency is already installed, so a user might end up with two separate installations of the same Helm chart!&lt;/p&gt;

&lt;p&gt;Ideal tooling would allow chart developers to specify external dependencies and simply ensure that those are present in a cluster before a chart can be installed.&lt;br&gt;
This way, dependencies could be shared among consumers.&lt;br&gt;
This is how package managers for operating systems work since forever. Why does Kubernetes need to be different?&lt;/p&gt;
&lt;h2&gt;
  
  
  3. Helm chart creation is not user-friendly
&lt;/h2&gt;

&lt;p&gt;So far, we discussed problems that affect you as a chart user.&lt;br&gt;
But what does the situation look like for chart developers?&lt;/p&gt;

&lt;p&gt;Well, let's start by creating a new chart.&lt;br&gt;
This can be achieved by calling &lt;code&gt;helm create your-chart&lt;/code&gt;. &lt;br&gt;
I invite you to quickly open a terminal, run this command and go through all the files it creates.&lt;br&gt;
As I'm sure you will agree, it's… a &lt;em&gt;lot&lt;/em&gt;.&lt;br&gt;
I still remember the moment when I wanted to create my first Helm chart and saw the results of this command thinking, “this can't be right.”&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.:
total 8,0K
drwxr-xr-x. 2 kosmoz kosmoz   40  7. Dez 13:23 charts/
-rw-r--r--. 1 kosmoz kosmoz 1,2K  7. Dez 13:23 Chart.yaml
drwxr-xr-x. 3 kosmoz kosmoz  200  7. Dez 13:23 templates/
-rw-r--r--. 1 kosmoz kosmoz 1,9K  7. Dez 13:23 values.yaml

./charts:
total 0

./templates:
total 28K
-rw-r--r--. 1 kosmoz kosmoz 1,9K  7. Dez 13:23 deployment.yaml
-rw-r--r--. 1 kosmoz kosmoz 1,8K  7. Dez 13:23 _helpers.tpl
-rw-r--r--. 1 kosmoz kosmoz  925  7. Dez 13:23 hpa.yaml
-rw-r--r--. 1 kosmoz kosmoz 2,1K  7. Dez 13:23 ingress.yaml
-rw-r--r--. 1 kosmoz kosmoz 1,8K  7. Dez 13:23 NOTES.txt
-rw-r--r--. 1 kosmoz kosmoz  326  7. Dez 13:23 serviceaccount.yaml
-rw-r--r--. 1 kosmoz kosmoz  370  7. Dez 13:23 service.yaml
drwxr-xr-x. 2 kosmoz kosmoz   60  7. Dez 13:23 tests/

./templates/tests:
total 4,0K
-rw-r--r--. 1 kosmoz kosmoz 388  7. Dez 13:23 test-connection.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://i.giphy.com/media/PIfV4QbNzslYQ/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/PIfV4QbNzslYQ/giphy.gif" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In total, &lt;code&gt;helm create&lt;/code&gt; generates 10 files in different sub-directories and it is not immediately apparent which ones of those are actually essential for a chart and which ones are just example code. &lt;br&gt;
I once complained about this to a DevOps engineer who had already created dozens of charts and they laughed and said: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“The first step in creating a chart is running &lt;code&gt;helm create&lt;/code&gt;. The second is deleting 90% of the results.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Really? That's the best we can do? &lt;br&gt;
Okay, let's accept that and say you figured out the structure of your new chart.&lt;br&gt;
Now, you probably want to add some resources.&lt;br&gt;
Of course you can just drop your existing YAML files into the chart's &lt;code&gt;templates&lt;/code&gt; directory, but you're probably interested in using some parameters from your &lt;code&gt;values.yaml&lt;/code&gt; in your resources.&lt;br&gt;
After all, that would kind of be the point of creating a Helm chart in the first place.&lt;br&gt;
To look at an example, go back to your terminal (where, previously, you created your Helm chart) and check out the file &lt;code&gt;templates/serviceaccount.yaml&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
  name: {{ include "your-chart.serviceAccountName" . }}
  labels:
    {{- include "your-chart.labels" . | nindent 4 }}
  {{- with .Values.serviceAccount.annotations }}
  annotations:
    {{- toYaml . | nindent 4 }}
  {{- end }}
{{- end }}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, I know what you're thinking: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;That doesn't look like the YAML I know! &lt;br&gt;
What is ' &lt;code&gt;include&lt;/code&gt;, &lt;code&gt;toYaml&lt;/code&gt; and &lt;code&gt;nindent&lt;/code&gt; and what's up with all the &lt;code&gt;-&lt;/code&gt; and &lt;code&gt;{{&lt;/code&gt; and &lt;code&gt;|&lt;/code&gt;?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It's true, although Helm template files use the file name extension for YAML, they are actually just templates. &lt;br&gt;
Helm templates are based on the Go template language which is very flexible and powerful but doesn't really know anything about YAML or Kubernetes. &lt;br&gt;
That's why it's necessary to call lots of these conversion functions inside the template files.&lt;/p&gt;

&lt;p&gt;As a result many popular charts end up with template files that contain more template language stuff than actual YAML.&lt;br&gt;
This makes them hard to read and maintain, especially as someone who wasn't involved in it's creation.&lt;/p&gt;
&lt;h2&gt;
  
  
  4. The &lt;code&gt;values.yaml&lt;/code&gt; file is an antipattern
&lt;/h2&gt;

&lt;p&gt;Now, let's go back to something that's a little more tangible for you as a Helm user.&lt;br&gt;
As a Kubernetes application developer who writes resources as YAML files, you are probably used to having rich support in your development environment, including strict schema validation and super comprehensive autocomplete.&lt;br&gt;
Creating a &lt;code&gt;values.yaml&lt;/code&gt; file for a chart release is a little different.&lt;br&gt;
See, there is no general schema for what goes and doesn't go inside a &lt;code&gt;values.yaml&lt;/code&gt; file.&lt;br&gt;
Thus, your development environment cannot help you beyond basic YAML syntax highlighting. &lt;br&gt;
The only way to verify if your &lt;code&gt;values.yaml&lt;/code&gt; file is valid is to run it through Helm and see what happens.&lt;br&gt;
Using &lt;code&gt;helm template&lt;/code&gt; allows the you to render these Helm templates which detects possible errors in the configuration file.&lt;/p&gt;

&lt;p&gt;A lot of chart developers want to give users the possibility to fine tune most aspects of final deployment.&lt;br&gt;
As a result, the number of possibilities for configuration is often unreasonably large and complicated, mimicking the actual resources they want to create, but without any schema validation! &lt;/p&gt;
&lt;h2&gt;
  
  
  5. Inability to interact with the Kubernetes API
&lt;/h2&gt;

&lt;p&gt;We already discussed 4 shortcomings of Helm, but in my opinion the biggest downside of Helm is this: &lt;br&gt;
A Helm release is strictly a one-shot operation.&lt;br&gt;
Once a Helm release is successfully installed, Helm's job is done.&lt;br&gt;
But here's the thing: &lt;strong&gt;Installing an application is usually not the hard part, maintaining an installation and keeping it running is&lt;/strong&gt;.&lt;br&gt;
Unfortunately, Helm doesn't really help you with that.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/nVTa8D8zJUc2A/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/nVTa8D8zJUc2A/giphy.gif" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After finishing installation of a release, Helm can not perform any additional changes due to it's design as a strictly client-side application.&lt;br&gt;
This inability to interact with the release during later stages of a release's life-cycle means that &lt;strong&gt;helm as a deployment method inherently static&lt;/strong&gt;, but modern software deployments are often required to be very dynamic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detecting the cloud environment:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;dynamicCloudProvider&lt;/span&gt;
    &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;kubernetesClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;configMaps&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;inNamespace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"kube-system"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;withName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"shoot-info"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;?.&lt;/span&gt;&lt;span class="n"&gt;data&lt;/span&gt;&lt;span class="o"&gt;?.&lt;/span&gt;&lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"extensions"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;?.&lt;/span&gt;&lt;span class="nf"&gt;contains&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"shoot-dns-service"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;==&lt;/span&gt; &lt;span class="k"&gt;true&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;
            &lt;span class="nc"&gt;CloudProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gardener&lt;/span&gt;

        &lt;span class="n"&gt;kubernetesClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nodes&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;withLabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"eks.amazonaws.com/nodegroup"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isNotEmpty&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;
            &lt;span class="nc"&gt;CloudProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aws&lt;/span&gt;

        &lt;span class="n"&gt;kubernetesClient&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;nodes&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;withLabel&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"csi.hetzner.cloud/location"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;list&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isNotEmpty&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;
            &lt;span class="nc"&gt;CloudProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;hcloud&lt;/span&gt;

        &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt;
            &lt;span class="nc"&gt;CloudProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;generic&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Applying configurations based on the environment:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight kotlin"&gt;&lt;code&gt;&lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="kd"&gt;val&lt;/span&gt; &lt;span class="py"&gt;defaultIngressClassName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="p"&gt;?&lt;/span&gt;
    &lt;span class="k"&gt;get&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cloudProvider&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;CloudProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="s"&gt;"alb"&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;configService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ingressClassName&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;protected&lt;/span&gt; &lt;span class="k"&gt;fun&lt;/span&gt; &lt;span class="nf"&gt;getDefaultAnnotations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;P&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Context&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;P&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;):&lt;/span&gt; &lt;span class="nc"&gt;Map&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt;
    &lt;span class="n"&gt;configService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getCommonIngressAnnotations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;primary&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt;
        &lt;span class="k"&gt;when&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;configService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;cloudProvider&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nc"&gt;CloudProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;aws&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;awsDefaultAnnotations&lt;/span&gt;
            &lt;span class="nc"&gt;CloudProvider&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;gardener&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;gardenerDefaultAnnotations&lt;/span&gt;
            &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;getCertManagerDefaultAnnotations&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;+&lt;/span&gt; &lt;span class="n"&gt;ingressNginxDefaultAnnotations&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;Although many developers are a bit scared of Helm at first, it's simple design gave Helm the lead it currently holds in the space of Kubernetes deployment methods.&lt;br&gt;
Helm is currently the de-facto standard for managing complex application deployments, but that doesn't mean we shouldn't challenge it's design and point out shortcomings.&lt;br&gt;
New requirements for applications will require more dynamic deployment methods and we DevOps engineers and application developers must be prepared.&lt;/p&gt;

&lt;p&gt;This is why we started Glasskube: An easier way to deploy applications and infrastructure on Kubernetes. If you want to follow our progress make sure to star:  &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;code&gt;glasskube/glasskube&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>opensource</category>
      <category>cloud</category>
    </item>
    <item>
      <title>🚀 GITLAB ON KUBERNETES: The Ultimate Deployment Guide! 🌟</title>
      <dc:creator>Philip Miglinci</dc:creator>
      <pubDate>Wed, 29 Nov 2023 16:43:06 +0000</pubDate>
      <link>https://dev.to/distr/gitlab-on-kubernetes-the-ultimate-deployment-guide-188b</link>
      <guid>https://dev.to/distr/gitlab-on-kubernetes-the-ultimate-deployment-guide-188b</guid>
      <description>&lt;h2&gt;
  
  
  TL;DR 🔍
&lt;/h2&gt;

&lt;p&gt;Explore the step-by-step guide to deploying GitLab on Kubernetes, focusing on the Omnibus package configuration. Learn to set up PostgreSQL, SMTP, Container Registry, Sidekiq, Prometheus metrics, and backups. Discover an alternative with the Glasskube GitLab Kubernetes Operator, simplifying the process and reducing setup time to just 5 minutes.&lt;/p&gt;




&lt;h2&gt;
  
  
  We Want Your Feedback! 🫶
&lt;/h2&gt;

&lt;p&gt;Share your thoughts in the comments below! Let us know what topics you'd like more content on. If this guide helps, click on the cat and leave a star to support us in creating more developer-centric content. Your feedback matters!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Let´s get started 🏌️
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://glasskube.eu/en/s/kubernetes-operator/gitlab/" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt; is an open source DevSecOps platform for software engineering teams.&lt;/p&gt;

&lt;p&gt;There are two flavors available for deploying GitLab on your Kubernetes Cluster:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;GitLab Cloud native hybrid&lt;/li&gt;
&lt;li&gt;GitLab package (Omnibus)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  GitLab Cloud native hybrid
&lt;/h2&gt;

&lt;p&gt;Deploying the GitLab Cloud native hybrid architecture makes only sense in query specific use-cases. For example - as seen in the &lt;a href="https://docs.gitlab.com/ee/administration/reference_architectures/#decision-tree" rel="noopener noreferrer"&gt;GitLab decision tree&lt;/a&gt; - if the GitLab instance need to serve at least 3,000 users. For this kind of deployment the GitLab components will be installed separately and in different docker containers. Resulting in minimum requirements of 10 nodes with a total of 19 vCPUs and 60 GB memory, which will result in a couple of thousand dollars cloud costs a month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExbHl6eXltNWw0ZDNjbnNqbDdicXBpbzNpdXdkNXp5aDVueG1nbnQ0MiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/2aIZfQdC2V7bBvU5t2/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExbHl6eXltNWw0ZDNjbnNqbDdicXBpbzNpdXdkNXp5aDVueG1nbnQ0MiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/2aIZfQdC2V7bBvU5t2/giphy.gif" width="536" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So in most cases GitLab Cloud native is not needed and overly complex.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So, how to deploy GitLab Omnibus on Kubernetes?&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  GitLab Omnibus on Kubernetes
&lt;/h2&gt;

&lt;p&gt;Using the name “omnibus”, GitLab also publishes all-in-one packages, which are available as docker images &lt;a href="https://hub.docker.com/r/gitlab/gitlab-ce" rel="noopener noreferrer"&gt;&lt;code&gt;hub.docker.com/r/gitlab/gitlab-ce&lt;/code&gt;&lt;/a&gt;, that can be easily configured via environment variables. Doing the configuration right makes it easy to deploy GitLab on Kubernetes.&lt;/p&gt;

&lt;p&gt;Following important components should be configured correctly in order to archive a reasonable Kubernetes setup:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;PostgreSQL database&lt;/li&gt;
&lt;li&gt;SMTP configuration&lt;/li&gt;
&lt;li&gt;GitLab container registry on Kubernetes&lt;/li&gt;
&lt;li&gt;Sidekiq, Gitaly &amp;amp; Puma configuration&lt;/li&gt;
&lt;li&gt;Prometheus metrics&lt;/li&gt;
&lt;li&gt;GitLab backups on Kubernetes&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  GitLab on Kubernetes: Configure an external PostgreSQL database
&lt;/h3&gt;

&lt;p&gt;Creating a PostgreSQL database can be done with the &lt;a href="https://cloudnative-pg.io/" rel="noopener noreferrer"&gt;CloudNativePG PostgreSQL Operator&lt;/a&gt;. After the installation of the operator a new Postgres cluster can be deployed by applying a Kubernetes CR:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Cluster&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;postgresql.cnpg.io/v1&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitlab&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;enableSuperuserAccess&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;
  &lt;span class="na"&gt;instances&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
  &lt;span class="na"&gt;bootstrap&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;initdb&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitlabhq_production&lt;/span&gt;
      &lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitlab&lt;/span&gt;
  &lt;span class="na"&gt;storage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;20Gi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It is important that the database is called &lt;code&gt;gitlabhq_production&lt;/code&gt; and the configured &lt;code&gt;gitlab&lt;/code&gt; database user is the owner of the database. In this case, we created a cluster consisting of two PostgreSQL replicas to ensure that the database remains available, even in case the node running the primary replica fails. This is called high availability (HA).&lt;br&gt;
Now, that we created our very own PostgreSQL cluster, the database included in the omnibus image must be disabled in the &lt;code&gt;gitlab.rb&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;postgresql&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'enable'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;

&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'db_adapter'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'postgresql'&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'db_encoding'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'unicode'&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'db_host'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'gitlab-pg-rw'&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'db_password'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'&amp;lt;your-password&amp;gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nice, we already have cloud native database for our GitLab installation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExc2VydjJoN3BsN2RycDY5N3prZHhoaW8xdTYxenhkbHdtazBpM3A5YSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/SVH9y2LQUVVCRcqD7o/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExc2VydjJoN3BsN2RycDY5N3prZHhoaW8xdTYxenhkbHdtazBpM3A5YSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/SVH9y2LQUVVCRcqD7o/giphy.gif" width="426" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  GitLab on Kubernetes: Configure SMTP credentials
&lt;/h4&gt;

&lt;p&gt;In order to make sure your GitLab instance is able to send emails, you need to configure an SMTP server. This also can be done in the &lt;code&gt;gitlab.rb&lt;/code&gt; file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'smtp_enable'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'smtp_address'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'smtp_port'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'smtp_user_name'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'smtp_password'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'smtp_tls'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'gitlab_email_from'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A free smtp server for transactional emails can be created for example on the Brevo platform.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/0IR3vO2bWY1AQPAsAn/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/0IR3vO2bWY1AQPAsAn/giphy.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  GitLab on Kubernetes: Container registry
&lt;/h4&gt;

&lt;p&gt;Among it's many features, GitLab supports serving as a container registry. This is achieved by bundling the reference implementation of the docker container registry, but it is disabled by default as it is quite a hassle to set it up correctly.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;&lt;br&gt;
It is important to understand that all requests in the GitLab omnibus container will first be processed by an internal nginx server and then distributed to components.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The container registry only works with TLS-encrypted connections, so we need to disable TLS termination by the ingress load balancer and send encrypted traffic directly to the GitLab container. If the NGINX ingress controller is used, this can be done by adding the following annotation to the ingress: &lt;code&gt;nginx.ingress.kubernetes.io/ssl-passthrough: true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;After that, the following &lt;code&gt;gitlab.rb&lt;/code&gt; configurations must be applied:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;registry&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'enable'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'registry_enabled'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;registry&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'token_realm'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"https://"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'GITLAB_HOST'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'registry_enabled'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'registry_host'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'GITLAB_REGISTRY_HOST'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;gitlab_rails&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'registry_api_url'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"http://localhost:5000"&lt;/span&gt;

&lt;span class="n"&gt;registry_external_url&lt;/span&gt; &lt;span class="s1"&gt;'https://'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="no"&gt;ENV&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'GITLAB_REGISTRY_HOST'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;registry_nginx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'redirect_http_to_https'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="n"&gt;registry_nginx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'listen_port'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5443&lt;/span&gt;
&lt;span class="n"&gt;registry_nginx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'ssl_certificate'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"/etc/gitlab/ssl/tls.crt"&lt;/span&gt;
&lt;span class="n"&gt;registry_nginx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'ssl_certificate_key'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"/etc/gitlab/ssl/tls.key"&lt;/span&gt;
&lt;span class="n"&gt;registry_nginx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'real_ip_trusted_addresses'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'10.0.0.0/8'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'172.16.0.0/12'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'192.168.0.0/16'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;registry_nginx&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'server_names_hash_bucket_size'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;128&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Additionally, an S3 bucket (or compatible cloud storage endpoint can be configured so all image layers will not be stored inside a volume, but in a scalable S3&lt;/p&gt;

&lt;h3&gt;
  
  
  GitLab on Kubernetes: Sidekiq, Gitaly &amp;amp; Puma configuration
&lt;/h3&gt;

&lt;p&gt;Puma (HTTP server for ruby), Sidekiq (job scheduler) and Gitaly (GitLabs Git bridge) can all be started with a custom amount of workers / threads. The best configuration heavily depends on your use-case and the amount of users that need to be supported. A reasonable minimal configuration would be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;puma&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'worker_processes'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="n"&gt;sidekiq&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'max_concurrency'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  GitLab on Kubernetes: Prometheus Metrics
&lt;/h3&gt;

&lt;p&gt;The GitLab omnibus package ships with its own prometheus instance inside the image. As a prometheus instance is already present in most Kubernetes clusters the included prometheus can safely be disabled.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;prometheus_monitoring&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s1"&gt;'enable'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A &lt;a href="https://prometheus-operator.dev/docs/operator/design/#servicemonitor" rel="noopener noreferrer"&gt;&lt;code&gt;ServiceMonitor&lt;/code&gt;&lt;/a&gt; can be used to tell a running Prometheus instance to monitor the exposed metrics endpoints of GitLabs component on the following ports:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;8082 (sidekiq)&lt;/li&gt;
&lt;li&gt;9168 (gitlab)&lt;/li&gt;
&lt;li&gt;9236 (gitaly)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  GitLab on Kubernetes: Backups
&lt;/h3&gt;

&lt;p&gt;Well, backing up GitLab on Kubernetes could be tech guide on its own. The easiest way would be to back up the complete namespace using a backup solution like &lt;a href="https://velero.io/" rel="noopener noreferrer"&gt;Velero&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Glasskube GitLab Kubernetes Operator
&lt;/h2&gt;

&lt;p&gt;Meet the Glasskube GitLab &lt;a href="https://glasskube.eu/en/r/glossary/kubernetes-operator/" rel="noopener noreferrer"&gt;Kubernetes Operator&lt;/a&gt; - a product of our developer team's frustration with the tedious configuration process, time-consuming setup, and constant troubleshooting associated with GitLab deployment. In response to these challenges, we crafted a solution that simplifies the entire experience. The Glasskube GitLab Kubernetes Operator deploys a fully configured GitLab instance with all features neatly abstracted through a Custom Resource Definition (CRD). Thanks to the Operator, the days of spending excessive time on setup and updates are over. Now, you can effortlessly spin up new GitLab instances within a mere 5 minutes. Try it out and give us feedback!&lt;/p&gt;

&lt;h3&gt;
  
  
  Install the Glasskube operator
&lt;/h3&gt;

&lt;p&gt;The first step is to install Glasskube via its helm chart:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo add glasskube https://charts.glasskube.eu/
helm repo update
helm install my-glasskube-operator glasskube/glasskube-operator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The full documentation can be found in our &lt;a href="https://glasskube.eu/docs/getting-started/install/" rel="noopener noreferrer"&gt;Getting started&lt;/a&gt; documentation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deploy GitLab
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Important&lt;/strong&gt;&lt;br&gt;
A DNS entry must be set on the &lt;code&gt;LoadBalancer&lt;/code&gt; or the &lt;code&gt;Ingress Host&lt;/code&gt;. SSL certificates are&lt;br&gt;
automatically generated by &lt;code&gt;LoadBalancer&lt;/code&gt; or &lt;code&gt;cert-manager&lt;/code&gt; if a &lt;code&gt;ClusterIssuer&lt;/code&gt; is configured.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;gitlab.yaml&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;v1"&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Secret"&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitlab-smtp"&lt;/span&gt;
&lt;span class="na"&gt;stringData&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;..."&lt;/span&gt;
  &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;..."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Secret&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitlab-registry-secret&lt;/span&gt;
&lt;span class="na"&gt;stringData&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;accessKey&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;..."&lt;/span&gt;
  &lt;span class="na"&gt;secretKey&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;..."&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;glasskube.eu/v1alpha1"&lt;/span&gt;
&lt;span class="na"&gt;kind&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Gitlab"&lt;/span&gt;
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitlab"&lt;/span&gt;
&lt;span class="na"&gt;spec&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitlab.mycompany.eu"&lt;/span&gt;
  &lt;span class="na"&gt;sshEnabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;sshHost&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ssh.gitlab.mycompany.eu"&lt;/span&gt;
  &lt;span class="na"&gt;smtp&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;..."&lt;/span&gt;
    &lt;span class="na"&gt;port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;465&lt;/span&gt;
    &lt;span class="na"&gt;fromAddress&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;noreply+gitlab@mycompany.eu"&lt;/span&gt;
    &lt;span class="na"&gt;authSecret&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gitlab-smtp"&lt;/span&gt;
    &lt;span class="na"&gt;tlsEnabled&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;registry&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;host&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;registry.gitlab.mycompany.eu"&lt;/span&gt;
    &lt;span class="na"&gt;storage&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;s3&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;bucket&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitlab-registry&lt;/span&gt;
        &lt;span class="na"&gt;accessKeySecret&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitlab-registry-secret&lt;/span&gt;
          &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;accessKey&lt;/span&gt;
        &lt;span class="na"&gt;secretKeySecret&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;gitlab-registry-secret&lt;/span&gt;
          &lt;span class="na"&gt;key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;secretKey&lt;/span&gt;
        &lt;span class="na"&gt;region&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;...&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;kubectl apply &lt;span class="nt"&gt;-f&lt;/span&gt; gitlab.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExa2RldHpiYnMzOWdlZTgwdWtqOHhvN3N3eG9yamI0NjVyd2l3eTdlYSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/YRhUem7n2UaF9EK2PH/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExa2RldHpiYnMzOWdlZTgwdWtqOHhvN3N3eG9yamI0NjVyd2l3eTdlYSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/YRhUem7n2UaF9EK2PH/giphy.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;br&gt;
That's it!&lt;br&gt;
The complete custom resource documentation can be found in the Glasskube documentation&lt;br&gt;
about &lt;a href="https://glasskube.eu/docs/crd-reference/gitlab/" rel="noopener noreferrer"&gt;GitLab&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Deploy GitLab Runner on Kubernetes
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExZDJsN2x6NTI0dWdhZW55MjBzMjFobHdtbDRtaHEycXlid2t6Z2ttZiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/945jGDodvZCDe/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/v1.Y2lkPTc5MGI3NjExZDJsN2x6NTI0dWdhZW55MjBzMjFobHdtbDRtaHEycXlid2t6Z2ttZiZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/945jGDodvZCDe/giphy.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Runners on GitLab are execution agents that power continuous integration and continuous delivery (CI/CD) pipelines.&lt;br&gt;
They're responsible for running jobs, which are the individual steps or tasks within a pipeline.&lt;/p&gt;

&lt;p&gt;The Glasskube Gitlab Kubernetes Operator makes it as simple as it gets to add runners to your Gitlab. First a new runner needs to be created via &lt;code&gt;https://{{host}}/admin/runners/new&lt;/code&gt;. After that these runner tokens can just be added to &lt;code&gt;gitlab.yaml&lt;/code&gt; spec and the Glasskube Kubernetes Operator will automatically spawn and connect these runners with the Gitlab instance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;  &lt;span class="na"&gt;runners&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;token&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;glrt-xxxxXX-xxxxxXXXXX&lt;/span&gt; &lt;span class="c1"&gt;# can be generated at https://{{host}}/admin/runners/new&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The complete custom resource documentation can be found in the Glasskube documentation about &lt;a href="https://glasskube.eu/docs/crd-reference/gitlab/runner/" rel="noopener noreferrer"&gt;GitLab runner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now the installation is complete. Updates to the Kubernetes operator will automatically update GitLab.&lt;/p&gt;

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

&lt;p&gt;Deploying a GitLab instance on Kubernetes for less than a thousand users shouldn't be done with GitLabs cloud native hybrid helm charts but rather with a special purposed installation of the GitLab Omnibus package in combination with cloud native infrastructure. The Glasskube Kubernetes operator takes care of that.&lt;/p&gt;




&lt;p&gt;&lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7epgdan4pu8sf8ktr3e1.png" alt="Glasskube Github" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;Star Glasskube:&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;a href="https://github.com/glasskube/glasskube" rel="noopener noreferrer"&gt;&lt;code&gt;glasskube/glasskube&lt;/code&gt;&lt;/a&gt;
&lt;/h1&gt;

</description>
      <category>kubernetes</category>
      <category>opensource</category>
      <category>devops</category>
      <category>gitlab</category>
    </item>
  </channel>
</rss>
