کتاب "Kubernetes for DevOps"

کتاب "Kubernetes for DevOps" سلامونه دخبرو اوسیدونکو! Kubernetes د عصري بادل ایکوسیستم یو له مهمو عناصرو څخه دی. دا ټیکنالوژي د کانټینر مجازی کولو ته اعتبار ، توزیع او انعطاف چمتو کوي. جان اروندیل او جسټین ډومینګوس د کبرنیټ ایکوسیستم په اړه خبرې کوي او د ورځني ستونزو لپاره ثابت حلونه معرفي کوي. ګام په ګام ، تاسو به خپل د کلاوډ اصلي غوښتنلیک رامینځته کړئ او د دې ملاتړ لپاره زیربنا رامینځته کړئ ، د پراختیا چاپیریال او دوامداره ګمارنې پایپ لاین رامینځته کړئ چې تاسو سره به ستاسو په راتلونکي غوښتنلیکونو کې کار کولو کې مرسته وکړي.

• د اساساتو څخه د کانټینرونو او کبرنیټ سره پیل وکړئ: د موضوع زده کولو لپاره کومې ځانګړې تجربې ته اړتیا نشته. • خپل کلسترونه چل کړئ یا د ایمیزون، ګوګل، او داسې نورو څخه د Kubernetes اداره شوي خدمت غوره کړئ. • د لګښت، فعالیت، انعطاف، ځواک او توزیع پر بنسټ کلسترونه غوره کړئ. • د خپلو غوښتنلیکونو د پراختیا، ازموینې او ځای پرځای کولو لپاره غوره وسیلې زده کړئ. • د امنیت او کنټرول د یقیني کولو لپاره د صنعت اوسنیو کړنو څخه ګټه پورته کړئ. • د خپل شرکت په اوږدو کې د DevOps اصول پلي کړئ ترڅو پراختیایی ټیمونه کولی شي ډیر انعطاف منونکي ، ګړندي او مؤثره عمل وکړي.

کتاب د چا لپاره دی؟

دا کتاب د اداري څانګو کارمندانو لپاره خورا اړوند دی چې د سرورونو ، غوښتنلیکونو او خدماتو مسؤل دی ، او همدارنګه د نوي کلاوډ خدماتو رامینځته کولو یا کوبرنیټس او کلاوډ ته د موجوده غوښتنلیکونو مهاجرت کې دخیل پراختیا کونکو لپاره. اندیښنه مه کوئ، تاسو اړتیا نلرئ پوه شئ چې څنګه د کوبرنیټس یا کانټینرونو سره کار وکړئ - موږ به تاسو ته هرڅه در زده کړو.

تجربه لرونکي Kubernetes کارونکي به د موضوعاتو ژور پوښښ سره لکه RBAC، دوامداره ګمارنه، د حساس معلوماتو مدیریت، او مشاهده کولو سره ډیر ارزښت ومومي. موږ هیله مند یو چې د کتاب پاڼې به یقینا ستاسو لپاره یو څه په زړه پورې وي، پرته له دې چې ستاسو مهارتونه او تجربې ته په پام سره.

کتاب کومې پوښتنې ځوابوي؟

د کتاب پلان کولو او لیکلو پرمهال، موږ د کلاوډ ټیکنالوژۍ او کبرنیټس په اړه د سلګونو خلکو سره خبرې وکړې، د صنعت مشرانو او کارپوهانو او همدارنګه بشپړ نويو سره خبرې وکړې. لاندې غوره شوي پوښتنې دي چې دوی غواړي په دې خپرونه کې ځوابونه وګوري.

  • "زه لیوالتیا لرم چې ولې تاسو باید پدې ټیکنالوژۍ کې وخت تیر کړئ. دا به زما او زما ټیم سره کومې ستونزې حل کړي؟"
  • "Kubernetes په زړه پورې ښکاري، مګر د ننوتلو لپاره خورا لوړ خنډ لري. د ساده مثال چمتو کول ستونزمن ندي، مګر نور اداره کول او ډیبګ کول ستونزمن دي. موږ غواړو په دې اړه د باور وړ مشورې ترلاسه کړو چې خلک څنګه په ریښتینې نړۍ کې د کوبرنیټس کلسترونه اداره کوي او کوم ستونزې چې موږ ورسره مخ یو."
  • "موضوع مشوره به ګټوره وي. د Kubernetes ایکوسیستم نوي ټیمونو ته د انتخاب کولو لپاره ډیری اختیارونه ورکوي. کله چې د ورته کار کولو لپاره ډیری لارې شتون لري، تاسو څنګه پوهیږئ چې کوم یو غوره دی؟ څنګه انتخاب وکړو؟

