0
votes

We have started to spin off products off the one big monolith into Azure. A product could also be called a micro service.

A question that we have - should we have one Azure Container Registry (ACR) serving all the different products or should every product has its own ACR? We are talking about the development subscription only. In production we plan to have a different ACR or sets of ACRs to which the images will be imported from the development.

But the question is - what is the recommended way? If we treat ACR as an artifactory, then one is enough. After all, we have only one instance of Azure Artifacts (with several different feeds) where we push our nuget packages. Both nuget packages and docker images are build artifacts, so there is an argument that if we have just one nuget artifactory, why have multiple ACRs?

On the other hand, with Azure Artifacts we do not really have a choice - there is just one. So maybe we are missing some valid scenarios that can be enabled and even desired by having multiple ACRs.

1

1 Answers

1
votes

You can do it in both ways, According to the best practices docs you can have single container registry and manage them through namespaces and dedicated resource groups,

By leveraging repository namespaces, you can allow sharing a single registry across multiple groups within your organization. Registries can be shared across deployments and teams. Azure Container Registry supports nested namespaces, enabling group isolation.

For example, consider the following container image tags. Images that are used corporate-wide, like aspnetcore, are placed in the root namespace, while container images owned by the Products and Marketing groups each use their own namespaces.

  • contoso.azurecr.io/aspnetcore:2.0
  • contoso.azurecr.io/products/widget/web:1
  • contoso.azurecr.io/products/bettermousetrap/refundapi:12.3
  • contoso.azurecr.io/marketing/2017-fall/concertpromotions/campaign:218.42