ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

அது சரி, வெளியான பிறகு ஹாஷிகார்ப் கான்சல் 1.5.0 மே 2019 இன் தொடக்கத்தில், தூதரகத்தில் நீங்கள் குபெர்னெட்ஸில் இயங்கும் பயன்பாடுகள் மற்றும் சேவைகளை பூர்வீகமாக அங்கீகரிக்கலாம்.

இந்த டுடோரியலில் நாம் படிப்படியாக உருவாக்குவோம் POC (கருத்துக்கான ஆதாரம், PoC) இந்த டுடோரியலில் நீங்கள் எந்த கிளவுட் பிளாட்ஃபார்ம் அல்லது ஆன்-பிராமிஸ் சூழலைப் பயன்படுத்த முடியும் என்றாலும், நீங்கள் குபெர்னெட்ஸ் மற்றும் ஹாஷிகார்ப் கான்சல் பற்றிய அடிப்படை அறிவைப் பெற்றிருக்க வேண்டும்.

கண்ணோட்டம்

நாம் சென்றால் அதன் அங்கீகார முறை பற்றிய தூதரக ஆவணங்கள், அதன் நோக்கம் மற்றும் பயன்பாட்டு வழக்கு, அத்துடன் சில தொழில்நுட்ப விவரங்கள் மற்றும் தர்க்கத்தின் பொதுவான கண்ணோட்டம் ஆகியவற்றின் விரைவான மேலோட்டத்தைப் பெறுவோம். தொடர்வதற்கு முன் ஒரு முறையாவது அதைப் படிக்க பரிந்துரைக்கிறேன், ஏனெனில் நான் இப்போது அனைத்தையும் விளக்கி மென்று சாப்பிடுவேன்.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

வரைபடம் 1: தூதரக அங்கீகார முறையின் அதிகாரப்பூர்வ கண்ணோட்டம்

உள்ளே பார்க்கலாம் ஒரு குறிப்பிட்ட குபெர்னெட்ஸ் அங்கீகார முறைக்கான ஆவணங்கள்.

நிச்சயமாக, பயனுள்ள தகவல் உள்ளது, ஆனால் உண்மையில் அதை எவ்வாறு பயன்படுத்துவது என்பதற்கான வழிகாட்டி எதுவும் இல்லை. எனவே, எந்தவொரு விவேகமுள்ள நபரைப் போலவே, வழிகாட்டுதலுக்காக நீங்கள் இணையத்தைத் தேடுகிறீர்கள். பின்னர்... நீங்கள் தோல்வியடைகிறீர்கள். அது நடக்கும். இதை சரி செய்வோம்.

எங்கள் பிஓசியை உருவாக்குவதற்கு முன், தூதரகத்தின் அங்கீகார முறைகளின் (வரைபடம் 1) மேலோட்டத்திற்குச் சென்று குபெர்னெட்டஸின் சூழலில் அதைச் செம்மைப்படுத்துவோம்.

கட்டிடக்கலை

இந்த டுடோரியலில், நிறுவப்பட்ட தூதரக கிளையண்டுடன் குபெர்னெட்டஸ் கிளஸ்டருடன் தொடர்பு கொள்ளும் தனித்தனி கணினியில் தூதரக சேவையகத்தை உருவாக்குவோம். நாங்கள் எங்கள் போலி விண்ணப்பத்தை பாடில் உருவாக்கி, எங்கள் கான்சல் கீ/மதிப்புக் கடையிலிருந்து படிக்க, உள்ளமைக்கப்பட்ட அங்கீகார முறையைப் பயன்படுத்துவோம்.

கீழே உள்ள வரைபடம் இந்த டுடோரியலில் நாம் உருவாக்கும் கட்டமைப்பையும், அங்கீகார முறையின் தர்க்கத்தையும் விவரிக்கிறது, இது பின்னர் விளக்கப்படும்.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

வரைபடம் 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) உள்ளது, இதன் நோக்கம் உண்மையில் என்ன நடக்கிறது என்பதை தெளிவாகக் காண்பிப்பதாகும். பேட்டை கீழ் குறிப்பிட்ட குபெர்னெட்ஸ் அங்கீகார முறை.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

வரைபடம் 3: மந்திரம் வெளிப்பட்டது!

  1. தொடக்கப் புள்ளியாக, எங்கள் தூதரக கிளையன்ட் குபெர்னெட்ஸ் கணக்கு டோக்கன் மற்றும் முன்னர் உருவாக்கப்பட்ட அங்கீகார முறையின் குறிப்பிட்ட நிகழ்வு பெயரைக் கொண்டு உள்நுழைவு கோரிக்கையை எங்கள் தூதரக சேவையகத்திற்கு அனுப்புகிறார். இந்த படி முந்தைய சுற்று விளக்கத்தில் படி 3 உடன் ஒத்துள்ளது.
  2. இப்போது கான்சல் சர்வர் (அல்லது தலைவர்) பெறப்பட்ட டோக்கனின் நம்பகத்தன்மையை சரிபார்க்க வேண்டும். எனவே, அது Kubernetes கிளஸ்டரை (கான்சல் கிளையன்ட் வழியாக) கலந்தாலோசித்து, அதற்கான அனுமதிகளுடன், டோக்கன் உண்மையானதா மற்றும் அது யாருக்குச் சொந்தமானது என்பதைக் கண்டுபிடிப்போம்.
  3. சரிபார்க்கப்பட்ட கோரிக்கை பின்னர் தூதரகத் தலைவருக்குத் திருப்பி அனுப்பப்படுகிறது, மேலும் உள்நுழைவு கோரிக்கையிலிருந்து (மற்றும் குபெர்னெட்டஸ் வகை) குறிப்பிட்ட பெயருடன் கான்சல் சர்வர் அங்கீகார முறை நிகழ்வைப் பார்க்கிறது.
  4. தூதரகத் தலைவர் குறிப்பிட்ட அங்கீகார முறை நிகழ்வை (கண்டுபிடிக்கப்பட்டால்) அடையாளம் கண்டு அதனுடன் இணைக்கப்பட்டுள்ள பிணைப்பு விதிகளின் தொகுப்பைப் படிக்கிறார். அது இந்த விதிகளைப் படித்து, சரிபார்க்கப்பட்ட அடையாளப் பண்புகளுடன் ஒப்பிடுகிறது.
  5. TA-dah! முந்தைய சுற்று விளக்கத்தில் படி 5 க்கு செல்லலாம்.

வழக்கமான மெய்நிகர் கணினியில் கன்சல்-சர்வரை இயக்கவும்

இனிமேல், முழு வாக்கிய விளக்கங்கள் இல்லாமல், பெரும்பாலும் புல்லட் பாயின்ட்களில் இந்த POCயை எப்படி உருவாக்குவது என்பது குறித்த வழிமுறைகளை நான் பெரும்பாலும் வழங்குவேன். மேலும், முன்பு குறிப்பிட்டது போல், அனைத்து உள்கட்டமைப்பையும் உருவாக்க GCP ஐப் பயன்படுத்துவேன், ஆனால் நீங்கள் வேறு எங்கும் அதே உள்கட்டமைப்பை உருவாக்கலாம்.

  • மெய்நிகர் இயந்திரத்தை (உதாரணம்/சேவையகம்) தொடங்கவும்.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

  • ஃபயர்வாலுக்கான விதியை உருவாக்கவும் (AWS இல் பாதுகாப்பு குழு):
  • "skywiz-consul-server-poc" என்ற விதி மற்றும் பிணைய குறிச்சொல் இரண்டிற்கும் ஒரே இயந்திரத்தின் பெயரை ஒதுக்க விரும்புகிறேன்.
  • உங்கள் உள்ளூர் கணினியின் ஐபி முகவரியைக் கண்டுபிடித்து, அதை மூல ஐபி முகவரிகளின் பட்டியலில் சேர்க்கவும், இதன் மூலம் நாம் பயனர் இடைமுகத்தை (UI) அணுக முடியும்.
  • UIக்கு போர்ட் 8500ஐத் திறக்கவும். உருவாக்கு என்பதைக் கிளிக் செய்யவும். இந்த ஃபயர்வாலை விரைவில் மாற்றுவோம் [ссылка].
  • நிகழ்வில் ஃபயர்வால் விதியைச் சேர்க்கவும். கன்சல் சர்வரில் உள்ள VM டாஷ்போர்டிற்குத் திரும்பிச் சென்று பிணைய குறிச்சொற்கள் புலத்தில் “skywiz-consul-server-poc” ஐச் சேர்க்கவும். சேமி என்பதைக் கிளிக் செய்யவும்.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

  • மெய்நிகர் கணினியில் தூதரகத்தை நிறுவவும், இங்கே பார்க்கவும். உங்களுக்கு கான்சல் பதிப்பு ≥ 1.5 தேவை என்பதை நினைவில் கொள்ளுங்கள் [இணைப்பு]
  • ஒற்றை முனை தூதரகத்தை உருவாக்குவோம் - உள்ளமைவு பின்வருமாறு.

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

  • நீங்கள் வெளியீட்டின் தொகுப்பைப் பார்க்க வேண்டும் மற்றும் "... ACLகளால் தடுக்கப்பட்ட புதுப்பிப்பு" என்று முடிவடையும்.
  • தூதரக சேவையகத்தின் வெளிப்புற IP முகவரியைக் கண்டறிந்து, போர்ட் 8500 இல் இந்த IP முகவரியுடன் உலாவியைத் திறக்கவும். UI திறக்கப்படுவதை உறுதிசெய்யவும்.
  • விசை/மதிப்பு ஜோடியைச் சேர்க்க முயற்சிக்கவும். ஒரு தவறு இருக்க வேண்டும். ஏனென்றால், நாங்கள் தூதரக சேவையகத்தை ACL மூலம் ஏற்றி அனைத்து விதிகளையும் முடக்கியுள்ளோம்.
  • கன்சல் சர்வரில் உள்ள உங்கள் ஷெல்லுக்குச் சென்று, பின்புலத்தில் அல்லது வேறு வழிகளில் செயல்முறையைத் தொடங்கி, பின்வருவனவற்றை உள்ளிடவும்:

consul acl bootstrap

  • "SecretID" மதிப்பைக் கண்டறிந்து UIக்குத் திரும்பவும். ACL தாவலில், நீங்கள் நகலெடுத்த டோக்கனின் ரகசிய ஐடியை உள்ளிடவும். SecretID ஐ வேறு எங்காவது நகலெடுங்கள், எங்களுக்கு அது பின்னர் தேவைப்படும்.
  • இப்போது விசை/மதிப்பு ஜோடியைச் சேர்க்கவும். இந்த POC க்கு, பின்வருவனவற்றைச் சேர்க்கவும்: விசை: “custom-ns/test_key”, மதிப்பு: “நான் custom-ns கோப்புறையில் இருக்கிறேன்!”

டீமான்செட்டாக தூதரக கிளையண்டுடன் எங்கள் விண்ணப்பத்திற்காக குபெர்னெட்ஸ் கிளஸ்டரைத் தொடங்குகிறோம்

  • K8s (குபெர்னெட்ஸ்) கிளஸ்டரை உருவாக்கவும். விரைவான அணுகலுக்காக சேவையகத்தின் அதே மண்டலத்தில் இதை உருவாக்குவோம், எனவே உள் IP முகவரிகளுடன் எளிதாக இணைக்க அதே சப்நெட்டைப் பயன்படுத்தலாம். நாங்கள் அதை "ஸ்கைவிஸ்-ஆப்-வித்-கான்சல்-கிளையன்ட்-போக்" என்று அழைப்போம்.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

  • ஒரு பக்கக் குறிப்பாக, கன்சல் கனெக்டுடன் POC கன்சல் கிளஸ்டரை அமைக்கும் போது நான் கண்ட ஒரு நல்ல பயிற்சி இங்கே உள்ளது.
  • நாங்கள் நீட்டிக்கப்பட்ட மதிப்புகள் கோப்புடன் ஹாஷிகார்ப் ஹெல்ம் விளக்கப்படத்தையும் பயன்படுத்துவோம்.
  • ஹெல்மை நிறுவி கட்டமைக்கவும். கட்டமைப்பு படிகள்:

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

  • அதை இயக்க முயற்சிக்கும் போது, ​​அதற்கு கன்சல் சர்வருக்கான அனுமதிகள் தேவைப்படும், எனவே அவற்றைச் சேர்ப்போம்.
  • கிளஸ்டர் டாஷ்போர்டில் அமைந்துள்ள "பாட் அட்ரஸ் ரேஞ்ச்" என்பதைக் கவனியுங்கள், மேலும் எங்கள் "ஸ்கைவிஸ்-கான்சல்-சர்வர்-போக்" ஃபயர்வால் விதியைப் பார்க்கவும்.
  • IP முகவரிகளின் பட்டியலில் பாட்க்கான முகவரி வரம்பைச் சேர்த்து 8301 மற்றும் 8300 போர்ட்களைத் திறக்கவும்.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

  • கான்சல் UI க்குச் சென்று, சில நிமிடங்களுக்குப் பிறகு முனைகள் தாவலில் எங்கள் கிளஸ்டர் தோன்றுவதைக் காண்பீர்கள்.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

