ワーカーコンテナ (Fargate Worker:https://docs.gitlab.com/runner/configuration/runner_autoscale_aws_fargate/)。
私の質問問題は、コンテナ(Gitlab-runner)がFargate(「awsvpc」ネットワークモード)で実行されていますが、「nslookup」がVPNサイト間のサイトの他の部分にプライベートDNSサーバーを見つけることができないことです。
EC2でも同じことをしました。 EC2でResolve.confを次のように更新した場合:
sudo sed -i 's/#DNS=/DNS=192.168.x.x/g' /etc/systemd/resolved.conf
sudo sed -i 's/#Domains=/Domains=privateurl.net/g' /etc/systemd/resolved.conf
sudo systemctl restart systemd-resolved
EC2から 'nslookup サブドメイン.privateurl.net'肯定的なリターンで名前、アドレス、IPを見つけました。
しかし、Fargateで実行されているコンテナで同じタスクを実行すると、nslookup サブドメイン.privateurl.net'名前、アドレス、IPが見つかりません。
コンテナで「ping」が完了します。これは、FargateのコンテナとVPNの反対側のサーバー(subdomain.privateurl.net)の間に接続があることを示しています。しかし、ping <subdomain.privateurl.net>「そして」nslookup <サブドメイン.privateurl.net>'正常に動作できません。ところで、DNS要求(nslookup)のためにコンテナポート53をホスト53にポートマッピングしました。
Fargate(「awsvpc」ネットワークモード)のコンテナがEC2とは異なる動作をしているようです。
クラウド観察ログ:
nslookup subdomain.privateurl.net # on ECS container
** server can't find subdomain.privateurl.net: NXDOMAIN
PING 192.168.1.10 (192.168.1.10) 56(84) bytes of data.
64 bytes from 192.168.1.10: icmp_seq=1 ttl=63 time=15.8 ms
ベストアンサー1
Route 53ソルバーを使用してソリューションを見つけました。
resource "aws_route53_resolver_endpoint" "dns" {
name = "resolver"
direction = "OUTBOUND"
security_group_ids = [data.aws_security_group.selected_sg.id]
ip_address {
subnet_id = data.aws_subnet.selected_subnet.id
ip = "172.x.x.x" # ip from vpc subnet
}
ip_address {
subnet_id = data.aws_subnet.selected_subnet.id
ip = "172.x.x.x" # ip from vpc subnet
}
}
resource "aws_route53_resolver_rule" "local" {
domain_name = "privateurl.net"
name = "local"
rule_type = "FORWARD"
resolver_endpoint_id = aws_route53_resolver_endpoint.dns.id
target_ip {
ip = "PrivateDNSIP"
port = 53
}
}
resource "aws_route53_resolver_rule_association" "local" {
resolver_rule_id = aws_route53_resolver_rule.local.id
vpc_id = data.aws_vpc.selected.id
}