የ GitOps ለOpenShift መግቢያ

ዛሬ ስለ GitOps መርሆዎች እና ሞዴሎች, እንዲሁም እነዚህ ሞዴሎች በ OpenShift መድረክ ላይ እንዴት እንደሚተገበሩ እንነጋገራለን. በዚህ ርዕስ ላይ በይነተገናኝ መመሪያ አለ ማያያዣ.

የ GitOps ለOpenShift መግቢያ

በአጭር አነጋገር፣ GitOps የመሠረተ ልማት እና የመተግበሪያ ውቅሮችን ለማስተዳደር Git pull ጥያቄዎችን ለመጠቀም የተግባር ስብስብ ነው። በ GitOps ውስጥ ያለው የጊት ማከማቻ እንደ የስርዓቱ ሁኔታ እንደ አንድ የመረጃ ምንጭ ነው የሚወሰደው፣ እና በዚህ ግዛት ላይ የሚደረጉ ማናቸውም ለውጦች ሙሉ በሙሉ ሊታዩ እና ሊመረመሩ የሚችሉ ናቸው።

በ GitOps ውስጥ የመከታተያ ለውጥ ሀሳብ አዲስ አይደለም ፣ ይህ አካሄድ ከመተግበሪያ ምንጭ ኮድ ጋር ሲሰራ ከሞላ ጎደል በአለም አቀፍ ደረጃ ጥቅም ላይ ውሏል። GitOps በቀላሉ ተመሳሳይ ባህሪያትን (ግምገማዎችን, ጥያቄዎችን, መለያዎችን, ወዘተ) በመሠረተ ልማት እና በመተግበሪያ ውቅረት አስተዳደር ውስጥ ተግባራዊ ያደርጋል እና እንደ ምንጭ ኮድ አስተዳደር ሁኔታ ተመሳሳይ ጥቅሞችን ይሰጣል.

ለ GitOps ምንም የአካዳሚክ ፍቺ ወይም የጸደቁ ደንቦች ስብስብ የለም፣ ይህ አሰራር የተገነባባቸው የመርሆች ስብስብ ብቻ፡-

  • የስርዓቱ ገላጭ መግለጫ በ Git ማከማቻ ውስጥ ተከማችቷል (ማዋቀር ፣ ክትትል ፣ ወዘተ)።
  • የግዛት ለውጦች የሚደረጉት በመጎተቻ ጥያቄዎች ነው።
  • የስርዓተ ክወናው ሁኔታ የጂት ግፊት ጥያቄዎችን በመጠቀም በማጠራቀሚያው ውስጥ ካለው መረጃ ጋር እንዲስማማ ተደርጓል።

GitOps መርሆዎች

  • የስርዓት ትርጓሜዎች እንደ ምንጭ ኮድ ተገልጸዋል።

የስርዓቶች ውቅረት እንደ ኮድ ይቆጠራሉ ስለዚህ እንዲከማች እና በራስ-ሰር በጂት ማከማቻ ውስጥ እንዲቀየር፣ ይህም እንደ ነጠላ የእውነት ምንጭ ሆኖ ያገለግላል። ይህ አካሄድ በስርዓቶች ውስጥ ለውጦችን በታቀደ ልቀት እና ወደ ኋላ ለመመለስ ቀላል ያደርገዋል።

  • የሚፈለገው ሁኔታ እና የስርዓቶች ውቅር በጂት ውስጥ ተዘጋጅተው ተዘጋጅተዋል።

የሚፈለገውን የስርዓቶች ሁኔታ በጊት ውስጥ በማከማቸት እና በመቀየር፣ በስርዓቶች እና አፕሊኬሽኖች ላይ ለውጦችን በቀላሉ መልቀቅ እና መመለስ እንችላለን። የኮድ ባለቤትነትን ለመቆጣጠር እና ትክክለኛነቱን ለማረጋገጥ የጊት የደህንነት ዘዴዎችን ልንጠቀም እንችላለን።

  • የማዋቀር ለውጦች በራስ-ሰር በመጎተት ጥያቄዎች ሊተገበሩ ይችላሉ።

የጂት መሳብ ጥያቄዎችን በመጠቀም፣ በማከማቻው ውስጥ ባሉ ውቅሮች ላይ ለውጦች እንዴት እንደሚተገበሩ በቀላሉ መቆጣጠር እንችላለን። ለምሳሌ፣ ለሌሎች የቡድን አባላት ለግምገማ ሊሰጡ ወይም በCI ሙከራዎች፣ ወዘተ.

እና በተመሳሳይ ጊዜ የአስተዳዳሪ ስልጣኖችን ወደ ግራ እና ቀኝ ማሰራጨት አያስፈልግም. የውቅረት ለውጦችን ለማድረግ ተጠቃሚዎች በ Git ማከማቻ ውስጥ እነዚያ ውቅረቶች በተከማቹበት አግባብነት ያላቸው ፈቃዶች ብቻ ያስፈልጋቸዋል።

  • ከቁጥጥር ውጭ የሆነ የቅንጅቶች ተንሸራታች ችግርን ማስተካከል

የሚፈለገው የስርዓቱ ሁኔታ በጂት ማከማቻ ውስጥ ከተከማቸ እኛ ማድረግ ያለብን የስርዓቱ ወቅታዊ ሁኔታ ከተፈለገው ሁኔታ ጋር የሚዛመድ መሆኑን የሚያረጋግጥ ሶፍትዌር ማግኘት ነው። ጉዳዩ ይህ ካልሆነ፣ ይህ ሶፍትዌር - እንደ ቅንጅቶቹ የሚወሰን ሆኖ - ወይ አለመግባባቱን በራሱ ማስወገድ ወይም ስለ ውቅረት መንሸራተት ያሳውቀናል።

የ GitOps ሞዴሎች ለOpenShift

በክላስተር ሪሶርስ አስታራቂ

በዚህ ሞዴል መሠረት ክላስተር በ Git ማከማቻ ውስጥ የኩበርኔትስ ሀብቶችን (YAML ፋይሎችን) ከክላስተር እውነተኛ ሀብቶች ጋር የማነፃፀር ኃላፊነት ያለው ተቆጣጣሪ አለው። ልዩነቶች ከተገኙ ተቆጣጣሪው ማሳወቂያዎችን ይልካል እና ምናልባት ልዩነቶችን ለማስተካከል እርምጃ ይወስዳል። ይህ የጊትኦፕስ ሞዴል በ Anthos Config Management እና Weaveworks Flux ውስጥ ጥቅም ላይ ይውላል።

የ GitOps ለOpenShift መግቢያ

የውጭ መገልገያ አስታራቂ (ግፋ)

በ "Git repository - Kubernetes cluster" ጥንዶች ውስጥ ሀብቶችን የማመሳሰል ኃላፊነት አንድ ወይም ከዚያ በላይ ተቆጣጣሪዎች ሲኖረን ይህ ሞዴል እንደ ቀዳሚው ልዩነት ሊቆጠር ይችላል። እዚህ ያለው ልዩነት እያንዳንዱ የሚተዳደር ክላስተር የግድ የራሱ የተለየ ተቆጣጣሪ የለውም። Git - k8s ክላስተር ጥንዶች ብዙውን ጊዜ እንደ ሲአርዲዎች (ብጁ የመረጃ ፍቺዎች) ይገለጻሉ፣ ይህም ተቆጣጣሪው ማመሳሰልን እንዴት ማከናወን እንዳለበት ሊገልጽ ይችላል። በዚህ ሞዴል ውስጥ ተቆጣጣሪዎች በሲአርዲ ውስጥ የተገለጸውን የጊት ማከማቻ ከ Kubernetes ክላስተር ሃብቶች ጋር ያወዳድራሉ፣ እነዚህም በCRD ውስጥ ከተገለጹት እና በንፅፅር ውጤቶች ላይ ተመስርተው ተገቢ እርምጃዎችን ያደርጋሉ። በተለይም ይህ የ GitOps ሞዴል በ ArgoCD ውስጥ ጥቅም ላይ ይውላል.

