I am trying deploy harbor as the following:
helm install hub harbor/harbor \
--namespace prod \
--set expose.ingress.hosts.core=hub.service.example.io \
--set expose.ingress.annotations.'kubernetes\.io/ingress\.class'=contour \
--set expose.ingress.annotations.'cert-manager\.io/cluster-issuer'=letsencrypt-prod \
--set expose.ingress.annotations.'ingress\.kubernetes\.io/force-ssl-redirect'="true" \
--set expose.ingress.annotations.'kubernetes\.io/tls-acme'="true" \
--set externalURL=https://hub.service.example.io \
--set expose.tls.secretName=secret \
--set notary.enabled=false \
--set secretkey=secret \
--set harborAdminPassword=serect
And I've got:
Error: unable to build kubernetes objects from release manifest: unable to decode "": resource.metadataOnlyObject.ObjectMeta: v1.ObjectMeta.Annotations: ReadString: expects " or n, but found t, error found in #10 byte of ...|edirect":true,"ingre|..., bigger context ...|prod","ingress.kubernetes.io/force-ssl-redirect":true,"ingress.kubernetes.io/proxy-body-size":"0","i|...
What am I doing wrong?
The error shows that the value of "ingress.kubernetes.io/force-ssl-redirect":true
is not string, it's expting string like "ingress.kubernetes.io/force-ssl-redirect":"true"
You can set the boolean annotation value as string by forcing, using --set-string
like following
helm install hub harbor/harbor \
--namespace prod \
--set expose.ingress.hosts.core=hub.service.example.io \
--set expose.ingress.annotations.'kubernetes\.io/ingress\.class'=contour \
--set expose.ingress.annotations.'cert-manager\.io/cluster-issuer'=letsencrypt-prod \
--set-string expose.ingress.annotations.'ingress\.kubernetes\.io/force-ssl-redirect'="true" \
--set-string expose.ingress.annotations.'kubernetes\.io/tls-acme'="true" \
--set externalURL=https://hub.service.example.io \
--set expose.tls.secretName=secret \
--set notary.enabled=false \
--set secretkey=secret \
--set harborAdminPassword=serect