-
Notifications
You must be signed in to change notification settings - Fork 32
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
Roadmap: Multiple ports support #763
Comments
Don't need more than just this title : Hyped 💯 😄 |
Awesome, thanks for listening! |
Waiting for this, trying to migrate my actual SMTP relay to Container Apps but this breaks the whole process. ATM made it working by having two instances of SMTP, one for port 25 and another one for 465 sharing the volume. |
Looking forward to this! Thank you team! |
This is currently a massive blocker for ACA usage in my opinion, as there's a ton of services that require multiple exposed ports. Really looking forward for this to be implemented. |
I'm also really looking forward to be able to do remote debugging of my web applications. |
Slightly confused here...are we talking about multiple ports exposed externally, or internally, or both? My use case is Selenium Grid, where I need a "hub" container to have the only externally available ingress port for its management console. But separate node/worker Container Apps in the same environment need to be able to consume an event queue on the hub where the publish and subscribe ports are different. So, need a container app with one ingress port and two "internal" ports. |
Both. Each additional port mapping will have its own external/internal state ref. |
Very hyped for this! 🚀 |
We are working on the docs but you can use it now with api version 2023-05-02-preview under
|
What is the reason of having a custom VNET as a requirement? To expose multiple external http ports? |
I am sorry, I am just starting with Azure and I am completely lost about updating existing ACA to add additionalPortMappings config using CLI. The yaml contains the following section:
But it still gives me error: Bad Request({"type":"https://tools.ietf.org/html/rfc7231#section-6.5.1","title":"One or more validation errors occurred.","status":400,"traceId":"00-f4f96e97b9de893a2316e4f101410e53-685b10742c4f49c5-01","errors":{"$":["Unknown properties additionalPortMappings in Microsoft.ContainerApps.WebApi.Views.Version20230401Preview.ContainerAppIngress are not supported"]}}) I believe I have the latest version of the CLI extension, specifying the preview apiVersion at the top of the yaml file seems to have no effect. When I check the details of the container app via Thanks for any help. |
@elglogins additional ports are all TCP. External http ports are 80/443 only. |
@drapka the cli hasn't been updated yet to use that preview api version so it won't work there. If you want to live dangerously :) you can put this in a {
"properties": {
"configuration": {
"ingress": {
"external": true,
"transport": "Tcp",
"targetPort": 10000,
"exposedPort": 10000,
"additionalPortMappings": [
{
"external": true,
"targetPort": 1001,
"exposedPort": 1001
}
]
}
}
}
} then do # get your app's full resource id
ID=$(az containerapp show -n appName -g groupName -o tsv --query id)
# patch the app using patch.json and api-version=2023-05-02-preview
az rest \
--method patch \
--body @patch.json \
--url "${ID}?api-version=2023-05-02-preview"
# verify the property is there
az rest \
--method get \
--url "${ID}?api-version=2023-05-02-preview" | \
jq -r '.properties.configuration.ingress' |
What if the transport for the second port is different. For example, gRPC for integration between microservices? |
@gcrockenberg All additional ports are TCP. So any tcp based protocol (like htt2/grpc) should work. |
@ahmelsayed, if I understood this correctly this won't allow us to expose UDP ports? We have a use case where we must expose a service over udp. |
Correct, we don't have UDP. Can't speak of any plans myself. |
Hi @torosent and @ahmelsayed, First, thank you for this feature! Is this still in development or is it in preview now as the documentation indicates? https://learn.microsoft.com/en-us/azure/container-apps/ingress-overview#additional-tcp-ports |
It's in preview now. You can use it through ARM/bicep (api-version=2023-05-02-preview) or the cli with --yaml option. Here is a bicep sample https://github.com/ahmelsayed/bicep-templates/blob/main/aca-app-multiple-ports.bicep#L20-L36 with additionalPortMappings:
- external: false
targetPort: 9090
exposedPort: 9090
- external: false
targetPort: 22
exposedPort: 22 |
I just tried running a bicep "what-if" with that preview and did not see the additionalPortMapping applied. I didn't see an error just didn't see the port mapping either. |
@jlkardas hostname+DNS suffix only supports ports with HTTP transport. You need to use <app name>:<port> for additional ports. |
@dummy-andra looks like your secret was not configured correctly in the payload. Make sure you have provide the secret value if it's not a key vault secret. |
@pizerg this issue is related to additional ports. Are you still hitting the same issue now? |
This secret
|
@zhenqxuMSFT I opened a support request with the Azure team and they are investigating this, as far as I know, last week the issue was still happening, however I managed to find a workaround, after the initial deploy fails as described in my initial message, I just need to create a new revision (using the portal for example) and the new revision is deployed correctly and fully functional, including the 4 tcp ports defined in the original failed deployment |
@zhenqxuMSFT It works over additional port (no ssl, we would need setup extra ssl inside the app) |
It seems that the official Azure DevOps pipeline is breaking the additional ports configuration of an existing app that uses this feature (no ingress settings specified in the pipeline stage "Azure Container Apps Deploy" version 1.*) and only keeping the main port active. |
Also experiencing this issue |
@cforce Thanks for the feedback, noted.
Did you mean custom domain is not working for you? Could you elaborate more? |
I had to put this subject aside but now I'm back on it. I used the workaround proposed by @ahmelsayed, and I updated my app through the API, to add additional ports and it worked. So it seems it's working only through API. I will continue to use it and tell you if I face other issues |
@RocheVal could you upgrade to latest cli and try with --yaml again? |
I updated az cli to 2.55.0 and the results is the same (app created but additional ports not working). I sent an email to [email protected] with the output of cli with |
@RocheVal could you install containerapp cli extension with |
Thank you it's working correctly with the extension I didn't see in it the docs, I don't know if it wasn't specified or if I didn't read correctly. But thank again it's working like expected now ! |
If you contact me privately I could provide the required information, otherwise the repro steps are quite straightforward, just deploy any container app with additional ports (in our case 1 main tcp port and 3 additional tcp ports running in a consumption environment). After checking all ports work correctly, deploy a new revision using the official Azure DevOps' Container App Deploy pipeline (just leave ingress setting empty) and you should see that only the main port is working after that |
Similarly, if you could provide me with an email address I would be more than happy to provide some documentation for our ACA and release pipeline setup, or whatever required information you may need. |
@zhenqxuMSFT Any update on the issue related to Azure Pipelines ? |
Hi There We have a setup of 3 Rabbit MQ Container apps running Rabbit MQ Alpine image from docker hub We have an issue where the containers keep creating new replicas for no aparrent reason, when they do they will all create new replicas on the same day for no apparent reason. We have made sure the containers have 4 gig ram and other resources are fine. The revisions stay the same but why are new replicas getting created? We would like to use this setup in production but are not sure how to fix the auto creation of replicas Please assist |
@zhenqxuMSFT Now that this feature is not in preview anymore, could you give us an update on the issue related to Azure Pipelines and multiple ports? |
Is this possible using Azure CLI without yaml config? |
Not yet |
We use only TCP ports in our ACA, so we don't really need the default Is there a possibility to not have |
Any update here? |
Hello, any timeframes on making it supported by Terraform, and through Azure CLI without the need to use YAML? Appreciated. |
This issue will be officially closed as it has reached General Availability (GA) and has been tagged as 'Archive'. If you have any further feedback or encounter new difficulties, please feel free to create a new issue so we can better assist you. Thank you for your continued support and interest! |
8/30/2023 Public Preview: https://azure.microsoft.com/en-us/updates/public-preview-azure-container-apps-supports-additional-tcp-ports/
Docs: https://aka.ms/aca/additional-tcp-ports
The text was updated successfully, but these errors were encountered: