OpenShift සඳහා GitOps සඳහා හැඳින්වීම

අද අපි GitOps හි මූලධර්ම සහ ආකෘති ගැන මෙන්ම, OpenShift වේදිකාවේ මෙම ආකෘති ක්රියාත්මක කරන ආකාරය ගැන කතා කරමු. මෙම මාතෘකාව පිළිබඳ අන්තර්ක්‍රියාකාරී මාර්ගෝපදේශයක් තිබේ ලින්ක්.

OpenShift සඳහා GitOps සඳහා හැඳින්වීම

කෙටියෙන් කිවහොත්, GitOps යනු යටිතල පහසුකම් සහ යෙදුම් වින්‍යාසයන් කළමනාකරණය කිරීම සඳහා Git pull ඉල්ලීම් භාවිතා කිරීම සඳහා වූ පරිචයන් සමූහයකි. GitOps හි ඇති Git ගබඩාව පද්ධතියේ තත්ත්වය පිළිබඳ තනි තොරතුරු මූලාශ්‍රයක් ලෙස සලකනු ලබන අතර, මෙම තත්ත්වයට සිදුවන ඕනෑම වෙනස්කමක් සම්පූර්ණයෙන්ම සොයා ගත හැකි සහ විගණනය කළ හැකි වේ.

GitOps හි ලුහුබැඳීම වෙනස් කිරීමේ අදහස කිසිසේත් අලුත් නොවේ; යෙදුම් ප්‍රභව කේතය සමඟ වැඩ කිරීමේදී මෙම ප්‍රවේශය විශ්වීය වශයෙන් බොහෝ කලක සිට භාවිතා කර ඇත. GitOps යටිතල පහසුකම් සහ යෙදුම් වින්‍යාස කළමනාකරණයේදී සමාන විශේෂාංග (සමාලෝචන, ඇදීමේ ඉල්ලීම්, ටැග් ආදිය) ක්‍රියාත්මක කරන අතර ප්‍රභව කේත කළමනාකරණයේදී මෙන් සමාන ප්‍රතිලාභ සපයයි.

GitOps සඳහා ශාස්ත්‍රීය අර්ථ දැක්වීමක් හෝ අනුමත නීති මාලාවක් නොමැත, මෙම පරිචය ගොඩනගා ඇති මූලධර්ම මාලාවක් පමණි:

  • පද්ධතියේ ප්‍රකාශන විස්තරය Git ගබඩාවේ (configs, monitoring, etc.) ගබඩා කර ඇත.
  • රාජ්ය වෙනස්කම් ඇදීමේ ඉල්ලීම් හරහා සිදු කෙරේ.
  • Git push ඉල්ලීම් භාවිතයෙන් ගබඩාවේ ඇති දත්ත සමඟ ධාවන පද්ධතිවල තත්ත්වය ගෙන එයි.

GitOps මූලධර්ම

  • පද්ධති නිර්වචන මූලාශ්‍ර කේතය ලෙස විස්තර කෙරේ

පද්ධති වින්‍යාසය කේතයක් ලෙස සලකනු ලබන බැවින් එය සත්‍යයේ තනි මූලාශ්‍රයක් ලෙස ක්‍රියා කරන Git ගබඩාවක ගබඩා කර ස්වයංක්‍රීයව අනුවාදනය කළ හැක. මෙම ප්‍රවේශය මඟින් පද්ධතිවල වෙනස්කම් පෙරළීම සහ ආපසු හැරීම පහසු කරයි.

  • පද්ධතිවල අපේක්ෂිත තත්වය සහ වින්‍යාසය Git හි සකසා අනුවාදනය කර ඇත

Git හි අවශ්‍ය පද්ධතිවල ගබඩා කිරීම සහ අනුවාද කිරීම මඟින්, අපට පහසුවෙන් පද්ධති සහ යෙදුම් වෙත වෙනස්කම් පෙරළීමට සහ ආපසු හැරවීමට හැකි වේ. කේත හිමිකාරිත්වය පාලනය කිරීමට සහ එහි සත්‍යතාව තහවුරු කිරීමට අපට Git හි ආරක්ෂක යාන්ත්‍රණ භාවිතා කළ හැකිය.

  • ඇදීමේ ඉල්ලීම් හරහා වින්‍යාස වෙනස්කම් ස්වයංක්‍රීයව යෙදිය හැක

Git pull ඉල්ලීම් භාවිතයෙන්, ගබඩාවේ ඇති වින්‍යාසයන් සඳහා වෙනස්කම් යෙදෙන ආකාරය අපට පහසුවෙන් පාලනය කළ හැක. උදාහරණයක් ලෙස, ඒවා සමාලෝචනය සඳහා අනෙකුත් කණ්ඩායම් සාමාජිකයින්ට ලබා දීමට හෝ CI පරීක්ෂණ ආදිය හරහා ධාවනය කිරීමට හැකිය.

ඒ අතරම, පරිපාලක බලතල වමට සහ දකුණට බෙදා හැරීමට අවශ්‍ය නොවේ. වින්‍යාස කිරීම් වෙනස් කිරීමට, පරිශීලකයින්ට අවශ්‍ය වන්නේ එම වින්‍යාසයන් ගබඩා කර ඇති Git ගබඩාවේ සුදුසු අවසර පමණි.

  • වින්‍යාසවල පාලනයකින් තොරව ප්ලාවිතය පිළිබඳ ගැටළුව නිරාකරණය කිරීම

පද්ධතියේ අපේක්ෂිත තත්වය Git ගබඩාවක ගබඩා කළ පසු, අප කළ යුත්තේ පද්ධතියේ වත්මන් තත්වය එහි අපේක්ෂිත තත්වයට ගැලපෙන බව සහතික කරන මෘදුකාංගයක් සොයා ගැනීමයි. මෙය එසේ නොවේ නම්, මෙම මෘදුකාංගය - සැකසීම් මත පදනම්ව - එක්කෝ විෂමතාව තනිවම ඉවත් කළ යුතුය, නැතහොත් වින්‍යාස ප්ලාවිතය ගැන අපට දැනුම් දිය යුතුය.

OpenShift සඳහා GitOps මාදිලි

On-Cluster Resource Reconciler

මෙම ආකෘතියට අනුව, පොකුරට Git ගබඩාවේ ඇති Kubernetes සම්පත් (YAML ගොනු) පොකුරේ සැබෑ සම්පත් සමඟ සංසන්දනය කිරීම සඳහා වගකිව යුතු පාලකයක් ඇත. නොගැලපීම් අනාවරණය වුවහොත්, පාලකය දැනුම්දීම් යවන අතර සමහර විට විෂමතා නිවැරදි කිරීමට පියවර ගනී. මෙම GitOps ආකෘතිය Anthos Config Management සහ Weaveworks Flux හි භාවිතා වේ.

OpenShift සඳහා GitOps සඳහා හැඳින්වීම

බාහිර සම්පත් ප්රතිසන්ධානය (තල්ලු)

“Git repository - Kubernetes cluster” යුගල තුළ සම්පත් සමමුහුර්ත කිරීම සඳහා වගකිව යුතු පාලකයන් එකක් හෝ කිහිපයක් අප සතුව ඇති විට, මෙම ආකෘතිය පෙර මාදිලියේ වෙනසක් ලෙස සැලකිය හැකිය. මෙහි ඇති වෙනස නම් එක් එක් කළමනා කරන ලද පොකුරටම අවශ්‍යයෙන්ම වෙනම පාලකයක් නොමැති වීමයි. Git - k8s පොකුරු යුගල බොහෝ විට CRDs (අභිරුචි සම්පත් අර්ථ දැක්වීම්) ලෙස අර්ථ දක්වා ඇත, පාලකය සමමුහුර්තකරණය සිදු කළ යුතු ආකාරය විස්තර කළ හැක. මෙම ආකෘතිය තුළ, CRD හි නිශ්චිතව දක්වා ඇති Git ගබඩාව CRD හි නිශ්චිතව දක්වා ඇති Kubernetes පොකුරු සම්පත් සමඟ පාලකයන් සංසන්දනය කරයි, සහ සැසඳීමේ ප්‍රතිඵල මත පදනම්ව සුදුසු ක්‍රියා සිදු කරයි. විශේෂයෙන්ම මෙම GitOps ආකෘතිය ArgoCD හි භාවිතා වේ.

