د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

دا سمه ده، د خوشې کیدو وروسته د هاشیکورپ قونسل 1.5.0 د می د 2019 په پیل کې، په قونسل کې تاسو کولی شئ غوښتنلیکونه او خدمات په اصلي ډول په کوبرنیټس کې پرمخ وړئ.

پدې ټیوټوریل کې به موږ ګام په ګام جوړ کړو POC (Proof of Concept, PoC) د دې نوې بڼې ښودنه کوي. له تاسو تمه کیږي چې د Kubernetes او Hashicorp د قونسل په اړه اساسي پوهه ولرئ. په داسې حال کې چې تاسو کولی شئ هر ډول کلاوډ پلیټ فارم یا د کور دننه چاپیریال وکاروئ، پدې لوست کې به موږ د ګوګل کلاوډ پلیټ فارم وکاروو.

عمومي کتنه

که موږ لاړ شو د هغې د واک ورکولو میتود په اړه د قونسل اسناد، موږ به د دې هدف او کارونې قضیې ګړندۍ کتنه ترلاسه کړو ، په بیله بیا ځینې تخنیکي توضیحات او د منطق عمومي عمومي کتنه. زه په کلکه وړاندیز کوم چې دا لږترلږه یو ځل د پرمخ وړلو دمخه ولولئ ، ځکه چې زه به اوس دا ټول تشریح او ژاړم.

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

انځور 1: د قونسل د اجازې د طریقې رسمي کتنه

راځئ چې دننه وګورو د ځانګړي Kubernetes اختیار کولو میتود لپاره اسناد.

یقینا، دلته ګټور معلومات شتون لري، مګر د دې ټولو کارولو څرنګوالي په اړه هیڅ لارښود شتون نلري. نو، د هر هوښیار کس په څیر، تاسو د لارښوونې لپاره انټرنیټ وکاروئ. او بیا ... تاسو ناکام یاست. دا پیښیږي. راځئ چې دا سم کړو.

مخکې لدې چې موږ د خپل POC رامینځته کولو ته لاړ شو ، راځئ چې بیرته د قونسل د واک ورکولو میتودونو عمومي لید ته لاړ شو (ډیاګرام 1) او د کوبرنیټس په شرایطو کې یې اصلاح کړو.

معمارۍ

په دې ټیوټوریل کې، موږ به په جلا ماشین کې د قونسل سرور جوړ کړو چې د کوبرنیټس کلستر سره به د قونسل پیرودونکي نصب شوي سره اړیکه ونیسي. بیا به موږ خپل ډمي غوښتنلیک په پوډ کې رامینځته کړو او زموږ د قونسل کیلي / ارزښت پلورنځي څخه د لوستلو لپاره زموږ تنظیم شوي اختیار کولو میتود وکاروو.

لاندې ډیاګرام هغه جوړښت تشریح کوي چې موږ یې پدې ټیوټوریل کې رامینځته کوو ، او همدارنګه د اختیار کولو میتود ترشا منطق چې وروسته به تشریح شي.

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

انځور 2: د Kubernetes د واک ورکولو میتود عمومي کتنه

یو ګړندی یادونه: د دې کار کولو لپاره د قونسل سرور اړتیا نلري د کوبرنیټس کلسټر څخه بهر ژوند وکړي. مګر هو، هغه کولی شي دا په دې طریقه ترسره کړي.

نو، د قونسل عمومي لید ډیاګرام (ډیاګرام 1) اخیستل او د کوبرنیټس پلي کول ، موږ پورته ډیاګرام ترلاسه کوو (ډیاګرام 2) ، او دلته منطق په لاندې ډول دی:

  1. هر پوډ به د خدماتو حساب ولري چې ورسره وصل وي د JWT نښه لري چې د کوبرنیټس لخوا رامینځته شوی او پیژندل شوی. دا نښه هم په ډیفالټ پوډ کې داخلیږي.
  2. زموږ غوښتنلیک یا خدمت په پوډ کې دننه زموږ د قونسل پیرودونکي ته د ننوتلو کمانډ پیل کوي. د ننوتلو غوښتنه کې به زموږ نښه او نوم هم شامل وي په ځانګړي ډول جوړ شوی د جواز ورکولو طریقه (Kubernetes ډول). دا مرحله #2 د قونسل ډیاګرام (سکیم 1) 1 مرحلې سره مطابقت لري.
  3. زموږ د قونسل پیرودونکی به بیا دا غوښتنه زموږ د قونسل سرور ته واستوي.
  4. جادو! دا هغه ځای دی چې د قونسل سرور د غوښتنې اعتبار تاییدوي، د غوښتنې د هویت په اړه معلومات راټولوي او دا د هرډول پخوانیو مقرراتو سره پرتله کوي. لاندې د دې روښانه کولو لپاره یو بل ډیاګرام دی. دا ګام د قونسل عمومي کتنې ډیاګرام (ډایگرام 3) له 4، 5 او 1 مرحلو سره مطابقت لري.
  5. زموږ د قونسل سرور د غوښتونکي د هویت په اړه زموږ د ټاکل شوي اختیار کولو میتود قواعدو سره سم د اجازې سره د قونسل نښه رامینځته کوي (کوم چې موږ تعریف کړی دی). بیا به دا نښه بیرته واستوي. دا د قونسل ډیاګرام (ډیاګرام 6) له 1 مرحلې سره مطابقت لري.
  6. زموږ د قونسل پیرودونکی نښه غوښتنه کونکي غوښتنلیک یا خدمت ته لیږي.

زموږ غوښتنلیک یا خدمت اوس کولی شي د دې قونسل ټکن څخه زموږ د قونسل ډیټا سره اړیکه ونیسي، لکه څنګه چې د نښې امتیازاتو لخوا ټاکل کیږي.

جادو ښکاره شو!

ستاسو د هغو کسانو لپاره چې د خولۍ څخه یوازې د خرگوش سره خوښ نه دي او غواړي پوه شي چې دا څنګه کار کوي ... اجازه راکړئ تاسو ته وښیم چې څومره ژور د خرگوش سوری".

لکه څنګه چې مخکې یادونه وشوه، زموږ "جادو" ګام (شکل 2: مرحله 4) هغه ځای دی چیرې چې د قونسل سرور غوښتنه تاییدوي، د غوښتنې په اړه معلومات راټولوي، او دا د هر ډول اړونده ټاکل شوي مقرراتو سره پرتله کوي. دا ګام د قونسل د کتنې ډیاګرام (ډیاګرام 3) له 4، 5 او 1 مرحلو سره مطابقت لري. لاندې یو ډیاګرام دی (ډیاګرام 3) ، چې هدف یې په روښانه ډول ښودل دي چې واقعیا څه پیښیږي د هود لاندې د Kubernetes مشخص کولو طریقه.

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

انځور 3: جادو ښکاره شو!

  1. د پیل ټکي په توګه، زموږ د قونسل پیرودونکی زموږ د قونسل سرور ته د ننوتلو غوښتنه د Kubernetes اکاونټ نښه او د ځانګړي مثال نوم سره د اجازې کولو میتود ته وړاندې کوي چې مخکې رامینځته شوی. دا مرحله د تیر سرکټ توضیحاتو کې د 3 مرحلې سره مطابقت لري.
  2. اوس د قونسل سرور (یا مشر) اړتیا لري چې د ترلاسه شوي ټکن اعتبار تصدیق کړي. له همدې امله، دا به د کوبرنیټس کلستر سره مشوره وکړي (د قونسل پیرودونکي له لارې) او د مناسبو اجازو سره به موږ معلومه کړو چې آیا نښه ریښتیا ده او د چا پورې اړه لري.
  3. بیا تایید شوې غوښتنه د قونسل مشر ته بیرته راستنیږي، او د قونسل سرور د ننوتلو غوښتنې (او د کوبرنیټس ډول) څخه د ټاکل شوي نوم سره د اختیار کولو میتود مثال ګوري.
  4. د قونسل مشر د ټاکل شوي اختیار کولو میتود بیلګه پیژني (که وموندل شي) او د پابند قواعدو سیټ لولي چې ورسره تړلي دي. دا بیا دا قواعد لولي او د تصدیق شوي پیژندنې ځانګړتیاو سره پرتله کوي.
  5. TA-Dah! راځئ چې د مخکیني سرکټ تشریح کې 5 ګام ته لاړ شو.

په منظم مجازی ماشین کې قونسل-سرور چل کړئ

