เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบ™เบดเบเบปเบกเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡ Kubernetes

Hey Habr!

เปƒเบ™เบ•เบญเบ™เบ—เป‰เบฒเบเบ‚เบญเบ‡เบฅเบฐเบ”เบนเบฎเป‰เบญเบ™, เบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ•เบทเบญเบ™เบ—เปˆเบฒเบ™เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบทเบšเบ•เปเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบเปˆเบฝเบงเบเบฑเบšเบซเบปเบงเบ‚เปเป‰ Kubernetes เปเบฅเบฐเป„เบ”เป‰เบ•เบฑเบ”เบชเบดเบ™เปƒเบˆเป€เบœเบตเบเปเบœเปˆเบšเบปเบ”เบ„เบงเบฒเบกเบˆเบฒเบ Stackoverflow เบชเบฐเปเบ”เบ‡เปƒเบซเป‰เป€เบซเบฑเบ™เบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ™เบตเป‰เปƒเบ™เบ•เบญเบ™เบ•เบปเป‰เบ™เบ‚เบญเบ‡เป€เบ”เบทเบญเบ™เบกเบดเบ–เบธเบ™เบฒ.

เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบ™เบดเบเบปเบกเป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบ‚เบญเบ‡ Kubernetes

เป€เบžเบตเบ”เป€เบžเบตเบ™เบเบฑเบšเบเบฒเบ™เบญเปˆเบฒเบ™!

เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบ‚เบฝเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบญเบฒเบเบธเบ‚เบญเบ‡ Kubernetes เปเบกเปˆเบ™เบ›เบฐเบกเบฒเบ™. เบซเบปเบโ€‹เบ›เบตโ€‹, เปเบฅเบฐเปƒเบ™เป„เบฅเบเบฐเบชเบญเบ‡เบ›เบตเบ—เบตเปˆเบœเปˆเบฒเบ™เบกเบฒเบ„เบงเบฒเบกเบ™เบดเบเบปเบกเบ‚เบญเบ‡เบกเบฑเบ™เป„เบ”เป‰เป€เบ•เบตเบšเป‚เบ•เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเบ—เบตเปˆเบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบˆเบฑเบ”เบญเบฑเบ™เบ”เบฑเบšเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡ เบกเบฑเบเบ—เบตเปˆเบชเบธเบ” เป€เบงเบ—เบต. Kubernetes เบญเบฑเบ™เบ”เบฑเบšเบชเบฒเบกเปƒเบ™เบ›เบตเบ™เบตเป‰. เป€เบžเบทเปˆเบญเบชเบฐเบซเบผเบธเบš: Kubernetes เปเบกเปˆเบ™เปเบžเบฅเบฐเบ•เบฐเบŸเบญเบกเบ—เบตเปˆเบญเบญเบเปเบšเบšเบกเบฒเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบฅเปˆเบ™เปเบฅเบฐเบˆเบฑเบ”เบฅเบฝเบ‡เบงเบฝเบเบ—เบตเปˆเบšเบฑเบ™เบˆเบธเบšเบฑเบ™เบˆเบธ.

เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป„เบ”เป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบญเบญเบเปเบšเบšเบžเบดเป€เบชเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเบเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เปƒเบ™ Linux; เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป„เบ”เป‰เบฅเบงเบกเป€เบญเบปเบฒเบ•เบฑเป‰เบ‡เปเบ•เปˆเบ›เบต 2007 เบเบธเปˆเบก, เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ 2002 - namespaces. เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเป„เบ”เป‰เบ–เบทเบเบญเบญเบเปเบšเบšเบ”เบตเบเบงเปˆเบฒเปƒเบ™เบ›เบต 2008, เป€เบกเบทเปˆเบญเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เป„เบ”เป‰ LXC, เปเบฅเบฐ Google เบžเบฑเบ”เบ—เบฐเบ™เบฒเบเบปเบ™เป„เบเบ‚เบญเบ‡เบšเปเบฅเบดเบชเบฑเบ”เบžเบฒเบเปƒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡เบ—เบตเปˆเป€เบญเบตเป‰เบ™เบงเปˆเบฒ Borg, เบšเปˆเบญเบ™เบ—เบตเปˆ "เบงเบฝเบเบ‡เบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เปเบกเปˆเบ™เป€เบฎเบฑเบ”เบขเบนเปˆเปƒเบ™เบ–เบฑเบ‡." เบˆเบฒเบเบ—เบตเปˆเบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบเป‰เบฒเบงเป„เบ›เบชเบนเปˆเบ›เบต 2013, เป€เบกเบทเปˆเบญเบเบฒเบ™เป€เบ›เบตเบ”เบ•เบปเบง Docker เบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เป€เบเบตเบ”เบ‚เบถเป‰เบ™, เปเบฅเบฐเบชเบธเบ”เบ—เป‰เบฒเบ containers เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบกเบฐเบซเบฒเบŠเบปเบ™เบ—เบตเปˆเบ™เบดเบเบปเบก. เปƒเบ™เป€เบงเบฅเบฒเบ™เบฑเป‰เบ™, เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ•เบปเป‰เบ™เบ•เปเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™ orchestration เบ•เบนเป‰เบ„เบญเบ™เป€เบ—เบ™เป€เบ™เบตเปเบกเปˆเบ™ เป€เบกเป‚เบŠ, เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบฅเบฒเบงเบšเปเปˆเป„เบ”เป‰เป€เบ›เบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบก. Kubernetes เป„เบ”เป‰เบ–เบทเบเบ›เปˆเบญเบเบญเบญเบเบกเบฒเบ„เบฑเป‰เบ‡เบ—เปเบฒเบญเบดเบ”เปƒเบ™เบ›เบต 2015, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบ™เบตเป‰เป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ de facto เปƒเบ™เบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ‚เบญเบ‡ orchestration เบšเบฑเบ™เบˆเบธ.

เป€เบžเบทเปˆเบญเบžเบฐเบเบฒเบเบฒเบกเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเป€เบ›เบฑเบ™เบซเบเบฑเบ‡ Kubernetes เบˆเบถเปˆเบ‡เป€เบ›เบฑเบ™เบ—เบตเปˆเบ™เบดเบเบปเบกเบซเบผเบฒเบ, เปƒเบซเป‰เบฅเบญเบ‡เบ•เบญเบšเบ„เบณเบ–เบฒเบกเบชเบญเบ‡เบชเบฒเบกเบ‚เปเป‰. เป€เบงเบฅเบฒเบชเบธเบ”เบ—เป‰เบฒเบเบ—เบตเปˆเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เบ•เบปเบเบฅเบปเบ‡เบเบฑเบ™เป„เบ”เป‰เบเปˆเบฝเบงเบเบฑเบšเบงเบดเบ—เบตเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป„เบ›เบชเบนเปˆเบเบฒเบ™เบœเบฐเบฅเบดเบ”? เบกเบตเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบซเบผเบฒเบเบ›เบฒเบ™เปƒเบ”เบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบนเป‰เบˆเบฑเบเบœเบนเป‰เบ—เบตเปˆเปƒเบŠเป‰เป€เบ„เบทเปˆเบญเบ‡เบกเบทเบเป‰เบญเบ™เบงเปˆเบฒเบžเบงเบเป€เบ‚เบปเบฒเบชเบฐเบซเบ™เบญเบ‡เปƒเบซเป‰เบญเบญเบเบˆเบฒเบเบเปˆเบญเบ‡? เบกเบทเป‰เบ™เบตเป‰เบกเบตเบœเบนเป‰เบšเปเบฅเบดเบซเบฒเบ™เบ„เบฅเบฒเบงเบˆเบฑเบเบ„เบปเบ™เบ—เบตเปˆเบšเปเปˆเป€เบ‚เบปเป‰เบฒเปƒเบˆเบงเปˆเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปเบ™เบงเปƒเบ”? เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบ„เปเบฒเบ•เบญเบšเบ‚เบญเบ‡เบ„เปเบฒเบ–เบฒเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰.

เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™ YAML

เปƒเบ™เป‚เบฅเบเบ—เบตเปˆเป„เบ”เป‰เบˆเบฒเบ Puppet เปเบฅเบฐ Chef เป„เบ› Kubernetes, เบซเบ™เบถเปˆเบ‡เปƒเบ™เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบเบฒเบ™เบเป‰เบฒเบเบˆเบฒเบ "เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบฅเบฐเบซเบฑเบ”" เป„เบ› "เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™" เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐ, เป€เบŠเบฑเปˆเบ™ YAML. เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบฑเบ‡เปเบปเบ”เปƒเบ™ Kubernetes, เป€เบŠเบดเปˆเบ‡เบฎเบงเบกเบกเบตเบžเบญเบ”, เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ, เบ•เบปเบงเบขเปˆเบฒเบ‡เบ—เบตเปˆเบ™เบณเปƒเบŠเป‰, เบ›เบฐเบฅเบดเบกเบฒเบ™ เปเบฅเบฐ เบญเบทเปˆเบ™เป†, เบชเบฒเบกเบฒเบ”เบญเบฐเบ—เบดเบšเบฒเบเป„เบ”เป‰เบ‡เปˆเบฒเบเปƒเบ™เป„เบŸเบฅเปŒ YAML. เบเบปเบโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡:

apiVersion: v1
kind: Pod
metadata:
  name: site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80

เบกเบธเบกเป€เบšเบดเปˆเบ‡เบ™เบตเป‰เป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ”เป‰เบฒเบ™ DevOps เบซเบผเบท SRE เป€เบžเบทเปˆเบญเบชเบฐเปเบ”เบ‡เบญเบญเบเบขเปˆเบฒเบ‡เป€เบ•เบฑเบกเบ—เบตเปˆเบเปˆเบฝเบงเบเบฑเบšเบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเป‚เบ”เบเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบฅเบฐเบซเบฑเบ”เปƒเบ™เบžเบฒเบชเบฒเป€เบŠเบฑเปˆเบ™ Python เบซเบผเบท Javascript.