OpenShift සඳහා GitOps සඳහා හැඳින්වීම

OpenShift වේදිකාවේ GitOps

බහු-පොකුරු Kubernetes යටිතල පහසුකම් පරිපාලනය

Kubernetes ව්‍යාප්තිය සහ බහු-වලාකුළු උපාය මාර්ග සහ එජ් කම්පියුටින් වල ජනප්‍රියතාවය වැඩි වීමත් සමඟ, එක් පාරිභෝගිකයෙකුට සාමාන්‍ය OpenShift පොකුරු සංඛ්‍යාව ද වැඩි වෙමින් පවතී.

උදාහරණයක් ලෙස, එජ් කම්පියුටින් භාවිතා කරන විට, එක් පාරිභෝගිකයෙකුගේ පොකුරු සිය ගණනකින් හෝ දහස් ගණනකින් යෙදවිය හැක. එහි ප්‍රතිඵලයක් වශයෙන්, ඔහුට පොදු වලාකුළේ සහ පරිශ්‍රයේ ස්වාධීන හෝ සම්බන්ධීකරණ OpenShift පොකුරු කිහිපයක් කළමනාකරණය කිරීමට බල කෙරෙයි.

මෙම අවස්ථාවේ දී, බොහෝ ගැටළු විසඳිය යුතුය, විශේෂයෙන්:

  • පොකුරු එක සමාන තත්වයක පවතින බව පාලනය කරන්න (configs, monitoring, storage, etc.)
  • දන්නා තත්වයක් මත පදනම්ව පොකුරු ප්‍රතිනිර්මාණය කරන්න (හෝ ප්‍රතිස්ථාපනය කරන්න).
  • දන්නා තත්වයක් මත පදනම්ව නව පොකුරු සාදන්න.
  • බහුවිධ OpenShift පොකුරු වෙත වෙනස්කම් රෝල් කරන්න.
  • බහුවිධ OpenShift පොකුරු හරහා වෙනස්කම් ආපසු පෙරළන්න.
  • විවිධ පරිසරයන්ට සැකිලි වින්‍යාසයන් සම්බන්ධ කරන්න.

යෙදුම් සැකසුම්

ඔවුන්ගේ ජීවන චක්‍රය තුළ, යෙදුම් බොහෝ විට නිෂ්පාදන පොකුරකින් අවසන් වීමට පෙර පොකුරු දාමයක් (dev, stage, etc.) හරහා ගමන් කරයි. ඊට අමතරව, ලබා ගත හැකි සහ පරිමාණය කිරීමේ අවශ්‍යතා හේතුවෙන්, පාරිභෝගිකයින් බොහෝ විට ස්ථාන කිහිපයක පොකුරු හෝ පොදු වලාකුළු වේදිකාවක බහු කලාප හරහා යෙදුම් යොදවයි.

මෙම අවස්ථාවේදී, පහත සඳහන් කාර්යයන් විසඳිය යුතුය:

  • පොකුරු (dev, stage, etc.) අතර යෙදුම් (ද්විමාන, වින්‍යාස, ආදිය) චලනය සහතික කරන්න.
  • OpenShift පොකුරු කිහිපයක යෙදුම් (ද්විමාන, වින්‍යාස, ආදිය) වෙනස් කරන්න.
  • පෙර දන්නා තත්වයකට යෙදුම්වල වෙනස්කම් ආපසු හරවන්න.

OpenShift GitOps භාවිත අවස්ථා

