የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

ልክ ነው ከተለቀቀ በኋላ Hashicorp ቆንስል 1.5.0 በሜይ 2019 መጀመሪያ ላይ በቆንስል ውስጥ በኩበርኔትስ ውስጥ በአገር ውስጥ የሚሰሩ መተግበሪያዎችን እና አገልግሎቶችን መፍቀድ ይችላሉ።

በዚህ መማሪያ ውስጥ ደረጃ በደረጃ እንፈጥራለን POC (የፅንሰ-ሃሳብ ማረጋገጫ ፣ ፖሲ) ይህንን አዲስ ባህሪ ያሳያል። ስለ Kubernetes እና Hashicorp's ቆንስል መሰረታዊ እውቀት እንዲኖርዎት ይጠበቃል። ማንኛውንም የደመና መድረክ ወይም በግቢው አካባቢ መጠቀም ሲችሉ በዚህ ትምህርት የጉግል ክላውድ ፕላትፎርምን እንጠቀማለን።

አጠቃላይ እይታ

ወደ ከሄድን በፈቀዳ ዘዴው ላይ የቆንስላ ሰነድ, ስለ ዓላማው እና ስለ አጠቃቀሙ ጉዳይ, እንዲሁም አንዳንድ ቴክኒካዊ ዝርዝሮችን እና አጠቃላይ አመክንዮአዊ አጠቃላይ እይታን በፍጥነት እናገኛለን. ከመቀጠልዎ በፊት ቢያንስ አንድ ጊዜ እንዲያነቡት አጥብቄ እመክራለሁ፣ ምክንያቱም አሁን ስለማብራራት እና ስለማላኘው።

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

ሥዕላዊ መግለጫ 1፡ የቆንስል የፈቀዳ ዘዴ ይፋዊ መግለጫ

ወደ ውስጥ እንይ ለአንድ የተወሰነ የኩበርኔትስ ፈቃድ አሰጣጥ ዘዴ ሰነዶች.

እርግጥ ነው፣ እዚያ ጠቃሚ መረጃ አለ፣ ግን ሁሉንም በትክክል እንዴት መጠቀም እንደሚቻል ላይ ምንም መመሪያ የለም። ስለዚህ፣ ልክ እንደ ማንኛውም ጤነኛ ሰው፣ ለመመሪያ በይነመረቡን ይቃኙታል። እና ከዚያ... ወድቀዋል። ያጋጥማል. ይህን እናስተካክል.

የእኛን POC ለመፍጠር ከመቀጠላችን በፊት፣ ወደ ቆንስል የፈቃድ ስልቶች አጠቃላይ እይታ እንመለስ (ዲያግራም 1) እና በ Kubernetes አውድ ውስጥ እናጥራው።

ሥነ ሕንፃ

በዚህ ማጠናከሪያ ትምህርት ከኩበርኔትስ ክላስተር ጋር ከተጫነው የቆንስላ ደንበኛ ጋር የሚገናኝ የቆንስል አገልጋይ በተለየ ማሽን ላይ እንፈጥራለን። ከዚያ የኛን ዲሚ አፕሊኬሽን በፖድ ውስጥ እንፈጥራለን እና የተዋቀረውን የፍቃድ አሰጣጥ ዘዴያችንን ከቆንስል ቁልፍ/ዋጋ ማከማቻችን ለማንበብ እንጠቀማለን።

ከዚህ በታች ያለው ሥዕላዊ መግለጫ በዚህ ማጠናከሪያ ትምህርት ውስጥ የምንፈጥረውን አርክቴክቸር እንዲሁም የፈቀዳ ዘዴን አመክንዮ በዝርዝር ይዘረዝራል፣ ይህም በኋላ ይብራራል።

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

ሥዕል 2፡ የኩበርኔትስ የፈቀዳ ዘዴ አጠቃላይ እይታ

ፈጣን ማስታወሻ፡ ይህ እንዲሰራ የቆንስል አገልጋዩ ከኩበርኔትስ ክላስተር ውጭ መኖር አያስፈልገውም። ግን አዎ, በዚህ መንገድ እና በዚህ መንገድ ማድረግ ይችላል.