او شاید د ټولو پوښتنو څخه خورا مهم:

  • "زه څنګه کولی شم پرته له دې چې زما شرکت ګډوډ کړم Kubernetes وکاروم؟"

اقتباس. ترتیب او پټ توکي

د Kubernetes غوښتنلیک منطق د دې ترتیب څخه جلا کولو وړتیا (دا د هر ډول ارزښتونو یا ترتیباتو څخه چې ممکن د وخت په تیریدو سره بدلون ومومي) خورا ګټور دی. د ترتیب کولو ارزښتونو کې عموما د چاپیریال ځانګړي ترتیبات، د دریمې ډلې خدماتو DNS پتې، او د تصدیق اسناد شامل دي.

البته، دا ټول په مستقیم ډول په کوډ کې اچول کیدی شي، مګر دا طریقه کافي نه ده. د مثال په توګه، د ترتیب ارزښت بدلول به بیا تاسو ته اړتیا ولري چې خپل کوډ بیا جوړ او ځای په ځای کړئ. یو ډیر ښه حل به دا وي چې تشکیلات له کوډ څخه جلا کړئ او د فایل یا چاپیریال متغیرونو څخه یې ولولئ.

Kubernetes د تنظیم کولو اداره کولو لپاره ډیری مختلفې لارې وړاندې کوي. لومړی، تاسو کولی شئ د پوډ ریپر مشخصاتو کې مشخص شوي د چاپیریال متغیرونو له لارې غوښتنلیک ته ارزښتونه انتقال کړئ (په 192 مخ کې "د چاپیریال تغیرات" وګورئ). دوهم، د ترتیب کولو ډاټا په مستقیم ډول په Kubernetes کې د ConfigMap او پټو شیانو په کارولو سره زیرمه کیدی شي.

په دې څپرکي کې، موږ دا شیان په تفصیل سره وپلټئ او د ډیمو غوښتنلیک په کارولو سره د ترتیب او حساس معلوماتو اداره کولو لپاره ځینې عملي لارې چارې وګورو.

د پوډ شیل تازه کول کله چې تشکیلات بدل شي

تصور وکړئ چې تاسو په خپل کلستر کې ځای پرځای کول لرئ او تاسو غواړئ په دې ConfigMap کې ځینې ارزښتونه بدل کړئ. که تاسو د هیلم چارټ کاروئ (په 102 مخ کې "هیلم: د کڅوړې مدیر د کبرنیټس لپاره" وګورئ)، تاسو کولی شئ په اوتومات ډول د ترتیب بدلون ومومئ او خپل پوډ شیلونه په یو پاک چال کې بیا پورته کړئ. ستاسو د ګمارنې مشخصاتو ته لاندې تشریح اضافه کړئ:

checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") .
       | sha256sum }}

د ګمارنې ټیمپلیټ اوس د ترتیب کولو پیرامیټونو چیکسم لري: که چیرې پیرامیټونه بدل شي، نو رقم به تازه شي. که تاسو د هیلم اپ گریڈ پرمخ وړئ، هیلم به معلومه کړي چې د ګمارنې مشخصات بدل شوي او ټول پوډ شیل به بیا پیل کړي.

په Kubernetes کې حساس معلومات

موږ دمخه پوهیږو چې د ConfigMap څیز په کلستر کې د ترتیب کولو ډیټا ذخیره کولو او لاسرسي لپاره انعطاف وړ میکانیزم چمتو کوي. په هرصورت، ډیری غوښتنلیکونه هغه معلومات لري چې حساس او حساس وي، لکه پاسورډونه یا API کیلي. دا په ConfigMap کې هم زیرمه کیدی شي، مګر دا حل مثالی ندی.

