ProHoster > blog > Utawala > Utangulizi wa Uidhinishaji wa Kubernetes wa Balozi wa Hashicorp
Utangulizi wa Uidhinishaji wa Kubernetes wa Balozi wa Hashicorp
Hiyo ni kweli, baada ya kutolewa Balozi wa Hashicorp 1.5.0 mwanzoni mwa Mei 2019, katika Balozi unaweza kuidhinisha maombi na huduma zinazoendeshwa katika Kubernetes asili.
Katika somo hili tutaunda hatua kwa hatua POC (Uthibitisho wa dhana, PoC) inayoonyesha kipengele hiki kipya. Unatarajiwa kuwa na ujuzi wa kimsingi wa Kubernetes na Mshauri wa Hashicorp. Ingawa unaweza kutumia mfumo wowote wa wingu au mazingira ya ndani ya majengo, katika mafunzo haya tutatumia Mfumo wa Wingu wa Google.
Pitia
Ikiwa tutaenda Nyaraka za balozi juu ya njia yake ya uidhinishaji, tutapata muhtasari wa haraka wa madhumuni yake na kesi ya matumizi, pamoja na baadhi ya maelezo ya kiufundi na muhtasari wa jumla wa mantiki. Ninapendekeza sana kuisoma angalau mara moja kabla ya kuendelea, kwani sasa nitakuwa nikielezea na kutafuna yote.
Mchoro wa 1: Muhtasari rasmi wa mbinu ya idhini ya Balozi
Hakika, kuna habari muhimu hapo, lakini hakuna mwongozo wa jinsi ya kuitumia yote. Kwa hivyo, kama mtu yeyote mwenye akili timamu, unatafuta mwongozo kwenye Mtandao. Na kisha ... Unashindwa. Inatokea. Hebu kurekebisha hili.
Kabla ya kuendelea na kuunda POC yetu, hebu turejee kwa muhtasari wa mbinu za uidhinishaji za Balozi (Mchoro 1) na tuiboreshe katika muktadha wa Kubernetes.
usanifu
Katika somo hili, tutaunda seva ya Balozi kwenye mashine tofauti ambayo itawasiliana na kikundi cha Kubernetes na mteja wa Balozi aliyesakinishwa. Kisha tutaunda programu yetu ya dummy kwenye ganda na kutumia njia yetu ya uidhinishaji iliyosanidiwa kusoma kutoka kwa ufunguo/duka la thamani la Balozi.
Mchoro ulio hapa chini unaelezea usanifu tunaounda katika mafunzo haya, pamoja na mantiki nyuma ya njia ya uidhinishaji, ambayo itaelezewa baadaye.
Mchoro wa 2: Muhtasari wa Mbinu ya Uidhinishaji wa Kubernetes
Ujumbe wa haraka: seva ya Balozi haihitaji kuishi nje ya kundi la Kubernetes ili hii ifanye kazi. Lakini ndio, anaweza kufanya hivi na vile.
Kwa hivyo, kwa kuchukua mchoro wa muhtasari wa Balozi (Mchoro 1) na kutumia Kubernetes kwake, tunapata mchoro hapo juu (Mchoro wa 2), na mantiki hapa ni kama ifuatavyo.
Kila ganda litakuwa na akaunti ya huduma iliyoambatishwa ndani yake iliyo na tokeni ya JWT iliyotolewa na inayojulikana na Kubernetes. Ishara hii pia imeingizwa kwenye ganda kwa chaguo-msingi.
Programu au huduma yetu ndani ya ganda huanzisha amri ya kuingia kwa mteja wetu wa Balozi. Ombi la kuingia pia litajumuisha ishara na jina letu iliyoundwa maalum njia ya idhini (aina ya Kubernetes). Hatua hii # 2 inalingana na hatua ya 1 ya mchoro wa Balozi (Mpango 1).
Mteja wetu wa Ubalozi basi atatuma ombi hili kwa seva yetu ya Balozi.
UCHAWI! Hapa ndipo seva ya Balozi inapothibitisha uhalisi wa ombi, kukusanya taarifa kuhusu utambulisho wa ombi na kulilinganisha na sheria zozote zinazohusiana zilizobainishwa awali. Chini ni mchoro mwingine wa kuelezea hii. Hatua hii inalingana na hatua ya 3, 4 na 5 ya mchoro wa muhtasari wa Balozi (Mchoro 1).
Seva yetu ya Ubalozi hutengeneza tokeni ya Ubalozi yenye vibali kulingana na kanuni zetu za mbinu maalum za uidhinishaji (ambazo tumezifafanua) kuhusu utambulisho wa mwombaji. Kisha itatuma ishara hiyo nyuma. Hii inalingana na hatua ya 6 ya mchoro wa Balozi (Mchoro 1).
Mteja wetu wa Balozi hutuma tokeni kwa ombi au huduma inayoomba.
Programu au huduma yetu sasa inaweza kutumia tokeni hii ya Balozi kuwasiliana na data ya Balozi wetu, kama inavyobainishwa na mapendeleo ya tokeni.
Uchawi umefunuliwa!
Kwa wale ambao hamfurahishwi na sungura tu kutoka kwenye kofia na mnataka kujua jinsi inavyofanya kazi ... ngoja nikuonyeshe jinsi kina shimo la sungura'.
Kama ilivyoelezwa hapo awali, hatua yetu ya "uchawi" (Kielelezo 2: Hatua ya 4) ni pale seva ya Balozi inathibitisha ombi, kukusanya taarifa kuhusu ombi, na kuilinganisha na sheria zozote zinazohusiana zilizoainishwa awali. Hatua hii inalingana na hatua ya 3, 4 na 5 ya mchoro wa muhtasari wa Balozi (Mchoro 1). Chini ni mchoro (Mchoro wa 3), madhumuni yake ni kuonyesha wazi kile kinachotokea chini ya kofia njia maalum ya idhini ya Kubernetes.
Mchoro wa 3: Uchawi umefunuliwa!
Kama sehemu ya kuanzia, mteja wetu wa Ubalozi hutuma ombi la kuingia kwa seva yetu ya Ubalozi kwa tokeni ya akaunti ya Kubernetes na jina mahususi la mfano wa mbinu ya uidhinishaji ambayo iliundwa awali. Hatua hii inalingana na hatua ya 3 katika maelezo ya mzunguko uliopita.
Sasa seva ya Balozi (au kiongozi) inahitaji kuthibitisha uhalisi wa ishara iliyopokelewa. Kwa hivyo, itashauriana na kundi la Kubernetes (kupitia mteja wa Balozi) na, kwa ruhusa zinazofaa, tutajua kama ishara hiyo ni ya kweli na ni ya nani.
Ombi lililoidhinishwa hurejeshwa kwa kiongozi wa Balozi, na seva ya Balozi hutafuta mfano wa njia ya uidhinishaji na jina lililobainishwa kutoka kwa ombi la kuingia (na aina ya Kubernetes).
Kiongozi wa balozi anabainisha mfano wa mbinu maalum ya uidhinishaji (ikipatikana) na kusoma seti ya sheria za kisheria ambazo zimeambatishwa kwayo. Kisha inasoma sheria hizi na kuzilinganisha na sifa za utambulisho zilizothibitishwa.
TA-dah! Wacha tuendelee kwa hatua ya 5 katika maelezo ya mzunguko uliopita.
Endesha Consul-server kwenye mashine ya kawaida ya mtandaoni
Kuanzia sasa na kuendelea, nitakuwa nikitoa maelekezo ya jinsi ya kuunda POC hii, mara nyingi katika nukta za risasi, bila maelezo kamili ya sentensi. Pia, kama ilivyoonyeshwa hapo awali, nitatumia GCP kuunda miundombinu yote, lakini unaweza kuunda miundombinu sawa mahali pengine popote.
Anzisha mashine ya kawaida (mfano/seva).
Unda sheria ya firewall (kikundi cha usalama katika AWS):
Ninapenda kupeana jina la mashine sawa kwa sheria na tepe ya mtandao, katika kesi hii "skywiz-consul-server-poc".
Tafuta anwani ya IP ya kompyuta yako na uiongeze kwenye orodha ya anwani za IP ili tuweze kufikia kiolesura cha mtumiaji (UI).
Fungua bandari 8500 kwa UI. Bofya Unda. Tutabadilisha ngome hii tena hivi karibuni [kiungo].
Ongeza sheria ya firewall kwa mfano. Rudi kwenye dashibodi ya VM kwenye Seva ya Balozi na uongeze "skywiz-consul-server-poc" kwenye uga wa lebo za mtandao. Bofya Hifadhi.
Sakinisha Balozi kwenye mashine pepe, angalia hapa. Kumbuka unahitaji toleo la Mshauri β₯ 1.5 [kiungo]
Wacha tuunde Consul ya nodi moja - usanidi ni kama ifuatavyo.
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
Kwa mwongozo wa kina zaidi juu ya kusakinisha Balozi na kuanzisha nguzo ya nodi 3, ona hapa.
Unda faili /etc/consul.d/agent.json kama ifuatavyo [kiungo]:
consul agent
-server
-ui
-client 0.0.0.0
-data-dir=/var/lib/consul
-bootstrap-expect=1
-config-dir=/etc/consul.d
Unapaswa kuona rundo la matokeo na kuishia na "... sasisho lililozuiwa na ACL."
Pata anwani ya IP ya nje ya seva ya Balozi na ufungue kivinjari na anwani hii ya IP kwenye bandari 8500. Hakikisha kwamba UI inafungua.
Jaribu kuongeza ufunguo/thamani jozi. Lazima kuna kosa. Hii ni kwa sababu tulipakia seva ya Balozi na ACL na kulemaza sheria zote.
Rudi kwenye ganda lako kwenye seva ya Balozi na uanze mchakato nyuma au njia nyingine ya kuifanya iendeshe na uweke yafuatayo:
consul acl bootstrap
Pata thamani ya "SecretID" na urudi kwenye UI. Katika kichupo cha ACL, ingiza kitambulisho cha siri cha ishara uliyonakili. Nakili SecretID mahali pengine, tutaihitaji baadaye.
Sasa ongeza ufunguo/thamani jozi. Kwa POC hii, ongeza yafuatayo: ufunguo: "custom-ns/test_key", thamani: "Niko kwenye folda maalum-ns!"
Kuzindua kundi la Kubernetes kwa maombi yetu na mteja wa Balozi kama Daemoset
Unda nguzo ya K8s (Kubernetes). Tutaiunda katika eneo sawa na seva kwa ufikiaji wa haraka, na ili tuweze kutumia subnet sawa ili kuunganisha kwa urahisi na anwani za ndani za IP. Tutaiita "skywiz-app-with-consul-client-poc".
Kama dokezo la kando, hapa kuna mafunzo mazuri niliyopata wakati nikianzisha nguzo ya Balozi wa POC na Consul Connect.
Pia tutakuwa tukitumia chati ya usukani ya Hashicorp iliyo na faili ya thamani iliyopanuliwa.
Tumia faili ya thamani ifuatayo (kumbuka nimezima zaidi):
### 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
Weka chati ya usukani:
./helm install -f poc-helm-consul-values.yaml ./consul-helm - name skywiz-app-with-consul-client-poc
Inapojaribu kufanya kazi, itahitaji ruhusa kwa seva ya Balozi, kwa hivyo wacha tuiongeze.
Kumbuka "Msururu wa Anwani za Pod" ulio kwenye dashibodi ya nguzo na urejelee sheria yetu ya ngome ya "skywiz-consul-server-poc".
Ongeza safu ya anwani ya ganda kwenye orodha ya anwani za IP na fungua bandari 8301 na 8300.
Nenda kwa Consul UI na baada ya dakika chache utaona nguzo yetu ikitokea kwenye kichupo cha nodi.
Kusanidi Mbinu ya Uidhinishaji kwa Kuunganisha Balozi na Kubernetes
Rudi kwenye ganda la seva ya Balozi na usafirishe tokeni uliyohifadhi hapo awali:
export CONSUL_HTTP_TOKEN=<SecretID>
Tutahitaji habari kutoka kwa nguzo yetu ya Kubernetes ili kuunda mfano wa njia ya uthibitishaji:
kubernetes-mwenyeji
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:
Ishara imesimbwa base64, kwa hivyo isimbue kwa kutumia zana unayopenda [kiungo]
kubernetes-ca-cert
kubectl get secret <secret_name_from_prev_command> -o yaml | grep ca.crt:
Chukua cheti cha "ca.crt" (baada ya kusimbua base64) na uandike kwenye faili ya "ca.crt".
Sasa thibitisha mbinu ya uthibitishaji, ukibadilisha vishikilia nafasi na thamani ulizopokea hivi punde.
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>"
Ifuatayo tunahitaji kuunda sheria na kuiunganisha kwa jukumu jipya. Kwa sehemu hii unaweza kutumia Consul UI, lakini tutatumia mstari wa amri.
Unda folda kadhaa muhimu zaidi na ufunguo sawa wa kiwango cha juu (k.m. /sample_key) na thamani ya chaguo lako. Unda sera na majukumu yanayofaa kwa njia mpya muhimu. Tutafanya vifungo baadaye.
Jaribio maalum la nafasi ya majina:
Wacha tuunde nafasi yetu ya majina:
kubectl create namespace custom-ns
Hebu tuunde ganda katika nafasi yetu mpya ya majina. Andika usanidi wa ganda.
Unaweza kusimbua "Thamani" base64 na kuona kwamba inalingana na thamani katika custom-ns/test_key katika kiolesura. Ikiwa ulitumia thamani sawa hapo juu katika mafunzo haya, thamani yako iliyosimbwa itakuwa IkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi.
Jaribio la akaunti ya huduma ya mtumiaji:
Unda Akaunti ya Huduma maalum kwa kutumia amri ifuatayo [kiungo].
Ruhusa imekataliwa. Lo, tulisahau kuongeza sheria mpya zinazofunga na ruhusa zinazofaa, tufanye hivyo sasa.
Rudia hatua zilizo hapo juu:
a) Tengeneza Sera inayofanana kwa kiambishi awali "custom-sa/".
b) Tengeneza Jukumu, liite "custom-sa-role"
c) Ambatanisha Sera kwenye Jukumu.
Unda Sheria ya Kufunga (inawezekana tu kutoka kwa cli/api). Kumbuka maana tofauti ya bendera ya kiteuzi.
consul acl binding-rule create
-method=auth-method-skywiz-consul-poc
-bind-type=role
-bind-name='custom-sa-role'
-selector='serviceaccount.name=="custom-sa"'
Ingia tena kutoka kwa chombo cha "poc-ubuntu-custom-sa". Mafanikio!
Angalia ufikiaji wetu kwa njia ya ufunguo maalum-sa/.
Unaweza pia kuhakikisha kuwa ishara hii haitoi ufikiaji wa kv katika "desturi-ns/". Rudia tu amri iliyo hapo juu baada ya kubadilisha "custom-sa" na kiambishi awali "desturi-ns".
Ruhusa imekataliwa.
Mfano wa kuwekelea:
Inafaa kukumbuka kuwa ramani zote zinazofunga sheria zitaongezwa kwenye tokeni yenye haki hizi.
Chombo chetu "poc-ubuntu-custom-sa" kiko kwenye nafasi ya majina - kwa hivyo wacha tuitumie kwa ufungaji sheria tofauti.
Rudia hatua zilizopita:
a) Unda Sera inayofanana kwa kiambishi awali cha ufunguo "chaguo-msingi/".
b) Unda Jukumu, lipe jina "default-ns-jukumu"
c) Ambatanisha Sera kwenye Jukumu.
Unda Sheria ya Kufunga (inawezekana tu kutoka kwa 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"'
Rudi kwenye kontena letu la "poc-ubuntu-custom-sa" na ujaribu kufikia njia ya "default/" kv.
Ruhusa imekataliwa.
Unaweza kuona vitambulisho vilivyobainishwa kwa kila tokeni kwenye kiolesura chini ya ACL > Tokeni. Kama unavyoona, ishara yetu ya sasa ina "jukumu la desturi" moja tu lililoambatishwa nayo. Tokeni tunayotumia kwa sasa ilitolewa tulipoingia na kulikuwa na sheria moja tu inayofungamana na wakati huo. Tunahitaji kuingia tena na kutumia tokeni mpya.
Hakikisha unaweza kusoma kutoka kwa njia zote mbili za "custom-sa/" na "default/" kv.
Mafanikio!
Hii ni kwa sababu "poc-ubuntu-custom-sa" yetu inalingana na kanuni za "desturi-sa" na "default-ns" kanuni.
Hitimisho
Tokeni ya TTL mgmt?
Wakati wa uandishi huu, hakuna njia jumuishi ya kuamua TTL kwa ishara zinazozalishwa na njia hii ya uidhinishaji. Itakuwa fursa nzuri ya kutoa otomatiki salama ya idhini ya Balozi.