له اوس څخه ، زه به ډیری وختونه د دې POC رامینځته کولو څرنګوالي په اړه لارښوونې ورکوم ، ډیری وختونه په ګولیو ټکو کې ، پرته له بشپړ جملې توضیحاتو. همچنان ، لکه څنګه چې مخکې یادونه وشوه ، زه به د ټولو زیربناوو رامینځته کولو لپاره GCP وکاروم ، مګر تاسو کولی شئ ورته زیربنا بل چیرې رامینځته کړئ.

  • مجازی ماشین پیل کړئ (مثال/سرور).

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

  • د اور وژونکي لپاره یو قواعد رامینځته کړئ (په AWS کې د امنیت ګروپ):
  • زه غواړم د ورته ماشین نوم دواړه قاعدې او د شبکې ټګ ته وټاکم، پدې حالت کې "skywiz-consul-server-poc".
  • د خپل محلي کمپیوټر IP پته ومومئ او د سرچینې IP پتې لیست کې یې اضافه کړئ ترڅو موږ وکولی شو د کارن انٹرفیس (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

  • تاسو باید د محصول یوه ډله وګورئ او د "... تازه کول د ACLs لخوا بند شوي" سره پای ته ورسیږئ.
  • د کنسول سرور بهرنۍ IP پته ومومئ او په پورټ 8500 کې د دې IP پتې سره براوزر خلاص کړئ. ډاډ ترلاسه کړئ چې UI خلاصیږي.
  • د کیلي / ارزښت جوړه اضافه کولو هڅه وکړئ. دلته هرومرو یوه تېروتنه ده. دا ځکه چې موږ د ACL سره د قونسل سرور بار کړ او ټول مقررات مو غیر فعال کړل.
  • د کنسول سرور کې خپل شیل ته بیرته لاړشئ او پروسه په شالید یا کوم بل ډول پیل کړئ ترڅو دا پرمخ بوځي او لاندې دننه کړئ:

consul acl bootstrap

  • د "SecretID" ارزښت ومومئ او UI ته بیرته راشئ. په ACL ټب کې، د هغه نښه پټ ID داخل کړئ چې تاسو یې کاپي کړی. سیکریټ ID بل چیرې کاپي کړئ، موږ به وروسته ورته اړتیا ولرو.
  • اوس یو کیلي / ارزښت جوړه اضافه کړئ. د دې POC لپاره، لاندې اضافه کړئ: کیلي: "custom-ns/test_key"، ارزښت: "زه د custom-ns فولډر کې یم!"

د ډیمونسیټ په توګه د قونسل پیرودونکي سره زموږ د غوښتنلیک لپاره د Kubernetes کلستر په لاره اچول

  • د K8s (Kubernetes) کلستر جوړ کړئ. موږ به دا د ګړندي لاسرسي لپاره د سرور په څیر ورته زون کې رامینځته کړو ، او له همدې امله موږ کولی شو ورته فرعي نیټ وکاروو ترڅو د داخلي IP پتې سره په اسانۍ سره وصل شو. موږ به دې ته "skywiz-app-with-consul-client-poc" وایو.

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

  • د یو اړخ یادښت په توګه، دلته یو ښه ښوونیز دی چې ما د قونسل کنیکټ سره د 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

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

  • کله چې دا د چلولو هڅه کوي، دا به د قونسل سرور لپاره اجازې ته اړتیا ولري، نو راځئ چې دوی اضافه کړو.
  • په کلستر ډشبورډ کې د "پوډ پتې سلسله" یادونه وکړئ او زموږ د "سکای ویز-کونسل-سرور-poc" فایر وال قواعد ته مراجعه وکړئ.
  • د IP پتې لیست ته د پوډ لپاره د پته حد اضافه کړئ او بندرونه 8301 او 8300 خلاص کړئ.

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

  • د قونسل UI ته لاړشئ او څو دقیقې وروسته به تاسو وګورئ چې زموږ کلستر د نوډز ټب کې څرګندیږي.

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

د کوبرنیټس سره د قونسل په ادغام سره د واک ورکولو میتود تنظیم کول

  • د قونسل سرور شیل ته بیرته راشئ او هغه نښه صادر کړئ چې تاسو مخکې خوندي کړي:

export CONSUL_HTTP_TOKEN=<SecretID>

  • موږ به زموږ د Kubernetes کلستر څخه معلوماتو ته اړتیا ولرو ترڅو د تصدیق میتود یوه بیلګه جوړه کړو:
  • kubernetes-host

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" سند واخلئ (د بیس 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>"

  • بیا موږ اړتیا لرو چې یو قاعده رامینځته کړو او دا نوي رول ته ضمیمه کړو. د دې برخې لپاره تاسو کولی شئ د قونسل 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

  • د هغه قاعدې ID ومومئ چې تاسو یې د محصول څخه رامینځته کړی.
  • د نوي قاعدې سره یو رول جوړ کړئ.

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

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

  • بیا د ترتیب نقشه رامینځته کولو لپاره لاندې جوړ شوي کمانډ وکاروئ [لینک]. مهرباني وکړئ په یاد ولرئ چې موږ د خپل خدمت نوم ته اشاره کوو، که اړتیا وي، دا بدل کړئ.

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

د تصدیق میتود ازموینه

اوس راځئ چې په عمل کې جادو وګورو!

  • د ورته لوړې کچې کیلي سره څو نور کلیدي فولډرونه جوړ کړئ (د مثال په توګه /sample_key) او ستاسو د خوښې ارزښت. د نویو کلیدي لارو لپاره مناسبې پالیسۍ او رولونه جوړ کړئ. موږ به وروسته بندیزونه ترسره کړو.

د هاشیکورپ قونسل د کوبرنیټس واک پیژندنه

د دودیز نوم ځای ازموینه:

  • راځئ چې خپل نوم ځای جوړ کړو:

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

  • یوځل چې کانټینر روان وي ، هلته لاړشئ او curl نصب کړئ.

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

  • د پوډ لپاره نوی ترتیب فایل جوړ کړئ. مهرباني وکړئ په یاد ولرئ چې ما د کار خوندي کولو لپاره د curl نصب کول شامل کړل :)

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

  • اجازه ورنکړل شوه. اوه، موږ د مناسبو اجازو سره تړل شوي نوي مقررات اضافه کول هیر کړل، راځئ چې همدا اوس وکړو.

پورته پورتنۍ مرحلې تکرار کړئ:
الف) د "کسټم-سا/" مخکیني لپاره ورته پالیسي جوړه کړئ.
ب) یو رول جوړ کړئ، هغه ته "د دودیز رول" نوم ورکړئ
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>”

  • تاسو هم کولی شئ ډاډ ترلاسه کړئ چې دا نښه په "کسټم-ns/" کې kv ته لاسرسی نه ورکوي. یوازې پورتنۍ کمانډ د "custom-sa" د مخکیني "custom-ns" سره بدلولو وروسته تکرار کړئ.
    اجازه ورنکړل شوه.

د پوښښ بېلګه:

  • دا د یادولو وړ ده چې د ټولو قواعدو پابند نقشه به د دې حقونو سره په نښه کې اضافه شي.
  • زموږ کانټینر "poc-ubuntu-custom-sa" په ډیفالټ نوم ځای کې دی - نو راځئ چې دا د مختلف قواعدو پابندۍ لپاره وکاروو.
  • پخوانۍ مرحلې تکرار کړئ:
    الف) د "ډیفالټ/" کلیدي مخکینۍ لپاره ورته پالیسي جوړه کړئ.
    ب) یو رول جوړ کړئ، نوم یې "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 کې د هر ټوکن لپاره مشخص شوي اسناد وګورئ. لکه څنګه چې تاسو لیدلی شئ، زموږ اوسنی نښه یوازې یو "ګمرک-سا-رول" لري چې ورسره وصل دی. هغه نښه چې موږ یې اوس کاروو هغه وخت رامینځته شوی کله چې موږ لاګ ان شو او یوازې یو قاعده پابند وه چې بیا ورته مطابقت درلود. موږ اړتیا لرو چې بیا ننوتل او نوې نښه وکاروو.
  • ډاډ ترلاسه کړئ چې تاسو د "کسټم-سا/" او "ډیفالټ/" kv لارو څخه لوستلی شئ.
    د برياليتوب!
    دا ځکه چې زموږ "poc-ubuntu-custom-sa" د "custom-sa" او "default-ns" قواعدو پابندۍ سره سمون لري.

پایلې

TTL token mgmt؟

د دې لیکلو په وخت کې، د دې اختیار کولو میتود لخوا رامینځته شوي ټوکنونو لپاره د TTL ټاکلو لپاره کومه مدغم لاره شتون نلري. دا به یو ښه فرصت وي چې د قونسل اجازې خوندي اتومات چمتو کړئ.

د TTL سره په لاسي ډول د نښه کولو لپاره یو اختیار شتون لري:

امید دی چې په نږدې راتلونکي کې به موږ وکولی شو کنټرول کړو چې څنګه ټوکنونه رامینځته کیږي (په هره قاعده یا د اختیار کولو میتود) او TTL اضافه کړئ.

تر هغه وخته پورې، دا وړاندیز کیږي چې تاسو په خپل منطق کې د logout پای ټکی وکاروئ.

زموږ په بلاګ کې نورې مقالې هم ولولئ:

سرچینه: www.habr.com

Add a comment