functions/Menus/ShowTroubleshootingMenu.ps1

<#
.SYNOPSIS
Shows troubleshooting menu
 
.DESCRIPTION
ShowTroubleshootingMenu
 
.INPUTS
ShowTroubleshootingMenu - The name of ShowTroubleshootingMenu
 
.OUTPUTS
None
 
.EXAMPLE
ShowTroubleshootingMenu
 
.EXAMPLE
ShowTroubleshootingMenu
 
 
#>

function ShowTroubleshootingMenu() {
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory = $true)]
        [ValidateNotNullOrEmpty()]
        [string]
        $baseUrl
        ,
        [Parameter(Mandatory = $true)]
        [bool]
        $local
    )

    $isAzure = $true
    Write-Verbose 'ShowTroubleshootingMenu: Starting'
    $userinput = ""
    while ($userinput -ne "q") {
        Write-Host "================ Troubleshooting menu ================"
        Write-Host "0: Show status of cluster"
        Write-Host "----- Kubernetes ------"
        Write-Host "1: Open Kubernetes dashboard"
        Write-Host "3: Test DNS"
        Write-Host "5: Show kubernetes service status"
        Write-Host "6: Troubleshoot Ingresses"
        Write-Host "7: Show logs of all pods in kube-system"
        Write-Host "----- Traefik reverse proxy ------"
        Write-Host "12: Show load balancer logs"
        Write-Host "------ Other tasks ---- "
        Write-Host "33: Create kubeconfig"
        Write-Host "34: Move TCP ports to main LoadBalancer"
        Write-Host "--------- DNS entries --------"
        Write-Host "41: Show DNS entries to make in DNS server"
        Write-Host "42: Show DNS entries for /etc/hosts"
        Write-Host "43: Flush DNS on local machine"
        Write-Host "--- helpers ---"
        Write-Host "q: Go back to main menu"
        $userinput = Read-Host "Please make a selection"
        switch ($userinput) {
            '0' {
                ShowStatusOfCluster
            }
            '1' {
                if ($isAzure) {
                    LaunchAzureKubernetesDashboard
                }
                else {
                    OpenKubernetesDashboard
                }
            }
            '3' {
                TestDNS $baseUrl
            }
            '12' {
                ShowLoadBalancerLogs
            }
            '33' {
                GenerateKubeConfigFile -Verbose
            }
            '34' {
                MovePortsToLoadBalancer -resourceGroup $(GetResourceGroup).ResourceGroup
            }
            '41' {
                WriteDNSCommands
            }
            '42' {
                $loadBalancerIPResult = $(GetLoadBalancerIPs)
                Write-Host "If you didn't setup DNS, add the following entries in your c:\windows\system32\drivers\etc\hosts file to access the urls from your browser"
                $dnshostname = $(ReadSecretValue -secretname "dnshostname" -namespace "default")
                Write-Host "$($loadBalancerIPResult.ExternalIP) $dnshostname"
                Write-Host "$($loadBalancerIPResult.InternalIP) internal.$dnshostname"
            }
            '43' {
                Read-Host "Script needs elevated privileges to flushdns. Hit ENTER to launch script to set PATH"
                Start-Process powershell -verb RunAs -ArgumentList "ipconfig /flushdns"
            }
            'q' {
                return
            }
        }
        $userinput = Read-Host -Prompt "Press Enter to continue or q to go back to top menu"
        if ($userinput -eq "q") {
            return
        }
        [Console]::ResetColor()
        Clear-Host
    }

    Write-Verbose 'ShowTroubleshootingMenu: Done'

}

Export-ModuleMember -Function 'ShowTroubleshootingMenu'