我想配置AWS NLB以将日志存储在S3存储桶中吗?
我有:
我已经将这些注释添加到我的terraform代码中,以实现nginx入口:
set {
name = "controller.service.annotations.service\\.beta\\.kubernetes\\.io/aws-load-balancer-access-log-enabled"
value = "true"
}
set {
name = "controller.service.annotations.service\\.beta\\.kubernetes\\.io/aws-load-balancer-access-log-s3-bucket-name"
value = "nlb-logs-bucket"
}
set {
name = "controller.service.annotations.service\\.beta\\.kubernetes\\.io/aws-load-balancer-access-log-s3-bucket-prefix"
value = "/nlblogs"
}
我看到注释已添加到 Controller ,但在AWS控制台中,NLB设置未更改(日志未保存到存储桶中)。 最佳答案
我找到了解决方案。希望对您有帮助。
据我了解,上述注释仅适用于ELB,不适用于NLB。我试图将EKS更新为1.16和1.17。它适用于ELB,但不适用于NLB。
因此,解决方案是-在Terraform中为k8使用local-exec配置。至少对我有用。
这是代码:
resource "null_resource" "enable_s3_bucket_logging_on_nlb" {
triggers = { <TRIGGERS> }
provisioner "local-exec" {
command = <<EOS
for i in $(aws elbv2 describe-load-balancers --region=<REGION> --names=$(echo ${data.kubernetes_service.nginx_ingress.load_balancer_ingress.0.hostname} |cut -d- -f1) | \
jq ".[][] | { LoadBalancerArn: .LoadBalancerArn }" |awk '{print $2}' |tr -d '"'); do \
aws elbv2 modify-load-balancer-attributes --region=<REGION> --load-balancer-arn $i --attributes Key=access_logs.s3.enabled,Value=true \
Key=access_logs.s3.bucket,Value=nlb-logs-bucket Key=access_logs.s3.prefix,Value=nlblogs;\
done; \
EOS
}
}
哪里: