Last active
November 24, 2025 19:58
-
-
Save DinoChiesa/e52dbba87944b2e6b5c2fc89cab970e7 to your computer and use it in GitHub Desktop.
Apigee Hybrid Gather All #sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| # -*- mode:shell-script; coding:utf-8; sh-shell:bash -*- | |
| # Copyright © 2025 Google LLC. | |
| # | |
| # Licensed under the Apache License, Version 2.0 (the "License"); | |
| # you may not use this file except in compliance with the License. | |
| # You may obtain a copy of the License at | |
| # | |
| # https://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, software | |
| # distributed under the License is distributed on an "AS IS" BASIS, | |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| # See the License for the specific language governing permissions and | |
| # limitations under the License. | |
| # | |
| set -e | |
| #set -x | |
| SVERSION="20251121-1417" | |
| check_required_commands() { | |
| local missing | |
| missing=() | |
| for cmd in "$@"; do | |
| #printf "checking %s\n" "$cmd" | |
| if ! command -v "$cmd" &>/dev/null; then | |
| missing+=("$cmd") | |
| fi | |
| done | |
| if [[ -n "$missing" ]]; then | |
| printf -v joined '%s,' "${missing[@]}" | |
| printf "\nThese commands are missing; they must be available on path: %s\nExiting.\n\n" "${joined%,}" | |
| exit 1 | |
| fi | |
| } | |
| check_shell_variables() { | |
| local MISSING_ENV_VARS | |
| MISSING_ENV_VARS=() | |
| for var_name in "$@"; do | |
| if [[ -z "${!var_name}" ]]; then | |
| MISSING_ENV_VARS+=("$var_name") | |
| fi | |
| done | |
| [[ ${#MISSING_ENV_VARS[@]} -ne 0 ]] && { | |
| printf -v joined '%s,' "${MISSING_ENV_VARS[@]}" | |
| printf "\nMissing these required environment variables: %s\nExiting.\n\n" "${joined%,}" | |
| exit 1 | |
| } | |
| printf "Settings in use:\n" | |
| for var_name in "$@"; do | |
| if [[ "$var_name" == *_APIKEY || "$var_name" == *_SECRET || "$var_name" == *_CLIENT_ID ]]; then | |
| local value="${!var_name}" | |
| local dots | |
| dots=$(printf '%*s' "${#value}" '' | tr ' ' '.') | |
| printf " %s=%s\n" "$var_name" "${value:0:4}${dots}" | |
| else | |
| printf " %s=%s\n" "$var_name" "${!var_name}" | |
| fi | |
| done | |
| printf "\n" | |
| } | |
| format_elapsed_time() { | |
| # Calculate total elapsed time in seconds | |
| local total_seconds end_seconds start_seconds minutes remainder_seconds formatted_seconds | |
| start_seconds=$1 | |
| end_seconds=$2 | |
| total_seconds=$((end_seconds - start_seconds)) | |
| minutes=$((total_seconds / 60)) | |
| remainder_seconds=$((total_seconds % 60)) | |
| formatted_seconds=$(printf "%02d" "$remainder_seconds") | |
| echo "${minutes}m${formatted_seconds}s ${total_seconds}" | |
| } | |
| log_message() { | |
| echo "$@" >>"$MANIFEST_FILE" | |
| } | |
| # ==================================================================== | |
| script_name_short="${0##*/}" | |
| printf "\n\nHello from %s\n\n" "$script_name_short" | |
| printf "This script gathers information about the Apigee hybrid resources\n" | |
| printf "in your Kubernetes cluster, and bundles it into a tgz archive.\n\n" | |
| if [[ -z "$APIGEE_NS" ]]; then | |
| read -p "Enter the k8s namespace used for Apigee: " APIGEE_NS | |
| if [[ -z "$APIGEE_NS" ]]; then | |
| printf "\nNo namespace was provided. Exiting.\n\n" | |
| exit 1 | |
| fi | |
| fi | |
| check_shell_variables APIGEE_NS | |
| check_required_commands kubectl tee date | |
| printf "Gathering Apigee hybrid information into %s ...\n" "$tmpdir" | |
| START_SECONDS=$(date +%s) | |
| START_TIME_HUMAN=$(date +"%Y-%m-%d %H:%M:%S %Z") | |
| SCRIPT_NAME="${0##*/}" | |
| CURRENT_DIR="$(pwd)" | |
| tmpdir=$(mktemp -d) | |
| MANIFEST_FILE="$tmpdir/Manifest.txt" | |
| log_message "########################################" | |
| log_message "Scripted https://docs.cloud.google.com/apigee/docs/support/best-practices#apigee-hybrid-must-gather" | |
| log_message "Script version: $SVERSION" | |
| log_message "Script name: $script_name_short" | |
| log_message "Start Time: $START_SECONDS" | |
| log_message "Start Time: $START_TIME_HUMAN" | |
| log_message "Script Name: $SCRIPT_NAME" | |
| log_message "Current Directory: $CURRENT_DIR" | |
| log_message "Temp dir: $tmpdir" | |
| log_message "---" | |
| log_message "Gathering information..." | |
| # Gather information | |
| ###--- "kubectl config" commands to get the config details of the whole Apigee Hybrid cluster ---#### | |
| kubectl config get-clusters 2>&1 | tee $tmpdir/config_get_clusters_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl config get-contexts 2>&1 | tee $tmpdir/config_get_contexts_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl config get-users 2>&1 | tee $tmpdir/config_get_users_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl config view 2>&1 | tee $tmpdir/config_view_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| ### --- Collect all details of all nodes in the Kubernetes cluster.---### | |
| kubectl describe node 2>&1 | tee $tmpdir/describe_node_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| ###--- "kubectl get -A " commands to get CRD details for the whole Apigee Hybrid setup ---#### | |
| kubectl get clusterissuers -A -o wide 2>&1 | tee $tmpdir/get_clusterissuers_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get certificate -A -o wide 2>&1 | tee $tmpdir/get_certificate_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get certificaterequest -A -o wide 2>&1 | tee $tmpdir/get_certificaterequest_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get crd -A -o yaml 2>&1 | tee $tmpdir/get_crd_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ConfigMap -A 2>&1 | tee $tmpdir/get_ConfigMap_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ClusterRole -A -o wide 2>&1 | tee $tmpdir/get_clusterrole_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ClusterRoleBinding -A -o wide 2>&1 | tee $tmpdir/get_clusterrole_binding_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get Deployments -A -o wide >&1 | tee $tmpdir/get_deployments_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get events -A -o wide 2>&1 | tee $tmpdir/get_events_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get endpoints -A 2>&1 | tee $tmpdir/get_endpoints_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get issuers -A -o wide 2>&1 | tee $tmpdir/get_issuers_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get mutatingwebhookconfigurations 2>&1 | tee $tmpdir/get_mutatingwebhookconfigurations_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get nodes -o wide --show-labels 2>&1 | tee $tmpdir/get_nodes_labels_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ns 2>&1 | tee $tmpdir/get_namespace_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get PriorityClass -A -o wide 2>&1 | tee $tmpdir/get_PriorityClass_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get pv -A -o wide 2>&1 | tee $tmpdir/get_pv_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get pvc -A -o wide 2>&1 | tee $tmpdir/get_pvc_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get Role -A -o wide 2>&1 | tee $tmpdir/get_role_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get RoleBinding -A -o wide 2>&1 | tee $tmpdir/get_Role_Binding_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get replicaset -A -o wide 2>&1 | tee $tmpdir/get_replicaset_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get sa -A -o wide 2>&1 | tee $tmpdir/get_service_accounts_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get services -A -o wide 2>&1 | tee $tmpdir/get_services_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get svc -A 2>&1 | tee $tmpdir/get_svc_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get secrets -A 2>&1 | tee $tmpdir/get_secrets_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get validatingwebhookconfigurations -A 2>&1 | tee $tmpdir/get_validatingwebhookconfigurations_all_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get validatingwebhookconfigurations apigee-validating-webhook-configuration 2>&1 | | |
| tee $tmpdir/get_apigee-validating-webhook-configuration_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| ### --- List top resource consuming nodes and pods ---#### | |
| kubectl top nodes 2>&1 | tee $tmpdir/top_nodes_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl top pod -A --containers 2>&1 | tee $tmpdir/top_pod_all_containers_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| ###----- "kubectl get" commands to fetch list of all CRD for "apigee" namespace ----- ##### | |
| kubectl get all -n $APIGEE_NS -o wide 2>&1 | tee $tmpdir/get_all_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ad -n $APIGEE_NS 2>&1 | tee $tmpdir/get_ad_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get apigeeorganization -n $APIGEE_NS 2>&1 | tee $tmpdir/get_apigeeorganization_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get apigeeenv -n $APIGEE_NS 2>&1 | tee $tmpdir/get_apigeeenv_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get apigeeds -n $APIGEE_NS 2>&1 | tee $tmpdir/get_apigeeds_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get apigeedatastore -n $APIGEE_NS 2>&1 | tee $tmpdir/get_apigeedatastore_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ApigeeDeployment -n $APIGEE_NS 2>&1 | tee $tmpdir/get_apigeedeployment_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ApigeeRedis -n $APIGEE_NS 2>&1 | tee $tmpdir/get_ApigeeRedis_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ApigeeRoute -n $APIGEE_NS 2>&1 | tee $tmpdir/get_ApigeeRoute_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ApigeeRouteConfig -n $APIGEE_NS 2>&1 | tee $tmpdir/get_ApigeeRoutesconfig_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get arc -n $APIGEE_NS -o yaml 2>&1 | tee $tmpdir/get_arc_yaml_$(date +%Y.%m.%d_%H.%M.%S).yml | |
| kubectl get Apigeetelemetry -n $APIGEE_NS 2>&1 | tee $tmpdir/get_Apigeetelemetry_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get apigeeissues -n $APIGEE_NS 2>&1 | tee $tmpdir/get_apigeeissues_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get ControllerRevision -n $APIGEE_NS -o wide 2>&1 | tee $tmpdir/get_ControllerRevision_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get cronjob -n $APIGEE_NS -o wide 2>&1 | tee $tmpdir/get_cronjob_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get gateway -n $APIGEE_NS 2>&1 | tee $tmpdir/get_gateway_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get PodDisruptionBudget -n $APIGEE_NS -o wide 2>&1 | tee $tmpdir/get_PodDisruptionBudget_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get sc -n $APIGEE_NS -o wide 2>&1 | tee $tmpdir/get_storageclass_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get secrets -n $APIGEE_NS -o wide 2>&1 | tee $tmpdir/get_secrets_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get sr -n $APIGEE_NS -o wide 2>&1 | tee $tmpdir/get_sr_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get sts -n $APIGEE_NS 2>&1 | tee $tmpdir/get_sts_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get volumesnapshot -n $APIGEE_NS -o wide 2>&1 | tee $tmpdir/get_volumesnapshot_n_apigee_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| ###----- "kubectl describe" commands to fetch details of all CRD for "apigee" namespace ----- ##### | |
| for p in $(kubectl -n $APIGEE_NS get apigeeorganization --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe apigeeorganization ${p} -n $APIGEE_NS 2>&1 | tee $tmpdir/desc_apigeeorganization_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get apigeeenv --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe apigeeenv ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_apigeeenv_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get apigeeds --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe apigeeds ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_apigeeds_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get apigeedatastore --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe apigeedatastore ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_apigeedatastore_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get ApigeeDeployment --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe ApigeeDeployment ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_ApigeeDeployment_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get ApigeeRedis --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe ApigeeRedis ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_ApigeeRedis_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get ApigeeRoute --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe ApigeeRoute ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_ApigeeRoute_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get ApigeeRouteConfig --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe ApigeeRouteConfig ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_ApigeeRouteConfig_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get Apigeetelemetry --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe Apigeetelemetry ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_Apigeetelemetry_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get apigeeissues --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe apigeeissues ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_apigeeissues_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get ControllerRevision --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS describe ControllerRevision ${p} 2>&1 | | |
| tee $tmpdir/desc_ControllerRevision_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get certificate --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe certificate ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_certificate_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get cronjob --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe cronjob ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_cronjob_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get daemonset --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS describe daemonset ${p} 2>&1 | | |
| tee $tmpdir/desc_daemonset_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get deployments --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS describe deployments ${p} 2>&1 | | |
| tee $tmpdir/desc_deployment_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get hpa --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe hpa ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_hpa_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get jobs --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe jobs ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_jobs_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get po --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS get po ${p} -o yaml 2>&1 | | |
| tee $tmpdir/get_pod_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl -n $APIGEE_NS describe po ${p} 2>&1 | | |
| tee $tmpdir/desc_pod_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get po --no-headers -o custom-columns=":metadata.name" -l app=apigee-ingressgateway); do | |
| kubectl -n $APIGEE_NS logs ${p} --all-containers 2>&1 | tee $tmpdir/logs_apigee_ingress_gateways_${p}_$(date +%Y.%m.%d_%H.%M.%S).log | |
| kubectl -n $APIGEE_NS exec ${p} -- /usr/local/bin/pilot-agent request GET config_dump 2>&1 | tee $tmpdir/apigee_ingress_config_dump_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee get po --no-headers -o custom-columns=":metadata.name" -l app=apigee-ingressgateway-manager); do | |
| kubectl -n $APIGEE_NS logs ${p} -c discovery 2>&1 | tee $tmpdir/logs_apigee_ingress_gateway_manager_discovery_${p}_$(date +%Y.%m.%d_%H.%M.%S).log | |
| kubectl -n $APIGEE_NS logs ${p} -c manager 2>&1 | tee $tmpdir/logs_apigee_ingress_gateway_manager_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).log | |
| kubectl -n $APIGEE_NS logs ${p} -c kube-rbac-proxy 2>&1 | tee $tmpdir/logs_apigee_ingress_gateway_manager_kube-rbac-proxy_${p}_$(date +%Y.%m.%d_%H.%M.%S).log | |
| kubectl -n $APIGEE_NS exec -it ${p} -c discovery -- pilot-discovery request GET debug/configz 2>&1 | tee $tmpdir/apigee_ingress_gateway_manager_configz_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get PodDisruptionBudget --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS describe PodDisruptionBudget ${p} 2>&1 | | |
| tee $tmpdir/desc_PodDisruptionBudget_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get pv --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS describe pv ${p} 2>&1 | | |
| tee $tmpdir/desc_pv_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get pvc --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS describe pvc ${p} 2>&1 | | |
| tee $tmpdir/desc_pvc_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get rs --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe rs ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_replicaset_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get sc --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS describe sc ${p} 2>&1 | | |
| tee $tmpdir/desc_storageclass_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get sts --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe sts ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_sts_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get secrets --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS describe secrets ${p} 2>&1 | | |
| tee $tmpdir/desc_secrets_n_apigee${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get services --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe service ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_services_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get sa --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe sa ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_service_account_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n $APIGEE_NS get svc --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe svc ${p} -n $APIGEE_NS 2>&1 | | |
| tee $tmpdir/desc_svc_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| ###----- "kubectl logs" command to fetch logs of all containers in the "apigee" namespace ----- ##### | |
| for p in $(kubectl -n $APIGEE_NS get po --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n $APIGEE_NS logs ${p} --all-containers 2>&1 | | |
| tee $tmpdir/logs_n_apigee_${p}_$(date +%Y.%m.%d_%H.%M.%S).log | |
| done | |
| ###----- "kubectl get" commands for "apigee-system" namespace ----- ##### | |
| kubectl get all -n apigee-system -o wide 2>&1 | | |
| tee $tmpdir/get_all_n_apigee_system_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get jobs -o wide -n apigee-system 2>&1 | | |
| tee $tmpdir/get_jobs_n_apigee_system_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| ###----- "kubectl describe" commands for "apigee-system" namespace ----- ##### | |
| for p in $(kubectl -n apigee-system get certificate --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe certificate ${p} -n apigee-system 2>&1 | | |
| tee $tmpdir/desc_certificate_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee-system get deployment --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe deployment ${p} -n apigee-system 2>&1 | | |
| tee $tmpdir/desc_deployment_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee-system get jobs --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe jobs ${p} -n apigee-system 2>&1 | | |
| tee $tmpdir/desc_jobs_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee-system get po --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n apigee-system describe po ${p} 2>&1 | | |
| tee $tmpdir/desc_pod_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee-system get rs --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe rs ${p} -n apigee-system 2>&1 | | |
| tee $tmpdir/desc_replicaset_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee-system get rolebinding --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe rolebinding ${p} -n apigee-system 2>&1 | | |
| tee $tmpdir/desc_rolebinding_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee-system get services --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe service ${p} -n apigee-system 2>&1 | | |
| tee $tmpdir/desc_services_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee-system get sa --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe sa ${p} -n apigee-system 2>&1 | | |
| tee $tmpdir/desc_serviceaccount_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n apigee-system get secrets --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe secrets ${p} -n apigee-system 2>&1 | | |
| tee $tmpdir/desc_secrets_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| ###----- "kubectl logs" command for "apigee-system" namespace ----- ##### | |
| for p in $(kubectl -n apigee-system get po --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n apigee-system logs ${p} --all-containers 2>&1 | | |
| tee $tmpdir/logs_n_apigee_system_${p}_$(date +%Y.%m.%d_%H.%M.%S).log | |
| done | |
| ###----- "kubectl get" command for "cert-manager" namespace ----- ##### | |
| kubectl get all -n cert-manager -o wide 2>&1 | | |
| tee $tmpdir/get_all_n_cert_manager_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| kubectl get crd -n cert-manager 2>&1 | | |
| tee $tmpdir/get_crd_n_cert_manager_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| ###----- "kubectl describe" command for "cert-manager" namespace ----- ##### | |
| for p in $(kubectl -n cert-manager get deployment --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n cert-manager describe deployment ${p} 2>&1 | | |
| tee $tmpdir/desc_deployment_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n cert-manager get endpoints --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe endpoints ${p} -n cert-manager 2>&1 | | |
| tee $tmpdir/desc_endpoints_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n cert-manager get po --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n cert-manager describe po ${p} 2>&1 | | |
| tee $tmpdir/desc_po_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n cert-manager get rs --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe rs ${p} -n cert-manager 2>&1 | | |
| tee $tmpdir/desc_replicaset_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n cert-manager get sa --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe sa ${p} -n cert-manager 2>&1 | | |
| tee $tmpdir/desc_serviceaccount_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n cert-manager get secrets --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe secrets ${p} -n cert-manager 2>&1 | | |
| tee $tmpdir/desc_secrets_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n cert-manager get services --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe service ${p} -n cert-manager 2>&1 | | |
| tee $tmpdir/desc_service_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| for p in $(kubectl -n cert-manager get svc --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl describe svc ${p} -n cert-manager 2>&1 | | |
| tee $tmpdir/desc_svc_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).txt | |
| done | |
| ###----- "kubectl logs" command for "cert-manager" namespace ----- ##### | |
| for p in $(kubectl -n cert-manager get po --no-headers -o custom-columns=":metadata.name"); do | |
| kubectl -n cert-manager logs ${p} --all-containers 2>&1 | | |
| tee $tmpdir/logs_n_cert_manager_${p}_$(date +%Y.%m.%d_%H.%M.%S).log | |
| done | |
| ### ==================================================================== | |
| END_SECONDS=$(date +%s) | |
| END_TIME_HUMAN=$(date +"%Y-%m-%d %H:%M:%S %Z") | |
| read RUNTIME ELAPSED_SECONDS < <(format_elapsed_time "$START_SECONDS" "$END_SECONDS") | |
| log_message "finished." | |
| log_message "End Time: $END_SECONDS" | |
| log_message "End Time: $END_TIME_HUMAN" | |
| log_message "Elapsed Time: $ELAPSED_SECONDS seconds" | |
| log_message "Elapsed Time: $RUNTIME" | |
| log_message "########################################" | |
| tgzfile=/tmp/apigee-gathered-data__$(date +%Y.%m.%d_%H.%M.%S).tar.gz | |
| ( | |
| cd $tmpdir | |
| tar -cvzf $tgzfile . | |
| ) | |
| printf "\n\n\n============================================\nTGZ file:\n %s\n\n" "$tgzfile" | |
| printf "\n\nTo remove the temporary files:\n rm -fr $tmpdir\n\n" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment