Maven version (mvn -v) : 3.6.3
Kubernetes / OpenShift setup and version : OpenShift 4.6.9
oc logout78-jkubemvn clean install oc:deploy -Dkubernetes.master=https://api.crc.testing:6443 -Dkubernetes.namespace=78-jkube -Dkubernetes.auth.basic.username=developer
-Dkubernetes.auth.basic.password=developer
-Dfabric8.mode=openshift
-Dkubernetes.trust.certificates=true
-Dfabric8.build.strategy=s2i
-Dkubernetes.auth.tryServiceAccount=false
-Dfabric8.generator.from=registry.access.redhat.com/fuse7/fuse-java-openshift
-Dfabric8.generator.fromMode=docker
-Dkubernetes.auth.tryKubeConfig=falsethe error is:
[INFO] --- openshift-maven-plugin:7.8.0.fuse-sb2-780038-redhat-00001:build (default) @ camel-ose-springboot-xml ---
[INFO] oc: Using OpenShift build with strategy S2I
[INFO] oc: Running in OpenShift mode
[INFO] oc: Running generator spring-boot
[INFO] oc: spring-boot: Using Docker image quay.io/jkube/jkube-java-binary-s2i:0.0.8 as base / builder
[ERROR] oc: Failed to execute the build [OpenShift platform has been specified but OpenShift has not been detected!]
I tried several variations but this one is working for sure with OpenShift 3.11.
With same project, when logged in through oc, it is workign fine deployign on OpenShift 4.6.
same problem than with fabric8-maven-plugin: https://github.com/fabric8io/fabric8-maven-plugin/issues/1823
I think this issue lies in OpenShiftClient. Let's take a look at LoginExample
try (DefaultKubernetesClient kubernetesClient = new DefaultKubernetesClient(new ConfigBuilder()
.withMasterUrl("cluster_url")
.withUsername("my_username")
.withPassword("my_password")
.build())) {
final OpenShiftClient openShiftClient = kubernetesClient.adapt(OpenShiftClient.class);
final ProjectList pl = openShiftClient.projects().list();
logger.info("{}", pl);
}
When I run this code on minishift with OpenShift version 3.11 with developer:developer t gives this output:
mvn exec:java -Dexec.mainClass="io.fabric8.openshift.examples.LoginExample"
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 1 modules...
[INFO] Installing Nexus Staging features:
[INFO] ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin
[INFO]
[INFO] -------------------< io.fabric8:kubernetes-examples >-------------------
[INFO] Building Fabric8 :: Kubernetes :: Client Examples 5.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:3.0.0:java (default-cli) @ kubernetes-examples ---
[io.fabric8.openshift.examples.LoginExample.main()] INFO io.fabric8.openshift.examples.LoginExample - ProjectList(apiVersion=project.openshift.io/v1, items=[Project(apiVersion=project.openshift.io/v1, kind=Project, metadata=ObjectMeta(annotations={openshift.io/description=Initial developer project, openshift.io/display-name=My Project, openshift.io/requester=developer, openshift.io/sa.scc.mcs=s0:c12,c4, openshift.io/sa.scc.supplemental-groups=1000140000/10000, openshift.io/sa.scc.uid-range=1000140000/10000}, clusterName=null, creationTimestamp=2021-02-03T18:44:21Z, deletionGracePeriodSeconds=null, deletionTimestamp=null, finalizers=[], generateName=null, generation=null, labels=null, managedFields=[], name=myproject, namespace=null, ownerReferences=[], resourceVersion=2222, selfLink=/apis/project.openshift.io/v1/projects/myproject, uid=d4208612-664f-11eb-84b8-5254002b93cd, additionalProperties={}), spec=ProjectSpec(finalizers=[kubernetes], additionalProperties={}), status=ProjectStatus(conditions=[], phase=Active, additionalProperties={}), additionalProperties={})], kind=ProjectList, metadata=ListMeta(_continue=null, remainingItemCount=null, resourceVersion=null, selfLink=/apis/project.openshift.io/v1/projects, additionalProperties={}), additionalProperties={})
But same code fails on crc 1.21.0 with OpenShift 4.6.9 with this error:
kubernetes-examples : $ mvn exec:java -Dexec.mainClass="io.fabric8.openshift.examples.LoginExample"
[INFO] Scanning for projects...
[INFO] Inspecting build with total of 1 modules...
[INFO] Installing Nexus Staging features:
[INFO] ... total of 1 executions of maven-deploy-plugin replaced with nexus-staging-maven-plugin
[INFO]
[INFO] -------------------< io.fabric8:kubernetes-examples >-------------------
[INFO] Building Fabric8 :: Kubernetes :: Client Examples 5.1-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO]
[INFO] --- exec-maven-plugin:3.0.0:java (default-cli) @ kubernetes-examples ---
[WARNING]
io.fabric8.kubernetes.client.KubernetesClientException: An error has occurred.
at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable (KubernetesClientException.java:64)
at io.fabric8.kubernetes.client.KubernetesClientException.launderThrowable (KubernetesClientException.java:53)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isOpenShiftAPIGroups (OpenshiftAdapterSupport.java:80)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isOpenShift (OpenshiftAdapterSupport.java:55)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isAdaptable (OpenshiftAdapterSupport.java:43)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:45)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:33)
at io.fabric8.kubernetes.client.BaseClient.adapt (BaseClient.java:128)
at io.fabric8.openshift.examples.LoginExample.main (LoginExample.java:36)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:254)
at java.lang.Thread.run (Thread.java:834)
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alert.createSSLException (Alert.java:131)
at sun.security.ssl.TransportContext.fatal (TransportContext.java:353)
at sun.security.ssl.TransportContext.fatal (TransportContext.java:296)
at sun.security.ssl.TransportContext.fatal (TransportContext.java:291)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts (CertificateMessage.java:654)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate (CertificateMessage.java:473)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume (CertificateMessage.java:369)
at sun.security.ssl.SSLHandshake.consume (SSLHandshake.java:392)
at sun.security.ssl.HandshakeContext.dispatch (HandshakeContext.java:444)
at sun.security.ssl.HandshakeContext.dispatch (HandshakeContext.java:422)
at sun.security.ssl.TransportContext.dispatch (TransportContext.java:183)
at sun.security.ssl.SSLTransport.decode (SSLTransport.java:171)
at sun.security.ssl.SSLSocketImpl.decode (SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord (SSLSocketImpl.java:1268)
at sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:401)
at sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:373)
at okhttp3.internal.connection.RealConnection.connectTls (RealConnection.java:320)
at okhttp3.internal.connection.RealConnection.establishProtocol (RealConnection.java:284)
at okhttp3.internal.connection.RealConnection.connect (RealConnection.java:169)
at okhttp3.internal.connection.StreamAllocation.findConnection (StreamAllocation.java:258)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection (StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream (StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:127)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.BackwardsCompatibilityInterceptor.intercept (BackwardsCompatibilityInterceptor.java:133)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.TokenRefreshInterceptor.intercept (TokenRefreshInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.ImpersonatorInterceptor.intercept (ImpersonatorInterceptor.java:68)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.HttpClientUtils.lambda$createHttpClient$3 (HttpClientUtils.java:145)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.java:257)
at okhttp3.RealCall.execute (RealCall.java:93)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isOpenShiftAPIGroups (OpenshiftAdapterSupport.java:71)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isOpenShift (OpenshiftAdapterSupport.java:55)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isAdaptable (OpenshiftAdapterSupport.java:43)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:45)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:33)
at io.fabric8.kubernetes.client.BaseClient.adapt (BaseClient.java:128)
at io.fabric8.openshift.examples.LoginExample.main (LoginExample.java:36)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:254)
at java.lang.Thread.run (Thread.java:834)
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.validator.PKIXValidator.doBuild (PKIXValidator.java:439)
at sun.security.validator.PKIXValidator.engineValidate (PKIXValidator.java:306)
at sun.security.validator.Validator.validate (Validator.java:264)
at sun.security.ssl.X509TrustManagerImpl.validate (X509TrustManagerImpl.java:313)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted (X509TrustManagerImpl.java:222)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted (X509TrustManagerImpl.java:129)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts (CertificateMessage.java:638)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate (CertificateMessage.java:473)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume (CertificateMessage.java:369)
at sun.security.ssl.SSLHandshake.consume (SSLHandshake.java:392)
at sun.security.ssl.HandshakeContext.dispatch (HandshakeContext.java:444)
at sun.security.ssl.HandshakeContext.dispatch (HandshakeContext.java:422)
at sun.security.ssl.TransportContext.dispatch (TransportContext.java:183)
at sun.security.ssl.SSLTransport.decode (SSLTransport.java:171)
at sun.security.ssl.SSLSocketImpl.decode (SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord (SSLSocketImpl.java:1268)
at sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:401)
at sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:373)
at okhttp3.internal.connection.RealConnection.connectTls (RealConnection.java:320)
at okhttp3.internal.connection.RealConnection.establishProtocol (RealConnection.java:284)
at okhttp3.internal.connection.RealConnection.connect (RealConnection.java:169)
at okhttp3.internal.connection.StreamAllocation.findConnection (StreamAllocation.java:258)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection (StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream (StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:127)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.BackwardsCompatibilityInterceptor.intercept (BackwardsCompatibilityInterceptor.java:133)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.TokenRefreshInterceptor.intercept (TokenRefreshInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.ImpersonatorInterceptor.intercept (ImpersonatorInterceptor.java:68)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.HttpClientUtils.lambda$createHttpClient$3 (HttpClientUtils.java:145)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.java:257)
at okhttp3.RealCall.execute (RealCall.java:93)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isOpenShiftAPIGroups (OpenshiftAdapterSupport.java:71)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isOpenShift (OpenshiftAdapterSupport.java:55)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isAdaptable (OpenshiftAdapterSupport.java:43)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:45)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:33)
at io.fabric8.kubernetes.client.BaseClient.adapt (BaseClient.java:128)
at io.fabric8.openshift.examples.LoginExample.main (LoginExample.java:36)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:254)
at java.lang.Thread.run (Thread.java:834)
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.build (SunCertPathBuilder.java:141)
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild (SunCertPathBuilder.java:126)
at java.security.cert.CertPathBuilder.build (CertPathBuilder.java:297)
at sun.security.validator.PKIXValidator.doBuild (PKIXValidator.java:434)
at sun.security.validator.PKIXValidator.engineValidate (PKIXValidator.java:306)
at sun.security.validator.Validator.validate (Validator.java:264)
at sun.security.ssl.X509TrustManagerImpl.validate (X509TrustManagerImpl.java:313)
at sun.security.ssl.X509TrustManagerImpl.checkTrusted (X509TrustManagerImpl.java:222)
at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted (X509TrustManagerImpl.java:129)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts (CertificateMessage.java:638)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate (CertificateMessage.java:473)
at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume (CertificateMessage.java:369)
at sun.security.ssl.SSLHandshake.consume (SSLHandshake.java:392)
at sun.security.ssl.HandshakeContext.dispatch (HandshakeContext.java:444)
at sun.security.ssl.HandshakeContext.dispatch (HandshakeContext.java:422)
at sun.security.ssl.TransportContext.dispatch (TransportContext.java:183)
at sun.security.ssl.SSLTransport.decode (SSLTransport.java:171)
at sun.security.ssl.SSLSocketImpl.decode (SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.readHandshakeRecord (SSLSocketImpl.java:1268)
at sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:401)
at sun.security.ssl.SSLSocketImpl.startHandshake (SSLSocketImpl.java:373)
at okhttp3.internal.connection.RealConnection.connectTls (RealConnection.java:320)
at okhttp3.internal.connection.RealConnection.establishProtocol (RealConnection.java:284)
at okhttp3.internal.connection.RealConnection.connect (RealConnection.java:169)
at okhttp3.internal.connection.StreamAllocation.findConnection (StreamAllocation.java:258)
at okhttp3.internal.connection.StreamAllocation.findHealthyConnection (StreamAllocation.java:135)
at okhttp3.internal.connection.StreamAllocation.newStream (StreamAllocation.java:114)
at okhttp3.internal.connection.ConnectInterceptor.intercept (ConnectInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.cache.CacheInterceptor.intercept (CacheInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.internal.http.BridgeInterceptor.intercept (BridgeInterceptor.java:93)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept (RetryAndFollowUpInterceptor.java:127)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.BackwardsCompatibilityInterceptor.intercept (BackwardsCompatibilityInterceptor.java:133)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.TokenRefreshInterceptor.intercept (TokenRefreshInterceptor.java:42)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.ImpersonatorInterceptor.intercept (ImpersonatorInterceptor.java:68)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at io.fabric8.kubernetes.client.utils.HttpClientUtils.lambda$createHttpClient$3 (HttpClientUtils.java:145)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:147)
at okhttp3.internal.http.RealInterceptorChain.proceed (RealInterceptorChain.java:121)
at okhttp3.RealCall.getResponseWithInterceptorChain (RealCall.java:257)
at okhttp3.RealCall.execute (RealCall.java:93)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isOpenShiftAPIGroups (OpenshiftAdapterSupport.java:71)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isOpenShift (OpenshiftAdapterSupport.java:55)
at io.fabric8.openshift.client.OpenshiftAdapterSupport.isAdaptable (OpenshiftAdapterSupport.java:43)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:45)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:33)
at io.fabric8.kubernetes.client.BaseClient.adapt (BaseClient.java:128)
at io.fabric8.openshift.examples.LoginExample.main (LoginExample.java:36)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:254)
at java.lang.Thread.run (Thread.java:834)
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.322 s
[INFO] Finished at: 2021-02-04T00:00:30+05:30
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:3.0.0:java (default-cli) on project kubernetes-examples: An exception occured while executing the Java class. An error has occurred.: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target -> [Help 1]
I've seen that before.
Do you know if oc bundles any extra CA?
Or if your .kube/config cluster config is referencing a root CA that we might be ignoring in our inferred config / or your parameterized config?
I was facing this error due to certificates not being loaded in Config due to currentContext misconfigured in my ~/.kube/config file. When I provided a correct KubeConfig file, I didn't face this SSLException. However, I faced OpenShift not detected error.
[INFO] --- exec-maven-plugin:3.0.0:java (default-cli) @ kubernetes-examples ---
[WARNING]
io.fabric8.openshift.client.OpenShiftNotAvailableException: OpenShift is not available. Root paths at: https://api.crc.testing:6443/ do not include oapi.
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:39)
at io.fabric8.openshift.client.OpenShiftExtensionAdapter.adapt (OpenShiftExtensionAdapter.java:26)
at io.fabric8.kubernetes.client.BaseClient.adapt (BaseClient.java:128)
at io.fabric8.openshift.examples.LoginExample.main (LoginExample.java:36)
at org.codehaus.mojo.exec.ExecJavaMojo$1.run (ExecJavaMojo.java:254)
at java.lang.Thread.run (Thread.java:834)
We are checking whether a specified cluster is OpenShift or not here in OpenShiftHelper:
https://github.com/eclipse/jkube/blob/4a87c508210f3d40ef1376eab1562d58978064ff/jkube-kit/common/src/main/java/org/eclipse/jkube/kit/common/util/OpenshiftHelper.java#L55-L57
This client.isAdaptable delegates call to OpenShiftAdapterSupport which tries to hit /apis endpoint to get a list of APIGroups. We iterate over the list to check whether it contains at least one entry with *.openshift.io APIGroup. If we find any match, it's considered OpenShift otherwise not.
On OpenShift 3.x, this /apis endpoint returns 200 even without any OAuth token configured in Config.
On OpenShift 4.x, this /apis endpoint returns 403.
We handle 403 in OpenShiftOAuthInterceptor but when we're in OpenShiftAdapterSupport the OkHttpClient being used doesn't contain this interceptor. I think we should reuse DefaultOpenShiftClient.createWithOpenShiftOAuthInterceptor OkHttpClient while hitting /apis
We handle 403 in OpenShiftOAuthInterceptor but when we're in OpenShiftAdapterSupport the
OkHttpClientbeing used doesn't contain this interceptor. I think we should reuseDefaultOpenShiftClient.createWithOpenShiftOAuthInterceptorOkHttpClientwhile hitting/apis
Does this mean that the fix has to be implemented in the Fabric8 project?
Yeah, you're right. I'll create a PR for this in kubernetes-client
Fix merged in Kubernetes Client.
We need to update the Client dependency once it gets released.
this is part of 5.1.1 https://github.com/fabric8io/kubernetes-client/blob/master/CHANGELOG.md#bugs-1 which has been released on the 24/02/21
current version is 5.0.0 https://github.com/eclipse/jkube/blob/35999caee8736d69a5d3cc6dc6589287e3e7fb3b/jkube-kit/parent/pom.xml#L56
reported a specific issue for the upgrade https://github.com/eclipse/jkube/issues/592
I think this is fixed now that there was the upgrade to Kubernetes Client 5.1.1
@apupier : Thanks a lot for taking care of this. I think you should be able to get this fix in v1.2.0 (We might release it at the end of this month)