Tanzu Kubernete Grid v2.1.1上にTanzu PackageでFluent Bitをインストール＆動作確認をする


[TKG1.6.0でfluent-bitを構築した記事](https://qiita.com/ipppppei/items/fa90e7efddf61ae63594)をv2.1.1で確認し直したもの。
オプションが変わっていたので、コピペしやすいよう別記事としてこちらにメモを残す。
なお、syslogサーバの構築は同じなので今回は割愛した。

## インストール
利用可能なバージョンを確認する。
```
tanzu package available list fluent-bit.tanzu.vmware.com -A
```

values.yamlを生成してみる。オプションが`--generate-default-values-file`から`--default-values-file-output`に変わり、引数を要求するようになったので注意。
```
FB_VERSION="1.9.5+vmware.1-tkg.1"
tanzu package available get fluent-bit.tanzu.vmware.com/$FB_VERSION --default-values-file-output fluent-bit-default-values.yaml
```
が、中身が以下のようになっており使い物にならなかったので、自分で自作する。
```yaml
$ cat fluent-bit-default-values.yaml
# fluent_bit:
#   config:
#     filters: default kubernetes filter
#     inputs: tail
#     outputs: standard output
#     parsers: json parser
#     service: default fluent-bit service config.
# namespace: tanzu-system-logging
```
以下で自作する。TKG1.6.0で作ったものに`HTTP_Server On`を追加した。また、syslogのIPを変更することを忘れないこと。
```yaml
cat <<'EOF' > ./fluent-bit-default-values.yaml
---
fluent_bit:
  config:
    service: |
      [SERVICE]
        Daemon              Off
        Flush                1
        Log_Level            info
        Parsers_File         parsers.conf
        Health_Check         On
        HTTP_Server          On
    inputs: |
      [INPUT]
        Name                 tail
        Path                 /var/log/containers/*.log
        DB                   /var/log/flb_kube.db
        parser               cri
        Tag                  kube.*
        Mem_Buf_Limit        5MB
        Skip_Long_Lines      On
    parsers: |
      [PARSER]
        # http://rubular.com/r/tjUt3Awgg4
        Name                 cri
        Format               regex
        Regex                ^(?<time>[^ ]+) (?<stream>stdout|stderr) (?<logtag>[^ ]*) (?<message>.*)$
        Time_Key             time
        Time_Format          %Y-%m-%dT%H:%M:%S.%L%z
    filters: |
      [FILTER]
        Name                 kubernetes
        Match                kube.*
        Kube_URL             https://kubernetes.default.svc.cluster.local:443
        Kube_CA_File         /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
        Kube_Token_File      /var/run/secrets/kubernetes.io/serviceaccount/token
        Kube_Tag_Prefix      kube.var.log.containers.
        Merge_Log            On
        Merge_Log_Key        log_processed
        Keep_Log             Off
        K8S-Logging.Parser   On
        K8S-Logging.Exclude  On
    outputs: |
      [OUTPUT]
        Name                 syslog
        Match                *
        Host                 10.151.199.248
        Port                 514
        Mode                 tcp
        Syslog_Format        rfc5424
        Syslog_Hostname_key  tkg_cluster
        Syslog_Appname_key   pod_name
        Syslog_Procid_key    container_name
        Syslog_Message_key   message
        syslog_msgid_key     msgid
        Syslog_SD_key        k8s
        Syslog_SD_key        labels
        Syslog_SD_key        annotations
namespace: tanzu-system-logging
EOF
```
fluent-bitをインストールする。
`--package-name`が`--package`に変わり、`--create-namespace`がなくなっているようなので上手いこと置き換えて実行する。
```sh
NAMESPACE="my-packages"
kubectl create ns $NAMESPACE
tanzu package install fluent-bit \
--package fluent-bit.tanzu.vmware.com \
--version $FB_VERSION \
--values-file fluent-bit-default-values.yaml \
--namespace $NAMESPACE
```
## 動作確認
syslog側のログを確認すると、問題なく取れていることが分かる。
```sh
$ kubectl exec -n rsyslog -it rsyslog -- tail -f /var/log/remote.log
：（省略）
2023-04-12T10:43:10.935655Z - - I0412 10:43:10.935430       1 server.go:569] CmdDel for container 6c448410e38d80077a9e6dc718220d9738815899576a7055a545e5d32e510712 succeeded
```