குபெர்னெட்டஸுடன் தூதரகத்தை ஒருங்கிணைப்பதன் மூலம் ஒரு அங்கீகார முறையை கட்டமைத்தல்

  • கன்சல் சர்வர் ஷெல்லுக்குத் திரும்பி, நீங்கள் முன்பு சேமித்த டோக்கனை ஏற்றுமதி செய்யுங்கள்:

export CONSUL_HTTP_TOKEN=<SecretID>

  • அங்கீகார முறையைத் துரிதப்படுத்த, எங்கள் குபெர்னெட்ஸ் கிளஸ்டரிலிருந்து எங்களுக்குத் தகவல் தேவைப்படும்:
  • kubernetes-புரவலன்

kubectl get endpoints | grep kubernetes

  • kubernetes-service-account-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" சான்றிதழை எடுத்து (base64 டிகோடிங்கிற்குப் பிறகு) "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

கன்சல் கிளையண்டுடன் இணைகிறது

  • குறிப்பிட்டபடி இங்கேடெமான்செட்டுடன் இணைக்க பல விருப்பங்கள் உள்ளன, ஆனால் பின்வரும் எளிய தீர்வுக்கு செல்வோம்:
  • பின்வரும் கோப்பைப் பயன்படுத்தவும் [ссылка].

### 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

  • ஒரு configmap ஐ உருவாக்க பின்வரும் உள்ளமைக்கப்பட்ட கட்டளையைப் பயன்படுத்தவும்.ссылка]. எங்கள் சேவையின் பெயரை நாங்கள் குறிப்பிடுகிறோம் என்பதை நினைவில் கொள்ளவும், தேவைப்பட்டால் அதை மாற்றவும்.

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

அங்கீகார முறையை சோதிக்கிறது

இப்போது செயலில் உள்ள மந்திரத்தைப் பார்ப்போம்!

  • அதே உயர்மட்ட விசையுடன் மேலும் பல முக்கிய கோப்புறைகளை உருவாக்கவும் (அதாவது. /மாதிரி_கீ) மற்றும் உங்கள் விருப்பத்தின் மதிப்பு. புதிய முக்கிய பாதைகளுக்கு பொருத்தமான கொள்கைகள் மற்றும் பாத்திரங்களை உருவாக்கவும். பிணைப்புகளை பின்னர் செய்வோம்.

ஹாஷிகார்ப் தூதரகத்தின் குபெர்னெட்ஸ் அங்கீகாரத்திற்கான அறிமுகம்

தனிப்பயன் பெயர்வெளி சோதனை:

  • நமது சொந்த பெயர்வெளியை உருவாக்குவோம்:

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 டிகோட் செய்து, UI இல் உள்ள custom-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

  • அனுமதி மறுக்கப்பட்டது. ஓ, தகுந்த அனுமதிகளுடன் இணைக்கப்பட்ட புதிய விதிகளைச் சேர்க்க மறந்துவிட்டோம், இப்போது அதைச் செய்வோம்.

மேலே உள்ள முந்தைய படிகளை மீண்டும் செய்யவும்:
அ) “கஸ்டம்-சா/” முன்னொட்டிற்கு ஒரே மாதிரியான கொள்கையை உருவாக்கவும்.
b) ஒரு பாத்திரத்தை உருவாக்கவும், அதை "கஸ்டம்-சா-ரோல்" என்று அழைக்கவும்
c) பாத்திரத்துடன் கொள்கையை இணைக்கவும்.

  • ஒரு விதி-பிணைப்பை உருவாக்கவும் (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" கொள்கலனில் இருந்து மீண்டும் உள்நுழைக. வெற்றி!
  • தனிப்பயன்-sa/ முக்கிய பாதைக்கான எங்கள் அணுகலைப் பார்க்கவும்.

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

  • இந்த டோக்கன் "கஸ்டம்-என்எஸ்/" இல் kvக்கான அணுகலை வழங்காது என்பதையும் நீங்கள் உறுதிசெய்யலாம். "கஸ்டம்-சா" என்பதை "கஸ்டம்-என்எஸ்" முன்னொட்டுடன் மாற்றிய பின் மேலே உள்ள கட்டளையை மீண்டும் செய்யவும்.
    அனுமதி மறுக்கப்பட்டது.

மேலடுக்கு உதாரணம்:

  • இந்த உரிமைகளுடன் டோக்கனில் அனைத்து விதி-பிணைப்பு மேப்பிங்குகளும் சேர்க்கப்படும் என்பது குறிப்பிடத்தக்கது.
  • எங்கள் கொள்கலன் "poc-ubuntu-custom-sa" இயல்புநிலை பெயர்வெளியில் உள்ளது - எனவே அதை வேறு விதி-பிண்டிங்கிற்குப் பயன்படுத்துவோம்.
  • முந்தைய படிகளை மீண்டும் செய்யவும்:
    அ) “இயல்பு/” விசை முன்னொட்டுக்கு ஒரே மாதிரியான கொள்கையை உருவாக்கவும்.
    b) ஒரு பாத்திரத்தை உருவாக்கவும், அதற்கு "default-ns-role" என்று பெயரிடவும்
    c) பாத்திரத்துடன் கொள்கையை இணைக்கவும்.
  • ஒரு விதி-பிணைப்பை உருவாக்கவும் (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 பாதையை அணுக முயற்சிக்கவும்.
  • அனுமதி மறுக்கப்பட்டது.
    ACL > டோக்கன்கள் என்பதன் கீழ் UI இல் உள்ள ஒவ்வொரு டோக்கனுக்கும் குறிப்பிட்ட நற்சான்றிதழ்களை நீங்கள் பார்க்கலாம். நீங்கள் பார்க்கிறபடி, எங்களின் தற்போதைய டோக்கனில் ஒரே ஒரு “கஸ்டம்-சா-ரோல்” மட்டுமே இணைக்கப்பட்டுள்ளது. நாங்கள் தற்போது பயன்படுத்தும் டோக்கன், நாங்கள் உள்நுழைந்தபோது உருவாக்கப்பட்டதாகும், அப்போது பொருந்திய ஒரே ஒரு விதி-பிண்டிங் மட்டுமே இருந்தது. நாம் மீண்டும் உள்நுழைந்து புதிய டோக்கனைப் பயன்படுத்த வேண்டும்.
  • "Custom-sa/" மற்றும் "default/" kv பாதைகள் இரண்டிலிருந்தும் நீங்கள் படிக்க முடியும் என்பதை உறுதிப்படுத்தவும்.
    வெற்றி!
    ஏனென்றால், எங்களின் "poc-ubuntu-custom-sa" "custom-sa" மற்றும் "default-ns" விதி பிணைப்புகளுடன் பொருந்துகிறது.

முடிவுக்கு

TTL டோக்கன் mgmt?

இதை எழுதும் நேரத்தில், இந்த அங்கீகார முறையால் உருவாக்கப்பட்ட டோக்கன்களுக்கான TTL ஐ தீர்மானிக்க ஒருங்கிணைந்த வழி எதுவும் இல்லை. தூதரக அங்கீகாரத்தின் பாதுகாப்பான ஆட்டோமேஷனை வழங்க இது ஒரு அருமையான வாய்ப்பாக இருக்கும்.

TTL உடன் கைமுறையாக ஒரு டோக்கனை உருவாக்க ஒரு விருப்பம் உள்ளது:

எதிர்காலத்தில் டோக்கன்கள் எவ்வாறு உருவாக்கப்படுகின்றன என்பதைக் கட்டுப்படுத்த முடியும் (விதி அல்லது அங்கீகார முறைப்படி) மற்றும் TTLஐச் சேர்ப்போம்.

அதுவரை, உங்கள் தர்க்கத்தில் லாக்அவுட் எண்ட்பாயிண்ட்டைப் பயன்படுத்த பரிந்துரைக்கப்படுகிறது.

எங்கள் வலைப்பதிவில் உள்ள மற்ற கட்டுரைகளையும் படிக்கவும்:

ஆதாரம்: www.habr.com

கருத்தைச் சேர்