我正在尝试设置一个 AWS ECS 集群,该集群具有单个任务,其中包含 3 个独立的容器,分别用于 prometheus、promscale 和 prometheus-ecs-discovery。
我正在尝试弄清楚如何将PROMSCALE_HOSTNAME
我的 prometheus 容器中的环境变量动态设置为 promscale 容器的主机名或 ip,因为我最终在配置文件中使用该值,以便 prometheus 容器可以与 promscale 容器通信。
有什么办法可以做到这一点,或者我是否必须在我的 VPC 中创建负载均衡器来处理这个问题?
PrometheusTask:
Type: AWS::ECS::TaskDefinition
Properties:
Family: !Sub "${Stage}-prometheus"
ContainerDefinitions:
- Name: !Sub "${Stage}-prometheus-container"
Image: myorg/prometheus:latest
Environment:
- Name: STAGE
Value: !Ref Stage
- Name: PROMSCALE_HOSTNAME # <-- I WANT THIS VALUE TO BE THE HOSTNAME OR IP OF THE PROMSCALE CONTAINER
Value: !Sub "${Stage}-promscale-container"
- Name: !Sub "${Stage}-prometheus-ecs-discovery-container"
Image: myorg/prometheus-ecs-discovery:latest
Environment:
- Name: AWS_REGION
Value: !Ref AWS::Region
- Name: !Sub "${Stage}-promscale-container"
Image: myorg/promscale:latest
PortMappings:
- ContainerPort: 9201
答案1
如果您正在awsvpc
为任务使用网络模式(这是一个好主意),那么您的任务基本上将具有单个网络名称空间。这意味着您可以使用访问所有容器localhost
。换句话说,如果您尝试localhost:9201
从同一任务中的任何其他容器进行访问,您最终将与您的 promscale 容器对话。