ስለዚህ የቆንስሉን አጠቃላይ እይታ ዲያግራም (ሥዕላዊ መግለጫ 1) ወስደን ኩበርኔትስ በእሱ ላይ በመተግበር ከላይ ያለውን ሥዕላዊ መግለጫ እናገኛለን (ሥዕላዊ መግለጫ 2) እና እዚህ ያለው አመክንዮ እንደሚከተለው ነው ።

  1. እያንዳንዱ ፖድ በኩበርኔትስ የተፈጠረ እና የሚታወቅ JWT ቶከን የያዘ የአገልግሎት አካውንት ይያዛል። ይህ ማስመሰያ በነባሪነት በፖድ ውስጥ ገብቷል።
  2. በፖድ ውስጥ የእኛ መተግበሪያ ወይም አገልግሎታችን ለቆንስል ደንበኞቻችን የመግቢያ ትእዛዝ ይጀምራል። የመግቢያ ጥያቄው የእኛን ማስመሰያ እና ስማችንንም ይጨምራል በተለየ ሁኔታ የተፈጠረ የፈቀዳ ዘዴ (የኩበርኔትስ ዓይነት). ይህ ደረጃ #2 ከቆንስል ዲያግራም (እቅድ 1) ደረጃ 1 ጋር ይዛመዳል።
  3. የቆንስል ደንበኛችን ይህንን ጥያቄ ወደ ቆንስል አገልጋያችን ያስተላልፋል።
  4. አስማት! የቆንስል አገልጋዩ የጥያቄውን ትክክለኛነት የሚያረጋግጥበት፣ ስለጥያቄው ማንነት መረጃ የሚሰበስብበት እና ከማናቸውም ተያያዥ ቅድመ-የተገለጹ ህጎች ጋር የሚያወዳድረው ይህ ነው። ይህንን ለማሳየት ሌላ ሥዕላዊ መግለጫ ከዚህ በታች አለ። ይህ እርምጃ ከቆንስል አጠቃላይ እይታ ዲያግራም (ሥዕላዊ መግለጫ 3) ደረጃዎች 4 ፣ 5 እና 1 ጋር ይዛመዳል።
  5. የኛ ቆንስል አገልጋያችን የጠያቂውን ማንነት በሚመለከት በተጠቀሰው የፈቃድ ዘዴ ደንቦቻችን (በገለጽነው) መሰረት ፍቃድ ያለው የቆንስል ማስመሰያ ያመነጫል። ከዚያ ያንን ማስመሰያ መልሶ ይልካል። ይህ ከቆንስል ሥዕላዊ መግለጫ (ሥዕላዊ መግለጫ 6) ደረጃ 1 ጋር ይዛመዳል።
  6. የቆንስል ደንበኞቻችን ማስመሰያውን ወደ ጠያቂው መተግበሪያ ወይም አገልግሎት ያስተላልፋሉ።

የኛ መተግበሪያ ወይም አገልግሎታችን አሁን ይህን የቆንስል ማስመሰያ ተጠቅሞ ከቆንስል ዳታችን ጋር ለመገናኘት በቶከኑ ልዩ መብቶች ይወሰናል።

አስማት ተገለጠ!

ከባርኔጣ ወጥታ ጥንቸል በማውጣት ደስተኛ ላልሆናችሁ እና እንዴት እንደሚሰራ ማወቅ ለምትፈልጉ... እስቲ ላሳያችሁ። ጥንቸል ጉድጓድ».

ቀደም ሲል እንደተገለፀው የኛ “አስማት” እርምጃ (ምስል 2፡ ደረጃ 4) የቆንስል አገልጋዩ ጥያቄውን የሚያረጋግጥበት፣ ስለጥያቄው መረጃ የሚሰበስብበት እና ከማንኛውም ተዛማጅ ቅድመ-የተገለጹ ህጎች ጋር የሚያወዳድርበት ነው። ይህ እርምጃ ከቆንስል አጠቃላይ እይታ ዲያግራም (ሥዕላዊ መግለጫ 3) ደረጃዎች 4 ፣ 5 እና 1 ጋር ይዛመዳል። ከታች ያለው ሥዕላዊ መግለጫ (ሥዕላዊ መግለጫ 3) ሲሆን ዓላማው በትክክል ምን እየተፈጠረ እንዳለ በግልጽ ለማሳየት ነው በመከለያው ስር የተወሰነ የኩበርኔትስ ፍቃድ ዘዴ.

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

ሥዕላዊ መግለጫ 3፡ አስማት ተገለጠ!

  1. እንደ መነሻ፣ የቆንስል ደንበኞቻችን የመግቢያ ጥያቄውን በ Kubernetes መለያ ቶከን እና ቀደም ሲል የተፈጠረውን የፈቀዳ ዘዴን በመጠቀም ወደ ቆንስል አገልጋያችን ያስተላልፋሉ። ይህ ደረጃ በቀድሞው የወረዳ ማብራሪያ ከደረጃ 3 ጋር ይዛመዳል።
  2. አሁን የቆንስል አገልጋይ (ወይም መሪ) የተቀበለውን ማስመሰያ ትክክለኛነት ማረጋገጥ አለበት። ስለዚህ የኩበርኔትስ ክላስተርን (በቆንስላ ደንበኛ በኩል) ያማክራል እና ከተገቢው ፍቃዶች ጋር ምልክቱ እውነተኛ መሆኑን እና የማን እንደሆነ ለማወቅ እንሞክራለን።
  3. የተረጋገጠው ጥያቄ ወደ ቆንስል መሪ ይመለሳል፣ እና የቆንስላ አገልጋዩ የፍቃድ አሰጣጥ ዘዴን ለምሳሌ ከመግቢያ ጥያቄው (እና የኩበርኔትስ አይነት) በተጠቀሰው ስም ይመለከታል።
  4. የቆንስላ መሪው የተገለጸውን የፈቃድ ዘዴ ምሳሌ (ከተገኘ) ይለያል እና ከእሱ ጋር የተያያዙትን አስገዳጅ ደንቦች ያነባል። ከዚያም እነዚህን ደንቦች ያነባል እና ከተረጋገጡት የማንነት ባህሪያት ጋር ያወዳድራቸዋል.
  5. ታ-ዳህ! በቀደመው የወረዳ ማብራሪያ ወደ ደረጃ 5 እንሂድ።

የቆንስል አገልጋይን በመደበኛ ቨርቹዋል ማሽን ያሂዱ

ከአሁን በኋላ፣ እኔ አብዛኛውን ጊዜ ይህንን POC እንዴት መፍጠር እንደሚቻል መመሪያዎችን እሰጣለሁ፣ ብዙ ጊዜ በጥይት ነጥቦች፣ ያለ ሙሉ ዓረፍተ ነገር ማብራሪያ። እንዲሁም, ቀደም ሲል እንደተገለፀው, ሁሉንም መሠረተ ልማት ለመፍጠር GCP እጠቀማለሁ, ነገር ግን በየትኛውም ቦታ ተመሳሳይ መሠረተ ልማት መፍጠር ይችላሉ.

  • ቨርቹዋል ማሽኑን (ምሳሌ/አገልጋይ) ይጀምሩ።

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

  • ለፋየርዎል (የደህንነት ቡድን በAWS) ህግ ይፍጠሩ፡
  • ተመሳሳዩን የማሽን ስም ለደንቡም ሆነ ለአውታረመረብ መለያ መስጠት እፈልጋለሁ፣ በዚህ አጋጣሚ "skywiz-consul-server-poc"።
  • የአከባቢዎን የኮምፒዩተር አይፒ አድራሻ ይፈልጉ እና ወደ ምንጭ አይፒ አድራሻዎች ዝርዝር ያክሉት ስለዚህ የተጠቃሚ በይነገጽ (UI)።
  • ወደብ 8500 ለUI ክፈት። ፍጠርን ጠቅ ያድርጉ። ይህንን ፋየርዎል በቅርቡ እንለውጣለንሳንቲም].
  • በምሳሌው ላይ የፋየርዎል ህግን ያክሉ። በኮንሱል አገልጋይ ላይ ወደ VM ዳሽቦርድ ተመለስ እና "skywiz-consul-server-poc" በኔትወርክ መለያዎች መስክ ላይ ጨምር። አስቀምጥን ጠቅ ያድርጉ።

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

  • ቆንስልን በምናባዊ ማሽን ላይ ይጫኑ፣ እዚህ ያረጋግጡ። ያስታውሱ የቆንስል ስሪት ≥ 1.5 [link] ያስፈልግዎታል
  • አንድ ነጠላ መስቀለኛ ቆንስላ እንፍጠር - አወቃቀሩ እንደሚከተለው ነው.

groupadd --system consul
useradd -s /sbin/nologin --system -g consul consul
mkdir -p /var/lib/consul
chown -R consul:consul /var/lib/consul
chmod -R 775 /var/lib/consul
mkdir /etc/consul.d
chown -R consul:consul /etc/consul.d

  • ቆንስልን ስለመጫን እና የ 3 ኖዶች ስብስብን ስለማዋቀር የበለጠ ዝርዝር መመሪያ ለማግኘት ይመልከቱ እዚህ.
  • ፋይል ይፍጠሩ /etc/consul.d/agent.json እንደሚከተለውሳንቲም]:

