Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding example for cert-manager letsencrypt for Istio-based service mesh #4511

Merged
merged 14 commits into from
Sep 9, 2024

Conversation

deveshdama
Copy link
Contributor

Adding example for cert-manager letsencrypt for ASM.

@deveshdama deveshdama requested review from palma21 and a team as code owners August 28, 2024 07:44
deveshdama and others added 2 commits September 3, 2024 12:57
…readme.md

Co-authored-by: Shashank Barsin <shashankbarsin@users.noreply.github.com>
deveshdama and others added 3 commits September 4, 2024 17:10
Copy link

@biefy biefy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@zioproto
Copy link
Contributor

zioproto commented Sep 6, 2024

I tested the example and it works without any problems. I left some comments that are suggestions, like using sed to avoid modifying template files, or using nip.io to avoid giving the customer the trouble of registering a DNS name. If you would like you can accept my suggestions, but feel free to ignore them and keep your style of doing things. :)

Have you patched the controller.go to have the Istio Ingress work in a namespace different than istio-system ? This was not working back in January. Can you confirm ?

@zioproto
Copy link
Contributor

zioproto commented Sep 6, 2024

One more idea. I understand nip.io is a nice tool, but it could go away anytime. As an alternative solution to remove the complexity of setting up a DNS name, it would be great of the External Istio Ingress Gateway could set a public-facing DNS label to the service using theservice.beta.kubernetes.io/azure-dns-label-name service annotation.

In open source Istio you can do it when installing the helm chart:

helm install istio-ingressgateway istio/gateway \
  --set service.annotations."service\.beta\.kubernetes\.io/azure-dns-label-name"=my-istio-ingress \
  -n istio-system --wait

It would be great to have a way to set this annotation also with the add-on. Thanks !

@nshankar13
Copy link

@zioproto we're opening up a list of annotations for our users to customize on the ingress gateway. I was considering azure-dns-label-name but decided against it because you could effectively achieve the same thing by just using azure-load-balancer-ipv4 and setting the DNS name for the Azure public ip address. Is there any advantage to using the dns-name label instead of the ipv4 address - is it just easier to set up the DNS name?

@zioproto
Copy link
Contributor

zioproto commented Sep 6, 2024

@zioproto we're opening up a list of annotations for our users to customize on the ingress gateway. I was considering azure-dns-label-name but decided against it because you could effectively achieve the same thing by just using azure-load-balancer-ipv4 and setting the DNS name for the Azure public ip address. Is there any advantage to using the dns-name label instead of the ipv4 address - is it just easier to set up the DNS name?

Could you just offer both annotations and let the customer decide what works best for them ? We have many customers and some will like better to lock to a specific IP, while others will prefer the DNS name.

With the OSS Helm chart you can just pass whatever annotation to the Kubernetes service, there you have a lot of flexibility.

Please let me know if this makes sense, or I can add more context. Thanks

@nshankar13
Copy link

@zioproto we're opening up a list of annotations for our users to customize on the ingress gateway. I was considering azure-dns-label-name but decided against it because you could effectively achieve the same thing by just using azure-load-balancer-ipv4 and setting the DNS name for the Azure public ip address. Is there any advantage to using the dns-name label instead of the ipv4 address - is it just easier to set up the DNS name?

Could you just offer both annotations and let the customer decide what works best for them ? We have many customers and some will like better to lock to a specific IP, while others will prefer the DNS name.

With the OSS Helm chart you can just pass whatever annotation to the Kubernetes service, there you have a lot of flexibility.

Please let me know if this makes sense, or I can add more context. Thanks

Thanks for that context - the main asks we've seen (GH issues, email threads) for the add-on have been for the ipv4 and ipv6 annotations specifically (ipv6 will likely come later but we need to test dual-stack prior). We haven't seen any specifically for the dns label name but if there have been asks and use-cases then I think it would make sense to consider. It sounds like in both cases though, you would still need to create an Azure Public IP beforehand - then either set the annotation to the IP address or the DNS name?

@deveshdama @biefy wondering if in the context of Let's Encrypt and Cert Manager this DNS annotation would be useful over ipv4 annotation but it seems to be the same in terms of configuration steps.

deveshdama and others added 2 commits September 6, 2024 11:23
@deveshdama
Copy link
Contributor Author

I tested the example and it works without any problems. I left some comments that are suggestions, like using sed to avoid modifying template files, or using nip.io to avoid giving the customer the trouble of registering a DNS name. If you would like you can accept my suggestions, but feel free to ignore them and keep your style of doing things. :)

Have you patched the controller.go to have the Istio Ingress work in a namespace different than istio-system ? This was not working back in January. Can you confirm ?

cool, thanks for the review. I've incorporated most of them except recommending nip.io. I feel like we've provided enough information for the users to make the decision.

we've made a fix on the azure servicemesh codebase to allow for ingress to be configured via shared configmap.

@deveshdama
Copy link
Contributor Author

@zioproto can you please update the blog post when you get some time - blog

@deveshdama deveshdama changed the title Adding example for cert-manager letsencrypt for Azure Servicemesh Adding example for cert-manager letsencrypt for Istio-based service mesh Sep 7, 2024
@deveshdama deveshdama merged commit 7c08a78 into Azure:master Sep 9, 2024
2 checks passed
@zioproto
Copy link
Contributor

@zioproto can you please update the blog post when you get some time - blog

@deveshdama I confirm I updated the blog post with a reference to this PR. Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants