ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

በዚህ ዓመት፣ ዋናው የአውሮፓ የኩበርኔትስ ኮንፈረንስ - KubeCon + CloudNativeCon Europe 2020 - ምናባዊ ነበር። ይሁን እንጂ እንዲህ ያለው የቅርጽ ለውጥ “ሂድ? ባሽ! ለክፍት ምንጭ ፕሮጄክታችን የተዘጋጀውን የሼል ኦፕሬተርን ያግኙ ሼል-ኦፕሬተር.

ይህ ጽሑፍ በንግግሩ ተመስጦ ለኩበርኔትስ ኦፕሬተሮችን የመፍጠር ሂደትን ለማቃለል አቀራረብን ያቀርባል እና ሼል-ኦፕሬተርን በመጠቀም በትንሽ ጥረት እንዴት እራስዎ ማድረግ እንደሚችሉ ያሳያል ።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

በማስተዋወቅ ላይ ቪዲዮ ከሪፖርቱ ጋር (~ 23 ደቂቃ በእንግሊዘኛ፣ ከጽሑፉ የበለጠ መረጃ ሰጭ በሆነ መልኩ) እና ዋናው የተወሰደው በጽሑፍ መልክ ነው። ሂድ!

በ Flant ሁሉንም ነገር ያለማቋረጥ እናመቻችታለን እና በራስ ሰር እናዘጋጃለን። ዛሬ ስለ ሌላ አስደሳች ጽንሰ-ሐሳብ እንነጋገራለን. መገናኘት: ደመና-ቤተኛ ሼል ስክሪፕት!

ሆኖም፣ ይህ ሁሉ በሚከሰትበት አውድ እንጀምር፡ Kubernetes።

Kubernetes ኤፒአይ እና ተቆጣጣሪዎች

በ Kubernetes ውስጥ ያለው ኤፒአይ ለእያንዳንዱ የነገር አይነት ማውጫ ያለው እንደ የፋይል አገልጋይ አይነት ሊወከል ይችላል። በዚህ አገልጋይ ላይ ያሉ ነገሮች (ሀብቶች) በ YAML ፋይሎች ይወከላሉ። በተጨማሪም አገልጋዩ ሶስት ነገሮችን እንዲያደርጉ የሚያስችልዎ መሰረታዊ ኤፒአይ አለው።

  • ተቀበል ሀብት በዓይነቱ እና በስሙ;
  • ለውጥ ሀብት (በዚህ ሁኔታ አገልጋዩ “ትክክለኛ” ዕቃዎችን ብቻ ያከማቻል - ሁሉም በስህተት የተሰሩ ወይም ለሌላ ማውጫዎች የታሰቡ ይጣላሉ)።
  • ትራክ ለሀብቱ (በዚህ አጋጣሚ ተጠቃሚው ወዲያውኑ የአሁኑን / የተሻሻለውን ስሪት ይቀበላል).

ስለዚህ ኩበርኔትስ እንደ ፋይል አገልጋይ (ለ YAML መግለጫዎች) በሶስት መሰረታዊ ዘዴዎች (አዎ ፣ በእውነቱ ሌሎችም አሉ ፣ ግን ለአሁኑ እንተወዋለን)።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ችግሩ አገልጋዩ መረጃን ብቻ ማከማቸት ይችላል. እንዲሰራ ለማድረግ, ያስፈልግዎታል መቆጣጠሪያ - በ Kubernetes ዓለም ውስጥ ሁለተኛው በጣም አስፈላጊ እና መሠረታዊ ፅንሰ-ሀሳብ።

ሁለት ዋና ዋና ተቆጣጣሪዎች አሉ. የመጀመሪያው ከኩበርኔትስ መረጃን ወስዶ በጎጆ አመክንዮ መሰረት ያስኬዳል እና ወደ K8s ይመልሳል። ሁለተኛው ከኩበርኔትስ መረጃን ይወስዳል, ግን እንደ መጀመሪያው ዓይነት ሳይሆን, አንዳንድ የውጭ ሀብቶችን ሁኔታ ይለውጣል.

