cat <<EOF> cw-log-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
EOF
Shell
복사
aws iam create-policy --policy-name fluent-bit-policy --policy-document file://cw-log-policy.json > /dev/null
Shell
복사
kubectl create ns fluent-bit
Shell
복사
POLICY_ARN=$(aws iam list-policies --query "Policies[?PolicyName=='fluent-bit-policy'].Arn" --output text)
Shell
복사
eksctl utils associate-iam-oidc-provider --cluster wsi-eks-cluster --approve
Shell
복사
eksctl create iamserviceaccount \
--cluster=wsi-eks-cluster \
--namespace=wsi-ns \
--name=aws-for-fluent-bit \
--role-name FluentBitIAMRole \
--attach-policy-arn=$POLICY_ARN \
--approve
Shell
복사
cat <<EOF> values.yaml
serviceAccount:
create: false
name: fluent-bit
cloudWatchLogs:
enabled: true
region: "ap-northeast-2"
logGroupName: "/wsi/eks/log/"
logStreamPrefix: "log-"
autoCreateGroup: true
EOF
Shell
복사
helm repo add eks https://aws.github.io/eks-charts
helm upgrade --install aws-for-fluent-bit --namespace fluent-bit eks/aws-for-fluent-bit -f values.yaml
Shell
복사
apiVersion: v1
kind: ConfigMap
metadata:
name: fluent-bit-sidecar
namespace: wsi-ns
labels:
app.kubernetes.io/name: fluent-bit-sidecar
helm.sh/chart: default-0.1.0
app.kubernetes.io/instance: flb-sidecar
app.kubernetes.io/version: "1.0"
app.kubernetes.io/managed-by: Tiller
data:
fluent-bit.conf: |
[SERVICE]
Flush 1
Log_Level info
Daemon off
Parsers_File parsers.conf
[INPUT]
Name tail
Path /logs/app.log
Parser custom_log
Tag app.log
[OUTPUT]
Name stdout
Match *
[OUTPUT]
Name cloudwatch
Match *
endpoint https://logs.ap-northeast-2.amazonaws.com
region ap-northeast-2
log_group_name /wsi/eks/log/
log_stream_name log-${HOSTNAME}
auto_create_group true
parsers.conf: |
[PARSER]
Name custom_log
Format regex
Regex ^(?<year>\d{4})-(?<month>\d{2})-(?<day>\d{2})\s(?<hour>\d{2}):(?<minute>\d{2}):(?<second>\d{2}),\d+ - - (?<ip>\d+\.\d+\.\d+\.\d+) (?<port>\d+) (?<method>\S+) (?<path>\S+) (?<statuscode>\d+)$
Time_Key time
Time_Format %Y-%m-%d %H:%M:%S
Time_Keep On
YAML
복사
kubectl apply -f fluent-bit-cm.yaml
Shell
복사
