sigs.k8s.io/cluster-api-provider-azure@v1.14.3/hack/debugging/kubectl-capz-ssh (about) 1 #!/usr/bin/env bash 2 3 azurecluster="capz-cluster" 4 user="capi" 5 identity=~/.ssh/id_rsa 6 7 POSITIONAL=() 8 while [[ $# -gt 0 ]] 9 do 10 key="$1" 11 12 case $key in 13 -h|--help) 14 echo "Utility tool for ssh'ing into CAPZ nodes" 15 echo " " 16 echo "kubectl-capz-ssh [options]" 17 echo " " 18 echo "options:" 19 echo "-h, --help Show brief help" 20 echo "-am, --azure-machine Azure Machine name" 21 echo "-amp, --azure-machine-pool Azure Machine Pool name" 22 echo "-lamp, --list-azure-machine-pool List Azure Machine Pool, need --azure-machine-pool to be set as well" 23 echo "-id, --azure-machine-pool-id ID of the VMSS instance you want to ssh into" 24 echo "-u, --user User to ssh'ing into" 25 echo "-i, --identity SSH key to be used to ssh'ing into" 26 exit 0 27 ;; 28 -am | --azure-machine) 29 azuremachine="$2" 30 shift # past argument 31 shift # past value 32 ;; 33 -amp | --azure-machine-pool) 34 azuremachinepool="$2" 35 shift # past argument 36 shift # past value 37 ;; 38 -id | --azure-machine-pool-id) 39 azuremachinepoolid="$2" 40 shift # past argument 41 shift # past value 42 ;; 43 -u | --user) 44 user="$2" 45 shift # past argument 46 shift # past value 47 ;; 48 -i | --identity) 49 identity="$2" 50 shift # past argument 51 shift # past value 52 ;; 53 -lamp | --list-azure-machine-pool) 54 listamp=1 55 shift # past argument 56 ;; 57 *) # unknown option 58 POSITIONAL+=("$1") # save it in an array for later 59 shift # past argument 60 ;; 61 esac 62 done 63 set -- "${POSITIONAL[@]}" # restore positional parameters 64 65 echo 66 echo "Utility tool to ssh'ing into CAPZ nodes" 67 echo 68 69 if [[ "$azuremachinepool" != "" && "$listamp" != "" ]]; 70 then 71 echo "Listing Azure Machine Pool $azuremachinepool" 72 echo 73 kubectl get azuremachinepools "$azuremachinepool" -o json | jq -r '.status.instances[] | "\(.instanceID)\t\(.instanceName)"' | awk -v FS="," 'BEGIN{print "ID\tComputerName";print "========================================"}{printf "%s\t%s%s",$1,$2,ORS}' 74 exit $? 75 fi 76 77 if [[ "$azuremachinepool" != "" && "$azuremachinepoolid" != "" ]]; 78 then 79 echo "finding address for $azuremachinepool id $azuremachinepoolid" 80 echo 81 azurecluster=$(kubectl get machinepools $azuremachinepool -o json | jq -r '.metadata.ownerReferences | .[] | select(.kind == "Cluster").name') 82 apiserver=$(kubectl get azurecluster $azurecluster -o json | jq -r '.spec.controlPlaneEndpoint.host') 83 echo 84 echo "found address $apiserver" 85 86 echo "finding address for $azuremachinepool node $azuremachinepoolid" 87 echo 88 node=$(kubectl get azuremachinepools $azuremachinepool -o json | jq -cr '.status.instances[] | select( .instanceID | contains("'$azuremachinepoolid'")) | .instanceName') 89 echo 90 echo "found computerName $node" 91 ssh -i $identity -J ${user}@${apiserver} ${user}@${node} 92 fi 93 94 95 if [[ "$azuremachine" != "" ]]; 96 then 97 echo "finding address for $azurecluster" 98 echo 99 capimachine=$(kubectl get azuremachine $azuremachine -o json | jq -r '.metadata.ownerReferences | .[] | select(.kind == "Machine").name') 100 azurecluster=$(kubectl get machine $capimachine -o json | jq -r '.spec.clusterName') 101 apiserver=$(kubectl get azurecluster $azurecluster -o json | jq -r '.spec.controlPlaneEndpoint.host') 102 echo 103 echo "found address $apiserver" 104 105 echo "finding address for $azuremachine" 106 echo 107 node=$(kubectl get azuremachine $azuremachine -o json | jq -r '.status.addresses[0].address') 108 echo 109 echo "found address $node" 110 111 ssh -i $identity -J ${user}@${apiserver} ${user}@${node} 112 fi