በኩበርኔትስ ውስጥ ማሰማራትን የመፍጠር ሂደቱን በዝርዝር እንመልከት፡-

  • የማሰማራት ተቆጣጣሪ (በ ውስጥ ተካትቷል kube-controller-manager) ሾለ ማሰማራት መረጃ ይቀበላል እና ReplicaSet ይፈጥራል።
  • ReplicaSet በዚህ መረጃ ላይ ተመስርተው ሁለት ቅጂዎችን (ሁለት ፖዶች) ይፈጥራል፣ ነገር ግን እነዚህ ፖዶች እስካሁን ቀጠሮ አልተያዙም።
  • መርሐግብር አውጪው የፖድ መርሐግብር ያወጣል እና የመስቀለኛ መንገድ መረጃን ወደ YAMLs ያክላል።
  • ኩቤሌቶች በውጫዊ ምንጭ ላይ ለውጦችን ያደርጋሉ (ዶከር ይበሉ)።

ከዚያ ይህ አጠቃላይ ቅደም ተከተል በተገላቢጦሽ ቅደም ተከተል ይደጋገማል-ኩቤሌት መያዣዎቹን ይፈትሻል ፣ የፖድ ሁኔታን ያሰላል እና መልሰው ይልከዋል። ReplicaSet መቆጣጠሪያው ሁኔታውን ይቀበላል እና የተባዛውን ስብስብ ሁኔታ ያሻሽላል። በDeployment Controller ተመሳሳይ ነገር ይከሰታል እና ተጠቃሚው በመጨረሻ የዘመነውን (የአሁኑን) ሁኔታ ያገኛል።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ሼል-ኦፕሬተር

ኩበርኔትስ በተለያዩ ተቆጣጣሪዎች የጋራ ሥራ ላይ የተመሰረተ ነው (የኩበርኔትስ ኦፕሬተሮችም ተቆጣጣሪዎች ናቸው)። ጥያቄው የሚነሳው, በትንሽ ጥረት የራስዎን ኦፕሬተር እንዴት መፍጠር እንደሚቻል? እና እዚህ ያዳበርነው ወደ መታደግ ይመጣል ሼል-ኦፕሬተር. የስርዓት አስተዳዳሪዎች የተለመዱ ዘዴዎችን በመጠቀም የራሳቸውን መግለጫዎች እንዲፈጥሩ ያስችላቸዋል.

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ቀላል ምሳሌ: ምስጢሮችን መቅዳት

አንድ ቀላል ምሳሌ እንመልከት።

የኩበርኔትስ ክላስተር አለን እንበል። የስም ቦታ አለው። default ከአንዳንድ ምስጢር ጋር mysecret. በተጨማሪም, በክላስተር ውስጥ ሌሎች የስም ቦታዎች አሉ. አንዳንዶቹ ከነሱ ጋር የተያያዘ ልዩ መለያ አላቸው። ግባችን ሚስጥርን በመለያ ወደ የስም ቦታዎች መቅዳት ነው።

ስራው የተወሳሰበ ነው አዲስ የስም ቦታዎች በክላስተር ውስጥ ሊታዩ ይችላሉ, እና አንዳንዶቹም ይህ መለያ ሊኖራቸው ይችላል. በሌላ በኩል ፣ መለያው ሲሰረዝ ፣ ምስጢር እንዲሁ መሰረዝ አለበት። ከዚህ በተጨማሪ, ምስጢሩ እራሱ ሊለወጥ ይችላል-በዚህ ሁኔታ, አዲሱ ሚስጥር በሁሉም ስያሜዎች ወደ ሁሉም የስም ቦታዎች መቅዳት አለበት. ምስጢሩ በድንገት በማንኛውም የስም ቦታ ከተሰረዘ የእኛ ኦፕሬተር ወዲያውኑ ወደነበረበት መመለስ አለበት።

አሁን ስራው ተዘጋጅቷል, የሼል-ኦፕሬተርን በመጠቀም መተግበር ለመጀመር ጊዜው ነው. ግን በመጀመሪያ ስለ ሼል-ኦፕሬተር እራሱ ጥቂት ቃላትን መናገር ጠቃሚ ነው.

ሼል-ኦፕሬተር እንዴት እንደሚሰራ

