Skip to content

Commit

Permalink
Issue #184 Add dns check for local and public domain
Browse files Browse the repository at this point in the history
  • Loading branch information
praveenkumar authored and anjannath committed Jun 6, 2019
1 parent 2780967 commit 51c3e49
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 10 deletions.
33 changes: 23 additions & 10 deletions pkg/crc/machine/machine.go
Original file line number Diff line number Diff line change
Expand Up @@ -153,23 +153,36 @@ func Start(startConfig StartConfig) (StartResult, error) {
}
logging.InfoF("Bridge IP on the host: %s", hostIP)

// Create servicePostStartConfig for dns checks and dns start.
servicePostStartConfig := services.ServicePostStartConfig{
Name: startConfig.Name,
// TODO: would prefer passing in a more generic type
Driver: host.Driver,
IP: instanceIP,
HostIP: hostIP,
// TODO: should be more finegrained
BundleMetadata: *crcBundleMetadata,
}

// If driver need dns service then start it
if driverInfo.UseDNSService {
servicePostStartConfig := services.ServicePostStartConfig{
Name: startConfig.Name,
// TODO: would prefer passing in a more generic type
Driver: host.Driver,
IP: instanceIP,
HostIP: hostIP,
// TODO: should be more finegrained
BundleMetadata: *crcBundleMetadata,
}
if _, err := dns.RunPostStart(servicePostStartConfig); err != nil {
logging.ErrorF("Error running post start: %v", err)
result.Error = err.Error()
return *result, err
}
}
//
// Check DNS looksup before starting the kubelet
if queryOutput, err := dns.CheckCRCLocalDNSReachable(servicePostStartConfig); err != nil {
logging.ErrorF("Failed internal dns query: %v : %s", err, queryOutput)
result.Error = err.Error()
return *result, err
}
logging.InfoF("Check internal and public dns query ...")

if queryOutput, err := dns.CheckCRCPublicDNSReachable(servicePostStartConfig); err != nil {
logging.WarnF("Failed Public dns query: %v : %s", err, queryOutput)
}

// Start kubelet inside the VM
sd := systemd.NewInstanceSystemdCommander(host.Driver)
Expand Down
10 changes: 10 additions & 0 deletions pkg/crc/services/dns/dns.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ const (
dnsConfigFilePathInInstance = "/var/srv/dnsmasq.conf"
dnsContainerIP = "10.88.0.8"
dnsContainerImage = "quay.io/crcont/dnsmasq:latest"
publicDNSQueryURI = "quay.io"
)

func init() {
Expand Down Expand Up @@ -119,3 +120,12 @@ func RunDaemon() {

instance.Wait()
}

func CheckCRCLocalDNSReachable(serviceConfig services.ServicePostStartConfig) (string, error) {
appsURI := fmt.Sprintf("foo.%s", serviceConfig.BundleMetadata.ClusterInfo.AppsDomain)
return drivers.RunSSHCommandFromDriver(serviceConfig.Driver,fmt.Sprintf("host -R 3 %s", appsURI))
}

func CheckCRCPublicDNSReachable(serviceConfig services.ServicePostStartConfig) (string, error) {
return drivers.RunSSHCommandFromDriver(serviceConfig.Driver,fmt.Sprintf("host -R 3 %s", publicDNSQueryURI))
}

0 comments on commit 51c3e49

Please sign in to comment.