amazon-web-services - 如何通过k8s批注更新AWS NLB设置以将日志存储在S3存储桶中

标签 amazon-web-services kubernetes annotations amazon-eks nlb

我想配置AWS NLB以将日志存储在S3存储桶中吗?
我有:

  • AWS EKS集群(v1.15),
  • NLB(由Nginx Controller 创建),
  • 具有AIM的
  • S3存储桶(如此处所述完成:https://docs.aws.amazon.com/elasticloadbalancing/latest/network/load-balancer-access-logs.html)。

  • 我已经将这些注释添加到我的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
      }
    }
    
    哪里:
  • -触发器
  • 的条件
  • -您的NLB区域
  • 关于amazon-web-services - 如何通过k8s批注更新AWS NLB设置以将日志存储在S3存储桶中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63523325/

    相关文章:

    java - 如何以编程方式在 spring ApplicationContext 中启用 "annotation-config"

    python - 如何在python中使用boto3查询cloudwatch日志

    python - AWS boto3 create_policy() - 指定policyDocument

    amazon-web-services - AWS Elastic Block Storage 中的 mkdir() 是否与本地 POXIS 文件系统上一样具有原子性?

    docker - 使用Docker Compose或Kubernetes时动态服务发现如何工作?

    java - Spring aop 方面不执行

    java - 匹配特定注释参数值的aspectj切入点

    amazon-web-services - DynamoDb 无法保存 map 数据(java)

    database - 从挂载卷恢复 PostgreSQL 数据库

    amazon-ec2 - 如何在 Kubernetes 的 Daemonset 配置文件中使用实例 ID?