áááŒá¬áá±ážáá®áááẠáá»áœááºá¯ááºááẠCertified Kubernetes Application Developer (CKAD) á á¬áá±ážááœá²ááᯠá¡á±á¬ááºááŒááºá áœá¬ ááŒá±ááá¯á¡á±á¬ááºááŒááºáá²á·ááŒá®áž áá»áœááºá¯ááºá á¡ááá¡ááŸááºááŒá¯áááºááŸááºááᯠáááŸááá²á·áá«áááºá áá®áá±á·áá±á¬á· á¡á±á¬ááºáááºááŸááºááá¯ááºááá¯ááºá áááºááá¯ááŒááºáááºáá¬ážáá²ááá¯áᬠááŒá±á¬ááŒáá»ááºáá«áááºá á á¬áá±ážááœá²á á áºáá±ážáá°á á¡áá®ážáááºááŒá®ážááŒááºááŸá¯á¡á±á¬ááºááœáẠá¡áœááºááá¯ááºážá០á á¬áá±ážááœá²ááŒá±ááá¯áááŒááºážááẠá áááºáááºá á¬ážá áá¬á¡ááœá±á·á¡ááŒá¯á¶áá áºáá¯ááŒá áºáááºá á€áá±áá¬ááœáẠá¡ááá¯ážáááºáááºážááá¬ááá¯ááºáᬠá¡áá»ááºá¡áááºáá»á¬áž ááŸááááºááá¯ááºáá«á áá±á¬ááºážáá«ážááẠááá¬áááœáẠááá¯ážááŸááºážáá±á¬ áá¬ááºááŒá±á¬ááºážááŒá áºáááºá ááá¯á·á¡ááŒááºá áá»áœááºá¯ááºááẠKubernetes ááŸáá·áºá¡áá¯ááºáá¯ááºáá¬ááœáẠáá±á¬ááºáá¶á¡áá»á¬ážááŒá®ážáááŸáááá·áºá¡ááŒáẠáá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážááŸáá·áº áá°ážááœá²áá±á·áá»áá·áºááŸá¯áááºážáááŸááá«á á¡á¬ážáááºáá»áááºáá»á¬ážááœáẠááá¯ááºááá¯ááºáá±á·áá¬ááŒá®áž áá±á·áá»áá·áºáá«áááºá
áá»áœááºá¯ááºááẠáááºááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áááºáááºááœáẠá¡áááºáááºáá±á¬áºáááºáž Docker ááŸáá·áº K8s ááá¯á·ááᯠá¡áááºážáá¯á¶ážá¡ááŒá±áá¶á¡ááááá¬áááŸááá»áŸáẠáááºááẠáá±ážááœá¬áááºááá¯ááºááŒá±á¬ááºáž áá»áœááºá¯ááºáá»ááºáá»ááºážááá±á¬áá±á«ááºáá²á·áá«áááºá áááºáááºážáááºááŒá®áž áá®ááá¯á á¬áá±ážááœá²á¡ááœáẠááŒááºáááºáá¬ááœá±á ááœááºááááºáá¬ááœá±áá²á· áá°ááá¯á·áá²á· ááŒáá¯ážááá¯ááºááŸá¯áá±á¬ááá²ááᯠáááºááœáá·áºá¡ááŸááºáá±á¬ááºážáá áºáá¯ááᯠááŒá áºáá±áááºá
Kubernetes ááẠá¡ááœááºááŸá¯ááºááœá±ážááŒá®áž ááá·áºá¡ááœááºááá¯ááºáᯠáááºáááºáá±áá±ážáá«á áá»á±ážáá°ážááŒá¯á ááŒá±á¬ááºááᯠááá¯ááºáá¬áá«á
áá«áá¬áá¬áá²?
Cloud Native Computing Foundation (CNCF) á០Kubernetes á¡ááá¡ááŸááºááŒá¯áááºááŸáẠá¡áá»áá¯ážá¡á á¬áž ááŸá áºáá»áá¯ážááŸááá«áááºá
- áááºááŸááºá Kubernetes Application Developer (CKAD) - Kubernetes á¡ááœáẠcloud áá¬ááá¡ááºááºáá®áá±ážááŸááºážáá»á¬ážááᯠáá®ááá¯ááºážáááºáá®ážááŒááºážá áááºáá®ážááŒááºážá á á®á ááºáááºááŸááºááŒááºážááŸáá·áº áá¯ááºáá±ááŒááºážá áœááºážáááºááᯠá ááºážáááºáááºá á á¬áá±ážááœá²ááẠ2 áá¬áá®ááŒá¬ááŒá®áž á¡áá¯áẠ19 áá¯á áááŸáẠ66% á¡á±á¬ááºááŒááºáááºá á¡ááŒá±áᶠprimitives ááá¯ááºáᬠá¡ááœáẠá¡áá±á«áºáᶠá¡ááááᬠááá¯á¡ááºáá«áááºá $300 áá¯ááºáá»áááºá
- áááºááŸááºá Kubernetes á á®áá¶ááá·áºááœá²áá° (CKA) ááẠKubernetes á á®áá¶ááá·áºááœá²áá°áá»á¬ážá áá¬áááºáá»á¬ážááᯠáááºážáá±á¬ááºáááºá¡ááœáẠáá»áœááºážáá»ááºááŸá¯á á¡ááááá¬ááŸáá·áº á¡áááºá¡áá»ááºážáá»á¬ážááᯠá ááºážáááºáááºá á á¬áá±ážááœá²ááẠ3 áá¬áá®ááŒá¬ááŒá®áž á¡áá¯áẠ24 áá¯á áááŸáẠ74% á¡á±á¬ááºááŒááºáááºá á¡áá±á¬ááºá¡áŠááŸáá·áº á áá áºááŒááºáááºááŒááºážááá¯ááºáᬠáááºáá²áá±á¬ á¡ááááᬠááá¯á¡ááºáá«áááºá áá¯ááºáá»á ááááºááááºáž áá±á«áºáᬠááá áá«á
CKAD ááŸáá·áº CKA á¡ááá¡ááŸááºááŒá¯áááá¯ááááºáá»á¬ážááᯠá á¶ááŒá¯áá±á·áá»áá·áºáá±ážááŸáá·áº á¡ááá¡ááŸááºááŒá¯áááºááŸááºáá»á¬ážááŒáá·áº Kubernetes áá±áá áá áºááᯠáá»á²á·ááœááºáááºá¡ááœáẠCloud Native Computing Foundation á០áá®ááœááºáá²á·ááŒááºážááŒá áºáááºá á€áááºáá¯á¶ááœá±ááᯠLinux áá±á¬ááºáá±ážááŸááºážááŸáá·áº áá°ážáá±á«ááºážá Google á០áááºáá®ážáá¬ážááŒááºážááŒá áºááŒá®áž Kubernetes ááẠáá áºáá»áááºá áááŠážáááºážááá¬ááá¯ááºáᬠáá¶á·ááá¯ážáá°áá®ááŸá¯á¡ááŒá ẠááœáŸá²ááŒá±á¬ááºážáá²á·ááŒá®áž Microsoftá Appleá Facebooká Ciscoá Intelá Red Hat ááŸáá·áº á¡ááŒá¬ážáá¯áá¹ááá®áá»á¬ážáá²á·ááá¯á·áá±á¬ áá¯áá¹ááá®áá»á¬ážá០áá¶á·ááá¯ážáá±ážáá±á¬ (á) áá®áá®
á¡ááá¯áá»á¯ááºá¡á¬ážááŒáá·áºá áááºážááá¯á·ááẠKubernetes ááŸá âáá¬á áá¬á¡ááœá²á·á¡á ááºážâ á០á á¬áá±ážááœá²áá»á¬ážááŒá áºáááºá áá¯ááºáá«áááºá áááŒá¬ážáá¯áá¹ááá®ááœá±áá²á· á¡ááá¡ááŸááºááŒá¯áááºááŸááºááœá±ááŸááááºá
á¡áááºááŒá±á¬áá·áºáááºáž
á€áááºááŸá¬ á€á¡áá°á¡ááá áºáá¯áá¯á¶ážááœáẠá¡ááŒááºážááœá¬ážá áá¬á¡áá±á¬ááºážáá¯á¶ážá¡áá»ááºááŒá áºááá¯ááºáááºá áááºááŸááºáá»á¬ážááá¯á¡ááºááŒááºážááŸáá·áºáááºáááºá áá°ážáá°ážááŒá¬ážááŒá¬áž áá áááºáá»ááºáá«á á€áááºááŸááºáá»áá¯ážááŸáááŒááºážááẠá¡áá¯ááºááá¬ážáá±ážááœááºááœáẠáá»áœááºá¯ááºááááºááá¯ážá¡áá±á«áº á¡ááŒá¯ááá±á¬áá±á¬ááºáá±á¬á¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááŸááááºáᯠáá¯á¶ááŒááºáá«áááºá á¡áá¬á¡á¬ážáá¯á¶ážááẠáá¯áá¹áááááá¹áá¬ááºááŒá áºáááº- áááºážááá¯ááá·áºá¡ááºááá¯á· áá¯á¶ážááŒááºáá»ááºáá²á· á¡áá»áá¯ážá¡ááœá±á·á áááºá¡áá¬ááŒá áºáááºááá¯áᬠáááºážáááºáá±á¬á·á០áááááá¯ááºáá«áá°ážá
PS : áá«á¡áá¯ááºáááŸá¬áá±á¬á·áá°ážá á¡áá¯áá±á¬á· á¡áá¬á¡á¬ážáá¯á¶ážáá²á·áá»á±á¬áºáá±áááááº... USA ááŸá¬ áá±áá¬ááŒá±á¬ááºážááœáŸá±á·áá¬áááœá²ááẠááŒá áºááá¯ááºáááºá
áá±á·áá»ááºá·áá±áž
CKAD á á¬áá±ážááœá²ááœáẠáá±ážááœááºáž 19 áá¯ááŸáááŒá®áž á¡á±á¬ááºáá«á¡ááá¯ááºáž áá±á«ááºážá ááºáá»á¬ážááœá²áá¬ážáááºá
- 13% - á¡ááŒá±áá¶ááá±á¬ááá¬ážáá»á¬áž
- 18% - ááœá²á·á ááºážááŸá¯
- 10% - Multi-Container Pods
- 18% - ááŒááºááá¯ááºá áœááºáž
- 20% - Pod áá®ááá¯ááºáž
- 13% - áááºáá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº ááœááºáááºáá»áááºáááºááŒááºážá
- 8% - ááá¯ááºáá¶áá±á¬áºáááºááŒá²ááŸá¯
Udemy ááááºáá±á¬ááºážááœáẠMumshad Mannambeth á¡áááºááŒáá·áº á¡ááá¹ááááá°áá»áá¯ážáá áºáŠážá០áá±á¬ááºážááœááºáá±á¬áááºáááºážáá áºáᯠááŸáááẠ(áá±á¬ááºážáá«ážáá¡áá¯á¶ážááœáẠááá·áºááºááŸááááá·áºáááº)á á¡áááºážáááºáá²á· á¡áááºá¡ááœá±ážááŒáá·áº áá á¹á ááºážáá±ážáá« á á»á±ážááŸá¯ááºážáááºáž áááºáá¬áá«áááºá á¡áá°ážáááŒáá·áº á¡á¶ááŒá áá¬áá±á¬ááºážáááºááŸá¬ áááºáááºážááá¯ážáááºáááºááŸáá·áºá¡áá»áŸ áááºááẠá ááºážáááºááŸá¯áááºáááºážáá»ááºááœáẠáááºááœá±á·áá±á·áá»áá·áºáááºážáá»á¬ážáá¯ááºáá±á¬ááºááẠááœááºážá¡á¬ážáá±ážáá¶ááá±á¬ááŒá±á¬áá·áº áááºááẠconsole ááœááºá¡áá¯ááºáá¯ááºááŒááºážá áœááºážáááºááᯠááœá¶á·ááŒáá¯ážá á±áááºá
áááºáááºážáá áºáá¯áá¯á¶ážááᯠááŒááºáááºážááŒá®áž áááºááœá±á·áá±á·áá»áá·áºáááºážá¡á¬ážáá¯á¶ážááᯠááŒá®ážááŒá±á¬ááºáá²á·ááẠ(áá±áá»á¬áá«áááºá á¡ááŒá±ááœá±ááᯠáá»á±á¬ááºážááŒáá·áºááá±áá«áá²á·)á á á¬áá±ážááœá²áááŒá±ááẠáá»ááºáá»ááºážááá¯áááá¯áá² áááºáááºážá á¬á¡á¬ážáá¯á¶ážááᯠá¡ááŸáááºááŒáŸáá·áºááŒá®áž ááŒááºááŒáá·áºáá²á·ááŒá®áž áá±á¬ááºáá¯á¶áž á á¬áá±ážááœá²ááŸá áºáá¯ááᯠááŒááºáááºááŒá±ááá¯áá²á·áá«áááºá á¡á±ážáá±ážáááºááŒáááºá áœá¬áá²á· áá áºááá±á¬ááºááŒá¬áááºá áá®áá á¹á ááºážá áááŸáẠ91% áá²á· áá¯á¶ááŒááºááŸá¯ááŸáááŸá á á¬áá±ážááœá²á¡á±á¬ááºááá¯á· áá¯á¶áá±á¬ááºáá«áááºá á¡áá¯ááºáá áºáá¯ááœáẠáá áºáá±áá¬áá¬ááœáẠá¡ááŸá¬ážáá áºáá¯áá¯ááºááááẠ(NodePort ááẠá¡áá¯ááºááá¯ááºáá«)á ááŒá±ááŸááºážáá»ááºááᯠáááá±á¬áºáááºáž ConfigMap ááᯠááá¯ááºáá áºáá¯á០áá»áááºáááºááŒááºážááŒáá·áº á¡ááŒá¬ážáá¯ááºáááºážáá áºáá¯ááᯠááŒá®ážááŒá±á¬ááºááẠáááá áºá¡áááºážáááºáá»áŸ ááá¯á¶áá±á¬ááºáá«á
á á¬áá±ážááœá²ááááºááá¯áá²
áááºáááºááá¬ááá¯ááœáá·áºááŒá®áž áá»ááºááŸá¬ááŒááºááᯠáá»áŸáá±ááŒááºážááŒáá·áº á á¬áá±ážááœá²ááᯠááá±á¬ááºáá¬áá áºáá¯ááœáẠááŒá¯áá¯ááºáááºá á á¬áá±ážááœá²á ááºážáááºážá¡á á¡áááºážáá²ááœáẠáá°á áááºážáááŸáá á±ááá«á ááá¯ááºáá¶ááŸá¬ á¡áá®ážáá»ááºáááºáá²á· á á¶áá áºááᯠááááºáááºááŒá®ážáá²á· á¡áá»áááºááŸá¬ á á¬áá±ážááœá² ááŒá±ááŒá®ážááŒá® ááá¯áá±á¬á· ááá®ážááẠá¡áááºážáá² ááááºá áá«ááŸááá¯áẠááá±ážá á¡á±á¬áºááá¡á±á¬áẠááááºááááºááááºáááẠá¡áá»áááºáá°ááá¯á· á¡áá±ážááŒá®ážáááºá á¡ááá¬ááá¯ááºážáá²á· ááá¯ááºáááºáá²á· á¡áá»áááºááᯠáááá¯ááºáá¬ááá¯á· ááá·áºáááºá០ááœá±ážáá²á·áá¬á
á¡á ááá¯ááºážááœááºá á á áºáá±ážáá°ááẠáá¬ááºáá¯á¶ááŸáá·áº á¡áááºá¡ááŒáá·áºá¡á á¯á¶ (áááºáááºáá¬áá¬ááŒáá·áº) áá«ááŸááá±á¬ áááºá Primary ID ááᯠááŒáááẠááá¯á¡ááºááẠ- áá»áœááºá¯ááºá¡ááœáẠáááºážááẠááá¯ááºáá¶ááŒá¬ážáááºá ááá¯á·áá áºáá¯ááŒá áºááŒá®áž áááŸááááŒá áºáá±áá»á¬á á±ááẠdesktop ááŸáá·áº room áá±á«áºááœáẠáááºáááºááá¬ááᯠáááºáááºáá¬ážááẠááá¯á¡ááºáá«áááºá ááá¯ááºáá¶ááŒá¬ážá¡áá¬ááá¹áá¯áá»á¬ážá
á
á¬áá±ážááœá²áá¬áá¡ááœááºážá á¡áááºážá¡ááŒá
áºáá»á¬ážáá²ááŸáá
áºáá¯ááŒáá·áº á¡ááŒá¬ážááá±á¬ááºáá¬áááºááºááᯠááœáá·áºáá¬ážááẠááœáá·áºááŒá¯áááº-
áááºááááºážááá¯ážááœááºá áá¯ááºáá±á¬ááºá áá¬á á¬áá¬ážáá»á¬ážá ááááºáááºážááŸáá·áº á á áºáá±ážáá°ááŸáá·áº á áá¬ážááŒá±á¬áááºážáá»á¬ážá¡ááŒááºá á¡áá±ážááŒá®ážáá±á¬á¡áááºáá»á¬áž ááá¯á·ááá¯áẠá¡áááá·áºáá»á¬ážááᯠáá°ážáá°ááá¯ááºááá·áº ááŸááºá á¯áá»á¬ážá¡ááœáẠáááºážááá¯ážáá áºáá¯áááºáž ááŸáááẠ- áááºážááẠá¡ááŒáááºá¡áááºážááẠá¡áááºááŒá±áá«áááºá
áááá±á¬ááºážá áá¬áá»á¬áž
- á¡áá»áááºáá¯ááºáááºáá¬á
á±ááẠáá¬áááºáá°áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«á á€áááºááŸá¬ áá«á¡áá¯á¶ážááŒá¯áá²á·áá±á¬ á¡áá¬ááŒá
áºáááº-
export ns=default # пеÑÐµÐŒÐµÐœÐœÐ°Ñ ÐŽÐ»Ñ ÐœÑйЌÑпейÑа alias ku='kubectl' # ÑкПÑаÑОваеЌ ПÑМПвМÑÑ ÐºÐŸÐŒÐ°ÐœÐŽÑ alias kun='ku -n=$ns' # kubectl + namespace alias kudr='kun --dry-run -o=yaml' # ПÑÐµÐœÑ ÐœÑжМÑе ÑлагО, ÑÑÐŸÐ±Ñ Ð³ÐµÐœÐµÑОÑÑ yaml ПпОÑаМОе ÐŽÐ»Ñ ÐŸÐ±ÑекÑа
- á¡áááá·áºá¡ááœáẠá¡áá¶áá±á«ááºážá
ááºááŸá¯áá»á¬ážááᯠááŸááºáá¬ážáá«á ááœá±ážááŸá¬ážááá°áá®áá±á¬á¡áá¬áá»á¬ážá¡ááœáẠyaml ááá¯áá»ááºááŒááºá
áœá¬áá¯ááºáá¯ááºááá¯ááºá
á±ááẠ- pod/deploy/job/cronjob (áááºážááá¯á·ááá¯ááŸááºáááááºáá¯á¶ážááááá¯á¡ááºáá±á¬áºáááºážá áááºá¡áá¶ááŒáá·áºá¡áá°á¡áá®ááá¯ááŒáá·áºááá¯ááºáááºá -h):
kudr run pod1 --image=nginx --restart=Never > pod1.yaml kudr run deploy1 --image=nginx > deploy1.yaml kudr run job1 --image=nginx --restart=OnFailure > job1.yaml kudr run cronjob1 --image=nginx --restart=OnFailure --schedule="*/1 * * * * " > cronjob1.yaml
- á¡ááá¯áá±á¬áẠáááºážááŒá
áºá¡áááºáá»á¬ážááᯠáá¯á¶ážáá«-
ku get ns # вЌеÑÑП namespaces ku get deploy # вЌеÑÑП deployments ku get pv # вЌеÑÑП persistentvolumes ku get pvc # вЌеÑÑП persistentvolumeclaims ku get svc # вЌеÑÑП services # О Ñ.ÐŽ., пПлМÑй ÑпОÑПк ЌПжМП пПЎÑЌПÑÑеÑÑ Ð¿ÐŸ кПЌаМЎе: kubectl api-resources
- á¡áá¯ááºá¡á¬ážáá¯á¶ážááᯠááŒá®ážááŒá±á¬ááºááẠá¡áá»áááºááᯠááŸááºáááºá áœá¬ ááœá²áá±áááºááŸááºáá«á áá áºáá¯áááºážáá±á¬á¡áá¬ááœáẠááááºáá«ááŸáá·áºá áá±ážááœááºážáá»á¬ážááᯠáá»á±á¬áºááŒá®áž ááŸá±á·áááºáá«á á¡á ááá¯ááºážááŸá¬áá±á¬á· áá»áœááºáá±á¬áºáᬠáá¬áááºááœá±ááᯠá¡ááŸáááºá¡áá¯ááºáá²á·ááŒá®ážááŒá®áž á á¬áá±ážááœá²ááᯠá á±á¬á á±á¬ ááŒá®ážáááºááá¯á· áááºáá²á·áá±ááá·áº áá±á¬ááºáá¯á¶ážááŸá¬áá±á¬á· áá¬áááºááŸá áºáá¯ááᯠááŒá®ážá¡á±á¬ááºáá¯ááºááá¯á· á¡áá»áááºáááŸááá²á·áá«áá°ážá ááááºáá±á¬á· á á¬áá±ážááœá²á¡ááœáẠá¡áá»áááºááᯠáá±á¬ááºááŒá±á¬ááºážááŒááºáá»áá¬ážááŒá®áž á áá¬áá®áá¯á¶ážáá¯á¶áž áááºážáá¬áá±áá²á·áááºá
- á¡ááŒá±á¬ááºážá¡áá¬ááᯠááŒá±á¬ááºážááẠááá±á·áá«ááŸáá·áº - á¡áá¯ááºáá
áºáá¯á
á®áá¡á
ááœáẠááá¯áá»ááºáá±á¬ cluster ááœááºá¡áá¯ááºáá¯ááºáááºá¡ááœáẠááŒá±á¬ááºážáááºá¡ááœáẠcommand áá
áºáá¯áá±ážáá¬ážáááºá
á¡áááºáá±áá¬ááá¯áááºáž á á±á¬áá·áºááŒáá·áºáá«á áááºážá¡ááœáẠáá»áœááºá¯ááºááẠáá±á¬ááºáááºáááºááºáá áºáá¯ááᯠá¡áá¯á¶ážááŒá¯áá²á·áááº-alias kun='echo namespace=$ns && ku -n=$ns' # пÑО вÑпПлМеМОО кажЎПй ÐºÐŸÐŒÐ°ÐœÐŽÑ Ð¿ÐµÑвПй ÑÑÑПкПй Ñ ÐŒÐµÐœÑ Ð²ÑвПЎОлÑÑ ÑекÑÑОй ÐœÑйЌÑпейÑ
- áááºááŸááºá¡ááœáẠááœá±áá±ážáá»á±ááẠá¡áá»ááºá ááá¯ááá¯ááºáá«á áá»áŸá±á¬á·á á»á±ážáá»á¬ážááᯠá á±á¬áá·áºáá«á áááºáááºážááá±ážáá¬ážáá°ááẠ20-30% áá»áŸá±á¬á·á á»á±ážáá»á¬ážááŒáá·áº á¡áá±á¬ááºážááŒáŸáá·áºáááºáá¯ááºáá»á¬ážááᯠá¡á®ážáá±ážááºááŒáá·áº áááŒá¬áááá±ážááá¯á·áá«áááºá
- áá±á¬ááºáá¯á¶ážáá±á¬á· vim áá±á·áá¬áá« :)
ááá·áºááºáá»á¬áž
www.cncf.io/certification/ckad - áááºááŸááºá á¬áá»ááºááŸá¬ááá¯ááºááá¯ááºwww.udemy.com/course/certified-kubernetes-application-developer - ááŒááºáááºááŒááºážá¡ááœáẠá¡ááœááºáá±á¬ááºážááœááºáá±á¬ áááºáááºážááŒá áºááŒá®áž á¡áá¬á¡á¬ážáá¯á¶áž ááŸááºážáááºážááŒááºáá¬ážááŒá®áž ááá¯ááºáá±á¬áºáá¯á¶áá»á¬ážááŒáá·áºgithub.com/lucassa/CKAD-resources - á á¬áá±ážááœá²á¡ááœáẠá¡áá¯á¶ážáááºáá±á¬ááá·áºááºáá»á¬ážááŸáá·áº ááŸááºá á¯áá»á¬ážhabr.com/ru/company/flant/blog/425683 - ááá¯ááá¯áááºáá²áá±á¬ CKA á á¬áá±ážááœá²ááá¯á¡á±á¬ááºááŒááºááẠHabr áá¯ááºáá±á¬áºááá¯ááºáááºáá»á¬ážáá¶ááŸáá¯á¶ááŒááº
source: www.habr.com