<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>registry Archives - OVHcloud Blog</title>
	<atom:link href="https://blog.ovhcloud.com/tag/registry/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.ovhcloud.com/tag/registry/</link>
	<description>Innovation for Freedom</description>
	<lastBuildDate>Fri, 06 Feb 2026 15:22:42 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://blog.ovhcloud.com/wp-content/uploads/2019/07/cropped-cropped-nouveau-logo-ovh-rebranding-32x32.gif</url>
	<title>registry Archives - OVHcloud Blog</title>
	<link>https://blog.ovhcloud.com/tag/registry/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Solutions at OVHcloud to overcome the Docker Hub pull rate limits</title>
		<link>https://blog.ovhcloud.com/solutions-at-ovhcloud-to-overcome-the-docker-hub-pull-rate-limits/</link>
		
		<dc:creator><![CDATA[Aurélie Vache]]></dc:creator>
		<pubDate>Fri, 11 Apr 2025 06:53:38 +0000</pubDate>
				<category><![CDATA[OVHcloud Engineering]]></category>
		<category><![CDATA[Tranches de Tech & co]]></category>
		<category><![CDATA[Docker Hub]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[OVHcloud]]></category>
		<category><![CDATA[OVHcloud Managed Kubernetes]]></category>
		<category><![CDATA[OVHcloud Managed Private Registry]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[registry]]></category>
		<guid isPermaLink="false">https://blog.ovhcloud.com/?p=28623</guid>

					<description><![CDATA[For the past few months, Docker has been announcing the implementation of new pull rate limits for the Docker Hub. The most significant change is the 10 pulls-per-hour limit, per IP address, for unauthenticated users that can quickly lead to a &#8220;You have reached your pull rate limit&#8221; error message. Even if these changes have [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fsolutions-at-ovhcloud-to-overcome-the-docker-hub-pull-rate-limits%2F&amp;action_name=Solutions%20at%20OVHcloud%20to%20overcome%20the%20Docker%20Hub%20pull%20rate%20limits&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="960" height="540" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/ovh_solutions_overcome_docker_hub_pull_rate_limits-1.png" alt="" class="wp-image-28707" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/ovh_solutions_overcome_docker_hub_pull_rate_limits-1.png 960w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/ovh_solutions_overcome_docker_hub_pull_rate_limits-1-300x169.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/ovh_solutions_overcome_docker_hub_pull_rate_limits-1-768x432.png 768w" sizes="(max-width: 960px) 100vw, 960px" /></figure>



<p>For the past few months, <a href="https://www.docker.com/blog/revisiting-docker-hub-policies-prioritizing-developer-experience/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Docker has been announcing the implementation of new pull rate limits for the Docker Hub</a>. The most significant change is the 10 pulls-per-hour limit, per IP address, for unauthenticated users that can quickly lead to a &#8220;You have reached your pull rate limit&#8221; error message.</p>



<p>Even if these changes have been implemented and rollbacked as of April 1, 2025, at OVHcloud, we are aware that these upcoming changes could impact your deployments and daily work.</p>



<p>In this blog post, you will find several solutions and best practices that can help you reduce Docker pull commands and avoid hitting Docker Hub&#8217;s pull rate limit.</p>



<h3 class="wp-block-heading">Use OVHcloud Managed Private Registry and activate the proxy cache</h3>



<figure class="wp-block-image aligncenter size-full is-resized"><img decoding="async" width="800" height="800" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry.png" alt="" class="wp-image-28658" style="width:181px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry.png 800w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry-300x300.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry-768x768.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/managed_private_registry-70x70.png 70w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<p><a href="https://www.ovhcloud.com/en/public-cloud/managed-rancher-service/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Managed Private Registry</a> (MPR) is a container image registry, based on CNCF project Harbor. It allows you to store and manage Docker (or OCI-compliant) container images and artifacts in a private, secure, and scalable environment, hosted in OVHcloud&#8217;s infrastructure.</p>



<p>MPR provides a <strong>proxy cache</strong> feature that helps you mirror and cache images from external registries, like <strong>Docker Hub</strong>, <strong>Github Container Registry</strong>, <strong>Quay</strong>, <strong>JFrog Artifactory Registry</strong>, etc. External registries can be private or public. This improves performance and reduces rate limits imposed by external registries 💪.</p>



<h4 class="wp-block-heading">Configure proxy cache in OVHcloud Managed Private Registry</h4>



<p>If you don&#8217;t have deployed a MPR yet, you can deploy it through the <a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-private-registry-creation?id=kb_article_view&amp;sysparm_article=KB0050325" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Control Panel</a>, the <a href="https://help.ovhcloud.com/csm/en-public-cloud-private-registry-creation-via-terraform?id=kb_article_view&amp;sysparm_article=KB0050330" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Terraform provider</a>, the <a href="https://help.ovhcloud.com/csm/en-public-cloud-private-registry-creation-with-pulumi?id=kb_article_view&amp;sysparm_article=KB0061073" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud Pulumi provider</a> and even the API. Follow the guide according to your needs.</p>



<p>First, log in the <a href="https://help.ovhcloud.com/csm/en-gb-public-cloud-private-registry-connect-to-ui?id=kb_article_view&amp;sysparm_article=KB0050321" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Harbor user interface</a> on your private registry, follow the guide if you needed to.</p>



<p>⚠️ In order to activate the proxy cache, you need to log in the Harbor UI with an administrator account.</p>



<h5 class="wp-block-heading">Registry endpoint creation</h5>



<p>In the left sidebar, click on <strong>Registries</strong> (inside the Administration section).</p>



<p>Then click on the <strong>New endpoint</strong> button.</p>



<p>Select Docker Hub in the provider list, enter a name (&#8220;Docker Hub&#8221; for example), fill your Docker Hub login in Access ID field and fill your Docker Hub password in Access Secret field.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="674" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-1024x674.png" alt="" class="wp-image-28663" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-1024x674.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-300x197.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-768x505.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21-1536x1010.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.21.png 1818w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>⚠️ Note that we <strong>strongly recommend</strong> using a <strong>Docker account</strong> (even a free one) to <strong>avoid rate limits</strong>, for unanthenticated users, when pulling images. Without authentication, Docker Hub enforces strict pull limits, which may cause failures when pulling frequently used images.</p>



<p>Click on the <strong>Test connection</strong> button to test if your login and password are correct.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="620" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39-1024x620.png" alt="" class="wp-image-28664" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39-1024x620.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39-300x182.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39-768x465.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.39.png 1228w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>Now click on the <strong>OK</strong> button in order to create the new endpoint.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="330" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-1024x330.png" alt="" class="wp-image-28665" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-1024x330.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-300x97.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-768x247.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-1536x494.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-11.16.56-2048x659.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>The Docker Hub endpoint is created 🎉</p>



<h5 class="wp-block-heading">Proxy cache project creation</h5>



<p>In the left sidebar, click on <strong>Projects</strong>, then click on the <strong>New project</strong> button.</p>



<p>Enter a project name (&#8220;docker-hub&#8221; for example), enable the Proxy Cache, click on the Docker Hub endpoint in the list and click on the <strong>OK</strong> button.</p>



<p>ℹ️ Note that a project is private by default, so you have to click on the Public checkbox if you want to change the visibilty of a project.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="735" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33-1024x735.png" alt="" class="wp-image-28669" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33-1024x735.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33-300x215.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33-768x551.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-33.png 1182w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>⚠️ The name of a proxy cache project should not contains dot(s), indeed it can causes issues with external tools like Kaniko.</p>



<p>Your proxy cache project have been created 🎉</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="373" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-1024x373.png" alt="" class="wp-image-28670" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-1024x373.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-300x109.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-768x280.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-1536x560.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-34-2048x746.png 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>⚠️ A proxy cache project works similarly to a normal Harbor project, except that you are not able to push images to a proxy cache project.</p>



<p>Now when you want to pull a Docker images hosted in the Docker Hub you proxy cached, instead of pulling directly from the Docker Hub, you need to configure your docker/podman pull commands and Kubernetes pod manifests to pull images from the OVHcloud Managed Private Registry:</p>



<pre class="wp-block-code"><code class="">$ docker pull xxxxxxxx.c1.de1.container-registry.ovh.net/docker-hub/ovhcom/ovh-platform-hello:latest
latest: Pulling from docker-hub/ovhcom/ovh-platform-hello
1f3e46996e29: Pull complete 
6aa905c35cc0: Pull complete 
Digest: sha256:fddb76f0eb92d95b3721bfa0ea87350c5d39ea262e90cd30d66f429bb40c8b07
Status: Downloaded newer image for xxxxxxxx.c1.de1.container-registry.ovh.net/docker-hub/ovhcom/ovh-platform-hello:latest
xxxxxxxx.c1.de1.container-registry.ovh.net/docker-hub/ovhcom/ovh-platform-hello:latest</code></pre>



<h3 class="wp-block-heading">Disable the AlwaysPullImages admission plugin on your MKS cluster</h3>



<figure class="wp-block-image aligncenter size-full is-resized"><img loading="lazy" decoding="async" width="200" height="200" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Managed-Kubernetes-Service.png" alt="" class="wp-image-28702" style="width:186px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Managed-Kubernetes-Service.png 200w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Managed-Kubernetes-Service-150x150.png 150w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Managed-Kubernetes-Service-70x70.png 70w" sizes="auto, (max-width: 200px) 100vw, 200px" /></figure>



<p>By default, the <strong>AlwaysPullImages</strong> Kubernetes admission plugin is enabled in your OVHcloud Managed Kubernetes (MKS) cluster.</p>



<p>⚠️ When it is enabled, this forces the imagePullPolicy of a container to be set to <strong>Always</strong>, no matter how it is specified when creating the resource.</p>



<p>This is useful in a multitenant cluster so that users can be assured that their private images can only be used by those who have the credentials to pull them. Without this admission controller, once an image has been pulled to a node, any pod from any user can use it by knowing the image&#8217;s name (assuming the Pod is scheduled onto the right node), without any authorization check against the image.</p>



<p>But, it can cause a lot of pull requests to the Docker Hub and you can reach the rate limits.</p>



<p>So a solution can be to deactivate the AlwaysPullImages admission plugin in your MKS cluster.</p>



<p>In this blog post, we will deactivate it in the OVHcloud Control Panel.</p>



<h5 class="wp-block-heading">Enable/Disable MKS admission plugins</h5>



<p>Log in the OVHcloud Control Panel. In the left sidebar, click on the <strong>Managed Kubernetes Service</strong> and then click on the wanted MKS cluster.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="777" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-1024x777.png" alt="" class="wp-image-28687" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-1024x777.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-300x227.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-768x582.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01-1536x1165.png 1536w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/Capture-decran-2025-04-10-a-15.35.01.png 2044w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p>In the <strong>Cluster information</strong> section, scroll down and click on <strong>Enable/disable plugin</strong>. A popup will appear.</p>



<p>Then click on <strong>Disable</strong> for the Always Pull Images plugin and click on the <strong>Save</strong> button.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="896" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36-896x1024.png" alt="" class="wp-image-28691" style="width:387px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36-896x1024.png 896w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36-262x300.png 262w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36-768x878.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-36.png 936w" sizes="auto, (max-width: 896px) 100vw, 896px" /></figure>



<p>⚠️ Any changes on the Admission plugins require a redeployment of the MKS cluster API server (without data loss) so the API server can be potentially not available during the redeployment.</p>



<figure class="wp-block-image size-large is-resized"><img loading="lazy" decoding="async" width="541" height="1024" src="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-37-541x1024.png" alt="" class="wp-image-28695" style="width:228px;height:auto" srcset="https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-37-541x1024.png 541w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-37-159x300.png 159w, https://blog.ovhcloud.com/wp-content/uploads/2025/04/image-37.png 572w" sizes="auto, (max-width: 541px) 100vw, 541px" /></figure>



<h3 class="wp-block-heading">Conclusion</h3>



<p>To learn more about how to use and configure <a href="https://help.ovhcloud.com/csm/fr-documentation-public-cloud-containers-orchestration-managed-private-registry?id=kb_browse_cat&amp;kb_id=574a8325551974502d4c6e78b7421938&amp;kb_category=7939e6a464282d10476b3689cb0d0ed7&amp;spa=1" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud private registries</a> and <a href="https://help.ovhcloud.com/csm/world-documentation-public-cloud-containers-orchestration-managed-kubernetes-k8s?id=kb_browse_cat&amp;kb_id=574a8325551974502d4c6e78b7421938&amp;kb_category=f334d555f49801102d4ca4d466a7fdd2&amp;spa=1" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">OVHcloud MKS clusters</a>, don&#8217;t hesitate to follow our guides.</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fsolutions-at-ovhcloud-to-overcome-the-docker-hub-pull-rate-limits%2F&amp;action_name=Solutions%20at%20OVHcloud%20to%20overcome%20the%20Docker%20Hub%20pull%20rate%20limits&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Celebrating Harbor joining the restricted list of CNCF Graduated projects</title>
		<link>https://blog.ovhcloud.com/celebrating-harbor-joining-the-restricted-list-of-cncf-graduated-projects/</link>
		
		<dc:creator><![CDATA[Maxime Hurtrel]]></dc:creator>
		<pubDate>Tue, 23 Jun 2020 16:17:35 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[cloud-native]]></category>
		<category><![CDATA[CNCF]]></category>
		<category><![CDATA[harbor]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[registry]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=18582</guid>

					<description><![CDATA[A couple of months ago, one year after the general availability of our Managed Kubernetes Service, we launched Managed Private Registry service. We shared in a previous blog post why we chose to base it on the CNCF Harbor project . Two OVHcloud employees became project maintainers. We now have a new event to celebrate: [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fcelebrating-harbor-joining-the-restricted-list-of-cncf-graduated-projects%2F&amp;action_name=Celebrating%20Harbor%20joining%20the%20restricted%20list%20of%20CNCF%20Graduated%20projects&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="537" src="https://www.ovh.com/blog/wp-content/uploads/2020/06/ABB4DF92-271C-4A3A-A0C8-5AB4C03EAA2C-1024x537.jpeg" alt="Celebrating Harbor joining the restricted list of CNCF Graduated projects" class="wp-image-18590" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/06/ABB4DF92-271C-4A3A-A0C8-5AB4C03EAA2C-1024x537.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/ABB4DF92-271C-4A3A-A0C8-5AB4C03EAA2C-300x157.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/ABB4DF92-271C-4A3A-A0C8-5AB4C03EAA2C-768x403.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/ABB4DF92-271C-4A3A-A0C8-5AB4C03EAA2C.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>A couple of months ago, one year after the general availability of our Managed Kubernetes Service, we launched <a href="https://www.ovh.com/blog/managing-harbor-at-cloud-scale-the-story-behind-harbor-kubernetes-operator/" data-wpel-link="exclude">Managed Private Registry service</a>. We shared in a <a href="https://www.ovh.com/blog/managing-harbor-at-cloud-scale-the-story-behind-harbor-kubernetes-operator/" data-wpel-link="exclude">previous blog post why we chose to base it on the CNCF Harbor project</a> . Two OVHcloud employees became project maintainers. We now have a new event to celebrate: the Cloud-Native Computing Foundation just announced that Harbor joined the very restricted list of &#8220;Graduated&#8221; projects.</p>



<h2 class="wp-block-heading">CNCF Graduation : The Ultimate Maturity Level</h2>



<p>The CNCF hosts a few dozen open-source projects and does an excellent job offering those projects support for growth, both in terms of infrastructure and tools, but also community and awareness. However most of these projects are living in &#8220;the CNCF Sandbox&#8221; or the &#8220;Incubating&#8221; stage. There are currently only 11 projects that have &#8220;graduated&#8221;, including Kubernetes, Prometheus and Helm. Harbor is now the latest one to receive this great badge of recognition.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="330" src="https://www.ovh.com/blog/wp-content/uploads/2020/06/F5E8A3FA-29D3-475D-9E92-30A0A0B586D7-e1592925697272-1024x330.jpeg" alt="CNCF" class="wp-image-18592" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/06/F5E8A3FA-29D3-475D-9E92-30A0A0B586D7-e1592925697272-1024x330.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/F5E8A3FA-29D3-475D-9E92-30A0A0B586D7-e1592925697272-300x97.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/F5E8A3FA-29D3-475D-9E92-30A0A0B586D7-e1592925697272-768x248.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/F5E8A3FA-29D3-475D-9E92-30A0A0B586D7-e1592925697272.jpeg 1200w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<p>Each level reflects the completion of very specific maturity characteristics<a href="https://www.cncf.io/projects/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">, </a>enforced and validated by the CNCF Technical Oversight Committee. To graduate, Harbor for example has demonstrated that it has active committers from multiple organizations. It went through exhaustive and independent security audits and has fully transparent governance. Harbor also received a<a href="https://bestpractices.coreinfrastructure.org/fr/projects?q=harbor" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"> CII best practices badge</a>.</p>



<h2 class="wp-block-heading">OVHcloud Proudly Democratizing Harbor</h2>



<p>Many enterprise-grade organizations already adopted Harbor as a part of commercial containerization platforms. They usually deploy and operate it on premise or in the cloud. If skeptics wanted a last sign to adopt Harbor, it has come&#8230; and OVHcloud is very proud to help make Harbor even simpler!</p>



<p>With our totally <a href="https://www.ovhcloud.com/en-ie/public-cloud/managed-private-registry/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">managed service</a>, any OVHcloud user can benefit from a dedicated, highly available and full-featured Harbor. We offer totally predictable costs and enterprise-grade features that many cloud registries on the market lack. Those not yet ready to embrace the cloud will also benefit from our donation of <a href="https://goharbor.io/blog/introducing-the-harbor-operator/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">what became the official Harbor Kubernetes operator </a>to facilitate self-deployment and lifecycle in specific environments.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="637" src="https://www.ovh.com/blog/wp-content/uploads/2020/06/54D0BF0A-0044-4374-8263-9EA95A2A2447-1024x637.jpeg" alt="" class="wp-image-18596" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/06/54D0BF0A-0044-4374-8263-9EA95A2A2447-1024x637.jpeg 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/54D0BF0A-0044-4374-8263-9EA95A2A2447-300x187.jpeg 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/54D0BF0A-0044-4374-8263-9EA95A2A2447-768x478.jpeg 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/06/54D0BF0A-0044-4374-8263-9EA95A2A2447.jpeg 1177w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure></div>



<h2 class="wp-block-heading">More for our current and future managed registry users!</h2>



<p>Because we want you to celebrate with us, we are announcing today even more generous plans for our Managed Private Registry:</p>



<ul class="wp-block-list"><li>the &#8220;M&#8221; plan, ideal for medium-sized software companies or business units in large organizations; now includes vulnerability scanning</li><li>the &#8220;L&#8221; plan can now host up to 5 TB of your artifacts (container layers, Helm charts, etc.)</li></ul>



<p>Prices and other characteristics are unchanged, making the service one of the most interesting enterprise-grade registry services on the market. All existing and future customers automatically benefit from these improvements. The public pricing page will be updated soon. Of course, as with most OVHcloud products, the ingress and egress traffic remain unlimited and at no charge.</p>



<p><a href="https://www.ovhcloud.com/en-ie/public-cloud/managed-private-registry/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">Currently exposing the very stable Harbor 1.10</a>, our container team already has plans to move to Harbor 2.0.</p>



<p>See you at the Kubecon Europe and OVHcloud summit later this year!</p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fcelebrating-harbor-joining-the-restricted-list-of-cncf-graduated-projects%2F&amp;action_name=Celebrating%20Harbor%20joining%20the%20restricted%20list%20of%20CNCF%20Graduated%20projects&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Managing Harbor at cloud scale : The story behind Harbor Kubernetes Operator</title>
		<link>https://blog.ovhcloud.com/managing-harbor-at-cloud-scale-the-story-behind-harbor-kubernetes-operator/</link>
		
		<dc:creator><![CDATA[Maxime Hurtrel]]></dc:creator>
		<pubDate>Tue, 17 Mar 2020 15:18:11 +0000</pubDate>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[CNCF]]></category>
		<category><![CDATA[containers]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[harbor]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Public Cloud]]></category>
		<category><![CDATA[registry]]></category>
		<guid isPermaLink="false">https://www.ovh.com/blog/?p=17509</guid>

					<description><![CDATA[Recently, our container platforms team made our &#8220;Private Managed Registry&#8221; service generally available. In this blog post, we will explain why OVHcloud chose to base this service on the Harbor project, built a Kubernetes operator for it, and open sourced it under the CNCF goharbor project. The need for a S.M.A.R.T private registry After our [&#8230;]<img src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fmanaging-harbor-at-cloud-scale-the-story-behind-harbor-kubernetes-operator%2F&amp;action_name=Managing%20Harbor%20at%20cloud%20scale%20%3A%20The%20story%20behind%20Harbor%20Kubernetes%20Operator&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></description>
										<content:encoded><![CDATA[
<p>Recently, our container platforms team made our <a href="https://www.ovhcloud.com/en-ie/public-cloud/managed-private-registry/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"> &#8220;Private Managed Registry&#8221; service </a> generally available. In this blog post, we will explain why OVHcloud chose to base this service on the Harbor project, built a Kubernetes operator for it, and open sourced it under the CNCF goharbor project.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/7E235649-EEE8-4D3A-ABF7-0A1D6D93942F-1024x537.png" alt="" class="wp-image-17604" width="512" height="269" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/7E235649-EEE8-4D3A-ABF7-0A1D6D93942F-1024x537.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/7E235649-EEE8-4D3A-ABF7-0A1D6D93942F-300x157.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/7E235649-EEE8-4D3A-ABF7-0A1D6D93942F-768x403.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/7E235649-EEE8-4D3A-ABF7-0A1D6D93942F.png 1200w" sizes="auto, (max-width: 512px) 100vw, 512px" /></figure></div>



<h2 class="wp-block-heading"><strong>The need for a</strong><a href="https://www.ovhcloud.com/en-ie/about-us/who-are/#text-media-4-2" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"><strong> </strong><strong>S.M.A.R.T</strong></a><strong> </strong><strong>private registry</strong></h2>



<p>After our<a href="https://www.ovhcloud.com/en-ie/public-cloud/kubernetes/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"> Managed Kubernetes Service release</a>, we received many requests&nbsp; for a fully managed private container registry.</p>



<p>Though a container registry for hosting images may sound quite trivial to deploy, our users mentioned a production-grade registry solution was a critical part of the software delivery supply chain and was actually quite difficult to maintain.</p>



<p>Our customers were asking for an enterprise-grade solution, offering advanced role-based-access-control and security by design, as concerns around vulnerabilities within the publicly available images increased and requirements for content-trust became a necessity.</p>



<p>Users were regularly praising the user interface of services such as the Docker Hub, but at the same time requested a service with high availability and backed by SLA.</p>



<h2 class="wp-block-heading"><strong>The perfect mix of open source and enterprise-grade feature set</strong></h2>



<p>After surveying prospects to fine tune our feature set and pricing model, we searched for the best existing technologies to back it and landed on the<a href="http://goharbor.io" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"> CNCF incubating project Harbor</a> (donated to the CNCF by VMWare). In addition to Harbor being one of the few projects to reach CNCF incubation state, thus confirming the strong commitment from the community, it has as well become a key part of several commercial enterprise containerization solutions. We also appreciated the approach taken by Harbor of not re-inventing the wheel but gluing best-of-breed technologies for components such as vulnerability scanning, content trust and many others. It leverages CNCF’s strong network of open source projects and ensures great UX quality levels.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="537" height="188" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/B2CA67EE-44B7-4B1A-BA6E-EB3D328F96B2.png" alt="" class="wp-image-17601" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/B2CA67EE-44B7-4B1A-BA6E-EB3D328F96B2.png 537w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/B2CA67EE-44B7-4B1A-BA6E-EB3D328F96B2-300x105.png 300w" sizes="auto, (max-width: 537px) 100vw, 537px" /></figure></div>



<p>It was now the time to take this 10k-GitHub-stars technology and adapt it to our specific case : managing tens of thousands of registries for our users, each of them having specific volume of container images and usage patterns.</p>



<p>Of course high-availability (customers&#8217;s software integration and deployment rely on this service) but also data durability were non-negotiable for us.</p>



<p>In addition, Kubernetes to ensure stateless services HA and object storage (based on Openstack Swift and<a href="https://www.ovh.com/blog/ovhcloud-object-storage-clusters-support-s3-api/" data-wpel-link="exclude"> compatible with the S3 API</a>) were evident choices to check those requirements.</p>



<h2 class="wp-block-heading"><strong>Addressing&nbsp; operational challenges at the cloud-provider scale</strong></h2>



<p>Within a few weeks, we opened the service in public beta, quickly attracting hundreds of active users. But with this surge in traffic, we naturally hit our first bottlenecks and performance challenges.</p>



<p>We approached the Harbor user group and team who kindly pointed us to potential solutions, and after some small but key changes to how Harbor handles database connections our issues were resolved. This reinforced our beliefs that the Harbor community is strong and committed to the health of the project and the requirements of its users.</p>



<p>As our service flourished there was no real tooling available to easily accommodate the life-cycle of Harbor instances. Our commitment to the Kubernetes ecosystem made the concept of a Harbor operator for Kubernetes an interesting approach.</p>



<p>We discussed with the Harbor maintainers and they warmly welcomed our idea to develop it, and open source it as the official Harbor Kubernetes Operator. OVHcloud is very proud to have the project now available in the <a href="https://goharbor.io/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">goharbor</a> GitHub project under Apache 2 licensing. This project is another example of our strong commitment towards open source and our willingness to contribute our efforts back to the projects that we love.</p>



<h2 class="wp-block-heading"><strong>A versatile operator designed to accommodate any Harbor deployment</strong></h2>



<p>Readers familiar with the Harbor project may wonder what value this operator brings to the current catalogue of deployments including the Helm Chart version maintained by the project.</p>



<p>The operator design pattern is quickly catching on and mimics an application-centric controller that extends Kubernetes to manage more complex, stateful apps.&nbsp; Simply put, It addresses different use-cases than those of Helm. Whereas the Helm chart offers an all-in-one installer that would also deploy the different dependencies of Harbor (database, cache, etc) from open source Docker images,other enterprises, service operators and cloud providers like us will want to pick-and-choose the service or technology behind those components.</p>



<p>We also aim at extending the current v0.5&nbsp; operator to manage the full life-cycle of Harbor, from deployment to deletion, including scaling, updates, upgrades, and backup management.</p>



<p>This will help production users reach their target SLO, benefit from managed solutions or from existing databases clusters they already maintain for example.</p>



<p>We designed the operator (leveraging the OperatorSDK framework) so that both Harbor optional modules (Helm Chart store, vulnerability scanner etc) and dependencies (registry storage backend, relation and non relational databases, etc) can easily match your specific use case.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img loading="lazy" decoding="async" width="1024" height="887" src="https://www.ovh.com/blog/wp-content/uploads/2020/03/69A12D7F-A2B3-45B3-87DB-3A942BC529E4-1024x887.png" alt="" class="wp-image-17611" srcset="https://blog.ovhcloud.com/wp-content/uploads/2020/03/69A12D7F-A2B3-45B3-87DB-3A942BC529E4-1024x887.png 1024w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/69A12D7F-A2B3-45B3-87DB-3A942BC529E4-300x260.png 300w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/69A12D7F-A2B3-45B3-87DB-3A942BC529E4-768x665.png 768w, https://blog.ovhcloud.com/wp-content/uploads/2020/03/69A12D7F-A2B3-45B3-87DB-3A942BC529E4.png 1495w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption> Simplified architecture behind OVHcloud&#8217;d Managed Private Registry service </figcaption></figure></div>



<h2 class="wp-block-heading"><strong>Contributing to Harbor and the operator project</strong></h2>



<p>We already have a roadmap planned with the Harbor maintainers to further enrich the operator to accommodate more than the deployment and destruction phases (for example making Harbor version upgrades more elegant). We look forward to being an integral part of the project and will continue investing in Harbor.</p>



<p>To that end, Jérémie Monsinjon and Pierre Peronnet have also been invited to be&nbsp; maintainers of the Harbor project focusing on <a href="https://github.com/goharbor/harbor-operator" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer">goharbor/operator</a> .</p>



<p>In addition to regular contributions to multiple projects we use within OVHcloud, the container-platform team is also working on other major open sources releases, like an official OVHcloud cloud controller for self-managed Kubernetes we plan to deliver in late 2020.</p>



<p></p>



<p>Download Harbor or the Harbor Operator :<a href="http://www.github.com/goharbor" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"> Official Harbor Github repo</a></p>



<p>Learn more about Harbor : <a href="http://goharbor.io" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer"> Official Harbor website</a></p>
<img loading="lazy" decoding="async" src="//blog.ovhcloud.com/wp-content/plugins/matomo/app/matomo.php?idsite=1&amp;rec=1&amp;url=https%3A%2F%2Fblog.ovhcloud.com%2Fmanaging-harbor-at-cloud-scale-the-story-behind-harbor-kubernetes-operator%2F&amp;action_name=Managing%20Harbor%20at%20cloud%20scale%20%3A%20The%20story%20behind%20Harbor%20Kubernetes%20Operator&amp;urlref=https%3A%2F%2Fblog.ovhcloud.com%2Ffeed%2F" style="border:0;width:0;height:0" width="0" height="0" alt="" />]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