1. Git ගබඩාවෙන් වෙනස්කම් යෙදීම

පොකුරු පරිපාලකයෙකුට OpenShift පොකුරු වින්‍යාසයන් Git ගබඩාවක ගබඩා කර නව පොකුරු සෑදීමට සහ ඒවා Git ගබඩාවේ ගබඩා කර ඇති දන්නා තත්වයට සමාන තත්වයකට ගෙන ඒමට ස්වයංක්‍රීයව යෙදිය හැක.

2. රහස් කළමනාකරු සමඟ සමමුහුර්තකරණය

OpenShift රහස් වස්තු වෝල්ට් වැනි සුදුසු මෘදුකාංග සමඟ සමමුහුර්ත කිරීමේ හැකියාවෙන් පරිපාලකයාට ප්‍රතිලාභ ලැබෙනු ඇත.

3. ප්ලාවිත සැකසුම් පාලනය කිරීම

ප්ලාවිතයට ඉක්මනින් ප්‍රතිචාර දැක්විය හැකි පරිදි, සැබෑ වින්‍යාසයන් සහ ගබඩාවේ දක්වා ඇති ඒවා අතර ඇති විෂමතා OpenShift GitOps විසින්ම හඳුනාගෙන අනතුරු අඟවන්නේ නම් පමණක් පරිපාලකයා පක්ෂව සිටී.

4. වින්‍යාස ප්ලාවිතය පිළිබඳ දැනුම්දීම්

පරිපාලකයාට තමා විසින්ම සුදුසු ක්‍රියාමාර්ග ඉක්මනින් ගැනීම සඳහා වින්‍යාස ප්ලාවිතයේ අවස්ථා පිළිබඳව ඉක්මනින් ඉගෙන ගැනීමට අවශ්‍ය වූ විට ඒවා ප්‍රයෝජනවත් වේ.

5. ප්ලාවනය කිරීමේදී වින්‍යාසයන් අතින් සමමුහුර්ත කිරීම

වින්‍යාස ප්ලාවිතයකදී, වින්‍යාස ප්‍ලාවිතයකදී, පොකුර කලින් දන්නා තත්වයට ඉක්මනින් ගෙන ඒම සඳහා, OpenShift පොකුර Git ගබඩාව සමඟ සමමුහුර්ත කිරීමට පරිපාලකයාට ඉඩ දෙන්න.

6. ප්ලාවනය වන විට වින්‍යාසයන් ස්වයංක්‍රීයව සමමුහුර්ත කිරීම

ප්ලාවිතයක් අනාවරණය වූ විට ගබඩාව සමඟ ස්වයංක්‍රීයව සමමුහුර්ත වීමට පරිපාලකයාට OpenShift පොකුර වින්‍යාස කළ හැක, එවිට පොකුරු වින්‍යාසය සැමවිටම Git හි ඇති වින්‍යාසයන්ට ගැලපේ.

7. පොකුරු කිහිපයක් - එක් ගබඩාවක්

පරිපාලකයාට විවිධ OpenShift පොකුරු කිහිපයක වින්‍යාසයන් එක් Git ගබඩාවක ගබඩා කර අවශ්‍ය පරිදි ඒවා තෝරාගත හැක.

8. පොකුරු වින්‍යාසයේ ධුරාවලිය (උරුමය)

පරිපාලකයාට ගබඩාවේ (අදියර, නිෂ්පාදන, යෙදුම් කළඹ, ආදිය උරුමය සමඟ) පොකුරු වින්‍යාස කිරීමේ ධුරාවලියක් සැකසිය හැක. වෙනත් වචන වලින් කිවහොත්, වින්‍යාසයන් පොකුරු එකකට හෝ වැඩි ගණනකට යෙදිය යුතුද යන්න තීරණය කළ හැක.