የ GitOps ለOpenShift መግቢያ

GitOps በOpenShift መድረክ ላይ

የብዝሃ ክላስተር ኩበርኔትስ መሠረተ ልማት አስተዳደር

በ Kubernetes መስፋፋት እና የብዝሃ-ደመና ስልቶች እና የጠርዝ ማስላት ታዋቂነት እያደገ በመምጣቱ አማካኝ የOpenShift ክላስተር በአንድ ደንበኛ ቁጥርም እየጨመረ ነው።

ለምሳሌ የጠርዝ ስሌት ሲጠቀሙ የአንድ ደንበኛ ስብስቦች በመቶዎች አልፎ ተርፎም በሺዎች ሊሰማሩ ይችላሉ። በዚህ ምክንያት በሕዝብ ደመና እና በግቢው ውስጥ በርካታ ገለልተኛ ወይም የተቀናጁ የOpenShift ስብስቦችን ለማስተዳደር ተገድዷል።

በዚህ ሁኔታ ብዙ ችግሮች መፈታት አለባቸው ፣ በተለይም-

  • ዘለላዎቹ በተመሳሳይ ሁኔታ ውስጥ መሆናቸውን ይቆጣጠሩ (ማዋቀር፣ ክትትል፣ ማከማቻ፣ ወዘተ.)
  • በሚታወቅ ሁኔታ ላይ በመመስረት ስብስቦችን እንደገና ይፍጠሩ (ወይም ወደነበሩበት ይመልሱ)።
  • በሚታወቅ ሁኔታ ላይ በመመስረት አዲስ ስብስቦችን ይፍጠሩ።
  • ለውጦችን ወደ ብዙ የOpenShift ስብስቦች ያውጡ።
  • በበርካታ የOpenShift ስብስቦች ላይ ለውጦችን ወደ ኋላ ያዙሩ።
  • አብነት የተደረጉ ውቅሮችን ወደተለያዩ አካባቢዎች ያገናኙ።

የመተግበሪያ ውቅሮች

በህይወት ዑደታቸው ወቅት፣ አፕሊኬሽኖች ብዙውን ጊዜ ወደ ምርት ክላስተር ከመጨመራቸው በፊት በክላስተር ሰንሰለት (ዴቭ፣ መድረክ፣ ወዘተ) ውስጥ ያልፋሉ። በተጨማሪም፣ በተገኝነት እና በመጠን መመዘኛ መስፈርቶች፣ ደንበኞች ብዙ ጊዜ አፕሊኬሽኖችን በተለያዩ የግቢ ክላስተር ወይም በብዙ የህዝብ ደመና መድረክ ላይ ያሰማራሉ።

በዚህ ሁኔታ, የሚከተሉት ተግባራት መፈታት አለባቸው.

  • የመተግበሪያዎች እንቅስቃሴ (ሁለትዮሽ፣ ውቅሮች፣ ወዘተ) በክላስተር (dev፣ ደረጃ፣ ወዘተ) መካከል መንቀሳቀሱን ያረጋግጡ።
  • በበርካታ የOpenShift ስብስቦች ውስጥ በመተግበሪያዎች ላይ ለውጦችን (ሁለትዮሽ፣ ማዋቀር፣ ወዘተ) ልቀቅ።
  • ወደ ቀድሞው የታወቀ ሁኔታ ለውጦችን ወደ ትግበራዎች መልሱ።

OpenShift GitOps ጉዳዮችን ይጠቀሙ

1. ለውጦችን ከ Git ማከማቻ መተግበር

