OpenShift لاء GitOps جو تعارف

اڄ اسان GitOps جي اصولن ۽ ماڊل بابت ڳالهائينداسين، انهي سان گڏ اهي ماڊل ڪيئن لاڳو ڪيا ويا آهن OpenShift پليٽ فارم تي. هن موضوع تي هڪ انٽرويو گائيڊ موجود آهي لنڪ.

OpenShift لاء GitOps جو تعارف

مختصر ۾، GitOps بنيادي ڍانچي ۽ ايپليڪيشن ترتيبن کي منظم ڪرڻ لاء Git پل جي درخواستن کي استعمال ڪرڻ لاء طريقن جو هڪ سيٽ آهي. GitOps ۾ Git مخزن کي سسٽم جي حالت بابت معلومات جو هڪ واحد ذريعو سمجهيو ويندو آهي، ۽ هن رياست ۾ ڪا به تبديلي مڪمل طور تي ڳولڻ ۽ قابل آڊٽ آهي.

GitOps ۾ ٽريڪنگ جي تبديلي جو خيال ڪنهن به طرح نئون ناهي؛ هي طريقو گهڻو وقت استعمال ڪيو ويو آهي تقريباً عام طور تي جڏهن ايپليڪيشن سورس ڪوڊ سان ڪم ڪندي. GitOps صرف انفراسٽرڪچر ۽ ايپليڪيشن ڪنفيگريشن مئنيجمينٽ ۾ ساڳيون خاصيتون (جائزو، پل درخواستون، ٽيگ، وغيره) لاڳو ڪري ٿو ۽ ساڳيا فائدا مهيا ڪري ٿو جيئن سورس ڪوڊ مينيجمينٽ جي صورت ۾.

GitOps لاءِ ڪا به علمي تعريف يا قاعدن جو منظور ٿيل سيٽ ناهي، صرف اصولن جو هڪ سيٽ جنهن تي هي مشق ٺهيل آهي:

  • سسٽم جو بيان ڪيل بيان Git مخزن ۾ محفوظ ڪيو ويو آهي (ترتيب، نگراني، وغيره).
  • رياستي تبديليون پل جي درخواستن ذريعي ڪيون وينديون آهن.
  • ھلندڙ سسٽم جي حالت Git push درخواستن کي استعمال ڪندي مخزن ۾ ڊيٽا سان قطار ۾ آندو ويو آھي.

GitOps اصول

  • سسٽم جي وصفن کي ماخذ ڪوڊ طور بيان ڪيو ويو آهي

سسٽم جي تشڪيل کي ڪوڊ طور سمجهيو ويندو آهي، تنهنڪري اهو ذخيرو ٿي سگهي ٿو ۽ خودڪار طريقي سان هڪ Git مخزن ۾ نسخو، جيڪو سچ جي هڪ واحد ذريعو طور ڪم ڪري ٿو. اهو طريقو آسان بڻائي ٿو رول آئوٽ ۽ سسٽم ۾ تبديلين کي واپس آڻڻ.

  • سسٽم جي گهربل رياست ۽ ترتيب ڏنل آهن ۽ Git ۾ ورزن ٿيل آهن

Git ۾ سسٽم جي گهربل حالت کي محفوظ ڪرڻ ۽ ورزن ڪرڻ سان، اسان آساني سان رول آئوٽ ڪرڻ ۽ سسٽم ۽ ايپليڪيشنن ۾ تبديلين کي واپس آڻڻ جي قابل آهيون. اسان ڪوڊ جي ملڪيت کي ڪنٽرول ڪرڻ ۽ ان جي صداقت جي تصديق ڪرڻ لاءِ Git جي سيڪيورٽي ميڪانيزم پڻ استعمال ڪري سگھون ٿا.

  • ترتيب جي تبديلين کي خودڪار طريقي سان لاڳو ڪري سگھجي ٿو پل جي درخواستن ذريعي

Git پل جي درخواستن کي استعمال ڪندي، اسان آساني سان ڪنٽرول ڪري سگھون ٿا ته ڪئين تبديليون مخزن ۾ ترتيبن تي لاڳو ٿين ٿيون. مثال طور، اهي ٻين ٽيم جي ميمبرن کي جائزو وٺڻ لاء يا سي آء ٽيسٽ ذريعي هلائي سگهجن ٿيون، وغيره.

۽ ساڳئي وقت، انتظامي طاقتن کي کاٻي ۽ ساڄي ورهائڻ جي ڪا ضرورت ناهي. ترتيب ڏيڻ جي تبديلين کي انجام ڏيڻ لاء، صارفين کي صرف Git مخزن ۾ مناسب اجازتن جي ضرورت هوندي آهي جتي اهي ترتيبون ذخيرو ٿيل آهن.

  • ترتيبن جي بي ضابطگي واري وهڪري جي مسئلي کي حل ڪرڻ

هڪ دفعو سسٽم جي گهربل حالت هڪ Git مخزن ۾ محفوظ ڪئي وئي آهي، اسان کي اهو ڪرڻو آهي ته سافٽ ويئر ڳولڻ آهي جيڪو يقيني بڻائيندو ته سسٽم جي موجوده حالت ان جي گهربل حالت سان ملائي ٿي. جيڪڏهن اهو معاملو نه آهي، ته پوء هن سافٽ ويئر کي گهرجي - سيٽنگن تي منحصر ڪري - يا ته پنهنجي پاڻ تي تڪرار کي ختم ڪريو، يا اسان کي ترتيب ڏيڻ جي باري ۾ اطلاع ڏيو.

OpenShift لاء GitOps ماڊل

آن-ڪلسٽر ريسورس ريڪنسيلر

هن ماڊل جي مطابق، ڪلستر وٽ هڪ ڪنٽرولر آهي جيڪو ڪبرنيٽس وسيلن (YAML فائلن) جي مقابلي لاءِ ذميوار آهي Git مخزن ۾ ڪلستر جي حقيقي وسيلن سان. جيڪڏهن تفاوت معلوم ٿئي ٿو، ڪنٽرولر اطلاع موڪلي ٿو ۽ ممڪن طور تي تفاوت کي درست ڪرڻ لاء قدم کڻندو آهي. هي GitOps ماڊل Anthos Config Management ۽ Weaveworks Flux ۾ استعمال ٿيندو آهي.

OpenShift لاء GitOps جو تعارف

خارجي وسيلن جي مصالحت ڪندڙ (پش)

ھن ماڊل کي پوئين ھڪڙي جي تبديلي جي طور تي سمجھي سگھجي ٿو، جڏھن اسان وٽ ھڪڙو يا وڌيڪ ڪنٽرولرز آھن جيڪي "گٽ مخزن - ڪبرنيٽس ڪلستر" جوڑوں ۾ وسيلن کي هم وقت سازي ڪرڻ جا ذميوار آھن. هتي فرق اهو آهي ته هر منظم ڪلستر کي لازمي طور تي پنهنجو الڳ ڪنٽرولر ناهي. Git - k8s ڪلستر جوڙو اڪثر ڪري CRDs (ڪسٽم ريسورس وصفون) جي طور تي بيان ڪيا ويا آھن، جيڪي بيان ڪري سگھن ٿا ته ڪنٽرولر کي هم وقت سازي ڪيئن ڪرڻ گھرجي. هن ماڊل جي اندر، ڪنٽرولرز CRD ۾ بيان ڪيل Git مخزن جو مقابلو ڪن ٿا ڪبرنيٽس ڪلستر وسيلن سان، جيڪي پڻ CRD ۾ بيان ڪيل آهن، ۽ مقابلي جي نتيجن جي بنياد تي مناسب ڪارناما انجام ڏين ٿا. خاص طور تي، هي GitOps ماڊل ArgoCD ۾ استعمال ٿيندو آهي.

OpenShift لاء GitOps جو تعارف

GitOps OpenShift پليٽ فارم تي

ملٽي ڪلسٽر ڪبرنيٽس انفراسٽرڪچر جو انتظام

ڪبرنيٽس جي پکيڙ ۽ ملٽي ڪلائوڊ حڪمت عملين ۽ ايج ڪمپيوٽنگ جي وڌندڙ مقبوليت سان، اوپن شيفٽ ڪلسٽرز جو سراسري تعداد في گراهڪ پڻ وڌي رهيو آهي.

مثال طور، جڏهن ايج ڪمپيوٽنگ استعمال ڪندي، هڪ گراهڪ جا ڪلسٽر سوين يا هزارن ۾ مقرر ڪري سگھجن ٿا. نتيجي طور، هو عوامي ڪلائوڊ ۽ آن پريميس ۾ ڪيترن ئي آزاد يا همراه OpenShift ڪلسٽرز کي منظم ڪرڻ تي مجبور آهي.

هن معاملي ۾، ڪيترن ئي مسئلن کي حل ڪرڻ جي ضرورت آهي، خاص طور تي:

  • ڪنٽرول ڪريو ته ڪلستر هڪجهڙائي واري حالت ۾ آهن (ترتيب، نگراني، اسٽوريج، وغيره)
  • ھڪڙي سڃاتل رياست جي بنياد تي ڪلستر ٺاھيو (يا بحال ڪريو).
  • ھڪڙي سڃاتل رياست جي بنياد تي نوان ڪلستر ٺاھيو.
  • ڪيترن ئي OpenShift ڪلستر ۾ تبديلين کي رول آئوٽ ڪريو.
  • ڪيترن ئي OpenShift ڪلستر ۾ تبديلين کي واپس آڻيو.
  • ٽيمپليٽ ٿيل ترتيبن کي مختلف ماحول سان ڳنڍيو.

ايپليڪيشن جون ترتيبون

انهن جي زندگي جي چڪر دوران، ايپليڪيشنون اڪثر ڪري هڪ پيداوار جي ڪلستر ۾ ختم ٿيڻ کان اڳ ڪلستر جي زنجير (dev، اسٽيج، وغيره) مان گذري ٿو. ان کان علاوه، دستيابي ۽ اسپيبليبلٽي جي گهرج جي ڪري، گراهڪ اڪثر ايپليڪيشنن کي ڪيترن ئي آن-پريميس ڪلسٽرز يا عوامي ڪلائوڊ پليٽ فارم جي ڪيترن ئي علائقن ۾ ترتيب ڏين ٿا.

هن معاملي ۾، هيٺين ڪمن کي حل ڪرڻ جي ضرورت آهي:

  • ڪلستر (dev، اسٽيج، وغيره) جي وچ ۾ ايپليڪيشنن جي حرڪت (بائنري، ترتيب، وغيره) کي يقيني بڻائي.
  • ڪيترن ئي OpenShift ڪلسٽرز ۾ ايپليڪيشنن (بائنري، ترتيب، وغيره) ۾ تبديلين کي رول آئوٽ ڪريو.
  • پوئين سڃاتل حالت ۾ ايپليڪيشنن ۾ تبديلين کي واپس آڻيو.

OpenShift GitOps استعمال ڪيس

1. Git مخزن مان تبديليون لاڳو ڪرڻ

هڪ ڪلسٽر ايڊمنسٽريٽر OpenShift ڪلستر جي ترتيبن کي Git مخزن ۾ ذخيرو ڪري سگهي ٿو ۽ خودڪار طريقي سان انهن کي لاڳو ڪري سگهي ٿو نوان ڪلسٽر ٺاهڻ ۽ انهن کي هڪجهڙائي واري رياست ۾ آڻيندو جيڪو Git مخزن ۾ محفوظ ڪيل سڃاتل رياست سان آهي.

2. ڳجهي مئنيجر سان هم وقت سازي

منتظم پڻ OpenShift ڳجهي شيون کي مناسب سافٽ ويئر سان هم وقت سازي ڪرڻ جي صلاحيت مان فائدو وٺندو جهڙوڪ Vault انهي لاءِ خاص طور تي ٺاهيل اوزار استعمال ڪندي انهن کي منظم ڪرڻ لاءِ.

3. drift ترتيبن جو ڪنٽرول

منتظم صرف ان صورت ۾ حق ۾ هوندو جڏهن OpenShift GitOps پاڻ سڃاڻي ٿو ۽ حقيقي ترتيبن ۽ مخزن ۾ بيان ڪيل فرقن جي باري ۾ ڊيڄاري ٿو، ته جيئن اهي تڪڙو تڪڙو جواب ڏئي سگهن.

4. تشڪيل جي واڌ بابت اطلاع

اهي ان صورت ۾ ڪارآمد هوندا آهن جڏهن منتظم پنهنجي تڪميل تي مناسب قدم کڻڻ لاءِ ترتيب وار ڊرافٽ جي ڪيسن بابت جلدي سکڻ چاهي ٿو.

5. ترتيبن جي دستي هم وقت سازي جڏهن وهڻ

منتظم کي اجازت ڏئي ٿي OpenShift ڪلسٽر کي Git repository سان هم وقت سازي ڪرڻ جي صورت ۾، ترتيب ڏيڻ جي صورت ۾، ڪلستر کي جلدي واپس پوئين سڃاتل حالت ۾.

6. ترتيب جي خودڪار هم وقت سازي جڏهن وهڻ

منتظم پڻ OpenShift ڪلستر کي ترتيب ڏئي سگھي ٿو پاڻمرادو مخزن سان هم وقت سازي ڪرڻ لاءِ جڏهن ڪو drift معلوم ٿئي ٿو ، انهي ڪري ته ڪلستر جي ترتيب هميشه Git ۾ ترتيبن سان ملندي آهي.

7. ڪيترائي ڪلستر - ھڪڙو مخزن

منتظم هڪ Git مخزن ۾ ڪيترن ئي مختلف OpenShift ڪلستر جي ترتيبن کي ذخيرو ڪري سگهي ٿو ۽ انهن کي گهربل طور تي لاڳو ڪري سگهي ٿو.

8. ڪلسٽر ترتيبن جو درجو (وراثت)

منتظم مخزن ۾ ڪلسٽر ترتيبن جو درجو قائم ڪري سگھي ٿو (اسٽيج، پروڊ، ايپ پورٽ فوليو، وغيره. ورثي سان). ٻين لفظن ۾، اهو اهو طئي ڪري سگهي ٿو ته ڇا ترتيبن کي هڪ يا وڌيڪ ڪلستر تي لاڳو ڪيو وڃي.

مثال طور، جيڪڏهن منتظم مقرر ڪري ٿو ترتيب وار ”پيداوار ڪلسٽرز (پروڊ) → سسٽم ايڪس ڪلسٽرز → پروڊڪشن ڪلسٽرز آف سسٽم ايڪس“ گٽ مخزن ۾، پوءِ هيٺين ترتيبن جو ميلاپ سسٽم ايڪس جي پيداوار ڪلسٽرن تي لاڳو ڪيو ويندو آهي:

  • سڀني پيداوار جي ڪلسترن لاءِ عام ترتيبون.
  • سسٽم ايڪس ڪلستر لاء ترتيبون.
  • ايڪس سسٽم جي پيداوار ڪلستر لاء ترتيب.

9. ٽيمپليٽس ۽ ٺاھ جوڙ جي مٿان

منتظم وراثت ۾ مليل ترتيبن ۽ انھن جي قدرن جي ھڪڙي سيٽ کي اوور رائيڊ ڪري سگھي ٿو، مثال طور، مخصوص ڪلسترن لاءِ ٺاھ جوڙ کي ٺيڪ ڪرڻ لاءِ جنھن تي اھي لاڳو ڪيا ويندا.

10. چونڊيل شامل ۽ خارج ڪريو ترتيبن لاءِ، ايپليڪيشن جي ترتيب

منتظم مخصوص ڪنفيگريشنز جي ايپليڪيشن يا غير ايپليڪيشن لاءِ شرطن کي مقرر ڪري سگھي ٿو خاص خصوصيتن سان ڪلسٽرن ۾.

