ãã®èšäºã¯ãè¬æŒã«è§ŠçºãããŠãKubernetesã®æŒç®åãäœæããããã»ã¹ãç°¡çŽ åããã¢ãããŒãã瀺ããæå°éã®åŽåã§ã·ã§ã«æŒç®åã䜿çšããŠç¬èªã®æŒç®åãäœæããæ¹æ³ã瀺ããŸããã¬ããŒãïŒè±èªã§çŽ23åãèšäºãããã¯ããã«æçïŒãšãã®äž»èŠãªæç²ãããã¹ã圢åŒã§ãããªã«
æ瀺ããŸããè¡ãïŒ
Flantã§ã¯ãåžžã«ãã¹ãŠãæé©åããã³èªååããŸããä»æ¥ã¯å¥ã®ãšããµã€ãã£ã³ã°ãªã³ã³ã»ããã«ã€ããŠã話ããŸããããŒãã¯ã©ãŠããã€ãã£ãã®ã·ã§ã«ã¹ã¯ãªããïŒ
ãã ããããããã¹ãŠçºçããŠããç¶æ³ãã€ãŸãKubernetesããå§ããŸãããã
KubernetesAPIãšã³ã³ãããŒã©ãŒ
Kubernetesã®APIã¯ããªããžã§ã¯ãã®ã¿ã€ãããšã«ãã£ã¬ã¯ããªãæã€äžçš®ã®ãã¡ã€ã«ãµãŒããŒãšããŠè¡šãããšãã§ããŸãããã®ãµãŒããŒäžã®ãªããžã§ã¯ãïŒãªãœãŒã¹ïŒã¯ãYAMLãã¡ã€ã«ã§è¡šãããŸããããã«ããµãŒããŒã«ã¯3ã€ã®ããšãè¡ãããã®åºæ¬çãªAPIããããŸãã
- ãã®çš®é¡ãšååã§ãªãœãŒã¹ãååŸããŸãã
- ãªãœãŒã¹ãå€æŽããŸãïŒãã®å ŽåããµãŒããŒã¯ãæ£ããããªããžã§ã¯ãã®ã¿ãæ ŒçŽããŸãã誀ã£ãŠåœ¢æãããããŸãã¯ä»ã®ãã£ã¬ã¯ããªã察象ãšãããã®ã¯ãã¹ãŠç Žæ£ãããŸãïŒã
- ( / ).
ãããã£ãŠãKubernetesã¯ã3ã€ã®åºæ¬çãªæ¹æ³ïŒã¯ããå®éã«ã¯ä»ã«ããããŸãããããã§ã¯çç¥ããŸãïŒãåããäžçš®ã®ãã¡ã€ã«ãµãŒããŒïŒYAMLãããã§ã¹ãçšïŒãšããŠæ©èœããŸãã
åé¡ã¯ããµãŒããŒãä¿åã§ããã®ã¯æ å ±ã ãã§ãããšããããšã§ãããããæ©èœãããã«ã¯ãã³ã³ãããŒã©ãŒãå¿ èŠã§ããããã¯ãKubernetesã®äžçã§2çªç®ã«éèŠã§åºæ¬çãªæŠå¿µã§ãã
ã³ã³ãããŒã©ã«ã¯äž»ã«2ã€ã®ã¿ã€ãããããŸãã 1ã€ç®ã¯ãKubernetesããæ å ±ãååŸãããã¹ããããããžãã¯ã«åŸã£ãŠåŠçããŠãK8ã«è¿ããŸãã 2ã€ç®ã¯ãKubernetesããæ å ±ãååŸããŸããã1ã€ç®ãšã¯ç°ãªããäžéšã®å€éšãªãœãŒã¹ã®ç¶æ ãå€æŽããŸãã
Kubernetesã§ãããã€ã¡ã³ããäœæããããã»ã¹ã詳ããèŠãŠã¿ãŸãããã
- Deployment ControllerïŒã«å«ãŸããŠããŸã
kube-controller-manager
ïŒã¯ãDeploymentã«é¢ããæ å ±ãåãåããReplicaSetãäœæããŸãã - ReplicaSetã¯ããã®æ å ±ã«åºã¥ããŠ2ã€ã®ã¬ããªã«ïŒ2ã€ã®ãããïŒãäœæããŸããããããã®ãããã¯ãŸã ã¹ã±ãžã¥ãŒã«ãããŠããŸããã
- ã¹ã±ãžã¥ãŒã©ãŒã¯ããããã¹ã±ãžã¥ãŒã«ããããŒãæ å ±ãYAMLã«è¿œå ããŸãã
- Kubeletsã¯ãå€éšãªãœãŒã¹ïŒDockerãªã©ïŒã«å€æŽãå ããŸãã
次ã«ããã®ã·ãŒã±ã³ã¹å šäœãéã®é åºã§ç¹°ãè¿ãããŸããkubeletã¯ã³ã³ãããŒããã§ãã¯ãããããã®ã¹ããŒã¿ã¹ãèšç®ããŠããããéãè¿ããŸããReplicaSetã³ã³ãããŒã©ãŒã¯ã¹ããŒã¿ã¹ãååŸããã¬ããªã«ã»ããã®ã¹ããŒã¿ã¹ãæŽæ°ããŸããåãããšãDeploymentControllerã§ãçºçãããŠãŒã¶ãŒã¯æçµçã«æŽæ°ãããïŒçŸåšã®ïŒã¹ããŒã¿ã¹ãååŸããŸãã
ã·ã§ã«ãªãã¬ãŒã¿ãŒ
Kubernetesã¯ããŸããŸãªã³ã³ãããŒã©ãŒã®ã³ã©ãã¬ãŒã·ã§ã³ã«åºã¥ããŠããããšãããããŸããïŒKubernetesãªãã¬ãŒã¿ãŒã¯ã³ã³ãããŒã©ãŒã§ããããŸãïŒãæå°éã®åŽåã§ç¬èªã®ãªãã¬ãŒã¿ãŒãäœæããã«ã¯ã©ãããã°ããããšããçåãçããŸãããããŠãããã§ç§ãã¡ãéçºããã·ã§ã«ãªãã¬ãŒã¿ãŒãå©ãã«ãªããŸããããã«ãããã·ã¹ãã 管çè ã¯äœ¿ãæ £ããæ¹æ³ã䜿çšããŠç¬èªã®ã¹ããŒãã¡ã³ããäœæã§ããŸãã
ç°¡åãªäŸïŒç§å¯ãã³ããŒãã
ç°¡åãªäŸãèŠãŠã¿ãŸãããã
Kubernetesã¯ã©ã¹ã¿ãŒããããšããŸãããã
default
ããã€ãã®ç§å¯ãæã€åååããããŸãmysecret
ãããã«ãã¯ã©ã¹ã¿ãŒã«ã¯ä»ã®åååããããŸãããããã®ããã€ãã«ã¯ç¹å®ã®ã©ãã«ã貌ãããŠããŸããç§ãã¡ã®ç®æšã¯ãã·ãŒã¯ã¬ãããã©ãã«ä»ãã®åå空éã«ã³ããŒããããšã§ãã
æ°ããåååãã¯ã©ã¹ã¿ãŒã«è¡šç€ºãããå¯èœæ§ãããããããã®äžéšã«ãã®ã©ãã«ãä»ããŠããå¯èœæ§ããããããã¿ã¹ã¯ã¯è€éã«ãªããŸããäžæ¹ãã©ãã«ãåé€ããå Žåã¯ãã·ãŒã¯ã¬ãããåé€ããå¿ èŠããããŸãããã¹ãŠã«å ããŠãã·ãŒã¯ã¬ããèªäœãå€æŽã§ããŸãããã®å Žåãæ°ããã·ãŒã¯ã¬ãããã©ãã«ä»ãã®ãã¹ãŠã®åååã«ã³ããŒããå¿ èŠããããŸããã·ãŒã¯ã¬ããã誀ã£ãŠåååã§åé€ãããå Žåããªãã¬ãŒã¿ãŒã¯ããã«ããã埩å ããå¿ èŠããããŸãã
ã¿ã¹ã¯ãå®åŒåãããã®ã§ãã·ã§ã«ãªãã¬ãŒã¿ãŒã䜿çšããŠã¿ã¹ã¯ã®å®è£ ãéå§ããŸããããããæåã«ãã·ã§ã«ãªãã¬ãŒã¿ãŒèªäœã«ã€ããŠããã€ãã®åèªãèšã䟡å€ããããŸãã
ã·ã§ã«ãªãã¬ãŒã¿ãŒã®ããã¿
Kubernetesã®ä»ã®ã¯ãŒã¯ããŒããšåæ§ã«ãã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ãããå ã§å®è¡ãããŸãããã®ãããã«
/hooks
ã¯ããã£ã¬ã¯ããªå
ã®å®è¡å¯èœãã¡ã€ã«ãå«ãŸããŠããŸãããããã¯ãBashãPythonãRubyãªã©ã®ã¹ã¯ãªããã«ããããšãã§ããŸãããããã®å®è¡å¯èœãã¡ã€ã«ãããã¯ãšåŒã³ãŸãã
Shell-operatorã¯ãKubernetesã€ãã³ãããµãã¹ã¯ã©ã€ãããå¿ èŠãªã€ãã³ãã«å¿çããŠãããã®ããã¯ãèµ·åããŸãã
ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ãã©ã®ããã¯ããã€å®è¡ããããã©ã®ããã«ç¥ãã®ã§ããïŒéèŠãªã®ã¯ãåããã¯ã«ã¯2ã€ã®ã¹ããŒãžããããšããããšã§ããèµ·åæã«ãã·ã§ã«ãªãã¬ãŒã¿ãŒã¯åŒæ°ã䜿çšããŠãã¹ãŠã®ããã¯ãå®è¡
--config
ããŸãããããæ§æ段éã§ãããã®åŸãããã¯ã¯éåžžã®æ¹æ³ã§èµ·åãããŸã-ããã¯ãæ¥ç¶ãããŠããã€ãã³ãã«å¿çããŸããåŸè
ã®å Žåãããã¯ã¯ãã€ã³ãã£ã³ã°ã³ã³ããã¹ããåãåããŸãïŒ-JSON圢åŒã®ããŒã¿ãããã«ã€ããŠã¯ä»¥äžã§è©³ãã説æããŸãã
Bashã§ãªãã¬ãŒã¿ãŒãäœæãã
ããã§ãå®è£ ã®æºåãæŽããŸããããããè¡ãã«ã¯ã2ã€ã®é¢æ°ãäœæããå¿ èŠããããŸãïŒã¡ãªã¿ã«ãBashã§ã®ããã¯ã®äœæãå€§å¹ ã«ç°¡çŽ åããshell_libã©ã€ãã©ãªããå§ãããŸãïŒã
- æåã¯æ§æ段éã§å¿ èŠã§ã-ãã€ã³ãã£ã³ã°ã³ã³ããã¹ãã衚瀺ããŸãã
- 2çªç®ã«ã¯ãããã¯ã®ã¡ã€ã³ããžãã¯ãå«ãŸããŠããŸãã
#!/bin/bash
source /shell_lib.sh
function __config__() {
cat << EOF
configVersion: v1
# BINDING CONFIGURATION
EOF
}
function __main__() {
# THE LOGIC
}
hook::run "$@"
次ã®ã¹ãããã¯ãå¿ èŠãªãªããžã§ã¯ãã決å®ããããšã§ãããã®å Žåã以äžã远跡ããå¿ èŠããããŸãã
- å€æŽã®ç§å¯ã®ãœãŒã¹ã
- ã¯ã©ã¹ã¿å ã®ãã¹ãŠã®ååä»ããããã«ãããã©ãã«ãã©ã®ååä»ãã«æ·»ä»ãããŠããããããããŸãã
- ã·ãŒã¯ã¬ãããã¿ãŒã²ããã«ããŠããã¹ãŠããœãŒã¹ã·ãŒã¯ã¬ãããšåæããŠããããšã確èªããŸãã
ç§å¯ã®æ å ±æºã賌èªãã
ãã€ã³ãã£ã³ã°æ§æã¯åœŒã«ãšã£ãŠååã«åçŽã§ããååå
mysecret
ã«ååãä»ããŠSecretã«é¢å¿ãããããšã瀺ããŸã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
ãã·ãŒã¯ã¬ããã®äœææã«æåŸã®ãã©ã¡ãŒã¿ãŒãã¢ãããŒã·ã§ã³ã«æž¡ãããŸãããããã«ãããã·ãŒã¯ã¬ããã®ããŒãžã§ã³ãæ¯èŒããŠææ°ã®ç¶æ
ã«ä¿ã€ããšãã§ããŸãã
ãã®ããã«æ§æãããããã¯ã¯ãå®è¡æã«äžèšã®3ã€ã®ãã€ã³ãã£ã³ã°ã³ã³ããã¹ããåãåããŸããããããã¯ã©ã¹ã¿ãŒã®äžçš®ã®ã¹ãããã·ã§ãããšèããŠãã ããã
ãã®ãã¹ãŠã®æ å ±ã«åºã¥ããŠãåºæ¬çãªã¢ã«ãŽãªãºã ãéçºã§ããŸãããã¹ãŠã®åååãç¹°ãè¿ãã次ã®ããšãè¡ããŸãã
- çŸåšã®åååã«
hasLabel
é¢é£ããå Žåtrue
ïŒ- ã°ããŒãã«ã·ãŒã¯ã¬ãããããŒã«ã«ã·ãŒã¯ã¬ãããšæ¯èŒããŸãã
- ããããåãã§ããå Žåãããã¯äœãããŸããã
- ããããç°ãªãå Žåã¯ãå®è¡
kubectl replace
ãŸãã¯create
;
- ã°ããŒãã«ã·ãŒã¯ã¬ãããããŒã«ã«ã·ãŒã¯ã¬ãããšæ¯èŒããŸãã
- çŸåšã®åååã«
hasLabel
é¢é£ããå Žåfalse
ïŒ
- ã·ãŒã¯ã¬ãããæå®ãããåååã«ãªãããšã確èªããŸãã
- ããŒã«ã«ã·ãŒã¯ã¬ãããååšããå Žåã¯ã
kubectl delete
;ã䜿çšããŠåé€ããŸãã - ããŒã«ã«ã·ãŒã¯ã¬ãããèŠã€ãããªãå Žåã¯ãäœãããŸããã
- ããŒã«ã«ã·ãŒã¯ã¬ãããååšããå Žåã¯ã
- ã·ãŒã¯ã¬ãããæå®ãããåååã«ãªãããšã確èªããŸãã
äŸã䜿çšããŠããªããžããªã®Bashã«ã¢ã«ãŽãªãºã ã®å®è£ ãããŠã³ããŒãã§ããŸãã
ããã«ããã35è¡ã®YAMLæ§æãšã»ãŒåãéã®Bashã³ãŒãã䜿çšããŠãåçŽãªKubernetesã³ã³ãããŒã©ãŒãäœæã§ããŸãããã·ã§ã«ãªãã¬ãŒã¿ãŒã®ä»äºã¯ãããããã€ãªãåãããããšã§ãã
ãã ããç§å¯ãã³ããŒããããšã¯ããŠãŒãã£ãªãã£ã®ã¢ããªã±ãŒã·ã§ã³ã®å¯äžã®é åã§ã¯ãããŸããã圌ã®èœåã瀺ãããã«ãããã«ããã€ãã®äŸã瀺ããŸãã
äŸ1ïŒConfigMapã«å€æŽãå ãã
3ãããã®å±éãèŠãŠã¿ãŸãããããããã¯ConfigMapã䜿çšããŠããã€ãã®æ§æãä¿åããŸããããããèµ·åããããšããConfigMapã¯ããç¶æ ã§ããïŒv.1ãšåŒã³ãŸãããïŒããããã£ãŠããã¹ãŠã®ãããã¯ãã®ç¹å®ã®ããŒãžã§ã³ã®ConfigMapã䜿çšããŸãã
ããã§ãConfigMapãå€æŽããããšããŸãïŒv.2ïŒããã ãããããã¯å€ãããŒãžã§ã³ã®ConfigMapïŒv.1ïŒã䜿çšããŸãããããã
æ°ããConfigMapïŒv.2ïŒã«ç§»è¡ããã«ã¯ã©ãããã°ããã§ããïŒçãã¯ç°¡åã§ãããã³ãã¬ãŒãã䜿çšããŠãã ããã
template
ãããã€ã¡ã³ãæ§æã»ã¯ã·ã§ã³ã«ãã§ãã¯ãµã 泚éãè¿œå ããŸãããïŒ
ãã®çµæããã®ãã§ãã¯ãµã ã¯ãã¹ãŠã®ãããã«ç»é²ãããå±éã®å Žåãšåãã«ãªããŸããããã§ãConfigMapãå€æŽããããšãã«ã¢ãããŒã·ã§ã³ãæŽæ°ããå¿ èŠããããŸãããã®å Žåãã·ã§ã«ãªãã¬ãŒã¿ãŒã䟿å©ã§ããããªããããå¿ èŠãããã®ã¯ãConfigMapã«ãµãã¹ã¯ã©ã€ãããŠãã§ãã¯ãµã ãæŽæ°ããããã¯ãããã°ã©ã ããããšã§ãã
ãŠãŒã¶ãŒãConfigMapã«å€æŽãå ãããšãã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ãããã«æ°ã¥ãããã§ãã¯ãµã ãåèšç®ããŸãã次ã«ãKubernetesã®éæ³ãäœçšããŸãããªãŒã±ã¹ãã¬ãŒã¿ãŒã¯ãããã殺ããæ°ããããããäœæããããããã«ãªãã®ãåŸ ã£
Ready
ãŠã次ã®ãããã«ç§»åããŸãããã®çµæãDeploymentã¯åæãããæ°ããããŒãžã§ã³ã®ConfigMapã«ç§»è¡ãããŸãã
äŸ2ïŒã«ã¹ã¿ã ãªãœãŒã¹å®çŸ©ã®æäœ
ãåç¥ã®ããã«ãKubernetesã§ã¯ã«ã¹ã¿ã ã¿ã€ãïŒçš®é¡ïŒã®ãªããžã§ã¯ããäœæã§ããŸããããšãã°ãkindãäœæã§ããŸã
MysqlDatabase
ããã®ã¿ã€ãã«2ã€ã®ã¡ã¿ããŒã¿ãã©ã¡ãŒã¿ããããšããŸãããïŒname
ãšnamespace.
apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
name: foo
namespace: bar
MySQLããŒã¿ããŒã¹ãäœæã§ããããŸããŸãªååã®Kubernetesã¯ã©ã¹ã¿ãŒããããŸãããã®å Žåãshell-operatorã䜿çšããŠ
MysqlDatabase
ããªãœãŒã¹ã远跡ããããããMySQLãµãŒããŒã«æ¥ç¶ããŠãã¯ã©ã¹ã¿ãŒã®æãŸããç¶æ
ãšç£èŠãããç¶æ
ãåæãããããšãã§ããŸãã
äŸ3ïŒã¯ã©ã¹ã¿ãŒãããã¯ãŒã¯ã®ç£èŠ
ãåç¥ã®ããã«ãpingã䜿çšããã®ããããã¯ãŒã¯ãç£èŠããæãç°¡åãªæ¹æ³ã§ãããã®äŸã§ã¯ãã·ã§ã«æŒç®åã䜿çšããŠãã®ãããªç£èŠãå®è£ ããæ¹æ³ã瀺ããŸãã
ãŸããããŒãã«ãµãã¹ã¯ã©ã€ãããå¿ èŠããããŸããã·ã§ã«ãªãã¬ãŒã¿ãŒã«ã¯ãåããŒãã®ååãš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ã«éä¿¡ããŸããShell-operatorã¯ãã¡ããªãã¯ãPrometheusã«ãšã¯ã¹ããŒãããŠãç°å¢å€æ°ã§æå®ããããã¹ã«åŸã£ãŠé 眮ããããã¡ã€ã«ã«ä¿åã§ããŸã
$METRICS_PATH
ã
ããã¯ãã¯ã©ã¹ã¿ãŒå ã®åçŽãªãããã¯ãŒã¯ç£èŠã®ããã®ãªãã¬ãŒã¿ãŒãå®è¡ããæ¹æ³ã§ãã
ãã¥ãŒã¡ã«ããºã
ãã®èšäºã¯ãã·ã§ã«æŒç®åã«çµã¿èŸŒãŸããŠããå¥ã®éèŠãªã¡ã«ããºã ã«ã€ããŠèª¬æããªããšäžå®å šã§ããã¯ã©ã¹ã¿ãŒå ã®ã€ãã³ãã«å¿çããŠããã¯ãå®è¡ãããšããŸãã
- ã¯ã©ã¹ã¿ãŒå ã§åæã«å¥ã®ã€ãã³ããçºçããå Žåã¯ã©ããªããŸããïŒ
- ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ããã¯ã®å¥ã®ã€ã³ã¹ã¿ã³ã¹ãéå§ããŸããïŒ
- ããããããšãã°ãã¯ã©ã¹ã¿ãŒå ã§5ã€ã®ã€ãã³ããããã«çºçããå Žåã¯ã©ããªãã§ããããã
- ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ãããã䞊è¡ããŠåŠçããŸããïŒ
- ã¡ã¢ãªãCPUãªã©ã®æ¶è²»ããããªãœãŒã¹ã¯ã©ãã§ããïŒ
幞ããã·ã§ã«ãªãã¬ãŒã¿ãŒã«ã¯ãã¥ãŒã€ã³ã°ã¡ã«ããºã ãçµã¿èŸŒãŸããŠããŸãããã¹ãŠã®ã€ãã³ãã¯ãã¥ãŒã«å ¥ããããé çªã«åŠçãããŸãã
ãããäŸã§èª¬æããŸãããã2ã€ã®ããã¯ããããšããŸããããæåã®ã€ãã³ãã¯æåã®ããã¯ã«è¡ããŸããåŠçãå®äºãããšããã¥ãŒãé²ã¿ãŸãã次ã®3ã€ã®ã€ãã³ãã¯ã2çªç®ã®ããã¯ã«ãªãã€ã¬ã¯ããããŸãããããã¯ãã¥ãŒããåé€ããããããããã§ãã¥ãŒã«éãããŸããã€ãŸããããã¯ã¯ã€ãã³ãã®é åãããæ£ç¢ºã«ã¯ãã€ã³ãã£ã³ã°ã³ã³ããã¹ãã®é åãåãåããŸãã
ãŸãããããã®ã€ãã³ãã1ã€ã®å€§ããªã€ãã³ãã«çµã¿åãããããšãã§ããŸãã
group
ãã€ã³ãã£ã³ã°æ§æã®ãã©ã¡ãŒã¿ãŒããããæ
åœããŸãã
ãã¥ãŒ/ããã¯ãšãããã®ããŸããŸãªçµã¿åãããããã€ã§ãäœæã§ããŸããããšãã°ã1ã€ã®ãã¥ãŒã2ã€ã®ããã¯ã§æ©èœããããšãããã®éãå¯èœã§ãã
ããªããããå¿ èŠãããã®ã¯
queue
ããã€ã³ãã£ã³ã°æ§æã§ããã«å¿ããŠãã£ãŒã«ãã調æŽããããšã§ãããã¥ãŒåãæå®ãããŠããªãå Žåãããã¯ã¯ããã©ã«ãã®ãã¥ãŒïŒdefault
ïŒã§å®è¡ãããŸãããã®ãã¥ãŒã€ã³ã°ã¡ã«ããºã ã«ãããããã¯ãæäœããéã®ãã¹ãŠã®ãªãœãŒã¹ç®¡çã®åé¡ãå®å
šã«è§£æ±ºã§ããŸãã
çµè«
ã·ã§ã«ãªãã¬ãŒã¿ãŒãšã¯äœãã«ã€ããŠè©±ããKubernetesãªãã¬ãŒã¿ãŒããã°ããç°¡åã«äœæããããã«ã©ã®ããã«äœ¿çšã§ãããã瀺ãããã®äœ¿çšäŸãããã€ã瀺ããŸããã
ã·ã§ã«ãªãã¬ãŒã¿ãŒã«é¢ãã詳现æ å ±ãããã³ããã䜿çšããããã®ã¯ã€ãã¯ã¬ã€ãã¯ãGitHubã®å¯Ÿå¿ãããªããžããªã§å ¥æã§ããŸãããäžæãªç¹ãããããŸãããããæ°è»œã«ãåãåãããã ãããç¹å¥ãªãã¬ã°ã©ã ã°ã«ãŒãïŒãã·ã¢èªïŒãŸãã¯ãã®ãã©ãŒã©ã ïŒè±èªïŒã§è©±ãåãããšãã§ããŸãã
ãããŠãããªããããã奜ããªããç§ãã¡ã¯åžžã«GitHubã®æ°ããåé¡/ PR /ã¹ã¿ãŒã«åãã§ããŸãããšããã§ãããªãã¯ä»ã®èå³æ·±ããããžã§ã¯ããèŠã€ããããšãã§ããŸãããã®äžã§ãã·ã§ã«ãªãã¬ãŒã¿ãŒã®å ã§ããã¢ããªã³ãªãã¬ãŒã¿ãŒã匷調ãã䟡å€ããããŸã..ããã®ãŠãŒãã£ãªãã£ã¯ãHelmãã£ãŒãã䜿çšããŠã¢ããªã³ãã€ã³ã¹ããŒã«ããæŽæ°ãé ä¿¡ããŠããŸããŸãªãã£ãŒããã©ã¡ãŒã¿/å€ãç£èŠãããã£ãŒãã®ã€ã³ã¹ããŒã«ããã»ã¹ãå¶åŸ¡ããã¯ã©ã¹ã¿å ã®ã€ãã³ãã«å¿ããŠããããå€æŽããããšãã§ããŸãã
ãããªãšã¹ã©ã€ã
ããã©ãŒãã³ã¹ã®ãããªïŒã23åïŒïŒ
ã¬ããŒãã®æ瀺ïŒ
PS
ç§ãã¡ã®ããã°ãèªãã§ãã ããïŒ
- "ã·ã§ã«æŒç®åã䜿çšããKubernetesæŒç®åã®ç°¡åãªäœæïŒ1幎ã§ã®ãããžã§ã¯ãã®é²æç¶æ³";
- ãã·ã§ã«ãªãã¬ãŒã¿ãŒã®çŽ¹ä»ïŒKubernetesã®ãªãã¬ãŒã¿ãŒã®äœæãç°¡åã«ãªããŸããã;
- ãKubernetesã¯ã©ã¹ã¿ãŒãæºåããã®ã¯ç°¡åã§äŸ¿å©ã§ããïŒã¢ããªã³ãªãã¬ãŒã¿ãŒãçºè¡šããŸã ";
- ãKubernetesã®æ¡åŒµãšè£å®ãïŒã¬ããŒãã®ã¬ãã¥ãŒãšãããªïŒã