You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "yuanfenghu (Jira)" <ji...@apache.org> on 2025/09/18 10:13:00 UTC
[jira] [Commented] (FLINK-38377) SQL Job Submission in the Flink Kubernetes Operator via SQL Gateway
[ https://issues.apache.org/jira/browse/FLINK-38377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18021115#comment-18021115 ]
yuanfenghu commented on FLINK-38377:
------------------------------------
[~gyfora] Do you have any opinions or suggestions on this? If I can, I can finish this work ~
> SQL Job Submission in the Flink Kubernetes Operator via SQL Gateway
> --------------------------------------------------------------------
>
> Key: FLINK-38377
> URL: https://issues.apache.org/jira/browse/FLINK-38377
> Project: Flink
> Issue Type: New Feature
> Components: Kubernetes Operator, Table SQL / Gateway
> Reporter: yuanfenghu
> Priority: Minor
>
> 1. Abstract
> This proposal outlines a new, integrated approach for submitting Flink SQL jobs on Kubernetes. We propose enhancing the Flink Kubernetes Operator to
> natively support SQL job submission by leveraging the REST API of the Flink SQL Gateway. This change will provide a standardized, API-driven, and
> user-friendly experience, moving away from the current reliance on custom-built runner JARs.
> 2. Motivation
> Currently, submitting a pure SQL job through the Flink Kubernetes Operator is not a first-class experience. The common approach, demonstrated by the
> flink-sql-runner-example, has several significant drawbacks:
> * Requires Custom Tooling: Users must build and maintain a specialized JAR file (flink-sql-runner.jar) to package and execute their SQL scripts. This
> adds an extra layer of complexity to the development and deployment workflow.
> * Complex Dependency Management: Managing SQL connectors, UDFs, and other dependencies is cumbersome. Users often need to bundle all dependencies into a
> "fat JAR" or manage them through complex classpath configurations, which is error-prone.
> * Non-Standard Workflow: This method feels like a workaround rather than a native feature. It deviates from the declarative, API-centric philosophy of
> Kubernetes and the operator pattern.
> * Poor User Experience: The process is indirect and not intuitive for users who simply want to run a SQL script against Flink on Kubernetes.
> Starting with Flink 2.0, the Flink SQL Gateway has introduced the capability to directly submit SQL application jobs to a Kubernetes cluster [FLIP-480|https://cwiki.apache.org/confluence/display/FLINK/FLIP-480%3A+Support+to+deploy+SQL+script+in+application+mode]. This
> presents a perfect opportunity to modernize and streamline the SQL submission process within the operator ecosystem.
> 3. Proposed Change
> We propose to integrate the Flink Kubernetes Operator with the Flink SQL Gateway to create a seamless SQL job submission workflow. This approach
> effectively turns the operator into an orchestrator that translates a declarative Kubernetes resource into an imperative API call against the SQL
> Gateway.
> 4. Key Advantages
> This integration would deliver substantial benefits:
> * Standardized, API-Driven Submission: Eliminates the need for custom runner JARs, providing a clean, official, and maintainable submission process.
> * Simplified Dependency Management: Leverages the SQL Gateway's robust mechanisms for dynamically loading connectors and dependencies, which can be
> achieved through the ADD JAR syntax.
> * Improved User Experience: Users can define and manage Flink SQL jobs using familiar kubectl and YAML files, creating a true Kubernetes-native
> experience.
> * Decoupling of Logic and Packaging: SQL developers can focus on writing SQL without worrying about Java build systems or container image customization.
> * Alignment with Flink Project Direction: This approach aligns the operator with the strategic investment being made in the Flink SQL Gateway as the
> primary entry point for SQL interactions.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)