11. ٽيمپليٽ سپورٽ

ڊولپرز اهو چونڊڻ جي صلاحيت مان فائدو وٺندا ته ايپليڪيشن جا وسيلا ڪيئن بيان ڪيا ويندا (هيلم چارٽ، خالص ڪبرنيٽس يامل، وغيره).

GitOps اوزار OpenShift پليٽ فارم تي

آرگو سي ڊي

ArgoCD خارجي وسيلا ريڪونائل ماڊل کي لاڳو ڪري ٿو ۽ ڪلسٽرز ۽ گيٽ ريپوزٽريز جي وچ ۾ هڪ کان گهڻن رشتن کي ترتيب ڏيڻ لاءِ مرڪزي UI پيش ڪري ٿو. هن پروگرام جي نقصانن ۾ شامل آهن ايپليڪيشنن کي منظم ڪرڻ جي ناڪامي جڏهن ArgoCD ڪم نه ڪري رهيو آهي.

سرڪاري ويب سائيٽ

وهڪري

فلڪس هڪ آن-ڪلسٽر ريسورس ريڪنسائل ماڊل لاڳو ڪري ٿو ۽ نتيجي طور، تعريف جي ذخيري جو ڪو به مرڪزي انتظام نه آهي، جيڪو هڪ ڪمزور نقطو آهي. ٻئي طرف، خاص طور تي مرڪزيت جي کوٽ جي ڪري، ايپليڪيشنن کي منظم ڪرڻ جي صلاحيت رهي ٿي جيتوڻيڪ هڪ ڪلستر ناڪام ٿي وڃي.

سرڪاري ويب سائيٽ

OpenShift تي ArgoCD انسٽال ڪرڻ

ArgoCD هڪ بهترين ڪمانڊ لائن انٽرفيس ۽ ويب ڪنسول پيش ڪري ٿو، تنهنڪري اسان هتي فلڪس ۽ ٻين متبادلن کي نه ڍڪينداسين.

OpenShift 4 پليٽ فارم تي ArgoCD کي ترتيب ڏيڻ لاء، ڪلستر منتظم جي طور تي ھيٺين قدمن تي عمل ڪريو:

OpenShift پليٽ فارم تي ArgoCD اجزاء کي ترتيب ڏيڻ

# Create a new namespace for ArgoCD components
oc create namespace argocd
# Apply the ArgoCD Install Manifest
oc -n argocd apply -f https://raw.githubusercontent.com/argoproj/argo-cd/v1.2.2/manifests/install.yaml
# Get the ArgoCD Server password
ARGOCD_SERVER_PASSWORD=$(oc -n argocd get pod -l "app.kubernetes.io/name=argocd-server" -o jsonpath='{.items[*].metadata.name}')

ArgoCD سرور کي بهتر بڻايو وڃي ته جيئن ان کي OpenShift Route ذريعي ڏسي سگهجي

# Patch ArgoCD Server so no TLS is configured on the server (--insecure)
PATCH='{"spec":{"template":{"spec":{"$setElementOrder/containers":[{"name":"argocd-server"}],"containers":[{"command":["argocd-server","--insecure","--staticassets","/shared/app"],"name":"argocd-server"}]}}}}'
oc -n argocd patch deployment argocd-server -p $PATCH
# Expose the ArgoCD Server using an Edge OpenShift Route so TLS is used for incoming connections
oc -n argocd create route edge argocd-server --service=argocd-server --port=http --insecure-policy=Redirect

ترتيب ڏيڻ ArgoCD ڪلائي اوزار

# Download the argocd binary, place it under /usr/local/bin and give it execution permissions
curl -L https://github.com/argoproj/argo-cd/releases/download/v1.2.2/argocd-linux-amd64 -o /usr/local/bin/argocd
chmod +x /usr/local/bin/argocd

ArgoCD سرور منتظم پاسورڊ تبديل ڪرڻ