በኩበርኔትስ ውስጥ እንዳሉት ሌሎች የስራ ጫናዎች፣ ሼል-ኦፕሬተር በራሱ ፖድ ውስጥ ይሰራል። በማውጫው ውስጥ በዚህ ፖድ ውስጥ /hooks ሊተገበሩ የሚችሉ ፋይሎች ተከማችተዋል። እነዚህ በ Bash፣ Python፣ Ruby፣ ወዘተ ያሉ ስክሪፕቶች ሊሆኑ ይችላሉ። እንደዚህ ያሉ ሊተገበሩ የሚችሉ ፋይሎችን መንጠቆዎች ብለን እንጠራዋለንጠማማዎች).

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ሼል-ኦፕሬተር ለኩበርኔትስ ዝግጅቶች ተመዝግቦ እነዚህን መንጠቆዎች ለሚያስፈልጉን ክስተቶች ምላሽ ይሰጣል።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ሼል-ኦፕሬተሩ የትኛውን መንጠቆ እና መቼ እንደሚሮጥ እንዴት ያውቃል? ነጥቡ እያንዳንዱ መንጠቆ ሁለት ደረጃዎች አሉት. በሚነሳበት ጊዜ ሼል-ኦፕሬተር ሁሉንም መንጠቆዎች በክርክር ያካሂዳል --config ይህ የማዋቀር ደረጃ ነው። እና ከእሱ በኋላ, መንጠቆዎች በተለመደው መንገድ - ለተያያዙት ክስተቶች ምላሽ ይሰጣሉ. በኋለኛው ጉዳይ ላይ መንጠቆው አስገዳጅ አውድ ይቀበላል (አስገዳጅ አውድ) - ውሂብ በ JSON ቅርጸት, ከዚህ በታች በበለጠ ዝርዝር ውስጥ እንነጋገራለን.

በባሽ ውስጥ ኦፕሬተር ማድረግ

አሁን ለትግበራ ዝግጁ ነን። ይህንን ለማድረግ ሁለት ተግባራትን መጻፍ አለብን (በነገራችን ላይ, እንመክራለን ቤተ መጻሕፍት shell_lib, ይህም በባሽ ውስጥ መንጠቆዎችን በጣም ቀላል ያደርገዋል)

  • የመጀመሪያው ለማዋቀር ደረጃ ያስፈልጋል - አስገዳጅ አውድ ያሳያል;
  • ሁለተኛው የመንጠቆውን ዋና አመክንዮ ይዟል.

#!/bin/bash

source /shell_lib.sh

function __config__() {
  cat << EOF
    configVersion: v1
    # BINDING CONFIGURATION
EOF
}

function __main__() {
  # THE LOGIC
}

hook::run "$@"

የሚቀጥለው እርምጃ የምንፈልጋቸውን እቃዎች መወሰን ነው. በእኛ ሁኔታ ፣ እኛ መከታተል አለብን-

  • ለለውጦች ምንጭ ሚስጥር;
  • በክላስተር ውስጥ ያሉ ሁሉም የስም ቦታዎች፣ የትኞቹ መለያዎች ከነሱ ጋር እንደተያያዙ እንዲያውቁ፣
  • የዒላማ ሚስጥሮች ሁሉም ከምንጩ ሚስጥር ጋር መስማማታቸውን ለማረጋገጥ።

ለሚስጥር ምንጭ ይመዝገቡ

ለእሱ አስገዳጅ ውቅር በጣም ቀላል ነው። በስሙ ምስጢር ፍላጎት እንዳለን እንገልፃለን። mysecret በስም ቦታ default:

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

