name: 'Connect to vCluster' description: 'Establish a port-forward to a vCluster and output its kubeconfig as base64' inputs: host_kubeconfig_base64: description: 'Base64-encoded kubeconfig for host cluster access' required: true vcluster_name: description: 'Name of the vCluster to connect to' required: true vcluster_namespace: description: 'Host namespace where the vCluster is running' required: true outputs: kubeconfig_base64: description: 'Base64-encoded kubeconfig for the vCluster (points to 127.0.0.1:8443 via port-forward)' value: ${{ steps.connect.outputs.kubeconfig_base64 }} runs: using: "composite" steps: - name: Setup host kubeconfig shell: bash run: | echo "${{ inputs.host_kubeconfig_base64 }}" | base64 -d > ${{ github.workspace }}/.kubeconfig-host chmod 600 ${{ github.workspace }}/.kubeconfig-host echo "KUBECONFIG=${{ github.workspace }}/.kubeconfig-host" >> $GITHUB_ENV - name: Install vCluster CLI uses: ./.github/actions/install-vcluster-cli - name: Connect to vCluster id: connect shell: bash env: VCLUSTER_NAME: ${{ inputs.vcluster_name }} NAMESPACE: ${{ inputs.vcluster_namespace }} run: | echo "::group::Port-forward and generate vCluster kubeconfig" set -x kubectl port-forward -n ${NAMESPACE} svc/${VCLUSTER_NAME} 8443:443 & sleep 5 vcluster connect ${VCLUSTER_NAME} \ --namespace ${NAMESPACE} \ --server=https://127.0.0.1:8443 \ --print > ${{ github.workspace }}/.kubeconfig-vcluster echo "Verifying vCluster connectivity..." kubectl --kubeconfig=${{ github.workspace }}/.kubeconfig-vcluster get ns KUBECONFIG_B64=$(base64 -w 0 < ${{ github.workspace }}/.kubeconfig-vcluster) echo "kubeconfig_base64=${KUBECONFIG_B64}" >> $GITHUB_OUTPUT echo "::endgroup::"