เบ‚เปเป‰เป„เบ”เป‰เบ›เบฝเบšเบญเบทเปˆเบ™เป†เบ‚เบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เป€เบ›เบฑเบ™เบ‚เปเป‰เบกเบนเบ™เบ›เบฐเบเบญเบšเบกเบต:

  • GitOps เบซเบผเบท Git Operations Version Control. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเป„เบŸเบฅเปŒ Kubernetes YAML เบ—เบฑเบ‡เปเบปเบ”เป„เบงเป‰เปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™ git, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฒเบกเป„เบ”เป‰เบขเปˆเบฒเบ‡เปเบ™เปˆเบ™เบญเบ™เบงเปˆเบฒเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป€เบกเบทเปˆเบญเปƒเบ”, เปƒเบœเป€เบ›เบฑเบ™เบœเบนเป‰เบชเป‰เบฒเบ‡ เปเบฅเบฐเบญเบฑเบ™เปƒเบ”เบ–เบทเบเบ›เปˆเบฝเบ™เปเบ›เบ‡. เบ™เบตเป‰เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเป‚เบ›เปˆเบ‡เปƒเบชเบ‚เบญเบ‡เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เปƒเบ™เบ—เบปเปˆเบงเบญเบปเบ‡เบเบฒเบ™เบˆเบฑเบ”เบ•เบฑเป‰เบ‡เปเบฅเบฐเบ›เบฑเบšเบ›เบธเบ‡เบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบ‡เบฒเบ™เป‚เบ”เบเบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบ„เบงเบฒเบกเบšเปเปˆเปเบ™เปˆเบ™เบญเบ™, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบžเบฐเบ™เบฑเบเบ‡เบฒเบ™เบ„เบงเบ™เบŠเบญเบเบซเบฒเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบžเบงเบเป€เบ‚เบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™. เปƒเบ™เบ‚เบฐเบ™เบฐเบ”เบฝเบงเบเบฑเบ™, เบกเบฑเบ™เบเปเปˆเบ‡เปˆเบฒเบเบ‚เบถเป‰เบ™เบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เปเบ›เบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ Kubernetes เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เป‚เบ”เบเบเบฒเบ™เบฅเบงเบกเป€เบญเบปเบฒเบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบ”เบถเบ‡.
  • เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ. เป€เบกเบทเปˆเบญเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป€เบ›เบฑเบ™ YAML, เบกเบฑเบ™เบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‡เปˆเบฒเบเบ—เบตเปˆเบชเบธเบ”เบชเปเบฒเบฅเบฑเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบเบธเปˆเบกเบ—เบตเปˆเบˆเบฐเบ›เปˆเบฝเบ™เบซเบ™เบถเปˆเบ‡เบซเบผเบทเบชเบญเบ‡เบ•เบปเบงเป€เบฅเบเปƒเบ™เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ Kubernetes, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบˆเบถเปˆเบ‡เบ›เปˆเบฝเบ™เบงเบดเบ—เบตเบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”. Kubernetes เบชเบฐเบซเบ™เบญเบ‡เบเบปเบ™เป„เบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเบ‚เบฐเบซเบ™เบฒเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบ•เบฒเบกเปเบ™เบงเบ™เบญเบ™เบ‚เบญเบ‡เบเบฑเบ, เป€เบŠเบดเปˆเบ‡เบชเบฒเบกเบฒเบ”เบ™เปเบฒเปƒเบŠเป‰เป„เบ”เป‰เบขเปˆเบฒเบ‡เบชเบฐเบ”เบงเบเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบงเปˆเบฒเบˆเปเบฒเบ™เบงเบ™ pods เบ•เปเบฒเปˆเบชเบธเบ”เปเบฅเบฐเบชเบนเบ‡เบชเบธเบ”เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบชเบฐเป€เบžเบฒเบฐเป€เบžเบทเปˆเบญเบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เปƒเบ™เบฅเบฐเบ”เบฑเบšเบ•เปˆเปเบฒเปเบฅเบฐเบชเบนเบ‡. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบ—เปˆเบฒเบ™เป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบเบฐเบ—เบฑเบ™เบซเบฑเบ™, maxReplicas เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบˆเบฒเบ 10 เบซเบฒ 20:

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp-deployment
  minReplicas: 1
  maxReplicas: 20
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

  • เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเปเบฅเบฐเบเบฒเบ™เบ„เบธเป‰เบกเบ„เบญเบ‡. YAML เปเบกเปˆเบ™เบ”เบตเป€เบฅเบตเบ”เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฐเป€เบกเบตเบ™เบงเปˆเบฒเบชเบดเปˆเบ‡เบ—เบตเปˆเบ–เบทเบเบ™เบณเปƒเบŠเป‰เบขเบนเปˆเปƒเบ™ Kubernetes. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เบงเบฒเบกเบเบฑเบ‡เบงเบปเบ™เบเปˆเบฝเบงเบเบฑเบšเบ„เบงเบฒเบกเบ›เบญเบ”เป„เบžเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เปเบกเปˆเบ™เป€เบ›เบฑเบ™เบซเปˆเบงเบ‡เบงเปˆเบฒเบงเบฝเบเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบเปเบฒเบฅเบฑเบ‡เป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบšเป? เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเบญเบฒเบ”เบˆเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ„เบทเปˆเบญเบ‡เบกเบทเป€เบŠเบฑเปˆเบ™: เบเบฒเบ™เปเบ‚เปˆเบ‡เบ‚เบฑเบ™, YAML/JSON validator, plus เป€เบ›เบตเบ”เบ•เบปเบงเปเบ—เบ™เบ™เบฐเป‚เบเบšเบฒเบ, เบœเบนเป‰เบเบงเบ”เบชเบญเบšเบ™เบฐเป‚เบเบšเบฒเบเป€เบžเบทเปˆเบญเบฎเบฑเบšเบ›เบฐเบเบฑเบ™เบงเปˆเบฒเบชเบฐเบžเบฒเบšเบเบฒเบ™ เป€เบ™เบทเป‰เบญเปƒเบ™เบ„เบงเบฒเบกเบ›เบญเบ”เป„เบž เบงเบฝเบเบ‡เบฒเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบžเบฒเบŠเบฐเบ™เบฐเปเบฅเปˆเบ™เบ”เป‰เบงเบเบชเบดเบ”เบ—เบดเบ‚เบญเบ‡เบœเบนเป‰เป€เบšเบดเปˆเบ‡เปเบเบ‡เบฅเบฐเบšเบปเบš. เบ–เป‰เบฒเบญเบฑเบ™เบ™เบตเป‰เบ•เป‰เบญเบ‡เบเบฒเบ™, เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เปƒเบŠเป‰เบ™เบฐเป‚เบเบšเบฒเบเบ‡เปˆเบฒเบเป†เป„เบ”เป‰ เบฎเปˆเบญเบ‡, เปเบšเบšเบ™เบตเป‰:

