ä»å¹Žã欧å·ã®äž»èŠãª Kubernetes ã«ã³ãã¡ã¬ã³ã¹ã§ãã KubeCon + CloudNativeCon Europe 2020 ã¯ããŒãã£ã«ã§éå¬ãããŸããã ãããããã®ãããªåœ¢åŒã®å€æŽã«ãã£ãŠãé·å¹Žèšç»ããŠããã¬ããŒããGo?ãã®æäŸã劚ããããããšã¯ãããŸããã§ããã ããã·ã¥ïŒ ãªãŒãã³ãœãŒã¹ ãããžã§ã¯ãã«ç¹åãããã·ã§ã« ãªãã¬ãŒã¿ãŒã®çŽ¹ä»ã
ãã®èšäºã¯è¬æŒã«è§ŠçºãããŠãKubernetes ã®ãªãã¬ãŒã¿ãŒäœæããã»ã¹ãç°¡çŽ åããã¢ãããŒãã玹ä»ããã·ã§ã« ãªãã¬ãŒã¿ãŒã䜿çšããŠæå°éã®åŽåã§ç¬èªã®ãªãã¬ãŒã¿ãŒãäœæããæ¹æ³ã瀺ããŸãã
å°å
¥
Flant ã§ã¯ããããããã®ãåžžã«æé©åããèªååããŠããŸãã ä»æ¥ã¯å¥ã®ãšããµã€ãã£ã³ã°ãªã³ã³ã»ããã«ã€ããŠã話ããŸãã äŒãïŒ ã¯ã©ãŠããã€ãã£ãã®ã·ã§ã«ã¹ã¯ãªãã!
ãã ãããããã¹ãŠãçºçããã³ã³ããã¹ããã€ãŸã Kubernetes ããå§ããŸãããã
Kubernetes API ãšã³ã³ãããŒã©ãŒ
Kubernetes ã® API ã¯ããªããžã§ã¯ãã®çš®é¡ããšã«ãã£ã¬ã¯ããªãåããäžçš®ã®ãã¡ã€ã« ãµãŒããŒãšããŠè¡šãããšãã§ããŸãã ãã®ãµãŒããŒäžã®ãªããžã§ã¯ã (ãªãœãŒã¹) 㯠YAML ãã¡ã€ã«ã§è¡šãããŸãã ããã«ããµãŒããŒã«ã¯åºæ¬ç㪠API ãããã次㮠XNUMX ã€ã®ããšãå®è¡ã§ããŸãã
- åãåã ãªãœãŒã¹ã®çš®é¡ãšååã«ããã
- å€åãã ãªãœãŒã¹ (ãã®å ŽåããµãŒããŒã¯ãæ£ããããªããžã§ã¯ãã®ã¿ãä¿ç®¡ããŸããééã£ãŠåœ¢æããããªããžã§ã¯ããä»ã®ãã£ã¬ã¯ããªãŒã察象ãšãããªããžã§ã¯ãã¯ãã¹ãŠç Žæ£ãããŸã)ã
- ãã©ããŒãã ãªãœãŒã¹ã®å Žå (ãã®å ŽåããŠãŒã¶ãŒã¯çŸåšã®/æŽæ°ãããããŒãžã§ã³ãããã«åãåããŸã)ã
ãããã£ãŠãKubernetes 㯠XNUMX ã€ã®åºæ¬ã¡ãœãããåãã (YAML ãããã§ã¹ãçšã®) äžçš®ã®ãã¡ã€ã« ãµãŒããŒãšããŠæ©èœããŸã (ã¯ããå®éã«ã¯ä»ã«ãã¡ãœããããããŸãããããã§ã¯çç¥ããŸã)ã
åé¡ã¯ããµãŒããŒã¯æ
å ±ããä¿åã§ããªãããšã§ãã ãããæ©èœãããããã«å¿
èŠãªã®ã¯ ã³ã³ãããŒã© - Kubernetes ã®äžç㧠XNUMX çªç®ã«éèŠãã€åºæ¬çãªæŠå¿µã
ã³ã³ãããŒã©ãŒã«ã¯äž»ã« 8 ã€ã®ã¿ã€ãããããŸãã XNUMX ã€ç®ã¯ãKubernetes ããæ å ±ãååŸãããã¹ããããããžãã¯ã«åŸã£ãŠåŠçããKXNUMXs ã«è¿ããŸãã XNUMX çªç®ã®ã¿ã€ã㯠Kubernetes ããæ å ±ãååŸããŸãããæåã®ã¿ã€ããšã¯ç°ãªããäžéšã®å€éšãªãœãŒã¹ã®ç¶æ ãå€æŽããŸãã
Kubernetes ã§ãããã€ã¡ã³ããäœæããããã»ã¹ã詳ããèŠãŠã¿ãŸãããã
- ãããã€ã¡ã³ãã³ã³ãããŒã©ãŒ (以äžã«å«ãŸããŸã)
kube-controller-manager
) ãããã€ã¡ã³ãã«é¢ããæ å ±ãåãåããReplicaSet ãäœæããŸãã - ReplicaSet ã¯ãã®æ å ±ã«åºã¥ã㊠XNUMX ã€ã®ã¬ããªã« (XNUMX ã€ã®ããã) ãäœæããŸããããããã®ãããã¯ãŸã ã¹ã±ãžã¥ãŒã«ãããŠããŸããã
- ã¹ã±ãžã¥ãŒã©ã¯ããããã¹ã±ãžã¥ãŒã«ããããŒãæ å ±ã YAML ã«è¿œå ããŸãã
- Kubelet ã¯å€éšãªãœãŒã¹ (Docker ãªã©) ã«å€æŽãå ããŸãã
次ã«ããã®ã·ãŒã±ã³ã¹å šäœãéã®é åºã§ç¹°ãè¿ãããŸããkubelet ã¯ã³ã³ãããŒããã§ãã¯ãããããã®ã¹ããŒã¿ã¹ãèšç®ããŠéãè¿ããŸãã ReplicaSet ã³ã³ãããŒã©ãŒã¯ã¹ããŒã¿ã¹ãåä¿¡ããã¬ããªã« ã»ããã®ç¶æ ãæŽæ°ããŸãã åãããšããããã€ã¡ã³ã ã³ã³ãããŒã©ãŒã§ãçºçãããŠãŒã¶ãŒã¯æçµçã«æŽæ°ããã (çŸåšã®) ã¹ããŒã¿ã¹ãååŸããŸãã
ã·ã§ã«ãªãã¬ãŒã¿ãŒ
Kubernetes ã¯ããŸããŸãªã³ã³ãããŒã©ãŒã®å
±åäœæ¥ã«åºã¥ããŠããããšãããããŸã (Kubernetes ãªãã¬ãŒã¿ãŒãã³ã³ãããŒã©ãŒã§ã)ã æå°éã®åŽåã§ç¬èªã®ãªãã¬ãŒã¿ãŒãäœæããã«ã¯ã©ãããã°ããããšããçåãçããŸãã ããã§ç§ãã¡ãéçºãããã®ã圹ã«ç«ã¡ãŸã
ç°¡åãªäŸ: ã·ãŒã¯ã¬ããã®ã³ããŒ
ç°¡åãªäŸãèŠãŠã¿ãŸãããã
Kubernetes ã¯ã©ã¹ã¿ãŒããããšããŸãã åå空éããããŸã default
ç§å¯ãæã£ãŠ mysecret
ã ããã«ãã¯ã©ã¹ã¿ãŒå
ã«ã¯ä»ã®åå空éããããŸãã ãããã®äžã«ã¯ãç¹å®ã®ã©ãã«ãä»ããããŠãããã®ããããŸãã ç§ãã¡ã®ç®æšã¯ãSecret ãã©ãã«ä»ãã®åå空éã«ã³ããŒããããšã§ãã
æ°ããåå空éãã¯ã©ã¹ã¿ãŒå ã«åºçŸãããããã®äžéšã«ãã®ã©ãã«ãä»ããŠããå¯èœæ§ããããããã¿ã¹ã¯ã¯è€éã«ãªããŸãã äžæ¹ãã©ãã«ãåé€ããå Žåã¯ãSecret ãåé€ããå¿ èŠããããŸãã ããã«å ããŠãSecret èªäœãå€æŽãããå¯èœæ§ããããŸãããã®å Žåãæ°ãã Secret ãã©ãã«ä»ãã®ãã¹ãŠã®åå空éã«ã³ããŒããå¿ èŠããããŸãã Secret ãåå空éã§èª€ã£ãŠåé€ãããå Žåãåœç€Ÿã®ãªãã¬ãŒã¿ãŒã¯çŽã¡ã«ããã埩å ããå¿ èŠããããŸãã
ã¿ã¹ã¯ãå®åŒåãããã®ã§ãã·ã§ã« ãªãã¬ãŒã¿ãŒã䜿çšããŠå®è£ ãéå§ããŸãã ãããããã®åã«ãã·ã§ã« ãªãã¬ãŒã¿ãŒèªäœã«ã€ããŠå°ãè¿°ã¹ãŠãã䟡å€ããããŸãã
ã·ã§ã«ãªãã¬ãŒã¿ãŒã®ä»çµã¿
Kubernetes ã®ä»ã®ã¯ãŒã¯ããŒããšåæ§ã«ãshell-operator ã¯ç¬èªã®ãããã§å®è¡ãããŸãã ãã®ãããå
ã®ãã£ã¬ã¯ããªå
/hooks
å®è¡å¯èœãã¡ã€ã«ãä¿åãããŸãã ãããã¯ãBashãPythonãRuby ãªã©ã®ã¹ã¯ãªããã«ããããšãã§ããŸãã ãã®ãããªå®è¡å¯èœãã¡ã€ã«ãããã¯ãšåŒã³ãŸã (ããã¯).
ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ Kubernetes ã€ãã³ãããµãã¹ã¯ã©ã€ãããå¿
èŠãªã€ãã³ãã«å¿çããŠãããã®ããã¯ãå®è¡ããŸãã
ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ã©ã®ããã¯ããã€å®è¡ããããã©ã®ããã«ããŠç¥ãã®ã§ãããã? ãã€ã³ãã¯ããã¹ãŠã®ããã¯ã XNUMX 段éããããšã§ãã èµ·åäžãã·ã§ã«ãªãã¬ãŒã¿ãŒã¯åŒæ°ãæå®ããŠãã¹ãŠã®ããã¯ãå®è¡ããŸãã --config
ããã¯æ§æ段éã§ãã ãã®åŸãããã¯ã¯éåžžã®æ¹æ³ã§ãããã¯ãæ¥ç¶ãããŠããã€ãã³ãã«å¿ããŠèµ·åãããŸãã åŸè
ã®å Žåãããã¯ã¯ãã€ã³ãã£ã³ã° ã³ã³ããã¹ã (ãã€ã³ãã£ã³ã°ã³ã³ããã¹ã) - JSON 圢åŒã®ããŒã¿ãããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸãã
Bash ã§æŒç®åãäœæãã
ããã§å®è£
ã®æºåãæŽããŸããã ãããè¡ãã«ã¯ãXNUMX ã€ã®é¢æ°ãèšè¿°ããå¿
èŠããããŸã (ã¡ãªã¿ã«ã å³æžé€š
- XNUMX ã€ç®ã¯æ§æ段éã§å¿ èŠã§ããããã¯ãã€ã³ãã£ã³ã° ã³ã³ããã¹ãã衚瀺ããŸãã
- XNUMX çªç®ã«ã¯ããã¯ã®ã¡ã€ã³ ããžãã¯ãå«ãŸããŠããŸãã
#!/bin/bash
source /shell_lib.sh
function __config__() {
cat << EOF
configVersion: v1
# BINDING CONFIGURATION
EOF
}
function __main__() {
# THE LOGIC
}
hook::run "$@"
次ã®ã¹ãããã¯ãå¿ èŠãªãªããžã§ã¯ãã決å®ããããšã§ãã ç§ãã¡ã®å Žåã以äžã远跡ããå¿ èŠããããŸãã
- å€æŽã®ãœãŒã¹ã·ãŒã¯ã¬ããã
- ã¯ã©ã¹ã¿ãŒå ã®ãã¹ãŠã®åå空éãã©ã®åå空éã«ã©ãã«ãä»ããŠããããããããŸãã
- ã¿ãŒã²ãã ã·ãŒã¯ã¬ããã䜿çšããŠããããããã¹ãŠãœãŒã¹ ã·ãŒã¯ã¬ãããšåæããŠããããšã確èªããŸãã
ç§å¯ã®ãœãŒã¹ã賌èªãã
ãã®ãã€ã³ãèšå®ã¯éåžžã«ç°¡åã§ãã Secret ã«èå³ãããããšãååã§ç€ºããŸã 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
ã芧ã®ãšãããæ§æã«æ¬¡ã®ååã®æ°ãããã£ãŒã«ãã衚瀺ãããŠããŸãã jqãã£ã«ã¿ãŒã ãã®åã®éãã jqFilter
äžèŠãªæ
å ±ããã¹ãŠé€å€ããé¢å¿ã®ãããã£ãŒã«ããå«ãæ°ãã JSON ãªããžã§ã¯ããäœæããŸãã åæ§ã®æ§æã®ããã¯ã¯ã次ã®ãã€ã³ãã£ã³ã° ã³ã³ããã¹ããåãåããŸãã
é
åãå«ãŸããŠããŸã filterResults
ã¯ã©ã¹ã¿ãŒå
ã®åå空éããšã«ã ããŒã«å€æ° hasLabel
ã©ãã«ãæå®ãããåå空éã«ã¢ã¿ãããããŠãããã©ããã瀺ããŸãã ã»ã¬ã¯ã¿ keepFullObjectsInMemory: false
å®å
šãªãªããžã§ã¯ããã¡ã¢ãªå
ã«ä¿æããå¿
èŠããªãããšã瀺ããŸãã
ã¿ãŒã²ããã·ãŒã¯ã¬ããã®è¿œè·¡
ã¢ãããŒã·ã§ã³ãæå®ããããã¹ãŠã® Secret ããµãã¹ã¯ã©ã€ãããŸã 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
ã æåŸã®ãã©ã¡ãŒã¿ã¯ãã·ãŒã¯ã¬ããã®äœææã«ã¢ãããŒã·ã§ã³ã«æž¡ãããŸãããããã«ãããã·ãŒã¯ã¬ããã®ããŒãžã§ã³ãæ¯èŒããææ°ã®ç¶æ
ã«ä¿ã€ããšãã§ããŸãã
ãã®ããã«æ§æãããããã¯ã¯ãå®è¡ããããšãäžã§èª¬æãã XNUMX ã€ã®ãã€ã³ãã£ã³ã° ã³ã³ããã¹ããåãåããŸãã ãããã¯äžçš®ã®ã¹ãããã·ã§ãããšèããããšãã§ããŸã (ã¹ãããã·ã§ããïŒ éãŸãã
ããããã¹ãŠã®æ
å ±ã«åºã¥ããŠãåºæ¬çãªã¢ã«ãŽãªãºã ãéçºã§ããŸãã ãã¹ãŠã®åå空éãå埩åŠçãã次ã®ããšãè¡ããŸãã
- å Žå
hasLabel
äºétrue
çŸåšã®åå空éã®å Žå:- ã°ããŒãã« ã·ãŒã¯ã¬ãããšããŒã«ã« ã·ãŒã¯ã¬ãããæ¯èŒããŸãã
- ããããåãã§ããå Žåãäœãè¡ãããŸããã
- ç°ãªãå Žå - å®è¡ããŸã
kubectl replace
ãŸãã¯create
;
- ã°ããŒãã« ã·ãŒã¯ã¬ãããšããŒã«ã« ã·ãŒã¯ã¬ãããæ¯èŒããŸãã
- å Žå
hasLabel
äºéfalse
çŸåšã®åå空éã®å Žå:- Secret ãæå®ãããåå空éã«ååšããªãããšã確èªããŸãã
- ããŒã«ã« ã·ãŒã¯ã¬ãããååšããå Žåã¯ã次ã䜿çšããŠåé€ããŸãã
kubectl delete
; - ããŒã«ã« ã·ãŒã¯ã¬ãããæ€åºãããªãå Žåã¯ãäœãè¡ãããŸããã
- ããŒã«ã« ã·ãŒã¯ã¬ãããååšããå Žåã¯ã次ã䜿çšããŠåé€ããŸãã
- Secret ãæå®ãããåå空éã«ååšããªãããšã確èªããŸãã
ãã®ããã«ããŠã35 è¡ã® YAML æ§æãšã»ãŒåéã® Bash ã³ãŒãã䜿çšããŠãã·ã³ãã«ãª Kubernetes ã³ã³ãããŒã©ãŒãäœæããããšãã§ããŸããã ã·ã§ã«ãªãã¬ãŒã¿ãŒã®ä»äºã¯ããããããªã³ã¯ããããšã§ãã
ãã ãããã®ãŠãŒãã£ãªãã£ã®é©çšç¯å²ã¯ã·ãŒã¯ã¬ããã®ã³ããŒã ãã§ã¯ãããŸããã 圌ã®èœåã瀺ãäŸãããã«ããã€ãæããŸãã
äŸ 1: ConfigMap ã«å€æŽãå ãã
1 ã€ã®ãããã§æ§æããããããã€ã¡ã³ããèŠãŠã¿ãŸãããã ããã㯠ConfigMap ã䜿çšããŠäžéšã®æ§æãä¿åããŸãã ããããèµ·åããããšããConfigMap ã¯ç¹å®ã®ç¶æ (v.XNUMX ãšåŒã³ãŸã) ã«ãããŸããã ãããã£ãŠããã¹ãŠã®ãããã¯ãã®ç¹å®ã®ããŒãžã§ã³ã® ConfigMap ã䜿çšããŸãã
ããã§ãConfigMap ãå€æŽããããšä»®å®ããŸã (v.2)ã ãã ãããããã¯ä»¥åã®ããŒãžã§ã³ã® ConfigMap (v.1) ã䜿çšããŸãã
æ°ãã ConfigMap (v.2) ã«åãæ¿ããã«ã¯ã©ãããã°ããã§ãã? çãã¯ç°¡åã§ãããã³ãã¬ãŒãã䜿çšããã®ã§ãã ã»ã¯ã·ã§ã³ã«ãã§ãã¯ãµã ã®æ³šéãè¿œå ããŸããã template
å±éæ§æ:
ãã®çµæããã®ãã§ãã¯ãµã ã¯ãã¹ãŠã® Pod ã«ç»é²ãããDeployment ã®ãã§ãã¯ãµã ãšåãã«ãªããŸãã ããã§ãConfigMap ãå€æŽããããšãã«æ³šéãæŽæ°ããã ãã§æžã¿ãŸãã ãã®å Žåãã·ã§ã«æŒç®åã圹ã«ç«ã¡ãŸãã å¿
èŠãªã®ã¯ããã°ã©ã ããããšã ãã§ã ConfigMap ããµãã¹ã¯ã©ã€ããããã§ãã¯ãµã ãæŽæ°ããããã¯.
ãŠãŒã¶ãŒã ConfigMap ã«å€æŽãå ãããšãã·ã§ã«ãªãã¬ãŒã¿ãŒãããã«æ°ã¥ãããã§ãã¯ãµã ãåèšç®ããŸãã ãã®åŸãKubernetes ã®éæ³ãæ©èœããŸãããªãŒã±ã¹ãã¬ãŒã¿ãŒã¯ãããã匷å¶çµäºããæ°ããããããäœæãããããããããã«ãªãã®ãåŸ
ã¡ãŸãã Ready
ã次ãžé²ã¿ãŸãã ãã®çµæãDeployment ã¯åæãããConfigMap ã®æ°ããããŒãžã§ã³ã«åãæ¿ãããŸãã
äŸ 2: ã«ã¹ã¿ã ãªãœãŒã¹å®çŸ©ã®æäœ
ãåç¥ã®ãšãããKubernetes ã§ã¯ã«ã¹ã¿ã ã¿ã€ãã®ãªããžã§ã¯ããäœæã§ããŸãã ããšãã°ãçš®é¡ãäœæã§ããŸã MysqlDatabase
ã ãã®åã« XNUMX ã€ã®ã¡ã¿ããŒã¿ ãã©ã¡ãŒã¿ãŒããããšããŸãã name
О namespace.
apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
name: foo
namespace: bar
MySQL ããŒã¿ããŒã¹ãäœæã§ãããããŸããŸãªåå空éãæ〠Kubernetes ã¯ã©ã¹ã¿ãŒããããŸãã ãã®å Žåãshell-operator ã䜿çšããŠãªãœãŒã¹ã远跡ã§ããŸãã MysqlDatabase
ããããã MySQL ãµãŒããŒã«æ¥ç¶ããã¯ã©ã¹ã¿ãŒã®æãŸããç¶æ
ãšèŠ³å¯ãããç¶æ
ãåæããŸãã
äŸ 3: ã¯ã©ã¹ã¿ãŒãããã¯ãŒã¯ã®ç£èŠ
ãåç¥ã®ãšãããping ã®äœ¿çšã¯ãããã¯ãŒã¯ãç£èŠããæãç°¡åãªæ¹æ³ã§ãã ãã®äŸã§ã¯ãshell-operator ã䜿çšããŠãã®ãããªç£èŠãå®è£ ããæ¹æ³ã瀺ããŸãã
ãŸãæåã«ãããŒãããµãã¹ã¯ã©ã€ãããå¿ èŠããããŸãã ã·ã§ã« ãªãã¬ãŒã¿ãŒã«ã¯ãåããŒãã®ååãš IP ã¢ãã¬ã¹ãå¿ èŠã§ãã 圌ãã®å©ããåããŠã圌ã¯ãããã®ããŒãã« ping ãéä¿¡ããŸãã
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 ã¢ãã¬ã¹ãååŸããping ãå®è¡ããŠãçµæã Prometheus ã«éä¿¡ããŸãã ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ã¡ããªã¯ã¹ã Prometheus ã«ãšã¯ã¹ããŒãã§ããŸããç°å¢å€æ°ã§æå®ããããã¹ã«åŸã£ãŠé
眮ããããã¡ã€ã«ã«ä¿åããŸãã $METRICS_PATH
.
ãã¥ãŒã€ã³ã°ã¡ã«ããºã
ã·ã§ã« ãªãã¬ãŒã¿ãŒã«çµã¿èŸŒãŸããŠããå¥ã®éèŠãªã¡ã«ããºã ã«ã€ããŠèª¬æããªããã°ããã®èšäºã¯äžå®å šã«ãªããŸãã ã¯ã©ã¹ã¿ãŒå ã®ã€ãã³ãã«å¿çããŠãããçš®ã®ããã¯ãå®è¡ããããšæ³åããŠãã ããã
- åæã«ã¯ã©ã¹ã¿ãŒå ã§äœããçºçããå Žåã¯ã©ããªããŸãã? ããäžã€ ã€ãã³ãïŒ
- ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ããã¯ã®å¥ã®ã€ã³ã¹ã¿ã³ã¹ãå®è¡ããŸãã?
- ããšãã°ãã¯ã©ã¹ã¿ãŒå ã§äžåºŠã« XNUMX ã€ã®ã€ãã³ããçºçããå Žåã¯ã©ããªãã§ãããã?
- ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ãããã䞊è¡ããŠåŠçããŸãã?
- ã¡ã¢ãªãCPUãªã©ã®æ¶è²»ãªãœãŒã¹ã¯ã©ããªãã§ãããã?
幞ããªããšã«ãshell-operator ã«ã¯ãã¥ãŒã€ã³ã° ã¡ã«ããºã ãçµã¿èŸŒãŸããŠããŸãã ãã¹ãŠã®ã€ãã³ãã¯ãã¥ãŒã«å ¥ããããé çªã«åŠçãããŸãã
ãããäŸãæããŠèª¬æããŸãããã ããã¯ã XNUMX ã€ãããšããŸãã æåã®ã€ãã³ãã¯æåã®ããã¯ã«é²ã¿ãŸãã åŠçãå®äºãããšããã¥ãŒã¯åã«é²ã¿ãŸãã 次㮠XNUMX ã€ã®ã€ãã³ã㯠XNUMX çªç®ã®ããã¯ã«ãªãã€ã¬ã¯ãããããã¥ãŒããåé€ãããããã³ãã«ããšããŠãã¥ãŒã«å ¥ããŸãã ãã㯠ããã¯ã¯ã€ãã³ãã®é åãåãåããŸã â ããæ£ç¢ºã«ã¯ããã€ã³ãã£ã³ã° ã³ã³ããã¹ãã®é åã§ãã
ãããã ã€ãã³ãã XNUMX ã€ã®å€§ããªã€ãã³ãã«ãŸãšããããšãã§ããã ãã©ã¡ãŒã¿ããããæ
åœããŸã group
ãã€ã³ãã£ã³ã°æ§æå
ã
ä»»æã®æ°ã®ãã¥ãŒ/ããã¯ãšãããã®ããŸããŸãªçµã¿åãããäœæã§ããŸãã ããšãã°ãXNUMX ã€ã®ãã¥ãŒã XNUMX ã€ã®ããã¯ã§æ©èœããããšãããã®éãåæ§ã§ãã
å¿
èŠãªã®ã¯ãããã«å¿ããŠãã£ãŒã«ããèšå®ããããšã ãã§ã queue
ãã€ã³ãã£ã³ã°æ§æå
ã ãã¥ãŒåãæå®ãããŠããªãå Žåãããã¯ã¯ããã©ã«ãã®ãã¥ãŒã§å®è¡ãããŸã (default
ïŒã ãã®ãã¥ãŒã€ã³ã° ã¡ã«ããºã ã«ãããããã¯ã䜿çšããéã®ãªãœãŒã¹ç®¡çã®åé¡ããã¹ãŠå®å
šã«è§£æ±ºã§ããŸãã
ãŸãšã
ã·ã§ã« ãªãã¬ãŒã¿ãŒãšã¯äœãã説æããããã䜿çšã㊠Kubernetes ãªãã¬ãŒã¿ãŒãè¿ éãã€ç°¡åã«äœæããæ¹æ³ã瀺ãããã®äœ¿çšäŸãããã€ã瀺ããŸããã
ã·ã§ã« ãªãã¬ãŒã¿ãŒã®è©³çŽ°æ
å ±ãšãã®äœ¿çšæ¹æ³ã«é¢ããç°¡åãªãã¥ãŒããªã¢ã«ã¯ã察å¿ããããã¥ã¡ã³ãã§åç
§ã§ããŸãã
æ°ã«å
¥ã£ãŠããã ããŸããããGitHub ã§æ°ããå·/PR/ã¹ã¿ãŒããã€ã§ãåãã§æèŠãããŠããã ããŸãããšããã§ãä»ã®å·ãèŠã€ããããšãã§ããŸãã
ãããªãšã¹ã©ã€ã
ããã©ãŒãã³ã¹ã®ãã㪠(çŽ 23 å):
å ±åæžã®ãã¬ãŒã³ããŒã·ã§ã³:
PS
ç§ãã¡ã®ããã°ããèªã¿ãã ãã:
- «
Shell-Operator ã䜿çšãã Kubernetes ãªãã¬ãŒã¿ãŒã®ç°¡åãªäœæ: 幎éã®ãããžã§ã¯ãã®é²æç¶æ³ "; - «
ã·ã§ã« ãªãã¬ãŒã¿ãŒã®çŽ¹ä»: Kubernetes ã®ãªãã¬ãŒã¿ãŒã®äœæãããã«ç°¡åã«ãªããŸãã "; - «
Kubernetes ã¯ã©ã¹ã¿ãŒãæºåããã®ã¯ç°¡åã§äŸ¿å©ã§ãã? ã¢ããªã³ãªãã¬ãŒã¿ãŒã®çºè¡š "; - «
Kubernetes ã®æ¡åŒµãšè£å®ãïŒã¬ãã¥ãŒãšãããªã¬ããŒãïŒ .
åºæïŒ habr.com