function __config__() {
  cat << EOF
    configVersion: v1
    kubernetes:
    - name: src_secret
      apiVersion: v1
      kind: Secret
      nameSelector:
        matchNames:
        - mysecret
      namespace:
        nameSelector:
          matchNames: ["default"]
      group: main
EOF

በውጤቱም፣ መንጠቆው የሚቀሰቀሰው የምንጭ ሚስጥር ሲቀየር ነው (src_secret) እና የሚከተለውን አስገዳጅ አውድ ተቀበል፡

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

እንደምታየው, ስሙን እና ሙሉውን እቃ ይዟል.

የስም ቦታዎችን መከታተል

አሁን ለስም ቦታዎች መመዝገብ አለብዎት። ይህንን ለማድረግ, የሚከተለውን አስገዳጅ ውቅረት እንገልጻለን.

- name: namespaces
  group: main
  apiVersion: v1
  kind: Namespace
  jqFilter: |
    {
      namespace: .metadata.name,
      hasLabel: (
       .metadata.labels // {} |  
         contains({"secret": "yes"})
      )
    }
  group: main
  keepFullObjectsInMemory: false

እንደሚመለከቱት, አዲስ መስክ ከስሙ ጋር በቅንጅቱ ውስጥ ታይቷል jq ማጣሪያ ስሙ እንደሚያመለክተው እ.ኤ.አ. jqFilter ሁሉንም አላስፈላጊ መረጃዎችን ያጣራል እና አዲስ የJSON ነገርን ከእኛ ፍላጎት በሆኑ መስኮች ይፈጥራል። ተመሳሳይ ውቅር ያለው መንጠቆ የሚከተለውን አስገዳጅ አውድ ይቀበላል።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ድርድር ይዟል filterResults በክላስተር ውስጥ ላለው እያንዳንዱ የስም ቦታ። ቡሊያን ተለዋዋጭ hasLabel መለያ ከተሰጠው የስም ቦታ ጋር መያያዙን ያሳያል። መራጭ keepFullObjectsInMemory: false የተሟሉ ዕቃዎችን በማስታወስ ውስጥ ማስቀመጥ አያስፈልግም.

የዒላማ ሚስጥሮችን መከታተል

ማብራሪያ ያላቸውን ምስጢሮች በሙሉ እንመዘግባለን። managed-secret: "yes" (እነዚህ ኢላማችን ናቸው። dst_secrets):

- name: dst_secrets
  apiVersion: v1
  kind: Secret
  labelSelector:
    matchLabels:
      managed-secret: "yes"
  jqFilter: |
    {
      "namespace":
        .metadata.namespace,
      "resourceVersion":
        .metadata.annotations.resourceVersion
    }
  group: main
  keepFullObjectsInMemory: false

በዚህ ረገድ jqFilter ከስም ቦታ እና መለኪያ በስተቀር ሁሉንም መረጃ ያጣራል። resourceVersion. ምስጢሩን በሚፈጥሩበት ጊዜ የመጨረሻው ግቤት ወደ ማብራሪያው ተላልፏል-የምስጢር ስሪቶችን ለማነፃፀር እና ወቅታዊ ለማድረግ ያስችልዎታል.

በዚህ መንገድ የተዋቀረ መንጠቆ ሲተገበር ከላይ የተገለጹትን ሶስት አስገዳጅ አውዶች ይቀበላል። እንደ ቅጽበተ-ፎቶ ዓይነት ሊወሰዱ ይችላሉ (ቅጽበተ-ፎቶ) ክላስተር።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

በእነዚህ ሁሉ መረጃዎች ላይ በመመርኮዝ መሰረታዊ ስልተ ቀመር ሊዘጋጅ ይችላል. በሁሉም የስም ቦታዎች ላይ ይደጋገማል እና፡-

  • ከሆነ hasLabel ጉዳዮች true ለአሁኑ የስም ቦታ፡-
    • የአለምን ሚስጥር ከአካባቢው ጋር ያወዳድራል፡-
      • ተመሳሳይ ከሆኑ ምንም አያደርግም;
      • የሚለያዩ ከሆነ - ያስፈጽማል kubectl replace ወይም create;
  • ከሆነ hasLabel ጉዳዮች false ለአሁኑ የስም ቦታ፡-
    • ሚስጥሩ በተሰጠው የስም ቦታ ውስጥ አለመኖሩን ያረጋግጣል፡-
      • የአከባቢው ሚስጥር ካለ, ተጠቅመው ይሰርዙት kubectl delete;
      • የአከባቢው ሚስጥር ካልተገኘ ምንም አያደርግም.

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

በ Bash ውስጥ የአልጎሪዝም አተገባበር በእኛ ውስጥ ማውረድ ይችላሉ ምሳሌዎች ጋር ማከማቻዎች.

በዚህ መንገድ ነው 35 የ YAML ውቅረት መስመሮችን እና ተመሳሳይ መጠን ያለው የ Bash ኮድ በመጠቀም ቀላል የኩበርኔትስ መቆጣጠሪያን መፍጠር የቻልነው! የሼል-ኦፕሬተር ሥራ እነሱን አንድ ላይ ማገናኘት ነው.

ሆኖም ምስጢሮችን መቅዳት የመገልገያው ብቸኛ ቦታ አይደለም። ችሎታው ምን እንደሆነ ለማሳየት ጥቂት ተጨማሪ ምሳሌዎች እነሆ።

ምሳሌ 1፡ ConfigMap ላይ ለውጦችን ማድረግ

ሶስት ፖዶችን ያቀፈ ማሰማራትን እንመልከት። Pods አንዳንድ ውቅረትን ለማከማቸት ConfigMapን ይጠቀማሉ። ፖድቹ ሲጀመሩ፣ ConfigMap በተወሰነ ሁኔታ ላይ ነበር (ቁ.1 እንበለው)። በዚህ መሠረት ሁሉም ፖድዎች ይህንን ልዩ የ ConfigMap ስሪት ይጠቀማሉ።

አሁን ConfigMap እንደተለወጠ እናስብ (ቁ.2)። ነገር ግን፣ ፖድቹ የቀደመውን የConfigMap ስሪት (ቁ.1) ይጠቀማሉ።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ወደ አዲሱ ConfigMap (ቁ.2) እንዲቀይሩ እንዴት ላደርጋቸው እችላለሁ? መልሱ ቀላል ነው፡ አብነት ይጠቀሙ። ወደ ክፍሉ የቼክ ድምር ማብራሪያ እንጨምር template የማሰማራት ውቅሮች፡-

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

በውጤቱም, ይህ ቼክ በሁሉም ፖድዶች ውስጥ ይመዘገባል, እና እንደ ማሰማራት ተመሳሳይ ይሆናል. አሁን ConfigMap ሲቀየር ማብራሪያውን ማዘመን ብቻ ያስፈልግዎታል። እና ሼል-ኦፕሬተር በዚህ ጉዳይ ላይ ጠቃሚ ነው. የሚያስፈልግህ ፕሮግራም ብቻ ነው። ለ ConfigMap የሚመዘገብ እና ቼክሱን የሚያዘምን መንጠቆ.

ተጠቃሚው በ ConfigMap ላይ ለውጦችን ካደረገ፣ ሼል-ኦፕሬተር እነሱን ያስተውላቸዋል እና ቼክ ድምርን እንደገና ያሰላል። ከዚያ በኋላ የኩበርኔትስ አስማት ወደ ጨዋታ ይመጣል-የኦርኬስትራ ባለሙያው ፖድውን ይገድላል ፣ አዲስ ይፈጥራል ፣ እስኪሆን ድረስ ይጠብቁ። Ready, እና ወደ ቀጣዩ ይቀጥላል. በውጤቱም፣ ማሰማራት ይመሳሰላል እና ወደ አዲሱ የ ConfigMap ስሪት ይቀየራል።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ምሳሌ 2፡ በብጁ የመርጃ ፍቺዎች መስራት

እንደሚያውቁት ኩበርኔትስ ብጁ አይነት ነገሮችን እንዲፈጥሩ ይፈቅድልዎታል. ለምሳሌ, አይነት መፍጠር ይችላሉ MysqlDatabase. ይህ አይነት ሁለት ሜታዳታ መለኪያዎች አሉት እንበል፡- name и namespace.

apiVersion: example.com/v1alpha1
kind: MysqlDatabase
metadata:
  name: foo
  namespace: bar

MySQL ዳታቤዝ መፍጠር የምንችልበት የተለያዩ የስም ቦታዎች ያለው የኩበርኔትስ ክላስተር አለን። በዚህ ሁኔታ ሼል-ኦፕሬተር ሀብቶችን ለመከታተል ጥቅም ላይ ሊውል ይችላል MysqlDatabase, እነሱን ከ MySQL አገልጋይ ጋር በማገናኘት እና የተፈለገውን እና የተስተዋሉ የክላስተር ግዛቶችን በማመሳሰል.

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ምሳሌ 3፡ የክላስተር ኔትወርክ ክትትል

እንደሚታወቀው ፒንግ መጠቀም ኔትወርክን ለመከታተል ቀላሉ መንገድ ነው። በዚህ ምሳሌ ውስጥ ሼል-ኦፕሬተርን በመጠቀም እንዲህ ዓይነቱን ክትትል እንዴት እንደሚተገበሩ እናሳያለን.

በመጀመሪያ ደረጃ ለኖዶች መመዝገብ ያስፈልግዎታል. የሼል ኦፕሬተር የእያንዳንዱ መስቀለኛ መንገድ ስም እና አይፒ አድራሻ ያስፈልገዋል። በእነሱ እርዳታ, እነዚህን አንጓዎች ፒንግ ያደርጋል.

configVersion: v1
kubernetes:
- name: nodes
  apiVersion: v1
  kind: Node
  jqFilter: |
    {
      name: .metadata.name,
      ip: (
       .status.addresses[] |  
        select(.type == "InternalIP") |
        .address
      )
    }
  group: main
  keepFullObjectsInMemory: false
  executeHookOnEvent: []
schedule:
- name: every_minute
  group: main
  crontab: "* * * * *"

መለኪያ executeHookOnEvent: [] መንጠቆው ለማንኛውም ክስተት ምላሽ እንዳይሰጥ ይከላከላል (ይህም ለመለወጥ ፣ ለመጨመር ፣ አንጓዎችን ለመሰረዝ)። ሆኖም እሱ ይሮጣል (እና የአንጓዎችን ዝርዝር አዘምን) መርሐግብር ተይዞለታል - በየደቂቃው, በሜዳው እንደተገለጸው schedule.

አሁን ጥያቄው የሚነሳው, እንደ ፓኬት መጥፋት ያሉ ችግሮችን በትክክል እንዴት እናውቃለን? ቁዱስ እንታይ እዩ?

function __main__() {
  for i in $(seq 0 "$(context::jq -r '(.snapshots.nodes | length) - 1')"); do
    node_name="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.name')"
    node_ip="$(context::jq -r '.snapshots.nodes['"$i"'].filterResult.ip')"
    packets_lost=0
    if ! ping -c 1 "$node_ip" -t 1 ; then
      packets_lost=1
    fi
    cat >> "$METRICS_PATH" <<END
      {
        "name": "node_packets_lost",
        "add": $packets_lost,
        "labels": {
          "node": "$node_name"
        }
      }
END
  done
}

በአንጓዎች ዝርዝር ውስጥ ደጋግመን እንገልፃለን, ስማቸውን እና አይፒ አድራሻቸውን አግኝ, ፒንግ እና ውጤቶቹን ወደ Prometheus እንልካለን. Shell-operator መለኪያዎችን ወደ Prometheus መላክ ይችላል።, በአከባቢው ተለዋዋጭ ውስጥ በተጠቀሰው መንገድ መሰረት ወደሚገኝ ፋይል ያስቀምጣቸዋል $METRICS_PATH.

እዚህ አለ በክላስተር ውስጥ ለቀላል የአውታረ መረብ ክትትል ኦፕሬተር ማድረግ ይችላሉ።

የወረፋ ዘዴ

በሼል-ኦፕሬተር ውስጥ የተገነባ ሌላ አስፈላጊ ዘዴን ሳይገልጽ ይህ ጽሑፍ ያልተሟላ ይሆናል. በክላስተር ውስጥ ላለው ክስተት ምላሽ የሆነ ዓይነት መንጠቆን እንደሚፈጽም አስብ።

  • በተመሳሳይ ጊዜ በክላስተር ውስጥ የሆነ ነገር ቢከሰት ምን ይከሰታል? አንድ ተጨማሪ ክስተት?
  • ሼል-ኦፕሬተር መንጠቆውን ሌላ ምሳሌ ያስኬዳል?
  • እንበል፣ አምስት ክስተቶች በአንድ ጊዜ በክላስተር ውስጥ ቢከሰቱስ?
  • ሼል-ኦፕሬተሩ በትይዩ ያስኬዳቸዋል?
  • እንደ ማህደረ ትውስታ እና ሲፒዩ ያሉ የተበላሹ ሀብቶችስ?

እንደ እድል ሆኖ፣ ሼል-ኦፕሬተር አብሮ የተሰራ የወረፋ ዘዴ አለው። ሁሉም ክስተቶች በቅደም ተከተል ተሰልፈው ይከናወናሉ።

ይህንን በምሳሌዎች እናሳይ። ሁለት መንጠቆዎች አሉን እንበል። የመጀመሪያው ክስተት ወደ መጀመሪያው መንጠቆ ይሄዳል. ሂደቱ ከተጠናቀቀ በኋላ ወረፋው ወደፊት ይሄዳል። የሚቀጥሉት ሶስት ክስተቶች ወደ ሁለተኛው መንጠቆ ይዛወራሉ - እነሱ ከወረፋው ላይ ተወግደው በ "ጥቅል" ውስጥ ይገባሉ. ያውና መንጠቆ የክስተቶችን ድርድር ይቀበላል - ወይም፣ ይበልጥ በትክክል፣ በርካታ አስገዳጅ አውዶች።

እንዲሁም እነዚህ ክስተቶች ወደ አንድ ትልቅ ሊጣመሩ ይችላሉ. መለኪያው ለዚህ ተጠያቂ ነው group በማያያዝ ውቅር ውስጥ.

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ማንኛውንም የወረፋ/መንጠቆ እና የተለያዩ ውህደቶቻቸውን መፍጠር ትችላለህ። ለምሳሌ, አንድ ወረፋ በሁለት መንጠቆዎች ሊሠራ ይችላል, ወይም በተቃራኒው.

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

የሚያስፈልግህ ነገር በዚሁ መሰረት መስኩን ማዋቀር ነው። queue በማያያዝ ውቅር ውስጥ. የወረፋ ስም ካልተገለጸ መንጠቆው በነባሪ ወረፋ ላይ ይሰራል (default). ይህ የወረፋ ዘዴ ከመንጠቆዎች ጋር ሲሰሩ ሁሉንም የንብረት አያያዝ ችግሮችን ሙሉ በሙሉ እንዲፈቱ ያስችልዎታል.

መደምደሚያ

ሼል-ኦፕሬተር ምን እንደሆነ ገለጽን፣ የኩበርኔትስ ኦፕሬተሮችን በፍጥነት እና ያለ ምንም ጥረት እንዴት መፍጠር እንደሚቻል አሳይተናል፣ እና አጠቃቀሙን በርካታ ምሳሌዎችን ሰጥተናል።

ስለ ሼል-ኦፕሬተር ዝርዝር መረጃ, እንዲሁም ስለ አጠቃቀሙ ፈጣን አጋዥ ስልጠና በተዛማጅ ውስጥ ይገኛል. በ GitHub ላይ ማከማቻዎች. ከጥያቄዎች ጋር እኛን ለማነጋገር አያመንቱ: በልዩ ውስጥ መወያየት ይችላሉ የቴሌግራም ቡድን (በሩሲያኛ) ወይም በ ይህ መድረክ (በእንግሊዘኛ)።

እና ከወደዱት፣ በነገራችን ላይ ሌሎችን የሚያገኙበት በ GitHub ላይ አዳዲስ ጉዳዮች/PR/ኮከቦችን በማየታችን ሁልጊዜ ደስተኞች ነን። አስደሳች ፕሮጀክቶች. ከነሱ መካከል ማድመቅ ተገቢ ነው addon-operator, እሱም የሼል-ኦፕሬተር ታላቅ ወንድም ነው. ይህ መገልገያ ተጨማሪዎችን ለመጫን የ Helm ቻርቶችን ይጠቀማል፣ ማሻሻያዎችን ለማቅረብ እና የተለያዩ የገበታ መለኪያዎችን/እሴቶችን ይቆጣጠራል፣የገበታዎችን የመጫን ሂደት ይቆጣጠራል እንዲሁም በክላስተር ውስጥ ለተከሰቱት ክስተቶች ምላሽ ይሰጣል።

ሂድ? ባሽ! የሼል ኦፕሬተሩን ያግኙ (የግምገማ እና የቪዲዮ ዘገባ ከ KubeCon EU'2020)

ቪዲዮዎች እና ስላይዶች

ቪዲዮ ከአፈፃፀሙ (~ 23 ደቂቃዎች):


የዝግጅት አቀራረብን ሪፖርት ያድርጉ፡

PS

በብሎጋችን ላይ ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