የክላስተር አስተዳዳሪ የOpenShift ክላስተር አወቃቀሮችን በ Git ማከማቻ ውስጥ ማከማቸት እና አዳዲስ ስብስቦችን ለመፍጠር እና በ Git ማከማቻ ውስጥ ከተከማቸ ወደሚታወቅ ሁኔታ ጋር ወደሚመሳሰል ሁኔታ በራስ-ሰር ተግባራዊ ማድረግ ይችላል።

2. ሚስጥራዊ አስተዳዳሪ ጋር ማመሳሰል

አስተዳዳሪው በተለይ ለዚሁ የተፈጠሩ መሳሪያዎችን በመጠቀም ለማስተዳደር የOpenShift ሚስጥራዊ ነገሮችን እንደ ቮልት ካሉ ተገቢ ሶፍትዌሮች ጋር የማመሳሰል ችሎታ ተጠቃሚ ይሆናል።

3. የተንሸራታች አወቃቀሮችን መቆጣጠር

አስተዳዳሪው የሚደግፈው OpenShift GitOps ራሱ በእውነተኛ ውቅሮች እና በማከማቻው ውስጥ በተገለጹት መካከል ስላለው አለመግባባቶች ካወቀ እና ካስጠነቀቀ ብቻ ነው ስለዚህ ለመንሸራተት በፍጥነት ምላሽ መስጠት ይችላሉ።

4. ስለ ውቅረት ተንሸራታች ማሳወቂያዎች

በፍጥነት በራሱ ተገቢውን እርምጃ ለመውሰድ አስተዳዳሪው ስለ ውቅረት ተንሳፋፊ ጉዳዮች በፍጥነት መማር በሚፈልግበት ጊዜ እነሱ ጠቃሚ ናቸው ።

5. በሚንሸራተቱበት ጊዜ የውቅረቶችን በእጅ ማመሳሰል

የአስተዳዳሪው የOpenShift ክላስተር ከ Git ማከማቻ ጋር እንዲያመሳስል ያስችለዋል።

በሚንሸራተቱበት ጊዜ ውቅሮችን 6.Auto-synchronization

አስተዳዳሪው ተንሸራታች ሲገኝ ከማከማቻው ጋር በራስ ሰር እንዲመሳሰል የOpenShift ክላስተርን ማዋቀር ይችላል፣ይህም የክላስተር ውቅር ሁል ጊዜ በጊት ውስጥ ካሉ ውቅሮች ጋር ይዛመዳል።

7. በርካታ ስብስቦች - አንድ ማከማቻ

አስተዳዳሪው የበርካታ የተለያዩ የOpenShift ስብስቦች አወቃቀሮችን በአንድ Git ማከማቻ ውስጥ ማከማቸት እና እንደ አስፈላጊነቱ እየመረጠ መተግበር ይችላል።

8. የክላስተር ውቅሮች ተዋረድ (ውርስ)

አስተዳዳሪው በማከማቻው ውስጥ የክላስተር ውቅረቶች ተዋረድ (ደረጃ፣ ፕሮድ፣ የመተግበሪያ ፖርትፎሊዮ፣ ወዘተ. ከውርስ ጋር) ማዋቀር ይችላል። በሌላ አነጋገር፣ ውቅረቶች ለአንድ ወይም ከዚያ በላይ ዘለላዎች መተግበር እንዳለባቸው ሊወስን ይችላል።

ለምሳሌ አንድ አስተዳዳሪ በጂት ማከማቻ ውስጥ “የምርት ክላስተር (ምርት) → ሲስተም X ክላስተር → የስርዓት X የምርት ስብስቦችን” ተዋረድ ካዋቀረ የሚከተሉት ውቅሮች ጥምረት በስርዓት X የምርት ስብስቦች ላይ ይተገበራል።

  • ለሁሉም የምርት ስብስቦች የተለመዱ ውቅሮች።
  • ለሲስተም X ክላስተር ውቅሮች።
  • ለX ስርዓት ማምረቻ ክላስተር ውቅሮች።