# Get ArgoCD Server Route Hostname
ARGOCD_ROUTE=$(oc -n argocd get route argocd-server -o jsonpath='{.spec.host}')
# Login with the current admin password
argocd --insecure --grpc-web login ${ARGOCD_ROUTE}:443 --username admin --password ${ARGOCD_SERVER_PASSWORD}
# Update admin's password
argocd --insecure --grpc-web --server ${ARGOCD_ROUTE}:443 account update-password --current-password ${ARGOCD_SERVER_PASSWORD} --new-password

انهن مرحلن کي مڪمل ڪرڻ کان پوء، توهان ArgoCD سرور سان ArgoCD WebUI ويب ڪنسول يا ArgoCD ڪلائي ڪمانڊ لائن ٽول ذريعي ڪم ڪري سگهو ٿا.
https://blog.openshift.com/is-it-too-late-to-integrate-gitops/

GitOps - اهو ڪڏهن به دير سان ناهي

"ٽرين ڇڏي وئي آهي" - هي اهو آهي ته اهي هڪ صورتحال بابت چوندا آهن جڏهن ڪجهه ڪرڻ جو موقعو وڃايو ويو آهي. OpenShift جي صورت ۾، هن سٺي نئين پليٽ فارم کي فوري طور تي استعمال ڪرڻ شروع ڪرڻ جي خواهش اڪثر ڪري بلڪل اهڙي صورتحال پيدا ڪري ٿي رستن جي انتظام ۽ سار سنڀال، ڊيپلائيشن ۽ ٻين OpenShift شيون. پر ڇا موقعو هميشه مڪمل طور تي وڃائي ٿو؟

بابت مضمونن جو سلسلو جاري GitOps، اڄ اسين توهان کي ڏيکارينداسين ته ڪيئن هڪ هٿ سان ٺهيل ايپليڪيشن ۽ ان جي وسيلن کي هڪ عمل ۾ تبديل ڪيو وڃي جتي هر شي GitOps اوزارن جي ذريعي منظم ڪئي ويندي آهي. ائين ڪرڻ لاءِ، اسان پهريان دستي طور تي httpd ايپليڪيشن کي ترتيب ڏينداسين. هيٺ ڏنل اسڪرين شاٽ ڏيکاري ٿو ته اسان ڪيئن هڪ نالي جي جاءِ ٺاهيندا آهيون، مقرري ۽ خدمت، ۽ پوءِ هن سروس کي بي نقاب ڪري رستو ٺاهي.

oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/namespace.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/deployment.yaml
oc create -f https://raw.githubusercontent.com/openshift/federation-dev/master/labs/lab-4-assets/service.yaml
oc expose svc/httpd -n simple-app

تنهنڪري اسان وٽ هڪ هٿ سان ٺهيل ايپليڪيشن آهي. هاڻي ان کي GitOps جي انتظام هيٺ منتقل ڪرڻ جي ضرورت آهي بغير دستيابي جي نقصان جي. مختصر ۾، اهو هن ڪري ٿو:

  • ڪوڊ لاءِ Git مخزن ٺاھيو.
  • اسان اسان جي موجوده شيون برآمد ڪريون ٿا ۽ انهن کي Git مخزن تي اپ لوڊ ڪريو.
  • GitOps اوزار چونڊڻ ۽ ترتيب ڏيڻ.
  • اسان پنھنجي ذخيري کي ھن ٽول کٽ ۾ شامل ڪيو.
  • اسان پنهنجي GitOps ٽول ڪٽ ۾ ايپليڪيشن جي وضاحت ڪريون ٿا.
  • اسان GitOps ٽول ڪٽ استعمال ڪندي ايپليڪيشن جي ٽيسٽ رن کي انجام ڏيون ٿا.
  • اسان GitOps ٽول ڪٽ استعمال ڪندي شين کي هم وقت سازي ڪندا آهيون.
  • شين جي ڇنڊڇاڻ ۽ خودڪار هم وقت سازي کي فعال ڪريو.

