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