پرځای یې، Kubernetes یو ځانګړی ډول اعتراض وړاندې کوي چې د حساس معلوماتو ذخیره کولو لپاره ډیزاین شوی: راز. بیا ، راځئ چې یو مثال وګورو چې دا څیز زموږ په ډیمو غوښتنلیک کې څنګه کارول کیدی شي.

د پیل کولو لپاره، د پټ څیز لپاره د کبرنیټس منشور ته یو نظر وګورئ (وګورئ hello-secret-env/k8s/secret.yaml):

apiVersion: v1
kind: Secret
metadata:
    name: demo-secret
stringData:
    magicWord: xyzzy

په دې مثال کې، د magicWord شخصي کیلي xyzzy ده (en.wikipedia.org/wiki/Xyzzy_(computing)). د xyzzy کلمه عموما د کمپیوټر په نړۍ کې خورا ګټوره ده. د ConfigMap په څیر، تاسو کولی شئ په یو پټ څیز کې ډیری کیلي او ارزښتونه ذخیره کړئ. دلته، د سادگي لپاره، موږ یوازې د کلیدي ارزښت جوړه کاروو.

د پټو شیانو کارول د چاپیریال تغیراتو په توګه

د ConfigMap په څیر، پټ اعتراض په کانټینر کې د چاپیریال تغیراتو یا په ډیسک کې د فایل په توګه چمتو کیدی شي. په لاندې مثال کې، موږ به د راز څخه ارزښت ته د چاپیریال متغیر وټاکو:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-env
          ports:
             - containerPort: 8888
          env:
             - name: GREETING
               valueFrom:
               secretKeyRef:
                  name: demo-secret
                  key: magicWord

د منشور پلي کولو لپاره د ډیمو ذخیره کې لاندې کمانډ چل کړئ:

kubectl apply -f hello-secret-env/k8s/
deployment.extensions "demo" configured
secret "demo-secret" created

د پخوا په څیر، ځایی بندر ګمارنې ته ولېږئ ترڅو ستاسو په براوزر کې پایله وګورئ:

kubectl port-forward deploy/demo 9999:8888
Forwarding from 127.0.0.1:9999 -> 8888
Forwarding from [::1]:9999 -> 8888

کله چې یو پته پرانیزي ځایی لوسټ:9999/ تاسو باید لاندې وګورئ:

The magic word is "xyzzy"

فایلونو ته د پټو شیانو لیکل

په دې مثال کې، موږ به پټ اعتراض د فایل په توګه کانټینر ته ضمیمه کړو. کوډ د ډیمو ذخیره کولو هیلو - پټ فایل فولډر کې موقعیت لري.

د فایل په توګه د راز سره نښلولو لپاره، موږ به لاندې ځای پرځای کولو څخه کار واخلو:

spec:
   containers:
       - name: demo
          image: cloudnatived/demo:hello-secret-file
          ports:
              - containerPort: 8888
          volumeMounts:
              - name: demo-secret-volume
                mountPath: "/secrets/"
                readOnly: true
   volumes:
      - name: demo-secret-volume
        secret:
           secretName: demo-secret

لکه څنګه چې په فرعي برخه کې "د ConfigMap شیانو څخه د تشکیلاتو فایلونو رامینځته کول" p. 240، موږ یو حجم رامینځته کوو (په دې حالت کې ډیمو-سیکریټ-حجم) او دا د مشخصاتو حجم ماونټس برخې کې کانټینر ته ایونټ کوو. د mountPath ساحه /secrets دی، نو Kubernetes به په دې فولډر کې د هرې کیلي / ارزښت جوړه لپاره یو فایل رامینځته کړي چې په پټ اعتراض کې تعریف شوي.

زموږ په مثال کې، موږ یوازې د کلیدي ارزښت جوړه جوړه تعریف کړه چې د magicWord په نوم یادیږي، نو منشور به په کانټینر کې د حساس معلوماتو سره یو واحد د لوستلو فایل / رازونه/مجیک ورډ رامینځته کړي.

که تاسو دا څرګندونه د تیر مثال په څیر پلي کړئ، تاسو باید ورته پایله ترلاسه کړئ:

The magic word is "xyzzy"

د پټو شیانو لوستل

په تیره برخه کې، موږ د کنفیګ میپ مینځپانګې ښودلو لپاره د kubectl describe کمانډ کارولی. ایا د راز سره ورته کیدی شي؟