9. አብነቶች እና ውቅር ይሽራሉ

አስተዳዳሪው የተወረሱትን የተዋቀሩ ስብስቦችን እና እሴቶቻቸውን መሻር ይችላል፣ ለምሳሌ፣ የሚተገበሩባቸውን የተወሰኑ ዘለላዎች ውቅር ለማስተካከል።

10. ውቅሮችን፣ የመተግበሪያ ውቅሮችን መምረጥ እና ማካተት

አስተዳዳሪው የተወሰኑ ውቅረቶችን ወደ ክላስተር ለማመልከት ወይም ላለመተግበር ሁኔታዎችን ማዘጋጀት ይችላል።

11. የአብነት ድጋፍ

ለእያንዳንዱ የተለየ መተግበሪያ በጣም ተገቢውን ቅርጸት ለመጠቀም ገንቢዎች የመተግበሪያ ግብዓቶች እንዴት እንደሚገለጹ (Helm Chart፣ pure Kubernetes yaml፣ ወዘተ) የመምረጥ ችሎታ ተጠቃሚ ይሆናሉ።

የ GitOps መሳሪያዎች በ OpenShift መድረክ ላይ

አርጎሲዲ

ArgoCD የውጪ ሪሶርስ ማስታረቅ ሞዴልን ተግባራዊ ያደርጋል እና በክላስተር እና በጂት ማከማቻዎች መካከል ከአንድ እስከ ብዙ ግንኙነቶችን ለማቀናጀት የተማከለ UI ያቀርባል። የዚህ ፕሮግራም ጉዳቶች ArgoCD በማይሰራበት ጊዜ አፕሊኬሽኖችን ማስተዳደር አለመቻልን ያጠቃልላል።

ኦፊሴላዊ ድር ጣቢያ

የማያቋርጥ

Flux በክላስተር ሪሶርስ ሪሶርስ ሞዴልን ይተገብራል፣ በውጤቱም፣ የትርጉም ማከማቻው የተማከለ አስተዳደር የለም፣ ይህ ደካማ ነጥብ ነው። በሌላ በኩል፣ በትክክል በማዕከላዊነት እጥረት ምክንያት፣ አንድ ዘለላ ባይሳካም መተግበሪያዎችን የማስተዳደር ችሎታ ይቀራል።

ኦፊሴላዊ ድር ጣቢያ

በ OpenShift ላይ ArgoCD ን በመጫን ላይ

ArgoCD በጣም ጥሩ የትዕዛዝ መስመር በይነገጽ እና የድር ኮንሶል ያቀርባል፣ ስለዚህ Flux እና ሌሎች አማራጮችን እዚህ አንሸፍነውም።

ArgoCDን በOpenShift 4 መድረክ ላይ ለማሰማራት እንደ ክላስተር አስተዳዳሪ እነዚህን ደረጃዎች ይከተሉ።

የ ArgoCD ክፍሎችን በ OpenShift መድረክ ላይ መዘርጋት

# 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 አገልጋይ አስተዳዳሪ ይለፍ ቃል መለወጥ

# 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 የትእዛዝ መስመር መሳሪያ በኩል ከአርጎሲዲ አገልጋይ ጋር መስራት ይችላሉ።
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 Toolkitን በመጠቀም የመተግበሪያውን የሙከራ ጊዜ እናከናውናለን።
  • የ GitOps Toolkitን በመጠቀም ነገሮችን እናመሳስላለን።
  • የነገሮችን መቁረጥ እና በራስ-ማመሳሰልን አንቃ።