උදාහරණයක් ලෙස, පරිපාලකයෙකු Git ගබඩාවේ "නිෂ්පාදන පොකුරු (නිෂ්පාදන) → System X ක්ලස්ටර් → X නිෂ්පාදන පොකුරු" ධුරාවලිය සකසන්නේ නම්, පහත දැක්වෙන වින්‍යාසයන්හි එකතුවක් පද්ධති X හි නිෂ්පාදන පොකුරු සඳහා යොදනු ලැබේ:

  • සියලුම නිෂ්පාදන පොකුරු සඳහා පොදු සැකසුම්.
  • System X පොකුර සඳහා මානකරන.
  • X පද්ධති නිෂ්පාදන පොකුර සඳහා වින්‍යාස.

9. සැකිලි සහ වින්‍යාසය අභිබවා යයි

පරිපාලකයාට උරුම වූ වින්‍යාස කට්ටලයක් සහ ඒවායේ අගයන් ප්‍රතික්ෂේප කළ හැකිය, උදාහරණයක් ලෙස, ඒවා යෙදිය යුතු විශේෂිත පොකුරු සඳහා වින්‍යාසය මනාව සකස් කිරීමට.

10. වින්‍යාස කිරීම්, යෙදුම් වින්‍යාස කිරීම් සඳහා වරණ ඇතුළත් කිරීම සහ බැහැර කිරීම

පරිපාලකයාට යම් යම් ලක්ෂණ සහිත පොකුරු සඳහා ඇතැම් වින්‍යාසයන් යෙදීම හෝ නොයෙදීම සඳහා කොන්දේසි සැකසිය හැක.

11. සැකිලි සහාය

එක් එක් විශේෂිත යෙදුම සඳහා වඩාත් සුදුසු ආකෘතිය භාවිතා කිරීම සඳහා යෙදුම් සම්පත් නිර්වචනය කරන ආකාරය (Helm Chart, pure Kubernetes yaml, ආදිය) තෝරා ගැනීමේ හැකියාවෙන් සංවර්ධකයින් ප්‍රතිලාභ ලබනු ඇත.

OpenShift වේදිකාවේ GitOps මෙවලම්

ArgoCD

ArgoCD බාහිර සම්පත් ප්‍රතිසන්ධාන ආකෘතිය ක්‍රියාත්මක කරන අතර පොකුරු සහ Git ගබඩාවන් අතර එකකින් සිට බොහෝ සම්බන්ධතා සංවිධානය කිරීම සඳහා මධ්‍යගත UI ඉදිරිපත් කරයි. මෙම වැඩසටහනේ අවාසි අතර ArgoCD ක්‍රියා නොකරන විට යෙදුම් කළමනාකරණය කිරීමට ඇති නොහැකියාව ඇතුළත් වේ.

නිල වෙබ් අඩවිය

ගලන

Flux විසින් On-Cluster Resource Reconcile ආකෘතියක් ක්‍රියාත්මක කරන අතර, එහි ප්‍රතිඵලයක් වශයෙන්, දුර්වල ලක්ෂ්‍යයක් වන නිර්වචන ගබඩාවේ මධ්‍යගත කළමනාකරණයක් නොමැත. අනෙක් අතට, නිශ්චිතවම මධ්‍යගත නොවීම නිසා, එක් පොකුරක් අසමත් වුවද යෙදුම් කළමනාකරණය කිරීමේ හැකියාව පවතී.

නිල වෙබ් අඩවිය

OpenShift මත ArgoCD ස්ථාපනය කිරීම

ArgoCD විශිෂ්ට විධාන රේඛා අතුරුමුහුණතක් සහ වෙබ් කොන්සෝලයක් ලබා දෙයි, එබැවින් අපි මෙහි Flux සහ වෙනත් විකල්ප ආවරණය නොකරමු.

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}')

OpenShift Route මගින් දැක ගත හැකි වන පරිදි ArgoCD සේවාදායකය වැඩිදියුණු කිරීම

# 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 Cli මෙවලම යෙදවීම

# 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 Server පරිපාලක මුරපදය වෙනස් කිරීම

