## Problem
The helm chart does not implement a way for SequentialExecutor Airflow 2 deployments to serve logs; without using elasticsearch.

## Details
Prior implementations utilize the CLI function `serve_logs`. This function has been deprecated as of v2.

In `airflow/templates/scheduler/scheduler-deployment.yaml`:
```yaml
    181 {{- if and $local (not $elasticsearch) }}
    182         # Start the sidecar log server if we're in local mode and
    183         # we don't have elasticsearch enabled.
    184         - name: scheduler-logs
    185           image: {{ template "airflow_image" . }}
    186           imagePullPolicy: {{ .Values.images.airflow.pullPolicy }}
    187           args: ["serve_logs"]
```

This will cause the helm deployment to break; and the scheduler will perpetually fail to start the `scheduler-logs` container inside of the scheduler deployment.

Snippet from airflow [upgrade guide](https://airflow.apache.org/docs/apache-airflow/stable/upgrading-to-2.html).

```
Remove serve_logs command from CLI

The serve_logs command has been deleted. This command should be run only by internal application mechanisms and there is no need for it to be accessible from the CLI interface.
```

## Partial Solution
Not sure how the non-elastic method for serving logs going forward.

Astronomer branches yaml by:
```yaml
{{- if semverCompare ">=1.10.12" .Values.airflowVersion }}
...
{{- else }}
...
{{- end }}
```
airflow/cli/cli_parser.py
"""Get long option from Arg.flags"""
        return arg.flags[0] if len(arg.flags) == 1 else arg.flags[1]
    positional, optional = partition(lambda x: x.flags[0].startswith("-"), args)
    yield from positional
    yield from sorted(optional, key=lambda x: get_long_option(x).lower())
def _add_command(
    subparsers: argparse._SubParsersAction, sub: CLICommand  # py
) -> None:
    sub_proc = subparsers.add_parser(
        sub.name, help=sub.help, description=sub.description or sub.help, epilog=sub.epilog
    )
    sub_proc.formatter_class = RawTextHelpFormatter
    if isinstance(sub, GroupCommand):
        _add_group_command(sub, sub_proc)
    elif isinstance(sub, ActionCommand):
        _add_action_command(sub, sub_proc)
    else:
        raise AirflowException("Invalid command definition.")
def _add_action_command(sub: ActionCommand, sub_proc: argparse.ArgumentParser) -> None:
    for arg in _sort_args(sub.args):
        arg.add_to_parser(sub_proc)
    sub_proc.set_defaults(func=sub.func)
def _add_group_command(sub: GroupCommand, sub_proc: argparse.ArgumentParser) -> None:
    subcommands = sub.subcommands
    sub_subparsers = sub_proc.add_subparsers(dest="subcommand", metavar="COMMAND")
    sub_subparsers.required = True
    for command in sorted(subcommands, key=lambda x: x.name):
        _add_command(sub_subparsers, command)