{"id":11583,"date":"2022-09-21T11:18:15","date_gmt":"2022-09-21T11:18:15","guid":{"rendered":"https:\/\/predictly.se\/store-helm-charts-in-the-google-artifact-registry\/"},"modified":"2024-05-08T11:46:38","modified_gmt":"2024-05-08T11:46:38","slug":"store-helm-charts-in-the-google-artifact-registry","status":"publish","type":"post","link":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/","title":{"rendered":"Store Helm Charts in the Google Artifact Registry"},"content":{"rendered":"<p>When setting up and running IT platforms, one goal I strive for is to reduce the amount of tools and vendors. The reason for this is to reduce the overall maintenance burden over time and even more importantly to reduce the number of different user directories that needs to maintained.<\/p>\n<p>Since we are running a container based workload with Kubernetes, we require both an image registry as well as a Helm chart repository; this has created the need for several different repositories. With the release of Helm 3, we now have experimental support to store our Helm charts in an <a href=\"https:\/\/opencontainers.org\/\">OCI<\/a> compliant <a href=\"https:\/\/helm.sh\/docs\/topics\/registries\/\">registry<\/a>.<\/p>\n<p><a href=\"https:\/\/cloud.google.com\/artifact-registry\">Google Artifact Registry<\/a> is a new product from Google Cloud that enables us to create repositories for Docker images, Maven, NPM and APT and it is OCI compliant, meaning it can host our Helm charts as well.<\/p>\n<h6>Configuration<\/h6>\n<p>We start by creating a new repository for Docker images in Artifact Registry, in this example we will call our registry <em>demo-docker-repository<\/em>.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\ngcloud artifacts repositories create demo-docker-repository --location=europe-north1 --repository-format=docker\n# Create request issued for:  &#x5B;demo-docker-repository]\n# Waiting for operation &#x5B;projects\/predictly-demo\/locations\/europe-north1\/operations\/b0830b6b-4289-433e-9eb3-9124b7c10727] to complete...done.\n# Created repository  &#x5B;demo-docker-repository]\n<\/pre>\n<p>Our next step is to make sure we have a service account that has the necessary permissions, the roles <em>Artifact Registry Reader<\/em> and <em>Artifact Registry Writer<\/em> grants the different necessary permissions needed to interact with Artifact Registry.<\/p>\n<h6>Package and push chart<\/h6>\n<p>With our service account setup, we can now interact with our Artifact Registry and store our Helm package in OCI format in our Docker registry.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nexport HELM_EXPERIMENTAL_OCI=1\n# Login to Artifact Registry, registry named demo-docker-repository in project predictly-demo\necho ${GCLOUD_SERVICE_KEY} | helm registry login europe-north1-docker.pkg.dev\/predictly-demo\/demo-docker-repository\/build-app-helm -u _json_key --password-stdin\n# Package contents of folder named helm as an OCI formatted package\nhelm chart save helm europe-north1-docker.pkg.dev\/predictly-demo\/demo-docker-repository\/build-app-helm:0.0.5\nhelm chart push europe-north1-docker.pkg.dev\/predictly-demo\/demo-docker-repository\/build-app-helm:0.0.5\n<\/pre>\n<p>The result of the command above can be seen in Artifact Registry<\/p>\n<p><img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27986%27%20height%3D%27363%27%20viewBox%3D%270%200%20986%20363%27%3E%3Crect%20width%3D%27986%27%20height%3D%27363%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/HelmInGoogleArtifactRegistry-1.png\" alt=\"Artifact Registry\"><\/p>\n<p><em>build-app<\/em> is the actual Docker image of our application while <em>build-app-helm<\/em> is our newly OCI packaged Helm archive.<\/p>\n<h6>Pull and extract chart<\/h6>\n<p>The next step in our process will be to pull and extract the stored OCI so that we can deploy our Helm package in our Kubernetes cluster.<\/p>\n<pre class=\"brush: bash; title: ; notranslate\" title=\"\">\nexport HELM_EXPERIMENTAL_OCI=1\necho ${GCLOUD_SERVICE_KEY} | helm registry login europe-north1-docker.pkg.dev\/predictly-demo\/demo-docker-repository\/build-app-helm -u _json_key --password-stdin\nhelm chart pull europe-north1-docker.pkg.dev\/predictly-demo\/demo-docker-repository\/build-app-helm:0.0.5\nhelm chart export europe-north1-docker.pkg.dev\/predictly-demo\/demo-docker-repository\/build-app-helm:0.0.5\n<\/pre>\n<p>After running this command, the Helm chart will be in a folder named after your chart, i.e. <em>build-app<\/em> since I have set the property <em>name<\/em> to <em>build-app<\/em> in <em>Chart.yaml<\/em><\/p>\n<h6>Focus on the right type of problem<\/h6>\n<p>In the end, those that spend their time solving problems that will differentiate us from our competitors will gain an advantage. Reducing tech sprawl and having fewer systems that are managed by us is a key success factor for achieving this.<\/p>\n<p>By adopting Google Artifact Registry we can reduce our maintenance burden by storing our packaged Helm charts in the same registry as we store our regular Docker images.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Less is more! Fewer tools to maintain gives us more focus and allows us to spend more time delivering software.<\/p>\n","protected":false},"author":6,"featured_media":11451,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"cybocfi_hide_featured_image":"","footnotes":""},"categories":[104,102,106,108,107],"tags":[],"class_list":["post-11583","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ci-cd-en","category-delivery","category-google-cloud-en","category-helm-en","category-kubernetes-en"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Store Helm Charts in the Google Artifact Registry &#8211; Predictly<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Store Helm Charts in the Google Artifact Registry &#8211; Predictly\" \/>\n<meta property=\"og:description\" content=\"Less is more! Fewer tools to maintain gives us more focus and allows us to spend more time delivering software.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/\" \/>\n<meta property=\"og:site_name\" content=\"Predictly\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/predictly.se\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-21T11:18:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-05-08T11:46:38+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1429\" \/>\n\t<meta property=\"og:image:height\" content=\"888\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Patrik H\u00f6rlin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@predictly_se\" \/>\n<meta name=\"twitter:site\" content=\"@predictly_se\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Patrik H\u00f6rlin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/\"},\"author\":{\"name\":\"Patrik H\u00f6rlin\",\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/person\/57c5342be26b4569def7315855fa23c3\"},\"headline\":\"Store Helm Charts in the Google Artifact Registry\",\"datePublished\":\"2022-09-21T11:18:15+00:00\",\"dateModified\":\"2024-05-08T11:46:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/\"},\"wordCount\":553,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/predictly.se\/en\/#organization\"},\"image\":{\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg\",\"articleSection\":[\"CI\/CD\",\"Delivery\",\"Google Cloud\",\"Helm\",\"Kubernetes\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/\",\"url\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/\",\"name\":\"Store Helm Charts in the Google Artifact Registry &#8211; Predictly\",\"isPartOf\":{\"@id\":\"https:\/\/predictly.se\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg\",\"datePublished\":\"2022-09-21T11:18:15+00:00\",\"dateModified\":\"2024-05-08T11:46:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#primaryimage\",\"url\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg\",\"contentUrl\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg\",\"width\":1429,\"height\":888},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/predictly.se\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Delivery\",\"item\":\"https:\/\/predictly.se\/en\/insikter\/delivery\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Store Helm Charts in the Google Artifact Registry\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/predictly.se\/en\/#website\",\"url\":\"https:\/\/predictly.se\/en\/\",\"name\":\"Predictly\",\"description\":\"Professional IT services\",\"publisher\":{\"@id\":\"https:\/\/predictly.se\/en\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/predictly.se\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/predictly.se\/en\/#organization\",\"name\":\"Predictly\",\"url\":\"https:\/\/predictly.se\/en\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/10\/Logotype1-mobil.svg\",\"contentUrl\":\"https:\/\/predictly.se\/wp-content\/uploads\/2022\/10\/Logotype1-mobil.svg\",\"width\":532,\"height\":96,\"caption\":\"Predictly\"},\"image\":{\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/predictly.se\",\"https:\/\/x.com\/predictly_se\",\"https:\/\/www.linkedin.com\/company\/predictly\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/person\/57c5342be26b4569def7315855fa23c3\",\"name\":\"Patrik H\u00f6rlin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/predictly.se\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/60d93834b6a9c87c5625621e882e4a7c538383fb9323297804eb2473d122e9c8?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/60d93834b6a9c87c5625621e882e4a7c538383fb9323297804eb2473d122e9c8?s=96&d=mm&r=g\",\"caption\":\"Patrik H\u00f6rlin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Store Helm Charts in the Google Artifact Registry &#8211; Predictly","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/","og_locale":"en_US","og_type":"article","og_title":"Store Helm Charts in the Google Artifact Registry &#8211; Predictly","og_description":"Less is more! Fewer tools to maintain gives us more focus and allows us to spend more time delivering software.","og_url":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/","og_site_name":"Predictly","article_publisher":"https:\/\/www.facebook.com\/predictly.se","article_published_time":"2022-09-21T11:18:15+00:00","article_modified_time":"2024-05-08T11:46:38+00:00","og_image":[{"width":1429,"height":888,"url":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg","type":"image\/jpeg"}],"author":"Patrik H\u00f6rlin","twitter_card":"summary_large_image","twitter_creator":"@predictly_se","twitter_site":"@predictly_se","twitter_misc":{"Written by":"Patrik H\u00f6rlin","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#article","isPartOf":{"@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/"},"author":{"name":"Patrik H\u00f6rlin","@id":"https:\/\/predictly.se\/en\/#\/schema\/person\/57c5342be26b4569def7315855fa23c3"},"headline":"Store Helm Charts in the Google Artifact Registry","datePublished":"2022-09-21T11:18:15+00:00","dateModified":"2024-05-08T11:46:38+00:00","mainEntityOfPage":{"@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/"},"wordCount":553,"commentCount":0,"publisher":{"@id":"https:\/\/predictly.se\/en\/#organization"},"image":{"@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#primaryimage"},"thumbnailUrl":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg","articleSection":["CI\/CD","Delivery","Google Cloud","Helm","Kubernetes"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/","url":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/","name":"Store Helm Charts in the Google Artifact Registry &#8211; Predictly","isPartOf":{"@id":"https:\/\/predictly.se\/en\/#website"},"primaryImageOfPage":{"@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#primaryimage"},"image":{"@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#primaryimage"},"thumbnailUrl":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg","datePublished":"2022-09-21T11:18:15+00:00","dateModified":"2024-05-08T11:46:38+00:00","breadcrumb":{"@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#primaryimage","url":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg","contentUrl":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/09\/registry.jpg","width":1429,"height":888},{"@type":"BreadcrumbList","@id":"https:\/\/predictly.se\/en\/store-helm-charts-in-the-google-artifact-registry\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/predictly.se\/en\/"},{"@type":"ListItem","position":2,"name":"Delivery","item":"https:\/\/predictly.se\/en\/insikter\/delivery\/"},{"@type":"ListItem","position":3,"name":"Store Helm Charts in the Google Artifact Registry"}]},{"@type":"WebSite","@id":"https:\/\/predictly.se\/en\/#website","url":"https:\/\/predictly.se\/en\/","name":"Predictly","description":"Professional IT services","publisher":{"@id":"https:\/\/predictly.se\/en\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/predictly.se\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/predictly.se\/en\/#organization","name":"Predictly","url":"https:\/\/predictly.se\/en\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/predictly.se\/en\/#\/schema\/logo\/image\/","url":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/10\/Logotype1-mobil.svg","contentUrl":"https:\/\/predictly.se\/wp-content\/uploads\/2022\/10\/Logotype1-mobil.svg","width":532,"height":96,"caption":"Predictly"},"image":{"@id":"https:\/\/predictly.se\/en\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/predictly.se","https:\/\/x.com\/predictly_se","https:\/\/www.linkedin.com\/company\/predictly\/"]},{"@type":"Person","@id":"https:\/\/predictly.se\/en\/#\/schema\/person\/57c5342be26b4569def7315855fa23c3","name":"Patrik H\u00f6rlin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/predictly.se\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/60d93834b6a9c87c5625621e882e4a7c538383fb9323297804eb2473d122e9c8?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/60d93834b6a9c87c5625621e882e4a7c538383fb9323297804eb2473d122e9c8?s=96&d=mm&r=g","caption":"Patrik H\u00f6rlin"}}]}},"_links":{"self":[{"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/posts\/11583","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/comments?post=11583"}],"version-history":[{"count":1,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/posts\/11583\/revisions"}],"predecessor-version":[{"id":11600,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/posts\/11583\/revisions\/11600"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/media\/11451"}],"wp:attachment":[{"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/media?parent=11583"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/categories?post=11583"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/predictly.se\/en\/wp-json\/wp\/v2\/tags?post=11583"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}