<p>Hello and thank you in advance!</p>
<p>I have the following issue:</p>
<p>I'm trying to install prometheus over AWS EKS using Helm, but want to have an opportunity to configure AWS ELB to be private and available from inside my VPC(by default it's being created as a public LoadBalancer with FQDN).</p>
<p>When I execute following:</p>
<pre class="lang-sh prettyprint-override"><code>helm install stable/prometheus --name prometheus \
--namespace prometheus \
--set alertmanager.persistentVolume.storageClass=&quot;gp2&quot; \
--set server.persistentVolume.storageClass=&quot;gp2&quot; \
--set server.service.type=LoadBalancer \
--set server.service.annotations{0}=&quot;service.beta.kubernetes.io/aws-load-balancer-internal&quot;:&quot;0.0.0.0/0&quot;
</code></pre>
<p>It creates a standard LoadBalancer service with no annotations included:</p>
<pre class="lang-yaml prettyprint-override"><code>$ kubectl describe service/prometheus-server   -n=prometheus
Name:                     prometheus-server
Namespace:                prometheus
Labels:                   app=prometheus
                          chart=prometheus-11.7.0
                          component=server
                          heritage=Tiller
                          release=prometheus
Annotations:              &lt;none&gt;
Selector:                 app=prometheus,component=server,release=prometheus
Type:                     LoadBalancer
IP:                       10.100.255.81
</code></pre>
<p>I was playing around with quotes and other possible syntax variations but no luck. Please advise on the proper annotation usage.</p>

<p>It's kind of tricky, but you can do it like this:</p>
<pre class="lang-sh prettyprint-override"><code>helm install stable/prometheus --name prometheus \
--namespace prometheus \
--set alertmanager.persistentVolume.storageClass=&quot;gp2&quot; \
--set server.persistentVolume.storageClass=&quot;gp2&quot; \
--set server.service.type=LoadBalancer \
--set server.service.annotations.&quot;service\.beta\.kubernetes\.io/aws-load-balancer-internal&quot;=&quot;0.0.0.0/0&quot;
</code></pre>
<p>You can see the format and limitation of set here <a href="https://helm.sh/docs/intro/using_helm/#the-format-and-limitations-of-set" rel="nofollow noreferrer">in the Helm docs</a>. For example,</p>
<pre class="lang-sh prettyprint-override"><code>--set nodeSelector.&quot;kubernetes\.io/role&quot;=master
</code></pre>
<p>becomes:</p>
<pre class="lang-yaml prettyprint-override"><code>nodeSelector:
  kubernetes.io/role: master
</code></pre>
<p>✌️</p>