kubectl describe secret/demo-secret
Name:          demo-secret

Namespace:      default
Labels:             <none>
Annotations:
Type:               Opaque

Data
====
magicWord: 5   bytes

مهرباني وکړئ په یاد ولرئ چې ډاټا پخپله نه ښودل کیږي. په Kubernetes کې پټ توکي د Opaque ډوله دي، پدې معنی چې د دوی محتويات په کوبکټل کې نه ښودل شوي چې د محصول، لاګ ننوتل، یا ټرمینل تشریح کوي، دا ناشونې کوي چې په ناڅاپي ډول حساس معلومات ښکاره کړي.

د حساس ډیټا د کوډ شوي YAML نسخه لیدو لپاره ، د kubectl get کمانډ وکاروئ:

kubectl get secret/demo-secret -o yaml
apiVersion: v1
data:
   magicWord: eHl6enk=
kind: Secret
metadata:
...
type: Opaque

اساس 64

eHl6enk= څه شی دی، زموږ له اصلي ارزښت څخه په بشپړه توګه توپیر لري؟ دا په حقیقت کې یو پټ څیز دی، چې په بیس 64 کوډ کولو کې ښودل شوی. بیس 64 د حروفونو د تار په توګه د خپل سري بائنری ډیټا کوډ کولو لپاره سکیم دی.

ځکه چې حساس معلومات ممکن بائنري وي او نه محصول (لکه څنګه چې د TLS کوډ کولو کیلي سره قضیه ده)، پټ توکي تل په بیس 64 بڼه کې زیرمه کیږي.

متن beHl6enk= زموږ د پټې کلمې xyzzy base64 کوډ شوی نسخه ده. تاسو کولی شئ دا په ټرمینل کې د base64 —decode کمانډ په چلولو سره تایید کړئ:

echo "eHl6enk=" | base64 --decode
xyzzy

نو، پداسې حال کې چې کوبرنیټس تاسو په ټرمینل یا لاګ فایلونو کې په ناڅاپي ډول د حساس معلوماتو تولیدولو څخه ساتي، که تاسو په ځانګړي نوم ځای کې د پټو شیانو په اړه د لوستلو اجازې لرئ، دا ډاټا بیس 64ed او وروسته کوډ کیدی شي.

که تاسو اړتیا لرئ چې بیس 64 یو څه متن کوډ کړئ (د مثال په توګه ، دا په پټه کې واچوئ) ، پرته له دلیلونو د بیس 64 کمانډ وکاروئ:

echo xyzzy | base64
eHl6enkK

پټو شیانو ته لاسرسی

څوک کولی شي پټ توکي ولولي او ایډیټ کړي؟ دا د RBAC لخوا ټاکل کیږي، د لاسرسي کنټرول میکانیزم (موږ به په 258 مخ کې "د رول پر بنسټ د لاسرسي کنټرول پیژندنه" په فرعي برخه کې په تفصیل سره بحث وکړو). که تاسو داسې کلستر پرمخ وړئ چې RBAC نلري یا فعال شوی نه وي، ستاسو ټول پټ توکي هر کاروونکو او کانټینرونو ته شتون لري (موږ به وروسته تشریح کړو چې تاسو باید د RBAC پرته د تولید کلسترونه ونه لرئ).

غیر فعال ډیټا کوډ کول

د هغو کسانو په اړه څه چې د etcd ډیټابیس ته لاسرسی لري چیرې چې کوبرنیټس خپل ټول معلومات ذخیره کوي؟ ایا دوی کولی شي د API له لارې د پټو شیانو لوستلو اجازه پرته حساس معلومات ولولي؟

د 1.7 نسخه راهیسې، Kubernetes د غیر فعال ډیټا کوډ کولو ملاتړ کوي. دا پدې مانا ده چې د etcd دننه حساس معلومات په ډیسک کې کوډ شوي ذخیره شوي او حتی د هغه چا لخوا لوستل کیدی نشي چې ډیټابیس ته مستقیم لاسرسی لري. د دې د کوډ کولو لپاره، تاسو یو کیلي ته اړتیا لرئ چې یوازې د Kubernetes API سرور لري. په سمه توګه ترتیب شوي کلستر کې، غیر فعال کوډ کول باید فعال شي.

