Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-22933

Upgrade the Flink Fabric8io/kubernetes-client version to >=5.4.0 to be FIPS compliant

    XMLWordPrintableJSON

    Details

      Description

      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.

      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
      

      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] Robert Metzger

       

       

       

        Attachments

        1. pom.xml
          8 kB
          Fuyao Li

          Issue Links

            Activity

              People

              • Assignee:
                Unassigned
                Reporter:
                Fuyao Li Fuyao Li
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: