[
https://issues.apache.org/jira/browse/FLINK-22933?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17380104#comment-17380104
]
Fuyao Li commented on FLINK-22933:
----------------------------------
I have been checking with Yang Wang to see if there is any around solutions. We
have tried to use shading and it proves to NOT work because Fabric8io seems to
reject class relocation.
Yang proposes to use classLoader way to solve this.
Set flink-kubernetes dependency as provided.
When calling the deploy (ApplicationDeployer) interface, create a new
classLoader and load it from a directory that is not in classPath directory. In
such case, operator will be able to depend on the new version 5.4.0.
I haven't tried it yet since I am kind of busy recently.
If this way doesn't work. The only option left seems to be upgrading the
Fabric8io version in Flink side.
> Upgrade the Flink Fabric8io/kubernetes-client version to >=5.4.0 to be FIPS
> compliant
> -------------------------------------------------------------------------------------
>
> Key: FLINK-22933
> URL: https://issues.apache.org/jira/browse/FLINK-22933
> Project: Flink
> Issue Type: Improvement
> Components: Deployment / Kubernetes
> Affects Versions: 1.13.0, 1.13.1
> Reporter: Fuyao Li
> Priority: Major
> Labels: auto-deprioritized-critical
> Attachments: pom.xml
>
>
> The current Fabric8io version in Flink is 4.9.2
> See link:
> [https://github.com/apache/flink/blob/master/flink-kubernetes/pom.xml#L35]
> This version of Fabric8io library is not FIPS compliant
> ([https://www.sdxcentral.com/security/definitions/what-does-mean-fips-compliant/).]
> Such function is added in Fabric8io recently. See links below.
> [https://github.com/fabric8io/kubernetes-client/pull/2788]
> [https://github.com/fabric8io/kubernetes-client/issues/2732]
>
> I am trying to write a native kubernetes operator leveraging APIs and
> interfaces provided by Flink source code. For example, ApplicationDeployer.
> I am writing my own implementation based on Yang's example code:
> [https://github.com/wangyang0918/flink-native-k8s-operator]
>
> Using version 4.9.2 for my operator will be working perfectly, but it could
> cause FIPS compliant issues.
>
> Using version 5.4.0 will run into issues since Fabric8io version 4 and
> version 5 API is not that compatible. I saw errors below.
> {code:java}
> Exception in thread "main" java.lang.AbstractMethodError: Receiver class
> io.fabric8.kubernetes.client.handlers.ServiceHandler does not define or
> inherit an implementation of the resolved method 'abstract java.lang.Object
> create(okhttp3.OkHttpClient, io.fabric8.kubernetes.client.Config,
> java.lang.String, java.lang.Object, boolean)' of interface
> io.fabric8.kubernetes.client.ResourceHandler.Exception in thread "main"
> java.lang.AbstractMethodError: Receiver class
> io.fabric8.kubernetes.client.handlers.ServiceHandler does not define or
> inherit an implementation of the resolved method 'abstract java.lang.Object
> create(okhttp3.OkHttpClient, io.fabric8.kubernetes.client.Config,
> java.lang.String, java.lang.Object, boolean)' of interface
> io.fabric8.kubernetes.client.ResourceHandler. at
> io.fabric8.kubernetes.client.utils.CreateOrReplaceHelper.lambda$createOrReplaceItem$0(CreateOrReplaceHelper.java:77)
> at
> io.fabric8.kubernetes.client.utils.CreateOrReplaceHelper.createOrReplace(CreateOrReplaceHelper.java:56)
> at
> io.fabric8.kubernetes.client.utils.CreateOrReplaceHelper.createOrReplaceItem(CreateOrReplaceHelper.java:91)
> at
> io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.createOrReplaceOrDeleteExisting(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:454)
> at
> io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.createOrReplace(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:297)
> at
> io.fabric8.kubernetes.client.dsl.internal.NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.createOrReplace(NamespaceVisitFromServerGetWatchDeleteRecreateWaitApplicableListImpl.java:66)
> at
> org.apache.flink.kubernetes.kubeclient.Fabric8FlinkKubeClient.createJobManagerComponent(Fabric8FlinkKubeClient.java:113)
> at
> org.apache.flink.kubernetes.KubernetesClusterDescriptor.deployClusterInternal(KubernetesClusterDescriptor.java:274)
> at
> org.apache.flink.kubernetes.KubernetesClusterDescriptor.deployApplicationCluster(KubernetesClusterDescriptor.java:208)
> at
> org.apache.flink.client.deployment.application.cli.ApplicationClusterDeployer.run(ApplicationClusterDeployer.java:67)
> at
> org.apache.flink.kubernetes.operator.controller.FlinkApplicationController.reconcile(FlinkApplicationController.java:207)
> at
> org.apache.flink.kubernetes.operator.controller.FlinkApplicationController.run(FlinkApplicationController.java:172)
> at
> org.apache.flink.kubernetes.operator.KubernetesOperatorEntrypoint.main(KubernetesOperatorEntrypoint.java:74)2021-06-08
> 19:53:57,726 WARN
> io.fabric8.kubernetes.client.dsl.internal.WatcherWebSocketListener [] - Exec
> Failure
> {code}
> Since Fabric8io has fixed this issue, maybe we can bump the version in Flink
> to 5.4.0 or 5.4.1 that is released recently? I think this might require some
> code changes since version 4 and version 5 is not that compatible.
>
> This will also bring additional benefits since users will be able to leverage
> new APIs provided in >=5.4.0 version if anyone need to build operators upon
> this.
> See changelog:
> [https://github.com/fabric8io/kubernetes-client/blob/master/CHANGELOG.md]
>
> cc [~fly_in_gis] [~rmetzger]
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)