package main

deny[msg] {
  input.kind = "Deployment"
  not input.spec.template.spec.securityContext.runAsNonRoot = true
  msg = "Containers must not run as root"
}

  • เบ—เบฒเบ‡เป€เบฅเบทเบญเบเปƒเบ™เบเบฒเบ™เป€เบŠเบทเปˆเบญเบกเป‚เบเบ‡เบเบฑเบšเบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ„เบฅเบฒเบง. เบซเบ™เบถเปˆเบ‡เปƒเบ™เบ—เปˆเบฒเบญเปˆเบฝเบ‡เบ—เบตเปˆเบซเบ™เป‰เบฒเบชเบฑเบ‡เป€เบเบ”เบ—เบตเปˆเบชเบธเบ”เปƒเบ™เป€เบ•เบฑเบเป‚เบ™เป‚เบฅเบขเบตเบชเบนเบ‡เบ‚เบญเบ‡เบกเบทเป‰เบ™เบตเป‰เปเบกเปˆเบ™เบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบขเบนเปˆเปƒเบ™เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบŸเบฑเบ‡เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ. เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบญเบปเบ‡เบ›เบฐเบเบญเบš cloud-เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™ Kubernetes เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบเบธเปˆเบกโ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เป€เบŠเบทเปˆเบญเบกโ€‹เป‚เบเบ‡โ€‹เบเบฑเบšโ€‹เบœเบนเป‰โ€‹เปƒเบซเป‰โ€‹เบšเปโ€‹เบฅเบดโ€‹เบ„โ€‹เบฅเบฒเบงโ€‹เบ—เบตเปˆโ€‹เบกเบฑเบ™โ€‹เบ”เปเบฒโ€‹เป€เบ™เบตเบ™โ€‹เบเบฒเบ™โ€‹. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบœเบนเป‰เปƒเบŠเป‰เปเบฅเปˆเบ™เปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เปƒเบ™ Kubernetes เปƒเบ™ AWS เปเบฅเบฐเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบ›เบตเบ”เป€เบœเบตเบเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™เบ™เบฑเป‰เบ™เบœเปˆเบฒเบ™เบเบฒเบ™เบšเปเบฅเบดเบเบฒเบ™, เบœเบนเป‰เปƒเบซเป‰เบšเปเบฅเบดเบเบฒเบ™เบ„เบฅเบฒเบงเบŠเปˆเบงเบเบชเป‰เบฒเบ‡เบšเปเบฅเบดเบเบฒเบ™เป‚เบ”เบเบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”. LoadBalancerเป€เบŠเบดเปˆเบ‡เบˆเบฐเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบ”เบธเปˆเบ™เบ”เปˆเบฝเบ‡เบเบฒเบ™เป‚เบซเบผเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” Amazon Elastic Load Balancerเป€เบžเบทเปˆเบญเบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบเบฒเบ™เบˆเบฐเบฅเบฒเบˆเบญเบ™เป„เบ›เบซเบฒเปเบญเบฑเบšเบžเบฅเบดเป€เบ„เบŠเบฑเบ™ pods.

เบเบฒเบ™เบ‚เบฐเบซเบเบฒเบ

