aws eks create-addon --cluster-name skills-eks-cluster --addon-name eks-pod-identity-agent > /dev/null
ES_ARN=$(aws opensearch describe-domain --domain-name skills-opensearch-domain --query "DomainStatus.ARN" --output text)
cat <<EOF> es-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"es:ESHttp*"
],
"Resource": "${ES_ARN}",
"Effect": "Allow"
}
]
}
EOF
aws iam create-policy --policy-name es-policy --policy-document file://es-policy.json > /dev/null
cat <<EOF> trust-policy.json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Federated": "arn:aws:iam::$ACCOUNT_ID:oidc-provider/$CLUSTER_OIDC"
},
"Action": "sts:AssumeRoleWithWebIdentity",
"Condition": {
"StringEquals": {
"$CLUSTER_OIDC:sub": "system:serviceaccount:default:fluent-bit",
"$CLUSTER_OIDC:aud": "sts.amazonaws.com"
}
}
}
]
}
EOF
aws iam create-role --role-name es-role --assume-role-policy-document file://trust-policy.json > /dev/null
aws iam attach-role-policy --role-name es-role --policy-arn arn:aws:iam::$ACCOUNT_ID:policy/es-policy
apiVersion: v1
kind: ServiceAccount
metadata:
name: fluent-bit
namespace: default
annotations:
eks.amazonaws.com/role-arn: ROLE_ARN
ROLE_ARN=$(aws iam get-role --role-name es-role --query "Role.Arn" --output text)
sed -i "s|ROLE_ARN|$ROLE_ARN|g" fluent-bit-sa.yaml