### /etc/consul.d/agent.json
{
 "acl" : {
 "enabled": true,
 "default_policy": "deny",
 "enable_token_persistence": true
 }
}

  • የቆንስል አገልጋያችንን ያስጀምሩ፡-

consul agent 
-server 
-ui 
-client 0.0.0.0 
-data-dir=/var/lib/consul 
-bootstrap-expect=1 
-config-dir=/etc/consul.d

  • ብዙ የውጤት ስብስቦችን ማየት እና መጨረሻ ላይ በ "... ዝማኔ በኤሲኤል ታግዷል።"
  • የቆንስላ አገልጋዩን ውጫዊ አይፒ አድራሻ ይፈልጉ እና በዚህ አይፒ አድራሻ ወደብ 8500 አሳሽ ይክፈቱ። UI መከፈቱን ያረጋግጡ።
  • የቁልፍ/እሴት ጥንድ ለማከል ይሞክሩ። ስህተት መኖር አለበት። ይህ የሆነበት ምክንያት የቆንስል አገልጋዩን በኤሲኤል ስለጫንን እና ሁሉንም ህጎች ስላሰናከልን ነው።
  • ወደ ቆንስል አገልጋይዎ ወደ ሼልዎ ይመለሱ እና ሂደቱን ከበስተጀርባ ወይም በሌላ መንገድ ይጀምሩ እና እንዲሰራ ለማድረግ የሚከተለውን ያስገቡ።

consul acl bootstrap

  • የ"SecretID" እሴት ያግኙ እና ወደ UI ይመለሱ። በACL ትር ውስጥ አሁን የገለበጡትን የማስመሰያ ምስጢራዊ መታወቂያ ያስገቡ። SecretIDን ሌላ ቦታ ቅዳ፣ በኋላ እንፈልጋለን።
  • አሁን የቁልፍ/እሴት ጥንድ ያክሉ። ለዚህ POC፣ የሚከተለውን ያክሉ፡- “custom-ns/test_key”፣ እሴት፡ “በብጁ-ns አቃፊ ውስጥ ነኝ!”

ለመተግበሪያችን የኩበርኔትስ ክላስተር ከቆንስል ደንበኛ ጋር እንደ Daemonset በማስጀመር ላይ

  • የK8s (Kubernetes) ስብስብ ይፍጠሩ። ለፈጣን ተደራሽነት ከአገልጋዩ ጋር በተመሳሳይ ዞን እንፈጥረዋለን፣ እና ከውስጥ አይፒ አድራሻዎች ጋር በቀላሉ ለመገናኘት ተመሳሳዩን ሳብኔት መጠቀም እንችላለን። እኛ "skywiz-app-with-consul-client-poc" እንለዋለን።

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

  • እንደ ማስታወሻ፣ የ POC ቆንስል ክላስተር ከኮንሰል ኮኔክተር ጋር በማዋቀር ላይ ሳለ ያገኘሁት ጥሩ አጋዥ ስልጠና ነው።
  • እንዲሁም Hashicorp helm chart ከተራዘመ የእሴት ፋይል ጋር እንጠቀማለን።
  • Helm ን ይጫኑ እና ያዋቅሩ። የማዋቀር ደረጃዎች፡-

kubectl create serviceaccount tiller --namespace kube-system
kubectl create clusterrolebinding tiller-admin-binding 
   --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
./helm init --service-account=tiller
./helm update

  • የመርከቧ ገበታ https://www.consul.io/docs/platform/k8s/helm.html
  • የሚከተለውን እሴት ፋይል ተጠቀም (ማስታወሻ በጣም ያጠፋሁት፡)

### poc-helm-consul-values.yaml
global:
 enabled: false
 image: "consul:latest"
# Expose the Consul UI through this LoadBalancer
ui:
 enabled: false
# Allow Consul to inject the Connect proxy into Kubernetes containers
connectInject:
 enabled: false
# Configure a Consul client on Kubernetes nodes. GRPC listener is required for Connect.
client:
 enabled: true
 join: ["<PRIVATE_IP_CONSUL_SERVER>"]
 extraConfig: |
{
  "acl" : {
 "enabled": true,   
 "default_policy": "deny",   
 "enable_token_persistence": true 
  }
}
# Minimal Consul configuration. Not suitable for production.
server:
 enabled: false
# Sync Kubernetes and Consul services
syncCatalog:
 enabled: false

  • የመርከቧን ገበታ ተግብር፡

./helm install -f poc-helm-consul-values.yaml ./consul-helm - name skywiz-app-with-consul-client-poc

  • ለማሄድ ሲሞክር ለቆንስል አገልጋይ ፍቃዶችን ይፈልጋል፣ ስለዚህ እንጨምርላቸው።
  • በክላስተር ዳሽቦርድ ላይ የሚገኘውን “Pod Address Range” የሚለውን ልብ ይበሉ እና ወደ “skywiz-consul-server-poc” ፋየርዎል መመሪያችን ይመለሱ።
  • የፖድ አድራሻውን ወደ የአይፒ አድራሻዎች ዝርዝር ያክሉ እና ወደቦች 8301 እና 8300 ይክፈቱ።

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

  • ወደ ቆንስል UI ይሂዱ እና ከጥቂት ደቂቃዎች በኋላ የእኛ ክላስተር በአንጓዎች ትር ውስጥ ይታያል።

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

ቆንስልን ከኩበርኔትስ ጋር በማዋሃድ የፈቃድ ዘዴን ማዋቀር

  • ወደ ቆንስል አገልጋይ ሼል ይመለሱ እና ቀደም ብለው ያስቀመጡትን ማስመሰያ ይላኩ፡

export CONSUL_HTTP_TOKEN=<SecretID>

  • የማረጋገጫ ዘዴን ምሳሌ ለመፍጠር ከኩበርኔትስ ክላስተር መረጃ እንፈልጋለን፡-
  • kubernetes-አስተናጋጅ

kubectl get endpoints | grep kubernetes

  • kubernetes-አገልግሎት-መለያ-jwt

kubectl get sa <helm_deployment_name>-consul-client -o yaml | grep "- name:"
kubectl get secret <secret_name_from_prev_command> -o yaml | grep token:

  • ማስመሰያው ቤዝ64 ኮድ ነው፣ስለዚህ የሚወዱትን መሳሪያ በመጠቀም ዲክሪፕት ያድርጉት።ሳንቲም]
  • kubernetes-ca-cert

kubectl get secret <secret_name_from_prev_command> -o yaml | grep ca.crt:

  • የ"ca.crt" የምስክር ወረቀት ይውሰዱ (ከቤዝ64 ዲኮዲንግ በኋላ) እና በ"ca.crt" ፋይል ውስጥ ይፃፉ።
  • አሁን የማረጋገጫ ዘዴውን አፋጣኝ፣ ቦታ ያዢዎችን አሁን በተቀበልካቸው እሴቶች በመተካት።

consul acl auth-method create 
-type "kubernetes" 
-name "auth-method-skywiz-consul-poc" 
-description "This is an auth method using kubernetes for the cluster skywiz-app-with-consul-client-poc" 
-kubernetes-host "<k8s_endpoint_retrieved earlier>" 
[email protected] 
-kubernetes-service-account-
jwt="<decoded_token_retrieved_earlier>"

  • በመቀጠል ህግን መፍጠር እና ከአዲሱ ሚና ጋር ማያያዝ አለብን. ለዚህ ክፍል Consul UI መጠቀም ይችላሉ ነገርግን የትእዛዝ መስመሩን እንጠቀማለን።
  • ደንብ ጻፍ

### kv-custom-ns-policy.hcl
key_prefix "custom-ns/" {
 policy = "write"
}

  • ደንቡን ይተግብሩ

consul acl policy create 
-name kv-custom-ns-policy 
-description "This is an example policy for kv at custom-ns/" 
-rules @kv-custom-ns-policy.hcl

  • ከውጤቱ አሁን የፈጠሩትን ደንብ መታወቂያ ያግኙ።
  • ሚናን በአዲስ ህግ ይፍጠሩ።

consul acl role create 
-name "custom-ns-role" 
-description "This is an example role for custom-ns namespace" 
-policy-id <policy_id>

  • አሁን አዲሱን ሚናችንን ከኦውዝ ዘዴ ምሳሌ ጋር እናያይዛለን። የ«መራጭ» ባንዲራ የእኛ የመግባት ጥያቄ ይህን ሚና የሚቀበል መሆኑን የሚወስነው መሆኑን ልብ ይበሉ። ሌሎች የመምረጫ አማራጮችን ለማግኘት እዚህ ይመልከቱ፡- https://www.consul.io/docs/acl/auth-methods/kubernetes.html#trusted-identity-attributes

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='custom-ns-role' 
-selector='serviceaccount.namespace=="custom-ns"'

በመጨረሻ ውቅሮች

የመዳረሻ መብቶች

  • የመዳረሻ መብቶችን ይፍጠሩ። የK8s አገልግሎት መለያ ቶከንን ማንነት ለማረጋገጥ እና ለመለየት ቆንስል ፈቃድ ልንሰጥ ይገባል።
  • የሚከተለውን ወደ ፋይሉ ይጻፉ [አገናኝ]:

###skywiz-poc-consul-server_rbac.yaml
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: review-tokens
 namespace: default
subjects:
- kind: ServiceAccount
 name: skywiz-app-with-consul-client-poc-consul-client
 namespace: default
roleRef:
 kind: ClusterRole
 name: system:auth-delegator
 apiGroup: rbac.authorization.k8s.io
---
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: service-account-getter
 namespace: default
rules:
- apiGroups: [""]
 resources: ["serviceaccounts"]
 verbs: ["get"]
---
kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
 name: get-service-accounts
 namespace: default
subjects:
- kind: ServiceAccount
 name: skywiz-app-with-consul-client-poc-consul-client
 namespace: default
roleRef:
 kind: ClusterRole
 name: service-account-getter
 apiGroup: rbac.authorization.k8s.io

  • የመዳረሻ መብቶችን እንፍጠር

kubectl create -f skywiz-poc-consul-server_rbac.yaml

ከቆንስል ደንበኛ ጋር በመገናኘት ላይ

  • እንደተገለፀው እዚህከ daemonset ጋር ለመገናኘት ብዙ አማራጮች አሉ ነገርግን ወደሚከተለው ቀላል መፍትሄ እንሸጋገራለን፡
  • የሚከተለውን ፋይል ተግብር [ሳንቲም].

### poc-consul-client-ds-svc.yaml
apiVersion: v1
kind: Service
metadata:
 name: consul-ds-client
spec:
 selector:
   app: consul
   chart: consul-helm
   component: client
   hasDNS: "true"
   release: skywiz-app-with-consul-client-poc
 ports:
 - protocol: TCP
   port: 80
   targetPort: 8500

  • በመቀጠል ማዋቀር ለመፍጠር የሚከተለውን አብሮ የተሰራ ትዕዛዝ ይጠቀሙ [ሳንቲም]. እባክዎን የአገልግሎታችንን ስም እየጠቀስን መሆኑን ልብ ይበሉ, አስፈላጊ ከሆነ ይተኩ.

cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
 labels:
   addonmanager.kubernetes.io/mode: EnsureExists
 name: kube-dns
 namespace: kube-system
data:
 stubDomains: |
   {"consul": ["$(kubectl get svc consul-ds-client -o jsonpath='{.spec.clusterIP}')"]}
EOF

የማረጋገጫ ዘዴን መሞከር

አሁን አስማቱን በተግባር እንየው!

  • በተመሳሳዩ ከፍተኛ-ደረጃ ቁልፍ ብዙ ተጨማሪ ቁልፍ አቃፊዎችን ይፍጠሩ (ማለትም. / ናሙና_ቁልፍ) እና የመረጡት ዋጋ። ለአዲስ ቁልፍ መንገዶች ተገቢ ፖሊሲዎችን እና ሚናዎችን ይፍጠሩ። ማሰሪያዎቹን በኋላ እናደርጋለን።

የHashicorp ቆንስል ኩበርኔትስ ፍቃድ መግቢያ

ብጁ የስም ቦታ ሙከራ፡-

  • የራሳችንን የስም ቦታ እንፍጠር፡-

kubectl create namespace custom-ns

  • በአዲሱ የስም ቦታችን ውስጥ ፖድ እንፍጠር። ለፖድ አወቃቀሩን ይፃፉ.

###poc-ubuntu-custom-ns.yaml
apiVersion: v1
kind: Pod
metadata:
 name: poc-ubuntu-custom-ns
 namespace: custom-ns
spec:
 containers:
 - name: poc-ubuntu-custom-ns
   image: ubuntu
   command: ["/bin/bash", "-ec", "sleep infinity"]
 restartPolicy: Never

  • ሾር ፍጠር፡-

kubectl create -f poc-ubuntu-custom-ns.yaml

  • አንዴ መያዣው እየሄደ ከሆነ, ወደዚያ ይሂዱ እና ኩርባውን ይጫኑ.

kubectl exec poc-ubuntu-custom-ns -n custom-ns -it /bin/bash
apt-get update && apt-get install curl -y

  • አሁን ቀደም ብለን የፈጠርነውን የፈቀዳ ዘዴ በመጠቀም ወደ ቆንስል የመግባት ጥያቄ እንልካለን።ሳንቲም].
  • የገባውን ማስመሰያ ከአገልግሎት መለያህ ለማየት፡-

cat /run/secrets/kubernetes.io/serviceaccount/token

  • በመያዣው ውስጥ ባለው ፋይል ውስጥ የሚከተለውን ይፃፉ።

### payload.json
{
 "AuthMethod": "auth-method-test",
 "BearerToken": "<jwt_token>"
}

  • ግባ!

curl 
--request POST 
--data @payload.json 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • ከላይ ያሉትን ደረጃዎች በአንድ መሾመር ለማጠናቀቅ (ብዙ ሙከራዎችን ስለምንሠራ) የሚከተሉትን ማድረግ ይችላሉ:

echo "{ 
"AuthMethod": "auth-method-skywiz-consul-poc", 
"BearerToken": "$(cat /run/secrets/kubernetes.io/serviceaccount/token)" 
}" 
| curl 
--request POST 
--data @- 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • ይሰራል! ቢያንስ መሆን አለበት። አሁን SecretID ን ይውሰዱ እና ልንደርስበት የሚገባን ቁልፍ/እሴት ለማግኘት ይሞክሩ።

curl 
consul-ds-client.default.svc.cluster.local/v1/kv/custom-ns/test_key --header “X-Consul-Token: <SecretID_from_prev_response>”

  • ቤዝ64 "እሴት" መፍታት እና በዩአይ ውስጥ በብጁ-ns/test_key ካለው እሴት ጋር እንደሚዛመድ ማየት ይችላሉ። በዚህ ማጠናከሪያ ትምህርት ውስጥ ከላይ ያለውን ተመሳሳይ እሴት ከተጠቀሙ፣ የእርስዎ ኮድ የተደረገው እሴት IkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi ይሆናል።

የተጠቃሚ አገልግሎት መለያ ሙከራ፡-

  • የሚከተለውን ትዕዛዝ በመጠቀም ብጁ የአገልግሎት መለያ ይፍጠሩ [ሳንቲም].

kubectl apply -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
 name: custom-sa
EOF

  • ለፖድ አዲስ የውቅር ፋይል ይፍጠሩ። የጉልበት ሥራን ለመቆጠብ ከርል መጫንን እንዳካተትኩ እባክዎ ልብ ይበሉ :)

###poc-ubuntu-custom-sa.yaml
apiVersion: v1
kind: Pod
metadata:
 name: poc-ubuntu-custom-sa
 namespace: default
spec:
 serviceAccountName: custom-sa
 containers:
 - name: poc-ubuntu-custom-sa
   image: ubuntu
   command: ["/bin/bash","-ec"]
   args: ["apt-get update && apt-get install curl -y; sleep infinity"]
 restartPolicy: Never

  • ከዚያ በኋላ በእቃ መያዣው ውስጥ አንድ ሼል ያካሂዱ.

kubectl exec -it poc-ubuntu-custom-sa /bin/bash

  • ግባ!

echo "{ 
"AuthMethod": "auth-method-skywiz-consul-poc", 
"BearerToken": "$(cat /run/secrets/kubernetes.io/serviceaccount/token)" 
}" 
| curl 
--request POST 
--data @- 
consul-ds-client.default.svc.cluster.local/v1/acl/login

  • የተሰረዘ ፈቃድ. ኦህ፣ ከተገቢው ፍቃዶች ጋር አስገዳጅ የሆነ አዲስ ህግ ማከል ረስተናል፣ አሁን እናድርገው።

ከዚህ በላይ ያሉትን ቀዳሚ እርምጃዎች ይድገሙ።
ሀ) ለ“ብጁ-ሳ/” ቅድመ ቅጥያ ተመሳሳይ ፖሊሲ ይፍጠሩ።
ለ) ሚና ይፍጠሩ፣ “ብጁ-ሳ-ሮል” ብለው ይደውሉት።
ሐ) ፖሊሲውን ወደ ሚናው ያያይዙት.

  • ደንብ-ማስያዣ ይፍጠሩ (ከcli/api ብቻ ይቻላል)። የመራጩን ባንዲራ የተለያየ ትርጉም አስተውል።

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='custom-sa-role' 
-selector='serviceaccount.name=="custom-sa"'

  • ከ"poc-ubuntu-custom-sa" መያዣ እንደገና ይግቡ። ስኬት!
  • ወደ ብጁ-ሳ/ ቁልፍ ዱካ ያለንን መዳረሻ ይመልከቱ።

