<!--

Welcome to Apache Airflow!  For a smooth issue process, try to answer the following questions.
Don't worry if they're not all applicable; just try to include what you can :-)

If you need to include code snippets or logs, please put them in fenced code
blocks.  If they're super-long, please use the details tag like
<details><summary>super-long log</summary> lots of stuff </details>

Please delete these comment blocks before submitting the issue.

-->

**Description**

In Spark Kubernetes operator we have hard-coded API group and version for spark application k8s object:
https://github.com/apache/airflow/blob/b23a4cd6631ba3346787b285a7bdafd5e71b43b0/airflow/providers/cncf/kubernetes/operators/spark_kubernetes.py#L63-L65
I think it is not good, because we can have situation that some custom or not opensource Spark k8s operators can have different API group and version (like `sparkoperator.mydomain.com` instead of `sparkoperator.k8s.io`). 
<!-- A short description of your feature -->

**Use case / motivation**

User have got installed custom or commercial Spark Kubernetes operator and he wants to launch DAG with `SprkKubernetesOperator` from providers. User cannot do that without this implemented feature.

<!-- What do you want to happen?

Rather than telling us how you might implement this solution, try to take a
step back and describe what you are trying to achieve.

-->

**Are you willing to submit a PR?**

Yes
<!--- We accept contributions! -->

**Related Issues**

No
<!-- Is there currently another issue associated with this? -->

tests/providers/cncf/kubernetes/sensors/test_spark_kubernetes.py
self, mock_log_call, error_log_call, mock_get_namespaced_crd, mock_kube_conn
    ):
        sensor = SparkKubernetesSensor(
            application_name="spark_pi",
            attach_log=True,
            dag=self.dag,
            task_id="test_task_id",
        )
        with pytest.raises(AirflowException):
            sensor.poke(None)
        mock_log_call.assert_called_once_with("spark-pi-driver", namespace="default")
        error_log_call.assert_called_once_with(TEST_POD_LOG_RESULT)
    @patch(
        "kubernetes.client.api.custom_objects_api.CustomObjectsApi.get_namespaced_custom_object",
        return_value=TEST_COMPLETED_APPLICATION,
    )
    @patch("logging.Logger.info")
    @patch(
        "airflow.providers.cncf.kubernetes.hooks.kubernetes.KubernetesHook.get_pod_logs",
        return_value=TEST_POD_LOGS,
    )
    def test_driver_logging_completed(