دا پوسټ لیکل شوی و ځکه چې زموږ کارمندانو په کوبرنیټس کې د غوښتنلیکونو رامینځته کولو او په OpenShift کې د ورته پراختیا ځانګړتیاو په اړه د پیرودونکو سره یو څو خبرې اترې درلودې.
موږ معمولا د دې مقالې سره پیل کوو چې کوبرنیټس یوازې کوبرنیټس دی ، او اوپن شیف دمخه د کوبرنیټ پلیټ فارم دی ، لکه د مایکروسافټ AKS یا ایمیزون EKS. د دې پلیټ فارمونو څخه هر یو خپلې ګټې لري ، په ځانګړي هدف لرونکي لیدونکو تمرکز کوي. او له هغې وروسته، خبرې اترې دمخه د ځانګړو پلیټ فارمونو ځواک او ضعفونو پرتله کولو ته ځي.
په عموم کې ، موږ د دې پوسټ لیکلو په اړه فکر کاوه لکه "واورئ ، دا مهمه نده چې تاسو چیرې کوډ چلوئ ، په اوپن شیفټ یا AKS کې ، په EKS کې ، په ځینې دودیز کبرنیټس کې ، هو په کوم کبرنیټس کې. (راځئ چې په لنډ ډول ورته KUK ووایو) "دا واقعیا ساده ده ، دواړه هلته او هلته."
بیا موږ پلان درلود چې ترټولو ساده "هیلو ورلډ" واخلو او دا وکاروو ترڅو وښیو چې څه عام دي او د CMC او ریډ هیټ اوپن شیف کانټینر پلیټ فارم (له دې وروسته ، OCP یا په ساده ډول OpenShift) ترمنځ توپیرونه څه دي.
په هرصورت ، د دې پوسټ لیکلو په جریان کې ، موږ پوهیږو چې موږ د OpenShift کارولو سره دومره عادت شوي یو چې موږ په ساده ډول نه پوهیږو چې دا څنګه وده کړې او په حیرانونکي پلیټ فارم کې بدل شوی چې یوازې د کبرنیټ توزیع څخه خورا ډیر شوی. موږ د OpenShift بشپړتیا او سادگي په پام کې نیسو، پداسې حال کې چې د هغې عظمت ته سترګې په لار یو.
په عموم کې، د فعالې توبې وخت راغلی، او اوس به موږ ګام په ګام په KUK او OpenShift کې زموږ د "هیلو ورلډ" کمیسون پرتله کړو، او موږ به دا د امکان تر حده په معقول ډول ترسره کړو (ښه، پرته له دې چې ځینې وختونه شخصي ښودل. موضوع ته رویه). که تاسو د دې مسلې په اړه خالص موضوعي نظر سره علاقه لرئ ، نو تاسو یې لوستلی شئ
کلسترونه
نو، زموږ "هیلو ورلډ" کلسترونو ته اړتیا لري. راځئ چې هر عامه بادل ته یوازې "نه" ووایو، ترڅو د سرورونو، راجسترونو، شبکو، د معلوماتو لیږد، او نور لپاره پیسې ورنکړي. په دې اساس، موږ یو ساده یو نوډ کلستر غوره کوو
د KUK-e په اړه مجلس
نو راځئ چې لاړ شو.
1 ګام - زموږ د کانټینر عکس جوړول
راځئ چې مینیکیوب ته زموږ د "هیلو ورلډ" ځای په ځای کولو سره پیل وکړو. دا به اړتیا ولري:
- 1. نصب شوی Docker.
- 2. Git نصب شوی.
- 3. نصب شوی Maven (په حقیقت کې، دا پروژه mvnw بائنری کاروي، نو تاسو کولی شئ پرته له دې).
- 4. په حقیقت کې، سرچینه پخپله، i.e. ذخیره کلون
github.com/gcolman/quarkus-hello-world.git
لومړی ګام د Quarkus پروژه رامینځته کول دي. اندیښنه مه کوئ که تاسو هیڅکله Quarkus.io نه وي کارولی - دا اسانه ده. تاسو یوازې هغه برخې غوره کړئ چې تاسو یې غواړئ په پروژه کې وکاروئ (RestEasy، Hibernate، Amazon SQS، Camel، etc.)، او بیا پخپله Quarkus، ستاسو د ګډون پرته، د میون آرکیټایپ تنظیموي او هرڅه په ګیتوب کې اچوي. دا په حقیقت کې د موږک یو کلیک دی - او تاسو بشپړ شوي. له همدې امله موږ د کوارکس سره مینه لرو.
زموږ "هیلو ورلډ" په کانټینر شوي عکس کې رامینځته کولو ترټولو اسانه لاره د ډاکر لپاره د کوارکوس میون توسیع کارول دي ، کوم چې به ټول اړین کار ترسره کړي. د Quarkus په راتګ سره، دا واقعیا اسانه او ساده شوی دی: د کانټینر-امیج-ډاکټر توسیع اضافه کړئ او تاسو کولی شئ د میون کمانډونو سره عکسونه جوړ کړئ.
./mvnw quarkus:add-extension -Dextensions=”container-image-docker”
او په نهایت کې ، موږ د ماون په کارولو سره خپل عکس جوړوو. د پایلې په توګه، زموږ د سرچینې کوډ د چمتو شوي کانټینر عکس ته بدلیږي، کوم چې دمخه د کانټینر چلولو وخت کې پرمخ وړل کیدی شي.
./mvnw -X clean package -Dquarkus.container-image.build=true
دا ، په حقیقت کې ، ټول دي ، اوس تاسو کولی شئ کانټینر د ډاکر رن کمانډ سره پرمخ وړئ ، زموږ خدمت یې 8080 پورټ ته نقشه کړی ترڅو ورته لاسرسی ومومي.
docker run -i — rm -p 8080:8080 gcolman/quarkus-hello-world
وروسته له دې چې د کانټینر مثال پیل شو، ټول هغه څه چې پاتې دي د curl کمانډ سره چک کول دي چې زموږ خدمت روان دی:
نو، هرڅه کار کوي، او دا واقعیا اسانه او ساده وه.
2 ګام - زموږ کانټینر د کانټینر عکس ذخیره ته وسپارئ
د اوس لپاره، هغه انځور چې موږ جوړ کړی په محلي توګه زموږ په محلي کانټینر ذخیره کې ساتل کیږي. که موږ غواړو دا عکس زموږ د KUK چاپیریال کې وکاروو، نو موږ باید دا په کوم بل ذخیره کې واچوو. Kubernetes دا ځانګړتیاوې نلري، نو موږ به dockerhub وکاروو. ځکه، لومړی، دا وړیا دی، او دویم، (تقریبا) هرڅوک دا کوي.
دا هم خورا ساده دی، او ټول هغه څه چې تاسو ورته اړتیا لرئ د ډاکر هب حساب دی.
نو، موږ ډاکر هب نصب کوو او خپل عکس هلته لیږو.
3 ګام - Kubernetes پیل کړئ
زموږ د "هیلو ورلډ" چلولو لپاره د کبرنیټس تنظیم کولو لپاره ډیری لارې شتون لري ، مګر موږ به یې ترټولو ساده وکاروو ، ځکه چې موږ داسې خلک یو ...
لومړی، موږ د منیکیوب کلستر پیل کوو:
minikube start
4 ګام - زموږ د کانټینر عکس ځای په ځای کول
اوس موږ اړتیا لرو خپل کوډ او کانټینر عکس د کبرنیټس ترتیب ته واړوو. په بل عبارت، موږ یو پوډ او د ځای پرځای کولو تعریف ته اړتیا لرو چې په ډاکر هب کې زموږ د کانټینر عکس ته اشاره کوي. د دې کولو لپاره یو له اسانه لارو څخه دا دی چې زموږ عکس ته په ګوته کولو سره د رامینځته کولو کمانډ چلول دي:
kubectl create deployment hello-quarkus — image =gcolman/quarkus-hello-world:1.0.0-SNAPSHOT
د دې قوماندې سره، موږ خپل COOK ته وویل چې د ځای پرځای کولو ترتیب جوړ کړئ، کوم چې باید زموږ د کانټینر عکس لپاره د پوډ مشخصات ولري. دا کمانډ به دا ترتیب زموږ د مینیکیوب کلستر کې هم پلي کړي، او یو ځای پرځای کول به زموږ د کانټینر عکس ډاونلوډ کړي او په کلستر کې پوډ چلوي.
5 ګام - زموږ خدمت ته لاسرسی خلاص کړئ
اوس چې موږ د ځای پرځای شوي کانټینر عکس لرو ، دا وخت دی چې پدې اړه فکر وکړو چې څنګه دې آرام خدمت ته بهرني لاسرسي تنظیم کړو ، کوم چې په حقیقت کې زموږ په کوډ کې برنامه شوی.
دلته ډیری لارې شتون لري. د مثال په توګه، تاسو کولی شئ د افشا کمانډ وکاروئ ترڅو په اتوماتيک ډول د مناسب Kubernetes اجزاو لکه خدمات او پای ټکي رامینځته کړئ. په حقیقت کې ، دا هغه څه دي چې موږ به یې زموږ د ځای پرځای کولو څیز لپاره د افشا کمانډ اجرا کولو سره ترسره کړو:
kubectl expose deployment hello-quarkus — type=NodePort — port=8080
راځئ چې د یوې شیبې لپاره د افشا کمانډ "-type" اختیار کې اوسو.
کله چې موږ د خپل خدمت د چلولو لپاره اړین برخې افشا او رامینځته کوو، موږ د نورو شیانو په مینځ کې اړتیا لرو چې د دې وړتیا ولرو چې له بهر څخه د هیلو کوارکوس خدمت سره وصل شو چې زموږ د سافټویر لخوا ټاکل شوي شبکې کې ناست دی. او پیرامیټ ډول موږ ته اجازه راکوي چې شیان رامینځته او وصل کړو لکه د بار بیلانسرز دې شبکې ته د ټرافيکو د لیږد لپاره.
د مثال په توګه، لیکل type=لوډ بیلانسر، موږ په اتوماتيک ډول د عامه کلاوډ بار بیلانسر پیل کوو ترڅو زموږ د کوبرنیټس کلستر سره وصل شي. دا ، البته ، عالي دی ، مګر تاسو اړتیا لرئ پوه شئ چې دا ډول ترتیب به د ځانګړي عامه بادل سره په کلکه وتړل شي او په مختلف چاپیریال کې د کوبرنیټس مثالونو ترمینځ لیږدول به خورا ستونزمن وي.
زموږ په مثال کې ډول = نوډ پورټ، دا دی، زموږ خدمت ته زنګ د نوډ IP پته او د پورټ نمبر لخوا ځي. دا اختیار تاسو ته اجازه درکوي چې هیڅ عامه بادل ونه کاروئ، مګر یو شمیر اضافي ګامونو ته اړتیا لري. لومړی، تاسو خپل د بار بار بیلانسر ته اړتیا لرئ، نو موږ به په خپل کلستر کې د NGINX بار بیلانسر ځای په ځای کړو.
شپږم ګام - د بار توازن تنظیم کړئ
minikube یو شمیر پلیټ فارم ب featuresې لري چې د هغه اجزا رامینځته کول اسانه کوي چې تاسو د بهرني لاسرسي لپاره ورته اړتیا لرئ ، لکه د ننوتلو کنټرولر. مینیکیوب د نګینکس انګریس کنټرولر سره بنډل راځي، او ټول هغه څه چې موږ یې باید وکړو دا فعال او تنظیم کړئ.
minikube addons enable ingress
اوس، یوازې د یوې کمانډ سره، موږ به د نګینکس انګریس کنټرولر جوړ کړو چې زموږ د مینیکیوب کلستر کې به کار وکړي:
ingress-nginx-controller-69ccf5d9d8-j5gs9 1/1 Running 1 33m
7 ګام - داخلول تنظیم کړئ
اوس موږ اړتیا لرو د هیلو کوارکس غوښتنې منلو لپاره د نګینکس انګریس کنټرولر تنظیم کړو.
او په نهایت کې ، موږ اړتیا لرو دا ترتیب پلي کړو.
kubectl apply -f ingress.yml
له هغه ځایه چې موږ دا ټول په خپل ماشین کې کوو، موږ په ساده ډول د خپل نوډ IP پته د /etc/hosts فایل ته اضافه کوو ترڅو د HTTP غوښتنې مستقیم زموږ مینیکیوب ته د NGINX بار بیلنسر ته ورسوي.
192.168.99.100 hello-quarkus.info
دا دی، اوس زموږ د منیکیوب خدمت د نګینکس انګریس کنټرولر له لارې له بهر څخه شتون لري.
ښه، دا اسانه وه، سمه ده؟ یا دومره نه؟
په OpenShift کې چلول (کوډ چمتو کانټینرونه)
او اوس راځئ وګورو چې دا ټول د Red Hat OpenShift کانټینر پلیټ فارم (OCP) کې څنګه ترسره کیږي.
لکه څنګه چې د مینیکیوب په قضیه کې، موږ د کوډ چمتو شوي کانټینرونو (CRC) په بڼه د یو واحد نوډ OpenShift کلستر سره سکیم غوره کوو. دا د minishift په نوم پیژندل کیده او د OpenShift Origin پروژې پراساس و، مګر اوس دا CRC دی او د Red Hat OpenShift کانټینر پلیټ فارم کې جوړ شوی.
دلته، بخښنه غواړو، موږ مرسته نشو کولی مګر ووایو: "OpenShift عالي دی!"
په پیل کې، موږ فکر کاوه چې دا ولیکئ چې په OpenShift کې پراختیا د Kubernetes پراختیا څخه توپیر نلري. او په حقیقت کې، دا څنګه ده. مګر د دې پوسټ لیکلو په جریان کې ، موږ په یاد ولرو چې تاسو باید څومره غیر ضروري حرکتونه وکړئ کله چې تاسو OpenShift نلرئ ، او له همدې امله یوځل بیا ښکلی دی. موږ خوښ یو چې شیان اسانه وي، او د مینیکیوب په پرتله په OpenShift کې زموږ مثال پلي کول او چلول څومره اسانه دي هغه څه دي چې موږ یې د دې پوسټ لیکلو ته هڅولي.
راځئ چې د پروسې له لارې وګرځو او وګورو چې موږ څه کولو ته اړتیا لرو.
نو د مینیکیوب مثال کې ، موږ د ډاکر سره پیل وکړ ... انتظار وکړئ ، موږ نور په ماشین کې د ډاکر نصبولو ته اړتیا نلرو.
او موږ محلي ګیټ ته اړتیا نلرو.
او ماوین ته اړتیا نشته.
او تاسو اړتیا نلرئ د لاس په واسطه د کانټینر عکس جوړ کړئ.
او تاسو اړتیا نلرئ د کانټینر عکسونو کوم ذخیره وګورئ.
او تاسو اړتیا نلرئ د ننوتلو کنټرولر نصب کړئ.
او تاسو اړتیا نلرئ د ننوتلو تنظیم کړئ.
ایا تاسو پوهېږی؟ په OpenShift کې زموږ غوښتنلیک ځای په ځای کولو او چلولو لپاره، پورته هیڅ یو ته اړتیا نشته. او پروسه پخپله په لاندې ډول ده.
1 ګام - ستاسو د OpenShift کلستر پیل کول
موږ د Red Hat څخه د کوډ چمتو کانټینرونه کاروو، کوم چې په اصل کې ورته مینیکیوب دی، مګر یوازې د بشپړ واحد نوډ Openshift کلستر سره.
crc start
2 ګام - د OpenShift کلستر ته غوښتنلیک جوړ او ځای په ځای کړئ
دا پدې مرحله کې دی چې د OpenShift سادگي او اسانتیا په خپل ټول ویاړ کې څرګندیږي. لکه څنګه چې د ټولو Kubernetes توزیعونو سره، موږ په کلستر کې د غوښتنلیک چلولو لپاره ډیری لارې لرو. او، لکه څنګه چې د KUK په قضیه کې، موږ په ځانګړې توګه ترټولو ساده غوره کوو.
OpenShift تل د کانټینر شوي غوښتنلیکونو جوړولو او چلولو لپاره د پلیټ فارم په توګه جوړ شوی. د کانټینرونو جوړول تل د دې پلیټ فارم لازمي برخه وه ، نو د ورته دندو لپاره د کوبرنیټس اضافي سرچینې شتون لري.
موږ به د OpenShift Source 2 Image (S2I) پروسې څخه کار واخلو، کوم چې زموږ د سرچینې (کوډ یا بائنریونو) اخیستلو لپاره ډیری مختلفې لارې لري او دا په کانټینر شوي عکس بدلوي چې د OpenShift کلستر پرمخ ځي.
د دې لپاره موږ دوه شیانو ته اړتیا لرو:
- زموږ د سرچینې کوډ په git ذخیره کې
- د جوړونکي انځور، چې پر بنسټ به مجلس ترسره شي.
دلته ډیری داسې عکسونه شتون لري چې د ریډ هټ او ټولنې لخوا ساتل کیږي، او موږ به د OpenJDK انځور وکاروو، ښه، ځکه چې زه د جاوا غوښتنلیک جوړوم.
تاسو کولی شئ د S2I جوړونه دواړه د OpenShift پراختیا کونکي ګرافیکي کنسول او د کمانډ لاین څخه پرمخ بوځي. موږ به د نوي ایپ کمانډ وکاروو، دا به ووایو چې د جوړونکي عکس او زموږ د سرچینې کوډ چیرته ترلاسه کړو.
oc new-app registry.access.redhat.com/ubi8/openjdk-11:latest~https://github.com/gcolman/quarkus-hello-world.git
دا دی، زموږ غوښتنلیک جوړ شو. په دې کولو کې، د S2I پروسې لاندې کارونه ترسره کړل:
- د غوښتنلیک جوړولو پورې اړوند هر ډول شیانو لپاره د خدمت جوړونې پوډ رامینځته کړی.
- د OpenShift Build config جوړه کړه.
- ما د بلډر عکس داخلي OpenShift ډاکر راجسټری ته ډاونلوډ کړ.
- ځایی ذخیره ته "هیلو ورلډ" کلون شوی.
- ولیدل چې هلته یو میون پوم و او له همدې امله یې د میون سره اپلیکیشن ترتیب کړ.
- یو نوی کانټینر عکس رامینځته کړی چې د جاوا اپلیکیشن کې شامل دی او دا عکس د داخلي کانټینر ثبت کې واچوي.
- د یو پوډ، خدمت، او داسې نورو لپاره د ځانګړتیاوو سره د کوبرنیټس ګمارنه جوړه کړه.
- د کانټینر عکس پلي کول پیل کړل.
- د خدمت جوړونې پوډ لرې شوی.
په دې لیست کې ډیر څه شتون لري، مګر اصلي شی دا دی چې ټول جوړونه په ځانګړې توګه د OpenShift دننه ترسره کیږي، د داخلي ډاکر راجستر په OpenShift کې دننه دی، او د جوړولو پروسه د Kubernetes ټولې برخې رامینځته کوي او په کلستر کې یې چلوي.
که تاسو په کنسول کې د S2I لانچ په لید سره وڅارئ ، تاسو کولی شئ وګورئ چې د جوړیدو پرمهال د جوړیدو پوډ څنګه پیل شوی.
او اوس راځئ چې د جوړونکي پوډ لاګونو ته یو نظر وګورو: لومړی ، هلته تاسو لیدلی شئ چې ماون څنګه خپله دنده ترسره کوي او زموږ د جاوا غوښتنلیک جوړولو لپاره انحصارونه ډاونلوډ کوي.
وروسته له دې چې د میون جوړونه بشپړ شي، د کانټینر عکس جوړول پیل کیږي، او بیا دا جوړ شوی عکس داخلي ذخیره ته لیږل کیږي.
هرڅه، د مجلس پروسه بشپړه شوې. اوس راځئ ډاډ ترلاسه کړو چې زموږ د غوښتنلیک پوډونه او خدمات په کلستر کې پیل شوي.
oc get service
بس نور څه نه. او یوازې یو ټیم شتون لري. ټول هغه څه چې موږ یې باید وکړو دا خدمت د بهر لاسرسي لپاره افشا کړو.
3 ګام - خدمت د بهر څخه د لاسرسي لپاره افشا کړئ
لکه څنګه چې د KUK په قضیه کې، د OpenShift پلیټ فارم کې، زموږ "هیلو ورلډ" هم یو روټر ته اړتیا لري ترڅو د کلستر دننه خدمت ته بهرني ټرافيک مستقیم کړي. OpenShift دا خورا اسانه کوي. لومړی، د HAProxy روټینګ برخه په کلستر کې د ډیفالټ لخوا نصب شوې (دا په ورته NGINX کې بدلیدلی شي). دوهم ، د روټس په نوم ځانګړي او خورا تنظیم کونکي سرچینې شتون لري ، کوم چې په ښه زاړه کبرنیټس کې د انګریس څیزونو یادونه کوي (په حقیقت کې د اوپن شیټ لارې د انګریس څیزونو ډیزاین باندې خورا ډیر تاثیر کړی ، کوم چې اوس په OpenShift کې کارول کیدی شي) ، مګر زموږ د "هیلو" لپاره. نړۍ"، او په نږدې ټولو نورو قضیو کې، معیاري لاره زموږ لپاره پرته له اضافي ترتیب څخه کافي ده.
د "هیلو ورلډ" لپاره د روټ ایبل FQDN رامینځته کولو لپاره (هو ، OpenShiift د خدماتو نومونو لخوا د روټ کولو لپاره خپل DNS لري) ، موږ په ساده ډول زموږ خدمت افشا کوو:
oc expose service quarkus-hello-world
که تاسو نوي جوړ شوي روټ ته وګورئ، نو تاسو کولی شئ هلته د FQDN او نور روټینګ معلومات ومومئ:
oc get route
او په نهایت کې ، موږ خپل خدمت ته د براوزر څخه لاسرسی لرو:
مګر اوس دا واقعیا اسانه وه!
موږ Kubernetes او هرڅه سره مینه لرو چې دا ټیکنالوژي تاسو ته اجازه درکوي، او موږ سادگي او روښانتیا هم خوښوو. Kubernetes د دې لپاره ډیزاین شوی و چې توزیع شوي، د توزیع وړ کانټینرونه د کار کولو لپاره په زړه پورې توګه اسانه کړي، مګر د دې سادگي اوس دومره نه ده چې نن ورځ تولید ته غوښتنلیکونه راوړي. دا هغه ځای دی چې OpenShift لوبې ته راځي، د وخت سره ساتل او د پراختیا کونکي متمرکز کبرنیټ وړاندیز کوي. د OpenShift پلیټ فارم په ځانګړي ډول د پراختیا کونکي لپاره ګنډلو لپاره ډیرې هڅې پانګونه شوې ، پشمول د وسیلو رامینځته کول لکه S2I, ODI, Developer Portal, OpenShift Operator Framework, IDE ادغام, Developer Catalogues, Helm ادغام, نظارت او ډیری نور.
موږ امید لرو چې دا مقاله ستاسو لپاره په زړه پوري او ګټوره وه. او تاسو کولی شئ اضافي سرچینې ، توکي او نور شیان ومومئ چې په پورټل کې د OpenShift پلیټ فارم کې پراختیا لپاره ګټور دي
سرچینه: www.habr.com