# 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 WebUI වෙබ් කොන්සෝලය හෝ ArgoCD Cli විධාන රේඛා මෙවලම හරහා 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 පොකුරේ (s) සියලු වස්තු පිළිබඳ තොරතුරු එකම එක මූලාශ්‍රයක් ඇත - Git ගබඩාව. මීළඟට, අපි ඔබේ සංවිධානය දැනටමත් Git ගබඩාවක් භාවිතා කරන පරිශ්‍රයේ සිට ඉදිරියට යන්නෙමු. එය පොදු හෝ පුද්ගලික විය හැක, නමුත් එය Kubernetes පොකුරු වෙත ප්‍රවේශ විය යුතුය. මෙය යෙදුම් කේතය සඳහා ඇති එකම ගබඩාව හෝ යෙදවුම් සඳහා විශේෂයෙන් නිර්මාණය කරන ලද වෙනම ගබඩාවක් විය හැකිය. රහස්, මාර්ග සහ වෙනත් ආරක්‍ෂක සංවේදී දේවල් ගබඩා කර තබන බැවින් ගබඩාවේ දැඩි අවසරයන් තිබීම නිර්දේශ කෙරේ.

අපගේ උදාහරණයේ දී, අපි GitHub මත නව පොදු ගබඩාවක් සාදන්නෙමු. ඔබ කැමති ඕනෑම දෙයක් එය අමතන්න, අපි blogpost යන නම භාවිතා කරමු.

YAML වස්තු ගොනු දේශීයව හෝ Git හි ගබඩා කර නොමැති නම්, ඔබට oc හෝ kubectl ද්විමය භාවිතා කිරීමට සිදුවේ. පහත තිර පිටපතෙහි අපි අපගේ නාම අවකාශය, යෙදවීම, සේවාව සහ මාර්ගය සඳහා 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 ගොනුව සංස්කරණය කරමු Argo CD එකට සමමුහුර්ත කළ නොහැකි ක්ෂේත්‍රය ඉවත් කරන්න.

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

ඊට අමතරව, මාර්ගය වෙනස් කිරීම අවශ්ය වේ. අපි මුලින්ම බහු රේඛා විචල්‍යයක් සකසන්නෙමු, පසුව ඇතුල්වීම ප්‍රතිස්ථාපනය කරන්න: එම විචල්‍යයේ අන්තර්ගතය සමඟ 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

ඔබ දැනටමත් ArgoCD යොදවා ඇති නිසා අපි තවදුරටත් ඉදිරියට යන්නෙමු (මෙය කරන්නේ කෙසේද - පෙර බලන්න තනතුර) එබැවින්, අපගේ උදාහරණයෙන් යෙදුම් කේතය අඩංගු අප විසින් නිර්මාණය කරන ලද ගබඩාව අපි 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 අතුරුමුහුණත තුළ අපගේ යෙදුමට "සමමුහුර්තකරණයෙන් බැහැර" තත්ත්වය ඇති බව කරුණාවෙන් සලකන්න, ArgoCD සපයන ලේබලයක් නොමැති නිසා.
මේ නිසා අපි ටිකක් පසුව සමමුහුර්තකරණය ආරම්භ කරන විට, වස්තූන් නැවත නොයෙදේ.

දැන් අපි අපේ ලිපිගොනු වල දෝෂ නොමැති බව තහවුරු කර ගැනීමට පරීක්ෂණ ධාවනයක් කරමු.

argocd app sync simple-app --dry-run

දෝෂ නොමැති නම්, ඔබට සමමුහුර්ත කිරීමට ඉදිරියට යා හැකිය.

argocd app sync simple-app

අපගේ යෙදුමේ argocd get විධානය ක්‍රියාත්මක කිරීමෙන් පසු, යෙදුම් තත්ත්වය සෞඛ්‍ය සම්පන්න හෝ සමමුහුර්ත ලෙස වෙනස් වී ඇති බව අපට පෙනෙනු ඇත. මෙයින් අදහස් කරන්නේ 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

අදහස් එක් කරන්න