ባለፈው እንደተጠቀሰው ጽሑፍ, በ GitOps ውስጥ በ Kubernetes ክላስተር (ዎች) ውስጥ ስለ ሁሉም ነገሮች አንድ እና አንድ የመረጃ ምንጭ - የ Git ማከማቻ አለ. በመቀጠል፣ ድርጅትዎ የጊት ማከማቻን ይጠቀምበታል ከሚለው ቅድመ ሁኔታ እንቀጥላለን። ይፋዊ ወይም ግላዊ ሊሆን ይችላል፣ ግን ለኩበርኔትስ ስብስቦች ተደራሽ መሆን አለበት። ይህ ከመተግበሪያ ኮድ ጋር ተመሳሳይ ማከማቻ ሊሆን ይችላል፣ ወይም የተለየ ማከማቻ ለማሰማራት የተፈጠረ። ሚስጥሮች፣ መንገዶች እና ሌሎች ደህንነትን የሚነኩ ነገሮች እዚያ ስለሚቀመጡ በማከማቻው ውስጥ ጥብቅ ፍቃዶች እንዲኖሩ ይመከራል።

በእኛ ምሳሌ በ GitHub ላይ አዲስ የህዝብ ማከማቻ እንፈጥራለን። የፈለከውን መደወል ትችላለህ፣ የብሎግ ፖስት የሚለውን ስም እንጠቀማለን።

የ YAML ነገር ፋይሎች በአገር ውስጥ ወይም በጂት ውስጥ ካልተቀመጡ፣ የ 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 ፋይልን እናርትዕ።

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

በተጨማሪም መንገዱን መቀየር ያስፈልጋል. መጀመሪያ ባለብዙ መስመር ተለዋዋጭ እናዘጋጃለን እና መግባቱን እንተካለን፡ በተለዋዋጭ ይዘቶች ባዶ።

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 repo add https://github.com/cooktheryan/blogpost

አሁን መተግበሪያውን እንፍጠር. አፕሊኬሽኑ እሴቶችን ያዘጋጃል የ GitOps Toolkit የትኞቹን ማከማቻዎች እና መንገዶች መጠቀም እንዳለብን፣ ነገሮችን ለማስተዳደር የትኛው 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

አንድ መተግበሪያ በአርጎ ሲዲ ውስጥ ከተገለጸ በኋላ የመሳሪያ ኪቱ ቀደም ሲል የተሰማሩ ነገሮችን በማጠራቀሚያው ውስጥ ካሉት ፍቺዎች ጋር መፈተሽ ይጀምራል። በእኛ ምሳሌ፣ ራስ-ማመሳሰል እና ማጽዳት ተሰናክለዋል፣ ስለዚህ ንጥረ ነገሮቹ ገና አልተቀየሩም። እባክዎን በአርጎ ሲዲ በይነገጽ ውስጥ የእኛ መተግበሪያ "ከስምረት ውጭ" የሚል ደረጃ ይኖረዋል ምክንያቱም አርጎ ሲዲ የሚያቀርበው መለያ የለም።
ለዚህም ነው ትንሽ ቆይቶ ማመሳሰልን ስንጀምር እቃዎቹ እንደገና አይሰሩም።

አሁን በፋይሎቻችን ውስጥ ምንም ስህተቶች አለመኖራቸውን ለማረጋገጥ የሙከራ ሩጫ እናድርግ።

argocd app sync simple-app --dry-run

ምንም ስህተቶች ከሌሉ, ከዚያ ወደ ማመሳሰል መቀጠል ይችላሉ.

argocd app sync simple-app

በአፕሊኬሽኑ ላይ የ argocd get ትእዛዝን ካሰራን በኋላ የማመልከቻው ሁኔታ ወደ ጤናማ ወይም synced መቀየሩን ማየት አለብን። ይህ ማለት በጊት ማከማቻ ውስጥ ያሉት ሁሉም ሀብቶች አሁን ከተሰማሩት ሀብቶች ጋር ይዛመዳሉ ማለት ነው።

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 ቁጥጥር ስር አምጥተናል።

ምንጭ: hab.com

አስተያየት ያክሉ