-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Openshift extension does not create a service for a management interface #34645
Comments
Since [1] does not seem to be fixed soon [1] quarkusio/quarkus#34645
Since [1] does not seem to be fixed soon [1] quarkusio/quarkus#34645
This is expected from Quarkus 3.2 (see #33694).
|
@Sgitario this solution doesn't solve the problem:
(using only
If 3.1.0.Final is used, the service looks like this:
|
For OpenShift, you need to use the route-specific properties:
|
@Sgitario after applying Is there a way to have management interface exposed as a service (so it can be accessed from inside the cluster. eg by other microservices) and main interface exposed through route and service (so it can be accessed by users)? |
We removed this use case on purpose since management endpoints should be the more protected the better. |
The first thing, that comes in mind is a dashboard, that shows the current status of several services and deployed as a service itself. It needs to check and collect statuses of services which are deployed in the same cluster. Some of these services can be user-facing ones, so they need to expose the HTTP/HTTPS port to the outside world. I may be wrong, but it seems, that exposing management port inside the cluster is more safe, that exposing it outside the cluster. |
This is what you got with Kubernetes/OpenShift by default. Users should not reinvent the wheel. However, I want to know from @cescoffier since he was who requested removing the generated Service for the Management port. Note that if we want to expose the Management port for a service only, we might need to add a new property for doing this. |
I am fine with management port being exposed through route, as it happens now (although it looks less secure, than in 3.1.0) but in that case we also need an option to expose HTTP(S) alongside it. |
I'm slightly worried. First, it would need an explicit (defaulting to disable) property to expose the management interface as service. Definitely not as a route. However, due to the nature of the management endpoint, I'm worried about multi replicas deployment. So, it would need a new service object with a unique name per pod to avoid the load balancing (note that the pod may not be created when you have a scaler able to handle scale to 0). |
I propose to add a new option within the
This would create a new service called Wdyt? Adding @iocanel to the discussion and reopening. |
It won't work when you have multiple replicas, as you will have the round-robin. |
@cescoffier @Sgitario correct me, if I am wrong, but current configuration doesn't allow to use tools like Prometheus, which read from |
It does, but you need to use the pod ip, not the service one. BTW, there are no service on purpose. |
Close as won't fix. Works as expected. |
Describe the bug
I have an application, deployed on Openshift via Quarkus-openshift extension, which uses separate management interface[1].
After an update to Quarkus 3.2.0, the interface can not be accessed anymore, since this port is not exposed as a part of a service.
[1] https://quarkus.io/guides/management-interface-reference
Expected behavior
The port is exposed as a part of a service, same as for 3.1.0.
Generated file
target/kubernetes/openshift.yml
should contains service description like this:and
oc describe svc/openshift-quickstart
should return this:Actual behavior
The generated file looks like this:
and the deployed service like that:
How to Reproduce?
[email protected]:fedinskiy/reproducer.git -b openshift-extension-management
mvn clean install -Dquarkus.kubernetes.deploy=true -Dquarkus.openshift.route.expose=true -Dquarkus.kubernetes-client.trust-certs=true -Dquarkus.platform.version=3.2.0.Final
Run
mvn clean install -Dquarkus.kubernetes.deploy=true -Dquarkus.openshift.route.expose=true -Dquarkus.kubernetes-client.trust-certs=true -Dquarkus.platform.version=3.1.0.Final
for expected result.Output of
uname -a
orver
6.3.8-200.fc38.x86_64
Output of
java -version
17.0.5, vendor: GraalVM Community
GraalVM version (if different from Java)
No response
Quarkus version or git rev
3.2.0.Final
Build tool (ie. output of
mvnw --version
orgradlew --version
)Apache Maven 3.8.7 (b89d5959fcde851dcb1c8946a785a163f14e1e29)
Additional information
No response
The text was updated successfully, but these errors were encountered: