falcoのConnection closed errorの対応

# 問題
[Falco](https://falco.org/)のPodが以下のerrorログをはいていることを確認しました。

```
% k logs falco-daemonset-2fcxr -n kube-support |grep error
k8s_handler (k8s_replicationcontroller_handler_state::collect_data()[https://172.20.0.1] an error occurred while receiving data from k8s_replicationcontroller_handler_state, m_blocking_socket=1, m_watching=0, SSL Socket handler (k8s_replicationcontroller_handler_state): Connection closed.
k8s_handler (k8s_service_handler_state::collect_data()[https://172.20.0.1] an error occurred while receiving data from k8s_service_handler_state, m_blocking_socket=1, m_watching=0, SSL Socket handler (k8s_service_handler_state): Connection closed.
k8s_handler (k8s_replicaset_handler_state::collect_data()[https://172.20.0.1] an error occurred while receiving data from k8s_replicaset_handler_state, m_blocking_socket=1, m_watching=0, SSL Socket handler (k8s_replicaset_handler_state): Connection closed.
k8s_handler (k8s_deployment_handler_state::collect_data()[https://172.20.0.1] an error occurred while receiving data from k8s_deployment_handler_state, m_blocking_socket=1, m_watching=0, SSL Socket handler (k8s_deployment_handler_state): Connection closed.
```

このerrorログは大規模環境だとパフォーマンスの問題で発生してしまうfalcoの既知の問題のようです。


昨日の記事のEKS Upgrade作業中にたまたま発見しました。

# ワークアラウンド
## Helmを使用している場合
GitHubのissueで同様の事象が報告されており、ワークアラウンドも紹介されていました。

> A workaround is to disable the k8s metadata collection and only rely on fields available from the container runtimes. 

https://github.com/falcosecurity/falco/issues/2694#issuecomment-1665273365

metadataのcollectionをdisableすることでいったんは、エラーがでなくなるようです。
しかしながら、具体的な方法がわからなかったので、[質問してみた](https://github.com/falcosecurity/falco/issues/2694#issuecomment-1748608760)ところHelmを使っている場合の回答が返ってきました。

![Falco_crash_after_few_minutes_on_GKE_1_24_·_Issue__2694_·_falcosecurity_falco_🔊.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221948/6e583f41-2867-8489-445c-5ac2756fcc00.png)

## Helmを使用していない場合
ZOZOの場合は、Helmを使用せず、GitHub上で公開されている[テンプレートファイル](https://github.com/falcosecurity/deploy-kubernetes/blob/main/kubernetes/falco/templates/daemonset.yaml)をもとにyamlファイルを記述し、リソースを作成しています。

上記の回答よると、Helmの場合は[kubernetes.enabled](https://github.com/falcosecurity/charts/blob/falco-3.7.1/falco/values.yaml#L269)をfalseにするそうです。このkubernetes.enabledの値は[ここのif文](https://github.com/falcosecurity/charts/blob/falco-3.7.1/falco/templates/pod-template.tpl#L83-L84)で使用されていて、trueの場合は `-K` をつけるようです。

![charts_falco_templates_pod-template_tpl_at_falco-3_7_1_·_falcosecurity_charts_🔊.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221948/fa84909b-5a04-dba8-a6d5-be89c246a0c3.png)

ただし、注意するべき点として、[falseにするとID, name, namespace, labelsしか取得できなくなる](https://github.com/falcosecurity/charts/blob/6c020815eff7ad543d9261a2c4c602a997d4ac95/falco/generated/helm-values.md?plain=1#L23)とのことです。我々はfalco_rules.yamlにて k8s.pod.name と k8s.ns.name しか使用していないため問題ありませんでした。
ちなみに、Filed Classの一覧は以下です。
https://falco.org/docs/reference/rules/supported-fields/#field-class-k8s

また、[ここ](https://github.com/falcosecurity/charts/blob/6c020815eff7ad543d9261a2c4c602a997d4ac95/falco/generated/helm-values.md?plain=1#L73)の記載的に、 `-k` でも `-K` でもどちらでもよいらしいので、どちらも削除しました。

> When using Falco with Kubernetes, you can enable this functionality by using the `-k` or `-K` command-line flag.

## 最終的にやったこと
今回は `/usr/bin/falco` のargsの `-K` と `-k` を削除しました。

![falcoのConnection_closed_errorの解消_by_gold-kou_·_Pull_Request__14969_·_st-tech_zozo-platform-infra_🔊.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221948/29515121-8c8f-af4d-a9e2-f33b546aa94f.png)

# 根本解決
以下のIssueで対応中とのことです。
https://github.com/falcosecurity/libs/issues/987