Skip to content

Instantly share code, notes, and snippets.

@dennybaa
Last active July 3, 2020 14:59
Show Gist options
  • Save dennybaa/d474828e875dbfa6b639a881afd5e136 to your computer and use it in GitHub Desktop.
Save dennybaa/d474828e875dbfa6b639a881afd5e136 to your computer and use it in GitHub Desktop.
K8S tips #k8s #tips

K8S tips

CLI

update config map from file

k create cm nginx-lb-config --from-file=nginx-lb.configmap --dry-run -o yaml | k replace cm nginx-lb-config -f -

Copy over a secret (with modifications)

kubectl get secrets w.alvaro.arilot.org -o json --namespace dev | jq 'del(.metadata.namespace)|del(.metadata.selfLink)|.metadata.name = "istio-ingressgateway-certs"' | kubectl replace --force --namespace istio-system -f -

Copy regcred:

kubectl get secrets -n identity regcred -o json | \
    jq 'del(.metadata.namespace)|del(.metadata.selfLink)|.metadata.name = "regcred"' | \
    kubectl replace --force -n agencysystem-api -f -

Namespace wide image pull secret

kubectl -n <namespace> create secret docker-registry regcred \
    --docker-server=<registryURL> \
    --docker-username=<user> \
    --docker-password=<password> \
    --docker-email=<email>

kubectl -n <namespace> patch serviceaccount default -p "{\"imagePullSecrets\": [{\"name\": \"regcred\"}]}"

Copy resource from to ns

krcp() {
  local resource name opts to_ns
  local usage=$(cat <<EHD
Usage:
  krcp resource name [from_ns] to_ns
    or
  krcp resource/name [from_ns] to_ns
EHD
)
  declare -a opts

  ## get resource name
  if [[ "$1" =~ ".+/.+" ]]; then
    resource="${1%/*}"
    name="${1#*/}"
    shift
  else
    resource="$1"
    resource="$2"
    shift 2
  fi

  ## get namespaces
  if [ $# -eq 2 ]; then
    opts=(-n $1)
    to_ns="$2"
  elif [ $# -eq 1 ]; then
    to_ns="$1"
  else
    >&2 echo "$usage" && return 1
  fi

  # break if no resource
  kubectl get "$resource" "$name" "${opts[@]}" 1>/dev/null || return $?

  kubectl get "$resource" "$name" "${opts[@]}" -o json | \
    jq -r 'del(.metadata.namespace)|del(.metadata.selfLink)' | \
    kubectl apply --force --namespace "$to_ns" -f -
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment