AWS ECS(Amazon Web Services Elastic Container Service)是一种高度可扩展的云托管容器管理服务。在部署 ECS 容器时,需要将它们分配给公共或私有 DNS 记录,以便容器可以轻松地在互联网上或其他网络中被访问。
通常情况下,手动维护 DNS 记录是非常耗时的而且易错的,特别是当存在大量的容器时。使用外部DNS服务可以自动地为 ECS 容器配置 DNS 记录,这样容器可以轻松地在互联网上被发现和访问。
以下是使用 Kubernetes ExternalDNS 进行 ECS 容器和外部 DNS 集成的示例代码:
aws ecs create-cluster --cluster-name my-cluster
docker run -d --name my-app -p 80:80 -e VIRTUAL_HOST=my-app.com nginx
aws ecs create-service --cluster my-cluster --service-name my-service --task-definition my-task-definition --load-balancers targetGroupArn=arn:aws:elasticloadbalancing:us-east-1:123456789012:targetgroup/my-target-group/1234567890123456,containerName=my-app,containerPort=80
apiVersion: v1
kind: Service
metadata:
name: my-app
annotations:
# Set the ExternalDNS name to use
external-dns.alpha.kubernetes.io/hostname: my-app.com.
# Set the TTL for DNS records created by ExternalDNS
external-dns.alpha.kubernetes.io/ttl: "300"
spec:
selector:
app: my-app
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name