Kubernetes เปเบกเปˆเบ™เบ‚เบฐเบซเบเบฒเบเป„เบ”เป‰เบซเบผเบฒเบ เปเบฅเบฐเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบกเบฑเบเบกเบฑเบ™. เบกเบตเบŠเบธเบ”เบ‚เบญเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบกเบตเบขเบนเปˆเป€เบŠเบฑเปˆเบ™: เบเบฑเบ, เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, StatefulSets, เบ„เบงเบฒเบกโ€‹เบฅเบฑเบšโ€‹, ConfigMaps, เปเบฅเบฐเบญเบทเปˆเบ™เป†. เปเบ—เป‰เบˆเบดเบ‡เปเบฅเป‰เบง, เบœเบนเป‰เปƒเบŠเป‰เปเบฅเบฐเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบญเบทเปˆเบ™เป†เปƒเบ™เบฎเบนเบšเปเบšเบš เบ„เปเบฒเบ™เบดเบเบฒเบกเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบ—เบตเปˆเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡.

เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ CronTabเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: crontabs.my.org
spec:
  group: my.org
  versions:
    - name: v1
      served: true
      storage: true
      Schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                cronSpec:
                  type: string
                  pattern: '^(d+|*)(/d+)?(s+(d+|*)(/d+)?){4}$'
                replicas:
                  type: integer
                  minimum: 1
                  maximum: 10
  scope: Namespaced
  names:
    plural: crontabs
    singular: crontab
    kind: CronTab
    shortNames:
    - ct

เบ•เปเปˆเบกเบฒเบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เบชเป‰เบฒเบ‡เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™ CronTab เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

apiVersion: "my.org/v1"
kind: CronTab
metadata:
  name: my-cron-object
spec:
  cronSpec: "* * * * */5"
  image: my-cron-image
  replicas: 5

เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ‚เบฐเบซเบเบฒเบเปƒเบ™ Kubernetes เปเบกเปˆเบ™เบงเปˆเบฒเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เบ‚เบฝเบ™เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เบœเบนเป‰เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™ เปเบกเปˆเบ™เบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบดเป€เบชเบ”เปƒเบ™เบเบธเปˆเบก Kubernetes เบ—เบตเปˆเป€เบฎเบฑเบ”เบงเบฝเบเบ•เบฒเบก "เบงเบปเบ‡เบˆเบญเบ™เบ„เบงเบšเบ„เบธเบก" เบ”เป‰เบงเบเบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™, เบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ”เบเบฒเบ™เบˆเบฑเบ”เบเบฒเบ™ CRDs (เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เปเบšเบšเบเปเบฒเบซเบ™เบปเบ”เป€เบญเบ‡) เป‚เบ”เบเบเบฒเบ™เปเบฅเบเบ›เปˆเบฝเบ™เบ‚เปเป‰เบกเบนเบ™เบเบฑเบš Kubernetes API.

เบกเบตเป€เบ„เบทเปˆเบญเบ‡เบกเบทเบˆเปเบฒเบ™เบงเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบŠเบธเบกเบŠเบปเบ™เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบกเบฑเบ™เบ‡เปˆเบฒเบเบชเปเบฒเบฅเบฑเบšเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเปƒเบ™เบเบฒเบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ‚เบญเบ‡เบ•เบปเบ™เป€เบญเบ‡. เปƒเบ™โ€‹เบšเบฑเบ™โ€‹เบ”เบฒโ€‹เบžเบงเบโ€‹เป€เบ‚เบปเบฒ - เบเบญเบšเบเบฒเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™ เปเบฅเบฐเบฅเบฒเบง เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™ SDK. SDK เบ™เบตเป‰เบชเบฐเบซเบ™เบญเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบชเป‰เบฒเบ‡เบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เป„เบ”เป‰เป„เบง. เปƒเบซเป‰เป€เบงเบปเป‰เบฒเบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบˆเบฒเบเป€เบชเบฑเป‰เบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบšเบฒเบ‡เบชเบดเปˆเบ‡เบšเบฒเบ‡เบขเปˆเบฒเบ‡เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

$ operator-sdk new my-operator --repo github.com/myuser/my-operator

เบ™เบตเป‰เบชเป‰เบฒเบ‡เบฅเบฐเบซเบฑเบ” boilerplate เบ—เบฑเบ‡เบซเบกเบปเบ”เบชเปเบฒเบฅเบฑเบšเบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™, เบฅเบงเบกเบ—เบฑเบ‡เป„เบŸเบฅเปŒ YAML เปเบฅเบฐเบฅเบฐเบซเบฑเบ” Golang:

.
|____cmd
| |____manager
| | |____main.go
|____go.mod
|____deploy
| |____role.yaml
| |____role_binding.yaml
| |____service_account.yaml
| |____operator.yaml
|____tools.go
|____go.sum
|____.gitignore
|____version
| |____version.go
|____build
| |____bin
| | |____user_setup
| | |____entrypoint
| |____Dockerfile
|____pkg
| |____apis
| | |____apis.go
| |____controller
| | |____controller.go

เบˆเบฒเบเบ™เบฑเป‰เบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบก APIs เปเบฅเบฐเบ•เบปเบงเบ„เบงเบšเบ„เบธเบกเบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™, เป€เบŠเบฑเปˆเบ™เบ™เบตเป‰:

$ operator-sdk add api --api-version=myapp.com/v1alpha1 --kind=MyAppService

$ operator-sdk add controller --api-version=myapp.com/v1alpha1 --kind=MyAppService

เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบชเบธเบ”เบ—เป‰เบฒเบ, เบ›เบฐเบเบญเบšเบ•เบปเบงเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เปเบฅเบฐเบชเบปเปˆเบ‡เป„เบ›เบ—เบตเปˆเบ—เบฐเบšเบฝเบ™เบ‚เบญเบ‡เบšเบฑเบ™เบˆเบธเบ‚เบญเบ‡เบ—เปˆเบฒเบ™:

$ operator-sdk build your.container.registry/youruser/myapp-operator

เบ–เป‰เบฒเบœเบนเป‰เบžเบฑเบ”เบ—เบฐเบ™เบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒ, เบฅเบฐเบซเบฑเบ” boilerplate เปƒเบ™เป„เบŸเบฅเปŒ Go เบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบ”เป‰. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบžเบทเปˆเบญเบ”เบฑเบ”เปเบ›เบ‡เบชเบฐเป€เบžเบฒเบฐเบ‚เบญเบ‡เบ•เบปเบงเบ„เบงเบšเบ„เบธเบก, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เป„เบŸเบฅเปŒ controller.go.

เป‚เบ„เบ‡เบเบฒเบ™เบญเบทเปˆเบ™ เบ—เบธเบเบšเปˆเบญเบ™, เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเป‰เบฒเบ‡เบ„เปเบฒเบ–เบฐเปเบซเบผเบ‡เบ—เบตเปˆเปƒเบŠเป‰เบžเบฝเบ‡เปเบ•เปˆเป„เบŸเบฅเปŒ YAML เบ›เบฐเบเบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบœเบนเป‰เบ›เบฐเบเบญเบšเบเบฒเบ™เบชเปเบฒเบฅเบฑเบš Apache Kafka เบˆเบฐเบ–เบทเบเบเปเบฒเบ™เบปเบ”เบ›เบฐเบกเบฒเบ™ เบชเบฐเบ™เบฑเป‰เบ™. เบ”เป‰เบงเบเบกเบฑเบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบ•เบดเบ”เบ•เบฑเป‰เบ‡เบเบธเปˆเบก Kafka เบขเบนเปˆเป€เบ—เบดเบ‡ Kubernetes เบ”เป‰เบงเบเบชเบญเบ‡เบชเบฒเบกเบ„เปเบฒเบชเบฑเปˆเบ‡:

$ kubectl kudo install zookeeper
$ kubectl kudo install kafka

เปเบฅเบฐเบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™ configure เบกเบฑเบ™เบ”เป‰เบงเบเบ„เปเบฒเบชเบฑเปˆเบ‡เบญเบทเปˆเบ™:

$ kubectl kudo install kafka --instance=my-kafka-name 
            -p ZOOKEEPER_URI=zk-zookeeper-0.zk-hs:2181 
            -p ZOOKEEPER_PATH=/my-path -p BROKER_CPUS=3000m 
            -p BROKER_COUNT=5 -p BROKER_MEM=4096m 
            -p DISK_SIZE=40Gi -p MIN_INSYNC_REPLICAS=3 
            -p NUM_NETWORK_THREADS=10 -p NUM_IO_THREADS=20

เบ™เบฐเบงเบฑเบ”เบ•เบฐ เบเบณ

เปƒเบ™เป„เบฅเบเบฐเบชเบญเบ‡เบชเบฒเบกเบ›เบตเบœเปˆเบฒเบ™เบกเบฒ, เบเบฒเบ™เบ›เปˆเบญเบ Kubernetes เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เป„เบ”เป‰เบญเบญเบเบกเบฒเบ—เบธเบเป†เบชเบญเบ‡เบชเบฒเบกเป€เบ”เบทเบญเบ™ - เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบชเบฒเบกเบซเบฒเบชเบตเปˆเบเบฒเบ™เบ›เปˆเบญเบเปƒเบซเบเปˆเบ•เปเปˆเบ›เบต. เบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบฅเบฑเบเบชเบฐเบ™เบฐเปƒเบซเบกเปˆเบ—เบตเปˆเบ™เปเบฒเบชเบฐเป€เบซเบ™เบตเปƒเบ™เปเบ•เปˆเบฅเบฐเบžเบงเบเบกเบฑเบ™เบšเปเปˆเบซเบผเบธเบ”เบฅเบปเบ‡. เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เบšเปเปˆเบกเบตเบชเบฑเบ™เบเบฒเบ™เบ—เบตเปˆเบˆเบฐเบŠเป‰เบฒเบฅเบปเบ‡เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบซเบเบธเป‰เบ‡เบเบฒเบเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰ - เป€เบšเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเบฐเบ–เบฒเบ™เบฐเบเบฒเบ™เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ เบเบดเบ”เบˆเบฐเบเปเบฒเป‚เบ„เบ‡เบเบฒเบ™ Kubernetes เปƒเบ™ Github.

เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบซเบกเปˆเบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เบเบธเปˆเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบ‡เบฒเบ™เบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบเบทเบ”เบซเบเบธเปˆเบ™เบซเบผเบฒเบเบ‚เบถเป‰เบ™เปƒเบ™เบ—เบปเปˆเบงเบงเบฝเบเบ—เบตเปˆเบซเบผเบฒเบเบซเบผเบฒเบ. เบ™เบญเบเบˆเบฒเบเบ™เบฑเป‰เบ™, เบ™เบฑเบเบ‚เบฝเบ™เป‚เบ›เบฅเปเบเบฅเบกเบกเบตเบ„เบงเบฒเบกเบชเบธเบเปƒเบ™เบเบฒเบ™เบ„เบงเบšเบ„เบธเบกเบซเบผเบฒเบเบเบงเปˆเบฒเป€เบเบปเปˆเบฒเป€เบกเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเป‚เบ”เบเบเบปเบ‡เบเบฑเบšเบเบฒเบ™เบœเบฐเบฅเบดเบ”.

เบŠเบธเบกเบŠเบปเบ™

เบฅเบฑเบเบชเบฐเบ™เบฐเบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบญเบตเบเบญเบฑเบ™เบซเบ™เบถเปˆเบ‡เบ‚เบญเบ‡เบ„เบงเบฒเบกเบ™เบดเบเบปเบกเบ‚เบญเบ‡ Kubernetes เปเบกเปˆเบ™เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบ‚เบญเบ‡เบŠเบธเบกเบŠเบปเบ™เบ‚เบญเบ‡เบ•เบปเบ™. เปƒเบ™เบ›เบต 2015, เป€เบกเบทเปˆเบญเป€เบ–เบดเบ‡เป€เบงเบตเบŠเบฑเบ™ 1.0, Kubernetes เป„เบ”เป‰เบฎเบฑเบšเบเบฒเบ™เบชเบฐเปœเบฑเบšเบชเบฐเปœเบนเบ™เป‚เบ”เบ เบกเบนเบ™เบ™เบดเบ—เบดเบ„เบญเบกเบžเบดเบงเป€เบ•เบตเป‰ Cloud Native.

เบเบฑเบ‡เบกเบตเบŠเบธเบกเบŠเบปเบ™เบ•เปˆเบฒเบ‡เป† SIG (เบเบธเปˆเบกเบ—เบตเปˆเบกเบตเบ„เบงเบฒเบกเบชเบปเบ™เปƒเบˆเบžเบดเป€เบชเบ”) เป„เบ”เป‰เบชเบธเบกเปƒเบชเปˆเบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเปƒเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบ‚เบญเบ‡ Kubernetes เปƒเบ™เบ‚เบฐเบ™เบฐเบ—เบตเปˆเป‚เบ„เบ‡เบเบฒเบ™เบžเบฑเบ”เบ—เบฐเบ™เบฒ. เบเบธเปˆเบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบเปเบฒเบฅเบฑเบ‡เป€เบžเบตเปˆเบกเบ„เบธเบ™เบชเบปเบกเบšเบฑเบ”เปƒเบซเบกเปˆเบขเปˆเบฒเบ‡เบ•เปเปˆเป€เบ™เบทเปˆเบญเบ‡, เป€เบฎเบฑเบ”เปƒเบซเป‰เบเบฒเบ™เป€เบฎเบฑเบ”เบงเบฝเบเบเบฑเบš Kubernetes เบชเบฐเบ”เบงเบเปเบฅเบฐเบชเบฐเบ”เบงเบเบเบงเปˆเบฒ.

เบกเบนเบ™เบ™เบดเบ—เบด Cloud Native เบเบฑเบ‡เป€เบ›เบฑเบ™เป€เบˆเบปเป‰เบฒเบžเบฒเบš CloudNativeCon/KubeCon, เป€เบŠเบดเปˆเบ‡เปƒเบ™เป€เบงเบฅเบฒเบ‚เบฝเบ™, เป€เบ›เบฑเบ™เบเบญเบ‡เบ›เบฐเบŠเบธเบกเปเบซเบผเปˆเบ‡เป€เบ›เบตเบ”เบ—เบตเปˆเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เป‚เบฅเบ. เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบˆเบฑเบ”เบ‚เบถเป‰เบ™เบชเบฒเบกเบ„เบฑเป‰เบ‡เบ•เปเปˆเบ›เบต, เบกเบฑเบ™เบ™เปเบฒเป€เบญเบปเบฒเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบซเบฅเบฒเบเบžเบฑเบ™เบ„เบปเบ™เบ—เบตเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ Kubernetes เปเบฅเบฐเบฅเบฐเบšเบปเบšเบ™เบดเป€เบงเบ”เบ‚เบญเบ‡เบกเบฑเบ™, เป€เบŠเบฑเปˆเบ™เบ”เบฝเบงเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบฎเบฝเบ™เบฎเบนเป‰เบฅเบฑเบเบชเบฐเบ™เบฐเปƒเบซเบกเปˆเบ—เบตเปˆเบ›เบฒเบเบปเบ”เปƒเบ™เบ—เบธเบเป†เบชเบฒเบกเป€เบ”เบทเบญเบ™.