جيئن اڳ ۾ ذڪر ڪيو ويو آهي مضمون, GitOps ۾ Kubernetes ڪلستر ۾ سڀني شين جي باري ۾ معلومات جو هڪ ۽ صرف هڪ ذريعو آهي - Git مخزن. اڳيون، اسان انهي بنياد کان اڳتي وڌون ٿا ته توهان جي تنظيم اڳ ۾ ئي استعمال ڪري ٿي Git مخزن. اهو عوامي يا نجي ٿي سگهي ٿو، پر اهو لازمي آهي ته Kubernetes ڪلستر تائين پهچ. اهو ساڳيو مخزن ٿي سگهي ٿو جيئن ايپليڪيشن ڪوڊ لاءِ، يا هڪ الڳ مخزن خاص طور تي ترتيب ڏيڻ لاءِ ٺاهيو ويو آهي. اها سفارش ڪئي وئي آهي ته مخزن ۾ سخت اجازتون هجن ڇو ته راز، رستا ۽ ٻيون حفاظتي حساس شيون اتي محفوظ ڪيون وينديون.

اسان جي مثال ۾، اسان GitHub تي هڪ نئون عوامي مخزن ٺاهينداسين. توھان ان کي سڏي سگھو ٿا جيڪو توھان چاھيو، اسان نالو استعمال ڪندا آھيون بلاگ پوسٽ.

جيڪڏهن YAML اعتراض فائلون مقامي طور تي يا Git ۾ محفوظ نه ڪيون ويون آهن، پوء توهان کي استعمال ڪرڻو پوندو oc يا kubectl binaries. هيٺ ڏنل اسڪرين شاٽ ۾ اسان YAML کي درخواست ڪري رهيا آهيون اسان جي نالي جي جڳهه، مقرري، خدمت ۽ رستي لاءِ. ان کان اڳ، اسان نئين ٺاهيل مخزن کي ڪلون ڪيو ۽ ان ۾ سي ڊي.

oc get namespace simple-app -o yaml --export > namespace.yaml
oc get deployment httpd -o yaml -n simple-app --export > deployment.yaml
oc get service httpd -o yaml -n simple-app --export > service.yaml
oc get route httpd -o yaml -n simple-app --export > route.yaml

هاڻي اچو ته deployment.yaml فائل کي ايڊٽ ڪري ان فيلڊ کي ختم ڪريون جنهن کي آرگو سي ڊي سنڪ نٿو ڪري سگهي.

sed -i '/sgeneration: .*/d' deployment.yaml

ان کان سواء، رستو تبديل ڪرڻ جي ضرورت آهي. اسان پهريان هڪ ملٽي لائن متغير مقرر ڪنداسين ۽ پوء ان کي تبديل ڪنداسين ingress: null ان متغير جي مواد سان.

export ROUTE="  ingress:                                                            
    - conditions:
        - status: 'True'
          type: Admitted"

sed -i "s/  ingress: null/$ROUTE/g" route.yaml

تنهن ڪري، اسان فائلن کي ترتيب ڏنو آهي، باقي رهي ٿو انهن کي Git مخزن ۾ محفوظ ڪرڻ. جنهن کان پوءِ هي مخزن معلومات جو واحد ذريعو بڻجي وڃي ٿو، ۽ شين ۾ ڪنهن به دستي تبديلين کي سختي سان منع ڪيو وڃي.

git commit -am ‘initial commit of objects’
git push origin master

وڌيڪ اسان ان حقيقت کان اڳتي وڌون ٿا ته توهان اڳ ۾ ئي آرگو سي ڊي مقرر ڪيو آهي (اهو ڪيئن ڪجي - پويون ڏسو پوسٽ). تنهن ڪري، اسان Argo CD ۾ شامل ڪنداسين مخزن جيڪو اسان ٺاهيو آهي، جنهن ۾ اسان جي مثال مان ايپليڪيشن ڪوڊ شامل آهي. بس پڪ ڪريو ته توهان صحيح مخزن جي وضاحت ڪئي جيڪا توهان اڳ ۾ ٺاهي هئي.

