8æXNUMXæ¥ã®ã«ã³ãã¡ã¬ã³ã¹ã«ãŠ
äŒçµ±ã«åŸã£ãŠãç§ãã¡ã¯åãã§ã玹ä»ããŸã
K8s ã®ã³ã¢ãšè¿œå æ©èœ
Kubernetes ã¯ãæ¥çãšé·å¹Žç¢ºç«ãããŠãã管çã®ã¢ãããŒããå€ããŠããŸãã
- 圌ã«æè¬ããŸã æœè±¡åã§ã¯ãæ§æã®ã»ããã¢ãããã³ãã³ã (ChefãAnsible ãªã©) ã®å®è¡ãªã©ã®æŠå¿µã䜿çšããŠéçšããã®ã§ã¯ãªããã³ã³ãããŒããµãŒãã¹ãªã©ã®ã°ã«ãŒãåã䜿çšããŸãã
- ãã¥ã¢ã³ã¹ãèããã«ç³è«æžãäœæã§ããŸãã ç¹å®ã®ãµã€ãããã¢ã¡ã¿ã«ããããã€ããŒã®ããããã®ã¯ã©ãŠããªã©ã§èµ·åãããŸãã
- K8s ã䜿çšãããšããã€ãŠãªãã»ã©ã¢ã¯ã»ã¹ãããããªããŸã ãã¹ããã©ã¯ãã£ã¹ ã€ã³ãã©ã¹ãã©ã¯ãã£ã®çµç¹åã«ã€ããŠ: ã¹ã±ãŒãªã³ã°æè¡ãèªå·±ä¿®åŸ©ãèé害æ§ãªã©ã
ãã ãããã¡ããããã¹ãŠãããã»ã©ã¹ã ãŒãºã«é²ãã ããã§ã¯ãããŸãããKubernetes ã«ã¯ãç¬èªã®æ°ããªèª²é¡ããããããŸããã
Kubernetes ããŒ å šãŠã®ãŠãŒã¶ãŒã®æ©ã¿ã解決ããã³ã³ãã€ã³ã§ãã ã³ã¢ Kubernetes ã¯ãKubernetes ã«ååšããæå°éå¿ èŠãªæ©èœã®ã»ããã®ã¿ãæ åœããŸãã ãããã éãŸãïŒ
Kubernetes ã³ã¢ã¯ãã³ã³ãããŒã®ã°ã«ãŒãåããã©ãã£ãã¯ã®ç®¡çãªã©ã®ããã®åºæ¬çãªããªããã£ã ã»ãããå®çŸ©ããŸãã ãããã«ã€ããŠè©³ããã¯ã
äžæ¹ã§ãK8s ã¯å©çšå¯èœãªæ©èœãæ¡åŒµããçŽ æŽãããæ©äŒãæäŸããä»ã®æ©èœãéããã®ã«åœ¹ç«ã¡ãŸãã ç¹å®ã® â ãŠãŒã¶ãŒã®ããŒãºã Kubernetes ãžã®è¿œå ã¯ã¯ã©ã¹ã¿ãŒç®¡çè ã®è²¬ä»»ã§ããã[ç¹å®ã®åé¡ã解決ããããã«] ã¯ã©ã¹ã¿ãŒããé©åãªç¶æ ãã«ããããã«å¿ èŠãªãã®ãã¹ãŠãã€ã³ã¹ããŒã«ããŠæ§æããå¿ èŠããããŸãã ãããã¯ã©ã®ãããªè¿œå ã§ãã? ããã€ãã®äŸãèŠãŠã¿ãŸãããã
ã¢ããªã³ã®äŸ
Kubernetes ãã€ã³ã¹ããŒã«ãããšãããŒãå
ããã³ããŒââãéã®ãããã®çžäºäœçšã«éåžžã«å¿
èŠãªãããã¯ãŒã¯ãåç¬ã§ã¯æ©èœããªãããšã«é©ããããããŸããã Kubernetes ã«ãŒãã«ã¯å¿
èŠãªæ¥ç¶ãä¿èšŒããã®ã§ã¯ãªãããããã¯ãŒã¯ã決å®ããŸãã ОМÑеÑÑÐµÐ¹Ñ (
è¿ãäŸã¯ãããŒã¿ ã¹ãã¬ãŒãž ãœãªã¥ãŒã·ã§ã³ (ããŒã«ã« ãã£ã¹ã¯ããããã¯ãŒã¯ ããã㯠ããã€ã¹ãCeph...) ã§ãã åœåã圌ãã¯ã³ã¢ã«ããããåºçŸãšãšãã«
ä»ã®äŸãšããŠã¯æ¬¡ã®ãããªãã®ããããŸãã
- é²å
¥-ã³ã³ãããŒã©ãŒ (圌ãã®ã¬ãã¥ãŒãåç
§ããŠãã ãã)
ç§ãã¡ã®æè¿ã®èšäº ). -
蚌ææžãããŒãžã£ãŒ : -
æŒç®å ããã¯ã¢ããªã³ã®ã¯ã©ã¹å šäœ (åè¿°ã® cert-manager ãå«ã) ã§ãããããªããã£ããšã³ã³ãããŒã©ãŒãå®çŸ©ããŸãã ãããã®äœæ¥ããžãã¯ã¯ç§ãã¡ã®æ³ååã«ãã£ãŠã®ã¿å¶éãããæ¢è£œã®ã€ã³ãã©ã¹ãã©ã¯ã㣠ã³ã³ããŒãã³ã (DBMS ãªã©) ãããªããã£ãã«å€æããããšãã§ããŸããããã«ããã(äžé£ã®ã³ã³ãããŒãšãã®èšå®ã䜿çšããããã) ã¯ããã«ç°¡åã«äœæ¥ã§ããŸãã èšå€§ãªæ°ã®ãªãã¬ãŒã¿ãŒãäœæãããŠããŸããããšããã®å€ãããŸã å®çšŒåã®æºåãã§ããŠããªããšããŠããããã¯æéã®åé¡ã§ãã - ã¡ããªã¯ã¹ - Kubernetes ãã€ã³ã¿ãŒãã§ã€ã¹ (ã¡ããªã¯ã¹ API) ãå®è£ (Prometheus ã¢ããã¿ãŒãDatadog ã¯ã©ã¹ã¿ãŒ ãšãŒãžã§ã³ããªã©ã®ãµãŒãããŒã㣠ã¢ããªã³ãªã©) ããã©ã®ããã«åé¢ãããã瀺ãå¥ã®å³ã
- ã®ããã« ç£èŠãšçµ±èšãå®éã«å¿
èŠãªã ãã§ãªãã
ããã¡ããŠã¹ãšã°ã©ãã¡ã ã ãã§ãªããkube-state-metricsãnode-exporter ãªã©ãå«ãŸããŸãã
ãããŠãããã¯è¿œå æ©èœã®å®å šãªãªã¹ãã§ã¯ãããŸãã...ããšãã°ãçŸåšç§ãã¡ãèšçœ®ããŠããFlant瀟ã§ã¯ 29 åã®ã¢ããªã³ (ãããã¯ãã¹ãŠãåèš 249 åã® Kubernetes ãªããžã§ã¯ããäœæããŸã)ã ç°¡åã«èšãã°ãè¿œå ãè¡ããªããã°ã¯ã©ã¹ã¿ãŒã®å¯¿åœã確èªããããšã¯ã§ããŸããã
ãªãŒãã¡ãŒã·ã§ã³
Operator ã¯ãç§ãã¡ãæ¯æ¥ééããæ¥åžžçãªæäœãèªååããããã«èšèšãããŠããŸãã æŒç®åãäœæããããšãåªãã解決çãšãªãå®éã®äŸã次ã«ç€ºããŸãã
- ã¢ããªã±ãŒã·ã§ã³ã®ã€ã¡ãŒãžãå«ããã©ã€ããŒã (ãã°ã€ã³ãå¿ èŠãª) ã¬ãžã¹ããªããããŸãã åãããã«ã¯ãã¬ãžã¹ããªã§ã®èªèšŒãå¯èœã«ããç¹å¥ãªã·ãŒã¯ã¬ãããå²ãåœãŠãããŠãããšæ³å®ãããŸãã ç§ãã¡ã®ã¿ã¹ã¯ã¯ãããããã€ã¡ãŒãžãããŠã³ããŒãã§ããããã«ããã®ã·ãŒã¯ã¬ãããåå空éã§ç¢ºå®ã«èŠã€ããããã«ããããšã§ãã å€æ°ã®ã¢ããªã±ãŒã·ã§ã³ (ããããã«ã·ãŒã¯ã¬ãããå¿ èŠ) ãååšããå¯èœæ§ããããã·ãŒã¯ã¬ããèªäœãå®æçã«æŽæ°ãããšäŸ¿å©ãªã®ã§ãã·ãŒã¯ã¬ãããæåã§ã¬ã€ã¢ãŠããããªãã·ã§ã³ãäžèŠã«ãªããŸãã ããã§ãªãã¬ãŒã¿ãŒãå©ãã«ãªããŸããåå空éã衚瀺ãããã®ãåŸ ã¡ããã®ã€ãã³ãã«åºã¥ããŠã·ãŒã¯ã¬ãããåå空éã«è¿œå ããã³ã³ãããŒã©ãŒãäœæããŸãã
- ããã©ã«ãã§ã¯ããããããã€ã³ã¿ãŒããããžã®ã¢ã¯ã»ã¹ã¯çŠæ¢ãããŠããŸãã ããããå Žåã«ãã£ãŠã¯ãããå¿ èŠã«ãªãå ŽåããããŸããããšãã°ãåå空éã«ç¹å®ã®ã©ãã«ãååšãããªã©ãç¹å®ã®ã¹ãã«ãå¿ èŠãšããã«ãã¢ã¯ã»ã¹èš±å¯ã¡ã«ããºã ãç°¡åã«æ©èœããããšãè«ççã§ãã ããã§ãªãã¬ãŒã¿ãŒã¯ã©ã®ããã«ãµããŒãããŠãããã§ãããã? ã©ãã«ãåå空éã«è¡šç€ºãããã®ãåŸ æ©ããã€ã³ã¿ãŒããã ã¢ã¯ã»ã¹ã«é©åãªããªã·ãŒãè¿œå ããã³ã³ãããŒã©ãŒãäœæãããŸãã
- åæ§ã®ç¶æ³: ç¹å®ã®æ©èœãè¿œå ããå¿
èŠããããšããŸãã
æ±ã ãåæ§ã®ã©ãã«ïŒäœããã®æ¥é èŸãä»ããŠããïŒãããå Žåã ãªãã¬ãŒã¿ãŒã®ã¢ã¯ã·ã§ã³ã¯æããã§ã...
ã©ã®ã¯ã©ã¹ã¿ãŒã§ããæ¥åžžçãªã¿ã¹ã¯ã解決ããå¿ èŠãããã æ£ãã ããã¯æŒç®åã䜿çšããŠå®è¡ã§ããŸãã
説æããããã¹ãŠã®è©±ãèŠçŽãããšã次ã®ãããªçµè«ã«éããŸããã Kubernetes ã§ã®å¿«é©ãªäœæ¥ã«å¿ èŠãª:A) ã¢ããªã³ãã€ã³ã¹ããŒã«ãããbïŒ ãªãã¬ãŒã¿ãŒãéçºãã (æ¥åžžã®ç®¡çã¿ã¹ã¯ã解決ãããã)ã
Kubernetes ã®ã¹ããŒãã¡ã³ããäœæããã«ã¯ã©ãããã°ããã§ãã?
äžè¬ã«ãã¹ããŒã ã¯åçŽã§ãã
...ãããããã®åŸã次ã®ããšãå€æããŸããã
- Kubernetes API ã¯ããªãç°¡åã§ã¯ãªããç¿åŸããã®ã«å€ãã®æéãããããŸãã
- ããã°ã©ãã³ã°ãäžäººåãã§ã¯ãããŸãã (Go èšèªãåªå
èšèªãšããŠéžã°ããã®ã¯ãGo èšèªã«ã¯ç¹å¥ãªãã¬ãŒã ã¯ãŒã¯ãããããã§ãã
ãªãã¬ãŒã¿ãŒSDK ); - ç¶æ³ã¯ãã¬ãŒã ã¯ãŒã¯èªäœã§ãåæ§ã§ãã
ããã ã©ã€ã³ïŒ ã³ã³ãããŒã©ãŒãæžã ïŒãªãã¬ãŒã¿ïŒã¯ããªããã°ãªããŸãã å€å€§ãªãªãœãŒã¹ãè²»ãã ææãå匷ããããã«ã ããã¯ãã倧èŠæš¡ãªããªãã¬ãŒã¿ãããšãã° MySQL DBMS ã®å Žåã«ã¯æ£åœåãããŸãã ããããäžã§èª¬æããäŸ (ã·ãŒã¯ã¬ããã®å±éãã€ã³ã¿ãŒããããžã®ããããžã®ã¢ã¯ã»ã¹ãªã©) ãèŠããŠããã°ããããæ£ããå®è¡ããããšèããŠããŸãããè²»ããããåŽåãçŸåšå¿ èŠãªçµæãäžåãããšãç解ã§ããã§ãããã
äžè¬ã«ããžã¬ã³ããçããŸãã倧éã®ãªãœãŒã¹ãè²»ãããŠã¹ããŒãã¡ã³ããäœæããããã®é©åãªããŒã«ãèŠã€ãããããããšãæãªããã®æ¹æ³ (ãã ãè¿
éã«) ãè¡ããã§ãã ããã解決ããããã«ããããã®äž¡æ¥µç«¯ã®éã®åŠ¥åç¹ãèŠã€ããããã«ãç§ãã¡ã¯ç¬èªã®ãããžã§ã¯ããäœæããŸããã
ã·ã§ã«ãªãã¬ãŒã¿ãŒ
圌ã¯ã©ã®ããã«åããŠããŸãã? ã¯ã©ã¹ã¿ãŒã«ã¯ãã·ã§ã«æŒç®åãåãã Go ãã€ããªãå«ããããããããŸãã 圌ã®é£ã«ã¯æ¬¡ã®ã»ããããããŸãã ãã㯠(詳现ã«ã€ããŠã¯ã以äžãåç §ããŠãã ãã)ã ã·ã§ã«ãªãã¬ãŒã¿ãŒèªäœã¯ç¹å®ã®ãã®ããµãã¹ã¯ã©ã€ãããŸã é²å± Kubernetes API ã§ã¯ããããçºçãããšã察å¿ããããã¯ãèµ·åãããŸãã
ã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ã©ã®ã€ãã³ãã§ã©ã®ããã¯ãåŒã³åºãã¹ãããã©ã®ããã«ããŠç¥ãã®ã§ãããã? ãã®æ å ±ã¯ããã¯èªäœã«ãã£ãŠã·ã§ã«ãªãã¬ãŒã¿ãŒã«éä¿¡ãããããã¯ã¯ãããéåžžã«ç°¡åã«å®è¡ããŸãã
ããã¯ã¯ãåäžã®åŒæ°ãåãå
¥ãã Bash ã¹ã¯ãªãããŸãã¯ãã®ä»ã®å®è¡å¯èœãã¡ã€ã«ã§ãã --config
JSON ã§å¿çããŸãã åŸè
ã¯ãã©ã®ãªããžã§ã¯ãã察象ãšãªãããããã³ (ãããã®ãªããžã§ã¯ãã®) ã©ã®ã€ãã³ãã«å¿çããå¿
èŠããããã決å®ããŸãã
ç§ãã¡ã®äŸã® XNUMX ã€ã§ãããã¢ããªã±ãŒã·ã§ã³ ã€ã¡ãŒãžã䜿çšããŠãã©ã€ããŒã ã¬ãžã¹ããªã«ã¢ã¯ã»ã¹ããããã®ã·ãŒã¯ã¬ããã®å解ã®ã·ã§ã« ãªãã¬ãŒã¿ãŒã§ã®å®è£
ã説æããŸãã ãã㯠XNUMX ã€ã®æ®µéã§æ§æãããŸãã
ç·Žç¿: 1. ããã¯ãæžã
ãŸãããã¯å
ã§åŠçããŸã --config
ããã¯ãåå空éãç¹ã«ãã®äœæã®ç¬éã«èå³ãããããšã瀺ããŠããŸãã
[[ $1 == "--config" ]] ; then
cat << EOF
{
"onKubernetesEvent": [
{
"kind": "namespace",
"event": ["add"]
}
]
}
EOF
âŠ
ããžãã¯ã¯ã©ã®ããã«ãªãã§ãããã? ãã¡ããéåžžã«ã·ã³ãã«ã§ã:
âŠ
else
createdNamespace=$(jq -r '.[0].resourceName' $BINDING_CONTEXT_PATH)
kubectl create -n ${createdNamespace} -f - << EOF
Kind: Secret
...
EOF
fi
æåã®ã¹ãããã¯ãã©ã®åå空éãäœæããããã調ã¹ãããšã§ãããXNUMX çªç®ã®ã¹ãããã¯ã次ã®ã³ãã³ãã䜿çšããŠåå空éãäœæããããšã§ãã kubectl
ãã®åå空éã®ç§å¯ã
ç·Žç¿: 2. ç»åãçµã¿ç«ãŠã
æ®ã£ãŠããã®ã¯ãäœæããããã¯ãã·ã§ã«ãªãã¬ãŒã¿ãŒã«æž¡ãããšã ãã§ãããããè¡ãã«ã¯ã©ãããã°ããã§ãããã? ã·ã§ã« ãªãã¬ãŒã¿ãŒèªäœã¯ Docker ã€ã¡ãŒãžãšããŠæäŸããããããç§ãã¡ã®ã¿ã¹ã¯ã¯ããã®ã€ã¡ãŒãžå ã®ç¹å¥ãªãã£ã¬ã¯ããªã«ããã¯ãè¿œå ããããšã§ãã
FROM flant/shell-operator:v1.0.0-beta.1
ADD my-handler.sh /hooks
æ®ã£ãŠããã®ã¯ããããçµã¿ç«ãŠãŠããã·ã¥ããããšã ãã§ãã
$ docker build -t registry.example.com/my-operator:v1 .
$ docker push registry.example.com/my-operator:v1
æåŸã®ä»äžãã¯ãã€ã¡ãŒãžãã¯ã©ã¹ã¿ãŒã«ãããã€ããããšã§ãã ãããè¡ãã«ã¯ã次ã®ããã«æžããŸããã å±é:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: my-operator
spec:
template:
spec:
containers:
- name: my-operator
image: registry.example.com/my-operator:v1 # 1
serviceAccountName: my-operator # 2
泚æãã¹ãç¹ã¯æ¬¡ã® XNUMX ã€ã§ãã
- æ°ããäœæãããã€ã¡ãŒãžã®è¡šç€ºã
- ããã¯ãKubernetes ã§ã€ãã³ãããµãã¹ã¯ã©ã€ãããåå空éã«ã·ãŒã¯ã¬ãããå²ãåœãŠãæš©éã (å°ãªããšã) å¿ èŠãªã·ã¹ãã ã³ã³ããŒãã³ãã§ãããããããã¯çšã® ServiceAccount (ããã³ã«ãŒã«ã®ã»ãã) ãäœæããŸãã
çµæ - åé¡ã¯è§£æ±ºããŸãã 芪æã« Kubernetes ã®å Žåãã·ãŒã¯ã¬ãããå解ããããã®ãªãã¬ãŒã¿ãŒãäœæããæ¹æ³ã§ã
ãã®ä»ã®ã·ã§ã« ãªãã¬ãŒã¿ãŒæ©èœ
ããã¯ãåäœããéžæããã¿ã€ãã®ãªããžã§ã¯ããå¶éããã«ã¯ã ãããã¯ãã£ã«ã¿ãªã³ã°ã§ããŸããç¹å®ã®ã©ãã«ã«åŸã£ãŠéžæïŒãŸãã¯äœ¿çšïŒ matchExpressions
):
"onKubernetesEvent": [
{
"selector": {
"matchLabels": {
"foo": "bar",
},
"matchExpressions": [
{
"key": "allow",
"operation": "In",
"values": ["wan", "warehouse"],
},
],
}
âŠ
}
]
æäŸããã éè€æé€ã¡ã«ããºã ããã«ãããjq ãã£ã«ã¿ãŒã䜿çšããŠã倧ã㪠JSON ãªããžã§ã¯ããå°ã㪠JSON ãªããžã§ã¯ãã«å€æã§ããŸããå€æŽãç£èŠããããã©ã¡ãŒã¿ãŒã®ã¿ãæ®ããŸãã
ããã¯ãåŒã³åºããããšãã·ã§ã«ãªãã¬ãŒã¿ãŒã¯ããã¯ãæž¡ããŸãã ãªããžã§ã¯ãããŒã¿ãããããããŒãºã«å¯Ÿå¿ã§ããŸãã
ããã¯ãããªã¬ãŒããã€ãã³ã㯠Kubernetes ã€ãã³ãã«éå®ãããŸãããã·ã§ã« ãªãã¬ãŒã¿ãŒã¯æ¬¡ã®ãµããŒããæäŸããŸãã æéã«ããããã¯ã®åŒã³åºã (åŸæ¥ã®ã¹ã±ãžã¥ãŒã©ã® crontab ã«äŒŒãŠããŸã)ãããã³ç¹å¥ãªã€ãã³ã å§ãããšãã ããããã¹ãŠã®ã€ãã³ããçµã¿åãããŠãåãããã¯ã«å²ãåœãŠãããšãã§ããŸãã
ãããŠãã·ã§ã« ãªãã¬ãŒã¿ãŒã«ã¯ããã« XNUMX ã€ã®æ©èœããããŸãã
- ã§ããŸã éåæçã«ã Kubernetes ã€ãã³ã (ãªããžã§ã¯ãã®äœæãªã©) ãåä¿¡ããããããä»ã®ã€ãã³ã (åããªããžã§ã¯ãã®åé€ãªã©) ãã¯ã©ã¹ã¿ãŒå ã§çºçããå¯èœæ§ããããããã¯ã¯ãããèæ ®ããå¿ èŠããããŸãã ããã¯ããšã©ãŒã§å®è¡ãããå Žåãããã©ã«ãã§ã¯æ¬¡ã®ããã«ãªããŸãã æ³èµ· æ£åžžã«å®äºãããŸã§ (ãã®åäœã¯å€æŽå¯èœã§ã)ã
- 茞åºãã ã¡ããªã¯ã¹ Prometheus ã®å Žåãã·ã§ã« ãªãã¬ãŒã¿ãŒãåäœããŠãããã©ãããææ¡ã§ããåããã¯ã®ãšã©ãŒæ°ãšçŸåšã®ãã¥ãŒ ãµã€ãºã確èªã§ããŸãã
ã¬ããŒãã®ãã®éšåãèŠçŽãããšã次ã®ããã«ãªããŸãã
ã¢ããªã³ã®ã€ã³ã¹ããŒã«
Kubernetes ã§å¿«é©ã«äœæ¥ããããã«ã¯ãã¢ããªã³ãã€ã³ã¹ããŒã«ããå¿ èŠæ§ã«ã€ããŠãèšåãããŸããã åœç€ŸãçŸåšã©ã®ããã«åãçµãã§ããããäŸã«æããŠèª¬æããŸãã
ç§ãã¡ã¯ããã€ãã®ã¯ã©ã¹ã¿ãŒã䜿çšã㊠Kubernetes ã®äœ¿çšãéå§ããŸããããããã«è¿œå ãããã®ã¯ Ingress ã ãã§ããã ã¯ã©ã¹ã¿ãŒããšã«ç°ãªãæ¹æ³ã§ã€ã³ã¹ããŒã«ããå¿ èŠãããããã¢ã¡ã¿ã«ãAWS ãªã©ã®ããŸããŸãªç°å¢ã«åãããŠããã€ãã® YAML æ§æãäœæããŸããã
ã¯ã©ã¹ã¿ãŒãå¢ãããšãæ§æãå¢ããŸãã ããã«ããããã®æ§æèªäœãæ¹åããçµæãããªãç°è³ªãªãã®ã«ãªããŸããã
ãã¹ãŠãæŽçããããã«ãã¹ã¯ãªãã (install-ingress.sh
) ã¯ããããã€å
ã®ã¯ã©ã¹ã¿ãŒã®ã¿ã€ããåŒæ°ãšããŠåãåããå¿
èŠãª YAML æ§æãçæããããã Kubernetes ã«ããŒã«ã¢ãŠãããŸãã
ã€ãŸããç§ãã¡ã®ãããªãéçãšããã«é¢é£ããæšè«ã¯æ¬¡ã®ãšããã§ãã
- YAML æ§æãæäœããã«ã¯ããã³ãã¬ãŒã ãšã³ãžã³ãå¿ èŠã§ã (æåã®æ®µéã§ã¯ãããã¯åçŽãª sed ã§ã)ã
- ã¯ã©ã¹ã¿ãŒã®æ°ãå¢å ããã«ã€ããŠãèªåæŽæ°ã®å¿ èŠæ§ãçããŸãã (æãåæã®è§£æ±ºçã¯ãã¹ã¯ãªããã Git ã«çœ®ããcron ã䜿çšããŠæŽæ°ããŠå®è¡ããããšã§ãã)ã
- Prometheus ã«ãåæ§ã®ã¹ã¯ãªãããå¿
èŠã§ãã (
install-prometheus.sh
) ãã ããããå€ãã®å ¥åããŒã¿ãšãã®ã¹ãã¬ãŒãž (è¯ãæå³ã§äžå åããã¯ã©ã¹ã¿ãŒå ) ãå¿ èŠã§ãããäžéšã®ããŒã¿ (ãã¹ã¯ãŒã) ã¯èªåçã«çæãããå¯èœæ§ããããšããäºå®ã§æ³šç®ã«å€ããŸãã - å¢ãç¶ããã¯ã©ã¹ã¿ãŒã«äœãåé¡ãå±éããããªã¹ã¯ã¯åžžã«å¢å€§ããŠãããããã€ã³ã¹ããŒã©ãŒã (ã€ãŸããIngress ãš Prometheus çšã® XNUMX ã€ã®ã¹ã¯ãªãã) ã¹ããŒãžã³ã°ãå¿ èŠã§ãã (Git å ã®ããã€ãã®ãã©ã³ãã察å¿ããå®å®ã¯ã©ã¹ã¿ãŒãŸãã¯ãã¹ãã¯ã©ã¹ã¿ãŒã§ããããæŽæ°ããããã®ããã€ãã® cron)ã
- Ñ
kubectl apply
宣èšçã§ã¯ãªãããªããžã§ã¯ãã®äœæã®ã¿ãå¯èœã§ããã®ã¹ããŒã¿ã¹ã®æ±ºå®ããªããžã§ã¯ãã®åé€ã¯ã§ããªããããæäœãé£ãããªããŸããã - åœæãŸã£ããå®è£
ããŠããªãã£ãããã€ãã®æ©èœãæ¬ ããŠããŸããã
- ã¯ã©ã¹ã¿ãŒã®æŽæ°çµæãå®å šã«å¶åŸ¡ããŸãã
- ã¯ã©ã¹ã¿ãŒããååŸã§ããããŒã¿ã«åºã¥ããŠããã€ãã®ãã©ã¡ãŒã¿ãŒ (ã€ã³ã¹ããŒã« ã¹ã¯ãªããã®å ¥å) ãèªåçã«æ±ºå® (æ€åº)ã
- ç¶ç¶çãªçºèŠã®åœ¢ã§ã®è«ççå±éã
ç§ãã¡ã¯ããã®èç©ãããçµéšããã¹ãŠä»ã®ãããžã§ã¯ãã®æ çµã¿å
ã§å®è£
ããŸããã
ã¢ããªã³ãªãã¬ãŒã¿ãŒ
ããã¯ããã§ã«è¿°ã¹ãã·ã§ã«æŒç®åã«åºã¥ããŠããŸãã ã·ã¹ãã å šäœã¯æ¬¡ã®ããã«ãªããŸãã
以äžãã·ã§ã«æŒç®åã®ããã¯ã«è¿œå ãããŸãã
- 䟡å€èŠ³ã®ã¹ãã¬ãŒãž,
- ãã«ã ãã£ãŒã,
- ã³ã³ããŒãã³ã å€ã¹ãã¢ãç£èŠããŸã ãããŠãå€æŽããã£ãå Žåã«ã¯ãHelm ã«ãã£ãŒããåããŒã«ããããäŸé ŒããŸãã
ãããã£ãŠãKubernetes ã®ã€ãã³ãã«åå¿ããŠããã¯ãèµ·åãããã®ããã¯ããã¹ãã¬ãŒãžã«å€æŽãå ããããšãã§ãããã®åŸããã£ãŒããåããŠã³ããŒããããŸãã çµæãšããŠåŸãããå³ã§ã¯ãããã¯ã®ã»ãããšãã£ãŒãã XNUMX ã€ã®ã³ã³ããŒãã³ãã«åé¢ããŸããããã ã¢ãžã¥ãŒã«:
å€ãã®ã¢ãžã¥ãŒã«ãååšããå¯èœæ§ãããããããã«ã°ããŒãã« ããã¯ãã°ããŒãã«å€ã¹ãã¢ãããã³ãã®ã°ããŒãã« ã¹ãã¢ãç£èŠããã³ã³ããŒãã³ããè¿œå ããŸãã
ããã§ãKubernetes ã§äœããçºçãããšãã«ãã°ããŒãã« ããã¯ã䜿çšããŠããã«åå¿ããã°ããŒãã« ã¹ãã¢å ã®äœããå€æŽã§ããŸãã ãã®å€æŽã¯èªèãããã¯ã©ã¹ã¿ãŒå ã®ãã¹ãŠã®ã¢ãžã¥ãŒã«ãããŒã«ã¢ãŠããããŸãã
ãã®ã¹ããŒã ã¯ãäžèšã§èª¬æããã¢ããªã³ãã€ã³ã¹ããŒã«ããããã®èŠä»¶ããã¹ãŠæºãããŠããŸãã
- Helm ã¯ãã³ãã¬ãŒãåãšå®£èšæ§ãæ åœããŸãã
- èªåæŽæ°ã®åé¡ã¯ãã°ããŒãã« ããã¯ã䜿çšããŠè§£æ±ºãããŸãããã°ããŒãã« ããã¯ã¯ãã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠã¬ãžã¹ããªã«ã¢ã¯ã»ã¹ããããã«æ°ããã·ã¹ãã ã€ã¡ãŒãžãããã°ããããããŒã«ã¢ãŠãããŸã (ã€ãŸãããããèªäœã)ã
- ã¯ã©ã¹ã¿ãŒãžã®èšå®ã®ä¿åã¯ã次ã䜿çšããŠå®è£ ãããŸãã æ§æãããããã«ã¯ãã¹ãã¬ãŒãžã®ãã©ã€ã㪠ããŒã¿ãå«ãŸããŠããŸã (èµ·åæã«ã¹ãã¬ãŒãžã«ããŒããããŸã)ã
- ãã¹ã¯ãŒãã®çæãæ€åºãç¶ç¶çæ€åºã«é¢ããåé¡ã¯ãããã¯ã䜿çšããŠè§£æ±ºãããŸããã
- ã¹ããŒãžã³ã°ã¯ââãDocker ãããã«ãµããŒãããã¿ã°ã®ãããã§å®çŸãããŸãã
- çµæã¯ãç¶æ ãææ¡ã§ããã¡ããªã¯ã¹ã䜿çšããŠç£èŠãããŸãã
ãã®ã·ã¹ãã å šäœã¯ãGo ã§ã¯ addon-operator ãšåŒã°ããåäžã®ãã€ããªã®åœ¢åŒã§å®è£ ãããŸãã ããã«ãããå³ãããåçŽã«èŠããŸãã
ãã®å³ã®äž»ãªã³ã³ããŒãã³ãã¯ã¢ãžã¥ãŒã«ã®ã»ããã§ã (以äžã®ç°è²ã§åŒ·èª¿è¡šç€ºãããŠããŸã)ã ããã§ãå¿
èŠãªã¢ããªã³ã®ã¢ãžã¥ãŒã«ãå°ãã®åŽåã§äœæã§ããããã«ãªãããããåã¯ã©ã¹ã¿ãŒã«ã€ã³ã¹ããŒã«ãããæŽæ°ãããã¯ã©ã¹ã¿ãŒå
ã§å¿
èŠãªã€ãã³ãã«å¿çããããšã確èªã§ããŸãã
ããã©ãããã®äœ¿ãæ¹
addon-operator ã®ã¢ãžã¥ãŒã«ã¯ã©ãã§å ¥æã§ããŸãã? ã©ã€ãã©ãªã®åºçã¯ç§ãã¡ã«ãšã£ãŠæ¬¡ã®æ®µéã§ãããå€ã«è¡ãäºå®ã§ãã
ãããªãšã¹ã©ã€ã
ããã©ãŒãã³ã¹ã®ãã㪠(çŽ 50 å):
å ±åæžã®ãã¬ãŒã³ããŒã·ã§ã³:
PS
ç§ãã¡ã®ããã°ã®ä»ã®ã¬ããŒã:
- «
ããŒã¿ããŒã¹ãšKubernetes "; (Dmitry Stolyarovã8 幎 2018 æ XNUMX æ¥ HighLoad++); - «
ã¢ãã¿ãªã³ã°ãšKubernetes "; (ããããªãŒã»ã¹ããªã£ããã28 幎 2018 æ XNUMX æ¥ãRootConf ã«ãŠ); - «
Kubernetes ãš GitLab ã䜿çšãã CI/CD ã®ãã¹ã ãã©ã¯ãã£ã¹ "; (Dmitry Stolyarovã7 幎 2017 æ XNUMX æ¥ HighLoad++); - «
å°èŠæš¡ãããžã§ã¯ãã«ããã Kubernetes ã®çµéš "; (ããããªãŒã»ã¹ããªã£ããã6 幎 2017 æ XNUMX æ¥ãRootConf ã«ãŠ).
次ã®åºçç©ã«ãèå³ããããããããŸããã
åºæïŒ habr.com