เบเบดเปˆเบ‡เป„เบ›เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, Cloud Native Foundation เบกเบต เบ„เบฐเบ™เบฐเบเปเบฒเบกเบฐเบเบฒเบ™เบเบงเบ”เบเบฒเบ”เป‰เบฒเบ™เบงเบดเบŠเบฒเบเบฒเบ™, เป€เบŠเบดเปˆเบ‡, เบžเป‰เบญเบกเบเบฑเบš SIGs, เบ—เบปเบšเบ—เบงเบ™เบ„เบทเบ™เปƒเบซเบกเปˆเปเบฅเบฐเบ—เบตเปˆเบกเบตเบขเบนเปˆเปเบฅเป‰เบง เป‚เบ„เบ‡เบเบฒเบ™ เบเบญเบ‡เบ—เบถเบ™เบชเบธเบกเปƒเบชเปˆเบฅเบฐเบšเบปเบšเบ™เบดเป€เบงเบ”เป€เบกเบ„. เบชเปˆเบงเบ™เปƒเบซเบเปˆเบ‚เบญเบ‡เป‚เบ„เบ‡เบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบŠเปˆเบงเบเบ›เบฑเบšเบ›เบธเบ‡เบ„เบงเบฒเบกเป€เบ‚เบฑเป‰เบกเปเบ‚เบ‡เบ‚เบญเบ‡ Kubernetes.

เบชเบธเบ”เบ—เป‰เบฒเบ, เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป€เบŠเบทเปˆเบญเบงเปˆเบฒ Kubernetes เบˆเบฐเบšเปเปˆเบ›เบฐเบชเบปเบšเบœเบปเบ™เบชเปเบฒเป€เบฅเบฑเบ”เบ„เบทเบเบฑเบšเบงเปˆเบฒเบšเปเปˆเบกเบตเบ„เบงเบฒเบกเบžเบฐเบเบฒเบเบฒเบกเบชเบฐเบ•เบดเบ‚เบญเบ‡เบŠเบธเบกเบŠเบปเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”, เบšเปˆเบญเบ™เบ—เบตเปˆเบ›เบฐเบŠเบฒเบŠเบปเบ™เบขเบนเปˆเบฎเปˆเบงเบกเบเบฑเบ™เปเบ•เปˆเปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™เบเบดเบ™เบ”เบตเบ•เป‰เบญเบ™เบฎเบฑเบšเบœเบนเป‰เปƒเบซเบกเปˆเป€เบ‚เบปเป‰เบฒเบกเบฒ.

เบญเบฐเบ™เบฒเบ„เบปเบ”

เบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบเบ•เบปเป‰เบ™เบ•เปเบ—เบตเปˆเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒเบˆเบฐเบ•เป‰เบญเบ‡เบˆเบฑเบ”เบเบฒเบ™เบเบฑเบšเปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”เปเบกเปˆเบ™เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”เปƒเบ™เบเบฒเบ™เบชเบธเบกเปƒเบชเปˆเบฅเบฒเบเบฅเบฐเบญเบฝเบ”เบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡, เปเบฅเบฐเบšเปเปˆเปเบกเปˆเบ™เบเปˆเบฝเบงเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบ—เบตเปˆเบกเบฑเบ™เบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™. เบกเบฑเบ™เบ•เบญเบšเบชเบฐเบซเบ™เบญเบ‡เปเบ™เบงเป‚เบ™เป‰เบกเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰ เบ•เบปเบงเปเบšเบšเบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเบณเปเบšเบšเป€เบŠเบตเบšเป€เบงเบต, เป€เบŠเบดเปˆเบ‡เป€เบ›เบฑเบ™เบซเบ™เบถเปˆเบ‡เปƒเบ™เบŠเบฑเป‰เบ™เบ™เปเบฒเปƒเบ™เบกเบทเป‰เบ™เบตเป‰. เบเบญเบšเบ‚เบฑเป‰เบ™เบชเบนเบ‡เบกเบตเบขเบนเปˆเปเบฅเป‰เบง, เป€เบŠเบฑเปˆเบ™:. เบžเบทเป‰เบ™เป€เบกเบทเบญเบ‡ ะธ OpenFaas, เป€เบŠเบดเปˆเบ‡เปƒเบŠเป‰ Kubernetes เป€เบžเบทเปˆเบญ abstract เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบžเบทเป‰เบ™เบ–เบฒเบ™เบˆเบฒเบเบ™เบฑเบเบžเบฑเบ”เบ—เบฐเบ™เบฒ.

เปƒเบ™เบšเบปเบ”เบ„เบงเบฒเบกเบ™เบตเป‰, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบžเบฝเบ‡เปเบ•เปˆเบ‚เบนเบ”เบžเบทเป‰เบ™เบœเบดเบงเบ‚เบญเบ‡เบชเบฐเบ–เบฒเบ™เบฐเบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡ Kubernetes - เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบกเบฑเบ™เป€เบ›เบฑเบ™เบžเบฝเบ‡เปเบ•เปˆเบ›เบฒเบเบ‚เบญเบ‡เบเป‰เบญเบ™เบซเบตเบ™. เบœเบนเป‰เปƒเบŠเป‰ Kubernetes เบกเบตเบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™, เบ„เบงเบฒเบกเบชเบฒเบกเบฒเบ”, เปเบฅเบฐเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบญเบทเปˆเบ™เป†เบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเปƒเบ™เบเบฒเบ™เบเปเบฒเบˆเบฑเบ”เบ‚เบญเบ‡เป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒ.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™