curl 
consul-ds-client.default.svc.cluster.local/v1/kv/custom-sa/test_key --header “X-Consul-Token: <SecretID>”

  • እንዲሁም ይህ ማስመሰያ በ"custom-ns/" ውስጥ የ kv መዳረሻ እንደማይሰጥ ማረጋገጥ ይችላሉ። "custom-sa" በ"custom-ns" ቅድመ ቅጥያ ከተተካ በኋላ ብቻ ከላይ ያለውን ትዕዛዝ ይድገሙት።
    የተሰረዘ ፈቃድ.

ተደራቢ ምሳሌ፡-

  • ሁሉም ህግ-አስገዳጅ ካርታዎች በእነዚህ መብቶች ወደ ማስመሰያው እንደሚጨመሩ ልብ ሊባል የሚገባው ጉዳይ ነው።
  • የእኛ መያዣ "poc-ubuntu-custom-sa" በነባሪው የስም ቦታ ላይ ነው - ስለዚህ ለሌላ ደንብ አስገዳጅነት እንጠቀምበት።
  • ቀዳሚ እርምጃዎችን ይድገሙ፡-
    ሀ) ለ“ነባሪ/” ቁልፍ ቅድመ ቅጥያ ተመሳሳይ ፖሊሲ ይፍጠሩ።
    ለ) ሚና ይፍጠሩ፣ “default-ns-role” ብለው ይሰይሙት
    ሐ) ፖሊሲውን ወደ ሚናው ያያይዙት.
  • ደንብ-ማስያዣ ይፍጠሩ (ከcli/api ብቻ ይቻላል)

consul acl binding-rule create 
-method=auth-method-skywiz-consul-poc 
-bind-type=role 
-bind-name='default-ns-role' 
-selector='serviceaccount.namespace=="default"'

  • ወደ መያዣችን "poc-ubuntu-custom-sa" ይመለሱ እና "default/" kv ዱካውን ለመድረስ ይሞክሩ።
  • የተሰረዘ ፈቃድ.
    በ UI ውስጥ ለእያንዳንዱ ማስመሰያ የተገለጹትን ምስክርነቶች በኤሲኤል > ቶከኖች ስር ማየት ትችላለህ። እንደሚመለከቱት፣ የእኛ የአሁኑ ማስመሰያ ከእሱ ጋር የተያያዘው አንድ “ብጁ-ሳ-ሮል” ብቻ ነው። አሁን እየተጠቀምንበት ያለው ቶከን የመነጨው ስንገባ ነው እና በዚያን ጊዜ የሚዛመድ አንድ ደንብ-ማስያዣ ብቻ ነበር። እንደገና መግባት እና አዲሱን ማስመሰያ መጠቀም አለብን።
  • ከሁለቱም "custom-sa/" እና "default/" kv ዱካዎች ማንበብ መቻልዎን ያረጋግጡ።
    ስኬት!
    ምክንያቱም የእኛ "poc-ubuntu-custom-sa" ከ"custom-sa" እና "default-ns" ደንብ ማሰሪያዎች ጋር ስለሚዛመድ ነው።

መደምደሚያ

TTL ማስመሰያ mgmt?

ይህ ጽሑፍ በሚጻፍበት ጊዜ፣ በዚህ የፈቀዳ ዘዴ ለተፈጠሩ ቶከኖች TTLን ለመወሰን የተቀናጀ መንገድ የለም። ደህንነቱ የተጠበቀ የቆንስላ ፈቃድ አውቶማቲክን ለማቅረብ በጣም ጥሩ አጋጣሚ ነው።

በቲቲኤል ማስመሰያ በእጅ የመፍጠር አማራጭ አለ፡-

በቅርብ ጊዜ ውስጥ ቶከኖች እንዴት እንደሚፈጠሩ (በደንብ ወይም የፈቀዳ ዘዴ) ለመቆጣጠር እና TTLን ለመጨመር እንደምንችል ተስፋ እናደርጋለን።

እስከዚያ ድረስ፣ በሎጂክዎ ውስጥ የመውጣት የመጨረሻ ነጥብን እንዲጠቀሙ ይመከራል።

በብሎጋችን ላይ ሌሎች ጽሑፎችን ያንብቡ፡-

ምንጭ: hab.com

አስተያየት ያክሉ