{"id":36266,"date":"2023-06-28T09:35:22","date_gmt":"2023-06-28T09:35:22","guid":{"rendered":"https:\/\/www.devopsschool.com\/blog\/?p=36266"},"modified":"2023-09-01T09:57:10","modified_gmt":"2023-09-01T09:57:10","slug":"helm-lab-7-managing-dependencies-of-helm-charts","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/helm-lab-7-managing-dependencies-of-helm-charts\/","title":{"rendered":"Helm Lab \u2013 7: Managing Dependencies of Helm Charts"},"content":{"rendered":"\n<p>Managing dependencies is an essential aspect of creating and maintaining Helm charts, especially when building complex applications composed of multiple services or components. Here&#8217;s how you can manage dependencies of Helm charts effectively:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">How to Define Helm Chart Dependencies?<\/h2>\n\n\n\n<p>In your Helm chart, specify the dependencies in either the <code>requirements.yaml<\/code> file (for Helm 2) or the <code>Chart.yaml<\/code> file (for Helm 3).<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Chart.yaml<\/li>\n\n\n\n<li><code>requirements.yaml<\/code><\/li>\n<\/ol>\n\n\n\n<p>$ helm repo update<br>$ helm repo add bitnami https:\/\/charts.bitnami.com\/bitnami<br>$ helm repo add stable https:\/\/charts.helm.sh\/stable<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Example of Chart.yaml<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">apiVersion: v1\r\n<span class=\"hljs-attr\">name<\/span>: mychart\r\n<span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">1.0<\/span><span class=\"hljs-number\">.0<\/span>\r\n<span class=\"hljs-attr\">dependencies<\/span>:\r\n- name: mysql\r\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">9.12<\/span><span class=\"hljs-number\">.1<\/span>\r\n  <span class=\"hljs-attr\">repository<\/span>: https:<span class=\"hljs-comment\">\/\/charts.bitnami.com\/bitnami<\/span>\r\n- name: jenkins\r\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">2.5<\/span><span class=\"hljs-number\">.4<\/span>\r\n  <span class=\"hljs-attr\">repository<\/span>: https:<span class=\"hljs-comment\">\/\/charts.helm.sh\/stable<\/span>\r\n- name: my-third-chart\r\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">0.1<\/span><span class=\"hljs-number\">.0<\/span>\r\n  <span class=\"hljs-attr\">repository<\/span>: <span class=\"hljs-string\">\"file:\/\/\/home\/ubuntu\/charts\/chart-dep\/ourchart\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Example of a Chart.yaml file that defines dependencies:<\/h2>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">apiVersion: v1\n<span class=\"hljs-attr\">name<\/span>: mychart\n<span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">1.0<\/span><span class=\"hljs-number\">.0<\/span>\n<span class=\"hljs-attr\">dependencies<\/span>:\n- name: my-first-chart\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">1.0<\/span><span class=\"hljs-number\">.0<\/span>\n  <span class=\"hljs-attr\">repository<\/span>: file:<span class=\"hljs-comment\">\/\/..\/my-first-chart<\/span>\n- name: my-second-chart\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">1.0<\/span><span class=\"hljs-number\">.0<\/span>\n  <span class=\"hljs-attr\">repository<\/span>: https:<span class=\"hljs-comment\">\/\/artifacthub.io\/<\/span>\n- name: my-third-chart\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">1.0<\/span><span class=\"hljs-number\">.0<\/span>\n  <span class=\"hljs-attr\">repository<\/span>: file:<span class=\"hljs-comment\">\/\/..\/my-third-chart<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Example of <code>requirements.yaml<\/code><\/h2>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">$ helm repo update\r\n$ helm repo add bitnami https:<span class=\"hljs-comment\">\/\/charts.bitnami.com\/bitnami<\/span>\r\n$ helm repo add stable https:<span class=\"hljs-comment\">\/\/charts.helm.sh\/stable<\/span>\n\ndependencies:\r\n- name: mysql\r\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">9.12<\/span><span class=\"hljs-number\">.1<\/span>\r\n  <span class=\"hljs-attr\">repository<\/span>: https:<span class=\"hljs-comment\">\/\/charts.bitnami.com\/bitnami<\/span>\r\n- name: jenkins\r\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">2.5<\/span><span class=\"hljs-number\">.4<\/span>\r\n  <span class=\"hljs-attr\">repository<\/span>: https:<span class=\"hljs-comment\">\/\/charts.helm.sh\/stable<\/span>\r\n- name: my-third-chart\r\n  <span class=\"hljs-attr\">version<\/span>: <span class=\"hljs-number\">0.1<\/span><span class=\"hljs-number\">.0<\/span>\r\n  <span class=\"hljs-attr\">repository<\/span>: <span class=\"hljs-string\">\"file:\/\/\/home\/ubuntu\/charts\/chart-dep\/ourchart\"<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>$ helm dependency update<br>$ helm dependency list<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Update Dependencies<\/strong>:<\/h2>\n\n\n\n<p>$ helm dependency update<br>$ helm dependency list<\/p>\n\n\n\n<p>Run the <code>helm dependency update<\/code> command in the directory containing your Helm chart. This command downloads the specified dependencies and stores them in the <code>charts\/<\/code> directory within your chart&#8217;s directory.<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\">helm dependency update: \nThis command updates the dependencies <span class=\"hljs-keyword\">for<\/span> a chart. <span class=\"hljs-keyword\">For<\/span> example, the following command will update the dependencies <span class=\"hljs-keyword\">for<\/span> the chart mychart:\n$ helm dependency update mychart\n\nhelm dependency <span class=\"hljs-keyword\">list<\/span>: \nThis command lists the dependencies <span class=\"hljs-keyword\">for<\/span> a chart. <span class=\"hljs-keyword\">For<\/span> example, the following command will <span class=\"hljs-keyword\">list<\/span> the dependencies <span class=\"hljs-keyword\">for<\/span> the chart mychart:\n$ helm dependency <span class=\"hljs-keyword\">list<\/span> mychart\n\nhelm dependency build: \nThis command builds the dependencies <span class=\"hljs-keyword\">for<\/span> a chart. This is useful <span class=\"hljs-keyword\">if<\/span> you are developing a chart <span class=\"hljs-keyword\">and<\/span> want to test it with the latest versions of its dependencies. <span class=\"hljs-keyword\">For<\/span> example, the following command will build the dependencies <span class=\"hljs-keyword\">for<\/span> the chart mychart:\n$ helm dependency build mychart\n\nhelm dependency pull: \nThis command pulls the dependencies <span class=\"hljs-keyword\">for<\/span> a chart. This is useful <span class=\"hljs-keyword\">if<\/span> you want to download the dependencies <span class=\"hljs-keyword\">for<\/span> a chart without installing them. <span class=\"hljs-keyword\">For<\/span> example, the following command will pull the dependencies <span class=\"hljs-keyword\">for<\/span> the chart mychart:\n$ helm dependency pull mychart\n\nhelm dependency upgrade: \nThis command upgrades the dependencies <span class=\"hljs-keyword\">for<\/span> a chart to the latest version. <span class=\"hljs-keyword\">For<\/span> example, the following command will upgrade the dependencies <span class=\"hljs-keyword\">for<\/span> the chart mychart to the latest version:\n$ helm dependency upgrade mychart\n\nhelm dependency <span class=\"hljs-keyword\">list<\/span>-all: \nThis command lists all the dependencies <span class=\"hljs-keyword\">for<\/span> all the charts in a directory. <span class=\"hljs-keyword\">For<\/span> example, the following command will <span class=\"hljs-keyword\">list<\/span> all the dependencies <span class=\"hljs-keyword\">for<\/span> all the charts in the current directory:\n$ helm dependency <span class=\"hljs-keyword\">list<\/span>-all\n\nhelm dependency remove: \nThis command removes a dependency from a chart. <span class=\"hljs-keyword\">For<\/span> example, the following command will remove the dependency my-chart from the chart my-app:\n$ helm dependency remove my-app my-chart<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<div data-wp-interactive=\"core\/file\" class=\"wp-block-file\"><object data-wp-bind--hidden=\"!state.hasPdfPreview\" hidden class=\"wp-block-file__embed\" data=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/06\/8.managing-dependencies-slides-1.pdf\" type=\"application\/pdf\" style=\"width:100%;height:2000px\" aria-label=\"Embed of 8.managing-dependencies-slides-1.\"><\/object><a id=\"wp-block-file--media-d1282c6b-5c50-490b-800a-a7b321a4971c\" href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/06\/8.managing-dependencies-slides-1.pdf\">8.managing-dependencies-slides-1<\/a><a href=\"https:\/\/www.devopsschool.com\/blog\/wp-content\/uploads\/2023\/06\/8.managing-dependencies-slides-1.pdf\" class=\"wp-block-file__button wp-element-button\" download aria-describedby=\"wp-block-file--media-d1282c6b-5c50-490b-800a-a7b321a4971c\">Download<\/a><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Managing dependencies is an essential aspect of creating and maintaining Helm charts, especially when building complex applications composed of multiple services or components. Here&#8217;s how you can manage dependencies of&#8230; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[2],"tags":[],"class_list":["post-36266","post","type-post","status-publish","format-standard","hentry","category-uncategorised"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/36266","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=36266"}],"version-history":[{"count":7,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/36266\/revisions"}],"predecessor-version":[{"id":39131,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/36266\/revisions\/39131"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=36266"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=36266"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=36266"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}