××¢× ××֞ך, ×× ××××€ÖŒ× ×××ך××€×¢×שעך Kubernetes ××׊×× × - KubeCon + CloudNativeCon Europe 2020 - ××× ××¢×××¢× ×××ך×××Ö·×. ×Öž×עך, ×Ö·××Ö· ×Ö· ×¢× ×עך×× × ××× ×€Ö¿×֞ך××Ö·× ××× × ××©× ×€×ַך×××Ö·×× ××× ×× ×€×× ××¢××××עך×× × ××× ××עך ××Ö·× ×-×€ÖŒ××Ö·× × ×¢× ××ַך××× "××××? ××ַש! ××š×¢×€× ×× ×©×¢×-×֞׀֌עך×Ö·××֞ך" ××¢××ַק××××Ö·× ×Š× ××× ××עך ×¢×€Ö¿× ×ק×ך ׀֌ך××עק×
×עך ×ַך××ק×, ×× ×¡×€ÖŒ×××¢×š× ×××š× ×× ×©××עס, ××× ×Ö· ׊×××Ö·× × ×Š× ×¡×××€ÖŒ××Ö·×€×××× × ××¢× ×€ÖŒ×š×֞׊עס ×€×× ×§×š×××××× × ×֞׀֌עך××××¢×š× ×€Ö¿×ַך Kubernetes ××× ××××Ö·×× ××× ××ך ×§×¢× ×¢× ××Ö·×× ×××× ×××××¢× ×¢ ××× ××× ×××Ö·× ×× ××× ×Ö· ש×Öž× ×֞׀֌עך×Ö·××֞ך.
×× ×ך×Öž××ס×× ×
××× ×€××Ö·× × ××ך קעס×××עך ×Ö·×€ÖŒ××Ö·×××× ××× ×Öž××Ö·×××× ×Ö·××¥. ×××Ö·× × ××ך ×××¢×× ×š×¢×× ×××¢×× ×× ×× ×עך ×קס××××× × ××Ö·×ך××£. ×ךע׀×: ×××Öž×ק×-××¢××××š× ×©×Öž× ×¡×§×š××€ÖŒ××× ×!
×Öž×עך, ××Öž××ך ×Öž× ××××× ××× ××¢× ×§×Öž× ××¢×§×¡× ××× ×××֞ס ×Ö·××¢ ××¢× ××Ö·×€ÖŒ×Ö·× ×: Kubernetes.
Kubernetes API ××× ×§×Ö·× ×ך×Öž××עך×
×× ×Ö·×€ÖŒ× ××× Kubernetes ×§×¢× ×¢× ×××× ×š×¢×€ÖŒ×š×××¢× ××× ××× ×Ö· ××× ×€×× ×עקע סעך××עך ××× ××ךעק×עך×× ×€Ö¿×ַך ××¢×עך ×××€ÖŒ ×€×× ××××€×¢×¥. ×Ö·×××שעקץ (ךעס×ךס×) ××××£ ××¢× ×¡×¢×š××עך ××¢× ×¢× ×š×¢×€ÖŒ×š×××¢× ××× ×××š× YAML ×עקעס. ××× ×Ö·××ש×Ö·×, ×עך סעך××עך ××× ×Ö· ×קעך××ק API ×××֞ס ×Ö·××Ö·×× ××ך ×Š× ××Öž× ×ך×× ××× ××:
- ×Š× ××ַק×××¢× ×××× ×××× ×××× ××× ××× × ×Öž××¢×;
- ××××©× ×××× (××× ××¢× ×€×Ö·×, ×× ×¡×¢×š××עך ס××Öž×š× ××××× "ך×××××" ×Ö·×××שעקץ - ×Ö·××¢ ×× ×§×¢×š×¢×§××× ×עש××€× ×Öž×עך ×××¢× ×€Ö¿×ַך ×× ×עךע ××ךעק×עך×× ××¢× ×¢× ×Ö·××עק××¢× ×××¢×);
- ש׀֌×ך ×€Ö¿×ַך ×× ×××× (××× ××¢× ×€×Ö·×, ×עך ××Ö·× ×׊עך ××××× × ×¢×× ×××× ×§×š×Ö·× × / ×עך×××Ö·× ×××§× ××עךס××¢).
××××, Kubernetes ×Ö·×§×¢×š× ××× ×Ö· ××× ×€×× ×עקע סעך××עך (×€Ö¿×ַך YAML ××Ö·× ×׀עסץ) ××× ×ך×× ×קעך××ק ××¢×××Öž×ס (××Öž, ×ַק×ש×Ö·×××Ö·×× ×¢×¡ ××¢× ×¢× ×× ×עךע, ×Öž×עך ××ך ×××¢×× ××Öž×× ××× ×€Ö¿×ַך ××׊×).
×× ×€ÖŒ×š×Öž×××¢× ××× ×Ö·× ×עך סעך××עך ×§×¢× ×¢× ××××× ×§×š×Öž× ××× ×€Ö¿×֞ך××ַ׊××¢. ×Š× ××Ö·×× ×¢×¡ ×ַך××¢× ××ך ××Ö·×š×€Ö¿× ×§×Öž× ×ך×Öž××עך - ×עך ׊××××× ××¢×š×¡× ××××××ק ××× ×€×× ××Ö·××¢× ××Ö·× ××Ö·×ך××£ ××× ×עך ×××¢×× ×€×× ×§×××¢×š× ×¢×עס.
עס ××¢× ×¢× ×Š×××× ××××€ÖŒ× ×××׀֌ס ×€×× ×§×Ö·× ×ך×Öž××עך×. ×עך עךש×עך × ×¢×× ××× ×€Ö¿×֞ך××ַ׊××¢ ×€×× ââKubernetes, ׀֌ך×ַסעס×Ö·× ×¢×¡ ×××× × ×¢×¡××¢× ××Öž××ק ××× ×§×¢×š× ×¢×¡ ×Š× K8s. ×עך ׊×××××עך × ×¢×× ××× ×€Ö¿×֞ך××ַ׊××¢ ×€Ö¿×× Kubernetes, ×Öž×עך, × ×× ×¢× ××¢× ×עך עךש×עך ×××€ÖŒ, ×¢× ×עך×× ××¢× ×× ×©××Ö·× ×€×× ×¢×××¢××¢ ×€×× ×ך×××¡× ××ק ךעס×ךס×.
××Öž××ך × ×¢××¢× ×Ö· × ×¢×¢× ×עך ק×ק ××× ××¢× ×€ÖŒ×š×֞׊עס ×€×× ×§×š×××××× × ×Ö· ×××€ÖŒ×××××Ö·× × ××× Kubernetes:
- ×××€ÖŒ×××××Ö·× × ×§×Öž× ×ך×Öž××עך (×ַך××Ö·× ×עךע×× × ×××
kube-controller-manager
) ××ק××× ××× ×€Ö¿×֞ך××ַ׊××¢ ×××¢×× ×××€ÖŒ×××××Ö·× × ××× ×§×š××××¥ ×Ö· ךע׀֌××קע סע×. - ReplicaSet קך××××¥ ׊×××× ×š×¢×€ÖŒ××ַק×Ö·× (׊×××× ×€ÖŒ×Öž×ס) ×××××š× ××××£ ××¢× ××× ×€Ö¿×֞ך××ַ׊××¢, ×Öž×עך ×× ×€ÖŒ×Öž×ס ××¢× ×¢× × ××©× ×¡×§×¢××ש××× × ×Öž×.
- ×× ×¡×§×¢××ש××עך סקע××ש××× ×€ÖŒ×Öž×ס ××× ××ס××£ × ×Öž××¢ ××× ×€Ö¿×֞ך××ַ׊××¢ ×Š× ×××עך ××Ö·××ס.
- ק×××¢××¢×¥ ××Ö·×× ×¢× ×עך×× ××¢× ×Š× ×Ö· ×€×× ×ך×××¡× ××ק ×××× (××Öž×× ××֞קעך).
××¢×š× ×Öž× ×× ××× ×Š×¢ ס×ק×××Ö·× ×¡ ××× ×š××€ÖŒ×××× ××× ×€×Ö·×š×§×¢×š× ×¡×ך: ×× ×§×××¢××¢× ×שעק ×× ×§×Ö·× ×××× ×¢×š×, ק×Ö·×ק××Ö·××××¥ ×× ×€ÖŒ×Öž× ×¡ ס××Ö·××ס ××× ×¡×¢× ×× ×¢×¡ ׊×ך×ק. ×× ×š×¢×€ÖŒ×××§×¢×¡×¢× ×§×Öž× ×ך×Öž××עך × ×¢×× ×× ×¡××Ö·××ס ××× ×עך×××Ö·× ×××§× ×× ×©××Ö·× ×€×× ×× ×š×¢×€ÖŒ××קע ש××¢××. ×עך ××¢×××קעך ××Ö·× ××Ö·×€ÖŒ×Ö·× × ××× ×× ×××€ÖŒ×××××Ö·× × ×§×Öž× ×ך×Öž××עך ××× ×עך ××Ö·× ×׊עך ×עס×Öž×£ ××ַק×××¢× ×× ×עך×××Ö·× ×××§× (קך×Ö·× ×) ס××Ö·××ס.
ש×Öž×-×֞׀֌עך×Ö·××֞ך
עס ×××š× ×¡ ×××ס ×Ö·× Kubernetes ××× ×××××š× ××××£ ×× ×©××֞ס ×ַך××¢× ×€×× ×€×ַךש××× ×§×Ö·× ×ך×Öž×××¢×š× (ק×××¢×š× ×¢×עס ×֞׀֌עך××××¢×š× ××¢× ×¢× ×××× ×§×Ö·× ×ך×Öž××עך×). ×× ×§×©×× ×¢×š××××Ö·×, ××× ×Š× ×©×Ö·×€Ö¿× ×××× ×××××¢× ×¢ ×֞׀֌עך×Ö·××֞ך ××× ××× ×××Ö·× ××? ××× ××Öž ×עך ×××× ×¢×š ×××֞ס ××ך ××¢×××¢××Öž×€ÖŒ×¢× ×§××× ×Š× ×š×Ö·××¢×××¢×
׀֌ש×× ×××ַש׀֌××: ק×Ö·×€ÖŒ××× × ×¡×קך××¥
××× ×¡ ק×ק ×××Ö· ×Ö· ׀֌ש×× ×××ַש׀֌××.
××× ×¡ ××Öž×× ××ך ××Öž×× ×Ö· ק×××¢×š× ×¢×עס ×§× ×××. עס ××× ×Ö· × ×Öž××¢× ×€ÖŒ××Ö·×¥ default
××× ×¢×××¢××¢ ס×× mysecret
. ××× ×עך׊×, עס ××¢× ×¢× ×× ×עךע × ×Ö·×עס׀֌×ַסעס ××× ××¢× ×§× ×××. ×¢×××¢××¢ ×€×× ââ××× ××Öž×× ×Ö· ס׀֌ע׊××€×ש ×€×ך××¢ ×Ö·××Ö·××©× ×Š× ×××. ××× ××עך ׊×× ××× ×Š× × ×Öž×××Ö·×× ×¡×¢×§×š×¢× ××× × ×Öž××¢× ×¡×€ÖŒ××ס×Ö·× ××× ×Ö· ×€×ך××¢.
×× ×ַך××¢× ××× ×§×Öž××€ÖŒ××׊××š× ×××š× ×× ×€×Ö·×§× ×Ö·× × ××Ö· × ×Öž××¢× ×¡×€ÖŒ××ס×Ö·× ×§×¢× ×עךש××Ö·× ×¢× ××× ××¢× ×§× ×××, ××× ×¢×××¢××¢ ×€×× ââ××× ×§×¢× ××Öž×× ××¢× ×€×ך××¢. ××××£ ×× ×× ×עךע ××Ö·× ×, ×××¢× ×× ×€×ך××¢ ××× ×××ס××¢×עק×, ס×× ××Öž× ×××× ×××× ×××ס××¢×עק×. ××× ×Ö·××ש×Ö·× ×Š× ××¢×, ×עך ס×× ××× ×§×¢× ×¢× ×××× ×××ש×: ××× ××¢× ×€×Ö·×, ×× × ××Ö· ס×× ×××× ×××× ×§×Ö·×€ÖŒ×× ×Š× ×Ö·××¢ × ×Öž××¢× ×¡×€ÖŒ××ס×Ö·× ××× ××Ö·××¢×ס. ×××× ×¡×¢×§×š×¢× ××× ×ַקס×Ö·××¢× ×Ö·×× ×××ס××¢××¢×§× ××× ×§××× × ×Öž××¢×, ××× ××עך ×֞׀֌עך×Ö·××֞ך ××Öž× ×××§×¢×š× ×¢×¡ ×××.
×××Š× ×Ö·× ×× ×ַך××¢× ××× ×€×ך××××ך×, עס ××× ×Š××× ×Š× ×Öž× ××××× ×××€ÖŒ××Ö·××¢× ×× × ×¢×¡ ××× ×× ×©×Öž× ×֞׀֌עך×Ö·××֞ך. ××עך עךש×עך עס ××× ×××¢×š× ×Š× ××Öž×× ×Ö· ×××¡× ××עך×עך ×××¢×× ×× ×©×Öž×-×֞׀֌עך×Ö·××֞ך ×××.
××× ×©×Öž×-×֞׀֌עך×Ö·××֞ך ×ַך××¢×
××× ×× ×עךע ××עךק××Öž××× ××× Kubernetes, ×× ×©×Öž× ×֞׀֌עך×Ö·××֞ך ××××€× ××× ×××× ×××××¢× ×¢ ×€ÖŒ×Öž×. ××× ××¢× ×€ÖŒ×Öž× ××× ×× ×××¢×××××Ö·×עך /hooks
עקסעק×××Ö·×××¢ ×עקעס ××¢× ×¢× ×¡××֞ך×. ×× ×§×¢× ×¢× ×××× ×¡×§×š×׀֌ס ××× Bash, Python, Ruby, ×¢×ק. ××ך ך××€× ×Ö·××Ö· עקסעק×××Ö·×××¢ ×עקעס ××קס (××קס).
שע×-×֞׀֌עך×Ö·××֞ך ×Ö·××Öž× ××š× ×Š× Kubernetes events ××× ××××€× ×× ××קס ××× ×¢× ×׀עך ×Š× ×× ××¢×©×¢×¢× ××©× ×××֞ס ××ך ××ַך׀ֿ×.
××× ×§×¢× ×עך ש×Öž×-×֞׀֌עך×Ö·××֞ך ××××¡× ×××֞ס קך×ק ×Š× ××××€× ××× ×××¢×? ×× ×€×× × ××× ×Ö·× ××¢×עך קך×ק ××× ×Š×××× ×¡××Ö·×עס. ×עש×ַס ס××ַך××Ö·×€ÖŒ, ×× ×©×Öž× ×֞׀֌עך×Ö·××֞ך ××××€× ×Ö·××¢ ××קס ××× ×Ö· ×ַך××××¢× × --config
××֞ס ××× ×× ×§×Ö·× ×€×××עך××ש×Ö·× ××× ×¢. ××× × ×Öž× ×¢×¡, ××קס ××¢× ×¢× ××Öž× ××©× ××× ×עך × ×֞ך××Ö·× ×××¢× - ××× ×¢× ×׀עך ×Š× ×× ××¢×©×¢×¢× ××©× ×Š× ×××֞ס ××× ××¢× ×¢× ×Ö·××Ö·×ש×. ××× ×× ×ע׊××¢ ×€×Ö·×, ×× ×§×š×ק × ×¢×× ×× ×××× ××× × ×§×Öž× ××¢×§×¡× (×××× ××× × ×§×Öž× ×עקס×) - ××Ö·×× ××× JSON ×€Ö¿×֞ך××Ö·×, ×××֞ס ××ך ×××¢×× ×š×¢×× ×××¢×× ××× ×עך ××¢××Ö·× ××× ××.
××Ö·×× ×Ö·× ×֞׀֌עך×Ö·××֞ך ××× ××ַש
×××Š× ××ך ××¢× ×¢× ×ך××× ×€Ö¿×ַך ×××€ÖŒ××Ö·××¢× ×××ש×Ö·×. ×Š× ××Öž× ××֞ס, ××ך ××Ö·×š×€Ö¿× ×Š× ×©×š××Ö·×× ×Š×××× ×€×Ö·× ×קש×Ö·× × (×××š× ×××¢×, ××ך ךעק×Öž××¢× ×××š× ××××××Öž×עק
- ×עך עךש×עך ××× ××ךף ×€Ö¿×ַך ×× ×§×Ö·× ×€×××עך××ש×Ö·× ××× ×¢ - עס ××ס׀֌×××× ×× ×××× ××× × ×§×Öž× ×עקס×;
- ×× ×š××¢ ×ÖŒ××× ×× ××××€ÖŒ× ××Öž××ק ×€×× ×× ×§×š×ק.
#!/bin/bash
source /shell_lib.sh
function __config__() {
cat << EOF
configVersion: v1
# BINDING CONFIGURATION
EOF
}
function __main__() {
# THE LOGIC
}
hook::run "$@"
×עך ××××Ö·×עך שך×× ××× ×Š× ××ַש×××¡× ×××֞ס ×Ö·×××שעקץ ××ך ××ַך׀ֿ×. ××× ××× ××עך ×€×Ö·×, ××ך ××Ö·×š×€Ö¿× ×Š× ×©×€ÖŒ×ך:
- ×ק×ך ס×× ×€Ö¿×ַך ×¢× ×עך×× ××¢×;
- ×Ö·××¢ × ×Öž××¢× ×¡×€ÖŒ××ס×Ö·× ××× ××¢× ×§× ×××, ×Ö·××× ×Ö·× ××ך ××××¡× ×××֞ס ×Öž× ×¢×¡ ××Öž×× ×Ö· ×€×ך××¢ ×Ö·××Ö·××©× ×Š× ×××;
- ׊×× ×¡×קך××¥ ×Š× ×¢× ×©×ך ×Ö·× ××× ××¢× ×¢× ×Ö·××¢ ××× ×¡×× ×§ ××× ×× ×ק×ך ס××.
×Ö·××Öž× ××š× ×Š× ×עך ס×× ×ק×ך
×××× ××× × ×§×Ö·× ×€×××עך××ש×Ö·× ×€Ö¿×ַך עס ××× ××Ö·× ×¥ ׀֌ש××. ××ך ×Öž× ××××Ö·×× ×Ö·× ××ך ××¢× ×¢× ××× ×עךעס××š× ××× ×¡×× ××× ××¢× × ×Öž××¢× mysecret
××× × ×Öž××¢× ×€ÖŒ××Ö·×¥ default
:
function __config__() {
cat << EOF
configVersion: v1
kubernetes:
- name: src_secret
apiVersion: v1
kind: Secret
nameSelector:
matchNames:
- mysecret
namespace:
nameSelector:
matchNames: ["default"]
group: main
EOF
××× ×Ö· ךע×××××Ö·×, ×עך קך×ק ×××¢× ×××× ×ך×××¢×š× ×××¢× ×עך ×ק×ך ס×× ×¢× ×עך×× ××¢× (src_secret
) ××× ××ַק×××¢× ×× ×€××××¢× ××¢ ×××× ××× × ×§×Öž× ×עקס×:
××× ××ך ×§×¢× ×¢× ××¢×, עס ×ÖŒ××× ×× × ×Öž××¢× ××× ×× ××× ×Š×¢ ××××€×¢×¥.
××¢××¢×¡×§×¢× ×©×€ÖŒ×ך ×€×× × ×Öž××¢× ×¡×€ÖŒ××ס×Ö·×
×××Š× ××ך ××Ö·×š×€Ö¿× ×Š× ×Ö·××Öž× ××š× ×Š× × ×Öž××¢× ×¡×€ÖŒ××ס×Ö·×. ×Š× ××Öž× ××֞ס, ××ך ס׀֌ע׊××€×׊××š× ×× ×€××××¢× ××¢ ×××× ××× × ×§×Ö·× ×€×××עך××ש×Ö·×:
- name: namespaces
group: main
apiVersion: v1
kind: Namespace
jqFilter: |
{
namespace: .metadata.name,
hasLabel: (
.metadata.labels // {} |
contains({"secret": "yes"})
)
}
group: main
keepFullObjectsInMemory: false
××× ××ך ×§×¢× ×¢× ××¢×, ×Ö· × ××Ö· ×€×¢×× ××× ×ך××ס ××× ×× ×§×Ö·× ×€×××עך××ש×Ö·× ××× ××¢× × ×Öž××¢× jqFilter. ××× ×××× × ×Öž××¢× ×¡×Ö·×××שעס, jqFilter
×€×××עךס ×××ס ×Ö·××¢ ××× ××××ק ××× ×€Ö¿×֞ך××ַ׊××¢ ××× ×§×š××××¥ ×Ö· × ××Ö·×¢ JSON ××××€×¢×¥ ××× ×× ×€×¢××עך ×××֞ס ××¢× ×¢× ×€×× ××× ×עךעס ×Š× ××× ××. × ×§×š×ק ××× ×Ö· ×¢× ××¢× ×§×Ö·× ×€×××עך××ש×Ö·× ×××¢× ××ַק×××¢× ×× ×€××××¢× ××¢ ×××× ××× × ×§×Öž× ×עקס×:
עס ×ÖŒ××× ×Ö· ×€ÖŒ××Ö·×¥ filterResults
×€Ö¿×ַך ××¢×עך × ×Ö·×עס׀֌×ַסע ××× ××¢× ×§× ×××. ×××××Ö·× ×××Ö·××¢××××ק hasLabel
×× ××ק×××¥ ×Š× ×Ö· ×€×ך××¢ ××× ×Ö·××Ö·××©× ×Š× ×Ö· ××¢××¢×× × ×Öž××¢× ×€ÖŒ××Ö·×¥. סע×עק××֞ך keepFullObjectsInMemory: false
×× ××ק×××¥ ×Ö·× ×¢×¡ ××× × ×× ××Ö·×š×€Ö¿× ×Š× ××Ö·××× ××Ö·× ×¥ ×Ö·×××שעקץ ××× ××֌ך××.
×ך×ַק×× × ×Š×× ×¡×קך××¥
××ך ×Ö·××Öž× ××š× ×Š× ×Ö·××¢ סעקךעץ ×××֞ס ××Öž×× ×Ö·× ×Ö·× ×Öž××ַ׊××¢ ס׀֌עס××€××¢× managed-secret: "yes"
(××֞ס ××¢× ×¢× ××× ××עך ׊×× dst_secrets
):
- name: dst_secrets
apiVersion: v1
kind: Secret
labelSelector:
matchLabels:
managed-secret: "yes"
jqFilter: |
{
"namespace":
.metadata.namespace,
"resourceVersion":
.metadata.annotations.resourceVersion
}
group: main
keepFullObjectsInMemory: false
××× ××¢× ×€×Ö·× jqFilter
×€×××עךס ×××ס ×Ö·××¢ ××× ×€Ö¿×֞ך××ַ׊××¢ ×Ö·×××¥ ×× × ×Ö·×עס׀֌×ַסע ××× ×€ÖŒ×ַך×Ö·××¢×עך resourceVersion
. ×× ×ע׊××¢ ×€ÖŒ×ַך×Ö·××¢×עך ××× ××ך×××¢××× ××¢× ×Š× ×× ×Ö·× ×Öž××ַ׊××¢ ×××¢× ×§×š×××××× × ××¢× ×¡××: עס ×Ö·××Ö·×× ××ך ×Š× ×€×ַך××××Ö·×× ××עךס×עס ×€×× ×¡×קך××¥ ××× ××Ö·××× ××× ×עך×××Ö·× ××ק×.
× ×§×š×ק ק×Ö·× ×€××××¢×š× ××¢× ×××¢× ×××¢×, ×××¢× ×¢×§×¡×ַק××××Ö·×, ××ַק×××¢× ×× ×ך×× ×××× ××× × ×§×Ö·× ×עקסץ ××סקך×××× ×××××. ××× ×§×¢× ×¢× ×××× ××¢××Ö·× ×§ ×€×× ××× ×Ö· ××× ×€×× ××Öž××¢× ××××× (××Öž××¢× ×××××) ×§× ×××.
××Ö·×××š× ××××£ ×Ö·××¢ ××¢× ××× ×€Ö¿×֞ך××ַ׊××¢, ×Ö· ×קעך××ק ×Ö·××עך×××Ö·× ×§×¢× ×¢× ×××× ××¢×××¢××֞׀֌ע×. עס ××עך×××¥ ×××עך ×Ö·××¢ × ×Öž××¢× ×¡×€ÖŒ××ס×Ö·× ×××:
- ׊×
hasLabel
×¢× ×× ××true
×€Ö¿×ַך ××¢× ×§×š×Ö·× × × ×Öž××¢× ×€ÖŒ××Ö·×¥:- ק×Ö·××€ÖŒ×¢×š× ×× ×××××××¢ ס×× ××× ×× ××××¢:
- ×××× ××× ××¢× ×¢× ×× ××¢×××¢, עס ××× ××Öž×š× ×ש×;
- ×××× ××× ×Ö·× ×עךש - עקס×ַק×××¥
kubectl replace
×Öž×עךcreate
;
- ק×Ö·××€ÖŒ×¢×š× ×× ×××××××¢ ס×× ××× ×× ××××¢:
- ׊×
hasLabel
×¢× ×× ××false
×€Ö¿×ַך ××¢× ×§×š×Ö·× × × ×Öž××¢× ×€ÖŒ××Ö·×¥:- ×××× ×××עך ×Ö·× ×¡×¢×§×š×¢× ××× × ××©× ××× ×× ××¢××¢×× × ×Öž××¢×:
- ×××× ×× ××××¢ ס×× ××× ×€×֞ךש××¢××, ××ס××¢×§× ×¢×¡ × ×׊×
kubectl delete
; - ×××× ×× ××××¢ ס×× ××× × ××©× ×××עק××Ö·×, עס ××× ××Öž×š× ×ש×.
- ×××× ×× ××××¢ ס×× ××× ×€×֞ךש××¢××, ××ס××¢×§× ×¢×¡ × ×׊×
- ×××× ×××עך ×Ö·× ×¡×¢×§×š×¢× ××× × ××©× ××× ×× ××¢××¢×× × ×Öž××¢×:
×Ö·××× ××ך ××¢× ×¢× ×××××ת ×Š× ×©×Ö·×€Ö¿× ×Ö· ׀֌ש×× ×§×××¢×š× ×¢×עס ק×Öž× ×ך×Öž××עך ××× 35 ש×ך×ת ×€×× YAML ק×Ö·× ×€×××עך××ש×Ö·× ××× ×××¢×× ×עך ××¢×××קעך ס×××¢ ×€×× ââââ××ַש ק×Öž×! ×× ×ַך××¢× ×€×× ×× ×©×Öž× ×֞׀֌עך×Ö·××֞ך ××× ×Š× ×€×ַך××× ×× ××× ×Š×××Ö·××¢×.
×Öž×עך, ק×Ö·×€ÖŒ××× × ×¡×קך××¥ ××× × ××©× ×עך ××××× ××¢×× × ×€×× ×Ö·×€ÖŒ××ַק××ש×Ö·× ×€×× ×× × ×׊×. ××Öž ××¢× ×¢× ×Ö· ×××¡× ×עך ×××ש׀××× ×Š× ××××Ö·×× ×××֞ס עך ××× ×××××¢××××ק ×€××.
×××ַש׀֌×× 1: ××Ö·×× ×¢× ×עך×× ××¢× ×Š× ConfigMap
××× ×¡ ק×ק ××× ×Ö· ×××€ÖŒ×××××Ö·× × ×§×Ö·× ×¡×ס××× × ×€×× ×ך×× ×€ÖŒ×Öž×ס. ×€ÖŒ×Öž×ס × ××Š× ConfigMap ×Š× ×§×š×Öž× ×¢×××¢××¢ ק×Ö·× ×€×××עך××ש×Ö·×. ×××¢× ×× ×€ÖŒ×Öž×ס ××¢× ×¢× ××Öž× ×ש×, ConfigMap ××× ××¢×××¢× ××× ×Ö· ×××עך ש××Ö·× (××Öž××ך ך××€× ×¢×¡ ××.1). ×ַקק×֞ך××× ×××, ×Ö·××¢ ×€ÖŒ×Öž×ס × ××Š× ××¢× ××Ö·××× ×עך ××עךס××¢ ×€×× ââââConfigMap.
×××Š× ××Öž×× ××× ×× ×××¢×š× ×¢××¢× ×Ö·× ×× ×§×Öž× ×€××××Ö·×€ÖŒ ××× ××¢×××× (××.2). ×Öž×עך, ×× ×€ÖŒ×Öž×ס ×××¢×× × ××Š× ×× ×€×š×עך××קע ××עךס××¢ ×€×× ââââConfigMap (v.1):
××× ×§×¢× ××× ××ַק×××¢× ××× ×Š× ××ַש××××¢× ×Š× ×× × ××Ö·×¢ ק×Öž× ×€××××Ö·×€ÖŒ (××.2)? ×עך ×¢× ×׀עך ××× ×€ÖŒ×©××: × ××Š× ×Ö· ××ס×עך. ××Öž××ך ××××× ×Ö· ×שעקס×× ×Ö·× ×Öž××ַ׊××¢ ×Š× ×× ×Öž×€ÖŒ×××××× × template
×××€ÖŒ×××××Ö·× × ×§×Ö·× ×€×××עך××ש×Ö·× ×:
××× ×Ö· ךע×××××Ö·×, ××¢× ×שעקס×× ×××¢× ×××× ×š×¢××ס×ך××š× ××× ×Ö·××¢ ×€ÖŒ×Öž×ס, ××× ×¢×¡ ×××¢× ×××× ×× ××¢×××¢ ××× ×× ×××€ÖŒ×××××Ö·× ×. ×××Š× ××ך × ×֞ך ××Ö·×š×€Ö¿× ×Š× ×עך×××Ö·× ×××§× ×× ×Ö·× ×Öž××ַ׊××¢ ×××¢× ×× ConfigMap ×¢× ×עך×× ××¢×. ××× ×עך ש×Öž×-×֞׀֌עך×Ö·××֞ך ק××× ××× ××Ö·× ××ק ××× ××¢× ×€×Ö·×. ×× ××ך ××Ö·×š×€Ö¿× ×Š× ××Öž× ××× ×€ÖŒ×š×Öž×ך×Ö·× ×Ö· ×€×ַך××©×¢×€ÖŒ×¢× ×××֞ס ×××¢× ×Ö·××Öž× ××š× ×Š× ×× ConfigMap ××× ×עך×××Ö·× ×××§× ×× ×שעקקס××.
×××× ×עך ××Ö·× ×׊עך ×××× ×¢× ×עך×× ××¢× ×Š× ×× ConfigMap, ×עך ש×Öž× ×֞׀֌עך×Ö·××֞ך ×××¢× ××Ö·××¢×š×§× ××× ××× ×š×ק×Ö·×ק××Ö·×××× ×× ×שעקס××. × ×Öž× ×××֞ס ×× ××Ö·××ש ×€×× ×§×××¢×š× ×¢×עס ×××¢× ×§×××¢× ××× ×©×€ÖŒ××: ×עך ×֞ךקעס×ך×Ö·××֞ך ×××¢× ××××× ×× ×€ÖŒ×Öž×, ××Ö·×× ×Ö· × ××Ö· ×××× ×¢×š, ×××ַך×× ×€Ö¿×ַך עס ×Š× ×××¢×š× Ready
, ××× ××Ö·× ××××£ ×Š× ×עך ××××Ö·×עך ×××× ×¢×š. ××× ×Ö· ךע×××××Ö·×, ×××€ÖŒ×××××Ö·× × ×××¢× ×¡×× ×קך×Ö·× ××× ××× ××ַש××××¢× ×Š× ×× × ××Ö·×¢ ××עךס××¢ ×€×× ââââConfigMap.
×××ַש׀֌×× 2: ×ך××¢×× ××× ×× ×× ×š×ס×֞ךס ××¢×€×× ×ש×Ö·× ×
××× ××ך ×××ס×, Kubernetes ×Ö·××Ö·×× ××ך ×Š× ×©×Ö·×€Ö¿× ×× ×× ×××׀֌ס ×€×× ×Ö·×××שעקץ. ×€Ö¿×ַך ×××ַש׀֌××, ××ך ×§×¢× ×¢× ××Ö·×× ×Ö· ××× MysqlDatabase
. ××× ×¡ ××Öž×× ××¢× ×××€ÖŒ ××× ×Š×××× ××¢××Ö·××Ö·××Ö· ×€ÖŒ×ַך×Ö·××¢×עךס: name
О namespace.
apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
name: foo
namespace: bar
××ך ××Öž×× ×Ö· ק×××¢×š× ×¢×עס ×§× ××× ××× ×€×ַךש×××¢× ×¢ × ×Ö·×עס׀֌×ַסעס ××× ×××֞ס ××ך ×§×¢× ×¢× ×©×Ö·×€Ö¿× MySQL ××Ö·××Ö·×××ס××. ××× ××¢× ×€×Ö·×, ש×Öž×-×֞׀֌עך×Ö·××֞ך ×§×¢× ×¢× ×××× ××¢××××× × ×Š× ×©×€ÖŒ×ך ךעס××š×¡× MysqlDatabase
, ק×Ö·× ×¢×§××× × ××× ×Š× ×× MySQL סעך××עך ××× ×¡×× ×קך×Ö·× ××× ×× ××¢××¢×× ××× ××××¢×š×§× ×©××Ö·×× ×€×× ××¢× ×§× ×××.
×××ַש׀֌×× 3: ×§× ××× × ×¢××××֞ךק ××Öž× ×××֞ך×× ×
××× ××ך ×××ס×, × ××Š× ×€ÖŒ×× × ××× ×× ×¡×××€ÖŒ××Ö·×¡× ×××¢× ×Š× ××Öž× ×××֞ך ×Ö· × ×¢×¥. ××× ××¢× ×××ַש׀֌×× ××ך ×××¢×× ××××Ö·×× ××× ×Š× ×× ×¡×ך×××¢× × ×Ö·××Ö· ××Öž× ×××֞ך×× × × ××Š× ×©×Öž×-×֞׀֌עך×Ö·××֞ך.
עךש×עך ×€×× ×Ö·××¢, ××ך ××Ö·×š×€Ö¿× ×Š× ×Ö·××Öž× ××š× ×Š× × ×Öž×××. ×עך ש×Öž× ×֞׀֌עך×Ö·××֞ך ××ַךף ×× × ×Öž××¢× ××× IP ×Ö·×ךעס ×€×× ××¢×עך × ×Öž××¢. ××× ×××עך ××××£, עך ×××¢× ×€ÖŒ×× × ×× × ×Öž×××.
configVersion: v1
kubernetes:
- name: nodes
apiVersion: v1
kind: Node
jqFilter: |
{
name: .metadata.name,
ip: (
.status.addresses[] |
select(.type == "InternalIP") |
.address
)
}
group: main
keepFullObjectsInMemory: false
executeHookOnEvent: []
schedule:
- name: every_minute
group: main
crontab: "* * * * *"
×€ÖŒ×ַך×Ö·××¢×עך executeHookOnEvent: []
׀֌ך××××¢× ×¥ ×× ×§×š×ק ×€×× ×€×××¡× ××ק ××× ×¢× ×׀עך ×Š× ×§××× ××¢×©×¢×¢× ×ש (××֞ס ×××, ××× ×¢× ×׀עך ×Š× ×ש×Ö·× ××× ×, ×Ö·××× ×, ××××××× × × ×Öž×××). ×Öž×עך, עך ×××¢× ××××€× (××× ×עך×××Ö·× ×××§× ×× ×š×©××× ×€×× × ×Öž×××) סקע××ש××× - ××¢×עך ××× ××, ××× ×€ÖŒ×š×סקך×××× ×××š× ×× ×€×¢×× schedule
.
×××Š× ×× ×§×©×× ×¢×š××××Ö·×, ××× ×€ÖŒ×× ×§× ××Öž× ××ך ××××¡× ×××¢×× ×€ÖŒ×š×Öž×××¢×ס ××× ×€ÖŒ×ַק×Ö·× ×Öž× ××עך? ××Öž××ך × ×¢××¢× ×Ö· ק×ק ××× ×× ×§×Öž×:
function __main__() {
for i in $(seq 0 "$(context::jq -r '(.snapshots.nodes | length) - 1')"); do
node_name="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.name')"
node_ip="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.ip')"
packets_lost=0
if ! ping -c 1 "$node_ip" -t 1 ; then
packets_lost=1
fi
cat >> "$METRICS_PATH" <<END
{
"name": "node_packets_lost",
"add": $packets_lost,
"labels": {
"node": "$node_name"
}
}
END
done
}
××ך ××עך××× ×× ×š×©××× ×€×× × ×Öž×××, ××ַק×××¢× ×××עך × ×¢××¢× ××× IP ×Ö·×ךעסעס, ×€ÖŒ×× × ××× ××× ×©××§× ×× ×š×¢×××××Ö·×× ×Š× ×€ÖŒ×š×Öž××¢×××¢×ס. שע×-×֞׀֌עך×Ö·××֞ך ×§×¢× ×¢× ×ַך××ס׀××š× ××¢×ך×קס ×Š× ×€ÖŒ×š×Öž××¢×××¢×ס, ש׀֌×Öž×š× ××× ×Š× ×Ö· ×עקע ×××× ×××× ×× ×××¢× ×¡×€ÖŒ×¢×¡××€××¢× ××× ×× ×¡××××××¢ ×××Ö·××¢××××ק $METRICS_PATH
.
ך×× ×עק×Ö·× ×××Ö·×
×עך ×ַך×××§× ×××Öž×× ×××× ××¢×š×¢× ×××§× ×Öž× ××סקך××××× × ×× ×× ×עך ××××××ק ×עק×Ö·× ×××Ö·× ××¢×××× ××× ×× ×©×Öž× ×֞׀֌עך×Ö·××֞ך. ×××Ö·××ש×Ö·× ×Ö·× ×¢×¡ עקס×ַק×××¥ ×Ö· ××× ×€×× ×€×ַך××©×¢×€ÖŒ×¢× ××× ×¢× ×׀עך ×Š× ×Ö· ××¢×©×¢×¢× ×ש ××× ××¢× ×§× ×××.
- ×××֞ס ××Ö·×€ÖŒ×Ö·× × ×××× ××× ×עך ××¢×××קעך ׊××Ö·× ××× ×× ×§× ××× ××Ö·×€ÖŒ×Ö·× × × ×× ×××× ×¡ ××¢×©×¢×¢× ×ש?
- ×××¢× ×©×Öž×-×֞׀֌עך×Ö·××֞ך ××××€× ×× ×× ×עך ×××ַש׀֌×× ×€×× ×× ×§×š×ק?
- ×××֞ס ××××, ××Öž××, ×€×× ×£ ××¢×©×¢×¢× ××©× ×€ÖŒ×ַס××š× ××× ××¢× ×§× ××× ××× ×Ö·××Öž×?
- ×××¢× ×עך ש×Öž×-×֞׀֌עך×Ö·××֞ך ××× ×€ÖŒ×š×Ö·×¡×¢×¡× ×€ÖŒ×ַך×Ö·××¢×?
- ×××֞ס ×××¢×× ×§×Ö·× ×¡××× ×š×¢×¡××š×¡× ×Ö·××Ö· ××× ××֌ך×× ××× ×§×€ÖŒ×?
׊×× ×××ק, ש×Öž× ×֞׀֌עך×Ö·××֞ך ××× ×Ö· ××¢××××-××× ×š×× ×עק×Ö·× ×××Ö·×. ×Ö·××¢ ××¢×©×¢×¢× ××©× ××¢× ×¢× ×§××××× ××× ×€ÖŒ×š×Ö·×¡×¢×¡× ×¡×ַק×××¢× ×ש×Ö·××.
××××ך ××ס ××××ס×ך××š× ××× ×××ש׀×××. ××××ך ×××× ×× ××ך ×××× ×Š×××× ××ק×. ×עך עךש×עך ××¢×©×¢×¢× ×ש ×××× ×Š× ×עך עךש×עך קך×ק. ×Ö·××Öž× ×× ×€ÖŒ×š×ַסעס×× × ××× ××Ö·× ×¥, ×× ×š×× ×××× ×€×֞ך××ס. ×× ××××Ö·×עך ×ך××Ö· ××¢×©×¢×¢× ××©× ××¢× ×¢× ×š××עךעק××× ×Š× ×× ×š××¢ ×€×ַך××©×¢×€ÖŒ×¢× - ××× ××¢× ×¢× ×Ö·××עק××¢× ×××¢× ×€×× ×× ×š×× ××× ×ך××× ××× ×¢×¡ ××× ×Ö· "××× ××". ××ס ××× ×§×š×ק × ×¢×× ×Ö· ×€ÖŒ××Ö·×¥ ×€×× ××¢×©×¢×¢× ××©× - ×Öž×עך, ×עך ××¢× ××, ×Ö· ××¢× ××¢ ×€×× ââ×××× ××× × ×§×Ö·× ×עקסץ.
×××× ×× ××¢×©×¢×¢× ××©× ×§×¢× ×¢× ×××× ×§×Ö·××××× × ××× ×××× ×ך××ס. ×עך ×€ÖŒ×ַך×Ö·××¢×עך ××× ×€×ַך×Ö·× ××××֞ך×××¢× ×€Ö¿×ַך ××¢× group
××× ×× ×××× ××× × ×§×Ö·× ×€×××עך××ש×Ö·×.
××ך ×§×¢× ×¢× ××Ö·×× ×§××× × ××עך ×€×× ×§××× / ××קס ××× ×××עך ×€×ַךש××× ×§×Ö·×××Ö·× ××ש×Ö·× ×. ×€Ö¿×ַך ×××ַש׀֌××, ×××× ×š×× ×§×¢× ×¢× ×ַך××¢×× ××× ×Š×××× ××קס, ×Öž×עך ×××׊ע ××עךס×Ö·.
×× ××ך ××Ö·×š×€Ö¿× ×Š× ××Öž× ××× ×§×Ö·× ×€×××עך ×× ×€×¢×× ×ַק×֞ך××× ××× queue
××× ×× ×××× ××× × ×§×Ö·× ×€×××עך××ש×Ö·×. ×××× ×Ö· ך×× × ×Öž××¢× ××× × ××©× ×¡×€ÖŒ×¢×¡××€××¢×, ×עך קך×ק ××××€× ××××£ ×× ×€×¢××ק××Ö·× ×š×× (default
). ××¢× ×š×× ×עק×Ö·× ×××Ö·× ×Ö·××Ö·×× ××ך ×Š× ××֞ך ס×Öž××××¢ ×Ö·××¢ ך×ס×֞ךס ×€×ַך×××Ö·×××× × ×€ÖŒ×š×Öž×××¢×ס ×××¢× ××ך ×ַך××¢× ××× ××קס.
ס×Öž×£
××ך ×עךק××¢×š× ×××֞ס ×Ö· ש×Öž× ×֞׀֌עך×Ö·××֞ך ×××, ××¢××××× ××× ×¢×¡ ×§×¢× ×¢× ×××× ××¢××××× × ×Š× ×עש×××× × ××× ×¢×€×¢×š×××ַס×× ×©×Ö·×€Ö¿× Kubernetes ×֞׀֌עך×××עך×, ××× ××¢××¢×× ×¢×××¢××¢ ×××ש׀××× ×€×× ×××× × ×׊×.
××××××× ××× ×€Ö¿×֞ך××ַ׊××¢ ×××¢×× ×× ×©×Öž× ×֞׀֌עך×Ö·××֞ך, ××× ××¢××× × ××× ×Ö· ×©× ×¢× ××××֞ך××Ö·× ××× ×Š× × ××Š× ×¢×¡, ××× ×× ×××Š× ××× ×× ×§×֞ך×ַס׀֌×Ö·× ××× ×
××× ×××× ××ך ××××§× ×¢×¡, ××ך ××¢× ×¢× ×©××¢× ××ק ׊×׀ך××× ×Š× ××¢× × ××Ö·×¢ ×ש×× / ׀֌ך / ש××¢×š× ××××£ ××××××, ××× ××ך ×§×¢× ×¢× ××¢×€Ö¿×× ×¢× ×× ×עךע
××××××ס ××× ×¡×××××
×××××¢× ×€Ö¿×× ×עך ×€×֞ךש××¢××× × (~23 ××× ××):
׀֌ךע××¢× ××ך×× × ×€×× ×עך ××ַך×××:
׀֌ס
××××¢× ×¢× ×××× ××××£ ××× ××עך ×××Öž×:
- «
×ך×× × ×©×Ö·×€×× × ×€×× Kubernetes ×֞׀֌עך××××¢×š× ××× ×©×Öž×-×֞׀֌עך×Ö·××֞ך: ׀֌ך×Öž×ךעס ×€×× ×× ×€ÖŒ×š×××¢×§× ×××עך ×× ××֞ך "; - «
×× ×ך×Öž×××ס×× × ×©×Öž× ×֞׀֌עך×Ö·××֞ך: קך×××××× × ×֞׀֌עך××××¢×š× ×€Ö¿×ַך Kubernetes ××× ×€ÖŒ×× ×§× ×ך×× ×עך "; - «
××× ×¢×¡ ×ך×× × ××× ××ַק×××¢× ×Š× ×Š××ך×××× ×Ö· ק×××¢×š× ×¢×עס ×§× ×××? ×Ö·× ×Ö·×× ×¡×× × ×Ö·×××Öž×-×֞׀֌עך×Ö·××֞ך "; - «
×קס׀֌×Ö·× ××× × ××× ×§×Ö·××€ÖŒ××Ö·××¢× ××× × Kubernetes" (×š×¢×Š×¢× ×××¢ ××× ×××××¢× ××ַך×××) .
×ק×ך: www.habr.com