تاسو کولی شئ وګورئ چې ایا غیر فعال کوډ کول ستاسو په کلستر کې پدې ډول کار کوي:

kubectl describe pod -n kube-system -l component=kube-apiserver |grep encryption
        --experimental-encryption-provider-config=...

که تاسو د تجربوي-انکریپشن-پرووایډر-config بیرغ ونه ګورئ، غیر فعال کوډ کول فعال شوي ندي. کله چې د ګوګل Kubernetes Engine یا نور Kubernetes مدیریت خدمتونه کاروئ، ستاسو ډاټا د مختلف میکانیزم په کارولو سره کوډ شوي، نو بیرغ به شتون ونلري. د خپل Kubernetes پلورونکي سره وګورئ ترڅو وګورئ چې ایا د etcd مینځپانګه کوډ شوې ده.

د محرمو معلوماتو ذخیره کول

د کبرنیټ ځینې سرچینې شتون لري چې هیڅکله باید له کلستر څخه لرې نه شي، لکه خورا حساس پټ توکي. تاسو کولی شئ د هیلم مدیر لخوا چمتو شوي توضیحاتو په کارولو سره سرچینه له حذف کیدو څخه خوندي کړئ:

kind: Secret
metadata:
    annotations:
        "helm.sh/resource-policy": keep

د پټو شیانو مدیریت ستراتیژی

په مثال کې د تیرې برخې څخه، حساس معلومات په کلستر کې د زیرمه کولو سمدستي وروسته د غیر مجاز لاسرسي څخه خوندي شوي. مګر په ښکاره فایلونو کې دوی د ساده متن په توګه ساتل شوي.

تاسو باید هیڅکله محرم معلومات په فایلونو کې مه ځای کړئ چې د نسخې کنټرول کې وي. تاسو څنګه کولی شئ دا معلومات په خوندي ډول اداره او ذخیره کړئ مخکې له دې چې دا ستاسو د کوبرنیټس کلستر کې پلي کړئ؟

تاسو کولی شئ په خپلو غوښتنلیکونو کې د حساس ډیټا اداره کولو لپاره کوم وسیلې یا ستراتیژۍ غوره کړئ ، مګر تاسو به لاهم اړتیا ولرئ لږترلږه لاندې پوښتنو ته ځواب ووایاست.

  • حساس معلومات باید چیرته زیرمه شي ترڅو د لاسرسي وړ وي؟
  • ستاسو فعال غوښتنلیکونو ته حساس معلومات څنګه د لاسرسي وړ کړئ؟
  • ستاسو غوښتنلیکونو ته باید څه پیښ شي کله چې تاسو حساس معلومات بدل یا ترمیم کړئ؟

د لیکوالانو په اړه

جان اروندیل د کمپیوټر صنعت کې د 30 کلونو تجربې سره مشاور دی. هغه ډیری کتابونه لیکلي او د مختلفو هیوادونو څخه ډیری شرکتونو سره کار کوي، دوی ته د بادل اصلي زیربنا او کبرنیټس په اړه مشوره ورکوي. په خپل فارغ وخت کې، هغه د سرفینګ څخه خوند اخلي، یو ښه تومانچه شوونکی دی، او د شوقي په توګه پیانو غږوي. د انګلستان په کورن وال کې په یوه افسانوي کوټیج کې ژوند کوي.

جسټین ډومینګوس - د سیسټمونو ادارې انجینر د کوبرنیټس او کلاوډ ټیکنالوژیو سره په DevOps چاپیریال کې کار کوي. هغه په ​​بهر کې د وخت تېرولو، قهوه څښلو، کریب کولو او کمپیوټر کې ناست څخه خوند اخلي. په سیټل، واشنګټن کې ژوند کوي، د یوې حیرانتیا پیشو او حتی خورا په زړه پورې میرمن او غوره ملګري، اډرین سره.

» د کتاب په اړه نور جزئیات دلته موندلی شئ د خپرونکي ویب پاڼه
» فهرست
» اقتباس

د Khabrozhiteley لپاره 25% تخفیف د کوپن په کارولو سره - کوبنیټس

د کتاب د کاغذي نسخې په تادیه کولو سره، یو بریښنایی کتاب به د بریښنالیک له لارې لیږل کیږي.

سرچینه: www.habr.com

Add a comment