-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerator.sh
97 lines (93 loc) · 2.51 KB
/
generator.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/bin/bash
# Generate kubectl shortcut aliases
## k[n|a]<command><resource> [other-options]
# Usage:
# kubectl -n kube-system get pod => NS=kube-system; kngp
## [n|a] (Note that not all commands can combine with --all-namespaces)
### n => -n $NS
### a => --all-namespaces
## Command List
### l => logs
### x => exec -it
_K8S_COMMAND_LIST=(
'g/get'
'd/describe'
'e/edit'
'r/delete'
)
_K8S_RESOURCE_LIST=(
## Cluster Resources List
'n/Nodes'
'ns/Namespaces'
'l/LimitRanges'
## RBAC Resources List
'crb/ClusterRoleBindings'
'rb/RoleBindings'
'cr/ClusterRoles'
'r/Roles'
## App Related Resources List
'ds/DaemonSets'
'd/Deployments'
'rs/ReplicaSets'
'ss/StatefulSets'
'rc/ReplicationControllers'
'p/Pods'
'j/Jobs'
'cj/Cronjob'
'pvc/PersistentVolumeClaims'
'pv/PersistentVolumes'
'q/ResourceQuotas'
'svc/Services'
'c/ConfigMaps'
'cm/ConfigMaps'
'i/Ingresses'
'e/Events'
's/Secrets'
'sa/ServiceAccounts'
'sc/StorageClasses'
'np/NetworkPolicies'
'ep/Endpoints'
'crd/CustomResourceDefinitions'
)
__generate_k8s_aliases() {
local OUTPUT=${1:-"$HOME/.k8s_aliases.sh"}
cat << 'EOF' >> $OUTPUT
export NS=default
alias ns='echo $NS'
alias k='kubectl'
alias kn='kubectl -n $NS'
alias ka='kubectl --all-namespaces'
alias kg='kubectl get'
alias kng='kubectl get -n $NS'
alias kag='kubectl get --all-namespaces'
alias ke='kubectl edit'
alias kne='kubectl edit -n $NS'
alias kd='kubectl describe'
alias knd='kubectl describe -n $NS'
alias kr='kubectl delete'
alias knr='kubectl delete -n $NS'
# exec and logs doesn't need resource
alias kx='kubectl exec -it'
alias kl='kubectl logs'
alias knx='kubectl -n $NS exec -it'
alias knl='kubectl -n $NS logs'
EOF
for command in "${_K8S_COMMAND_LIST[@]}"; do
echo "# Command $command" >> $OUTPUT
for resource in "${_K8S_RESOURCE_LIST[@]}"; do
echo "## Resource $resource" >> $OUTPUT
cmd_shortcut=$(echo "$command" | awk -F '/' '{print $1}')
rs_shortcut=$(echo "$resource" | awk -F '/' '{print $1}')
cmd=$(echo "$command" | awk -F '/' '{print $2}')
rs=$(echo "$resource" | awk -F '/' '{print $2}')
echo "alias k${cmd_shortcut}${rs_shortcut}='kubectl $cmd $rs'" >> $OUTPUT
echo "alias kn${cmd_shortcut}${rs_shortcut}='kubectl -n \$NS $cmd $rs'" >> $OUTPUT
echo "alias ka${cmd_shortcut}${rs_shortcut}='kubectl $cmd --all-namespaces $rs'" >> $OUTPUT
echo "" >> $OUTPUT
done
done
}
if [[ ! -f "$HOME/.k8s_aliases.sh" ]]; then
__generate_k8s_aliases $HOME/.k8s_aliases.sh
fi
source $HOME/.k8s_aliases.sh