argocd repo add https://github.com/cooktheryan/blogpost

هاڻي اچو ته ايپليڪيشن ٺاهي. ايپليڪيشن قدرن کي سيٽ ڪري ٿي ته جيئن GitOps ٽول ڪٽ سمجهي ٿو ته ڪهڙن مخزن ۽ رستا کي استعمال ڪرڻو آهي، ڪهڙيون شيون منظم ڪرڻ لاءِ OpenShift جي ضرورت آهي، مخزن جي ڪهڙي مخصوص شاخ جي ضرورت آهي، ۽ ڇا وسيلن کي پاڻمرادو هم وقت سازي ڪرڻ گهرجي.

argocd app create --project default 
--name simple-app --repo https://github.com/cooktheryan/blogpost.git 
--path . --dest-server https://kubernetes.default.svc 
--dest-namespace simple-app --revision master --sync-policy none

هڪ دفعو هڪ ايپليڪيشن Argo CD ۾ بيان ڪئي وئي آهي، ٽول ڪٽ اڳ ۾ ئي مقرر ڪيل شين کي چيڪ ڪرڻ شروع ڪري ٿو مخزن ۾ وصفن جي خلاف. اسان جي مثال ۾، خودڪار هم وقت سازي ۽ صفائي بند ٿيل آهن، تنهنڪري عناصر اڃا تائين تبديل نه ڪندا آهن. مهرباني ڪري نوٽ ڪريو ته Argo CD انٽرفيس ۾ اسان جي ايپليڪيشن کي "Out of Sync" جي حيثيت حاصل هوندي، ڇاڪاڻ ته اتي ڪو به ليبل ناهي جيڪو ArgoCD مهيا ڪري.
اهو ئي سبب آهي جڏهن اسان ٿوري دير کان پوء هم وقت سازي شروع ڪندا آهيون، شيون ٻيهر بحال نه ٿينديون.

ھاڻي اچو ته ھڪڙي ٽيسٽ رن کي يقيني بڻائڻ لاءِ ته اسان جي فائلن ۾ ڪو نقص نه آھي.

argocd app sync simple-app --dry-run

جيڪڏهن ڪو غلطيون نه آهن، ته پوء توهان اڳتي وڌائي سگهو ٿا هم وقت سازي.

argocd app sync simple-app

اسان جي ايپليڪيشن تي argocd حاصل ڪمانڊ کي هلائڻ کان پوء، اسان کي ڏسڻ گهرجي ته ايپليڪيشن جي صورتحال صحت مند يا هم وقت تي تبديل ٿي وئي آهي. هن جو مطلب اهو ٿيندو ته Git مخزن ۾ سڀئي وسيلا هاڻي انهن وسيلن سان ملن ٿا جيڪي اڳ ۾ ئي مقرر ڪيا ويا آهن.

argocd app get simple-app
Name:               simple-app
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          simple-app
URL:                https://argocd-server-route-argocd.apps.example.com/applications/simple-app
Repo:               https://github.com/cooktheryan/blogpost.git
Target:             master
Path:               .
Sync Policy:        <none>
Sync Status:        Synced to master (60e1678)
Health Status:      Healthy
...   

ھاڻي توھان چالو ڪري سگھوٿا خودڪار هم وقت سازي ۽ صفائي کي يقيني بڻائڻ لاءِ ته ڪجھ به دستي طور تي نه ٺاھيو ويو آھي ۽ ھر دفعي ڪو اعتراض ٺاھيو ويندو آھي يا مخزن ۾ اپڊيٽ ڪيو ويندو آھي، ھڪڙي ٺاھڻ ٿيندي.

argocd app set simple-app --sync-policy automated --auto-prune

تنهن ڪري، اسان ڪاميابي سان GitOps ڪنٽرول هيٺ هڪ ايپليڪيشن کڻي آيا آهيون جيڪا شروعات ۾ ڪنهن به طريقي سان GitOps استعمال نه ڪئي هئي.

جو ذريعو: www.habr.com

تبصرو شامل ڪريو