Introductio ad Hashicorp Consulis Kubernetes LICENTIA

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

Iustum est, post remissionem Hashicorp consul 1.5.0 ineunte Maio MMXIX, in Consule auctorizare potes applicationes et officia in patria Kubernetes decurrentes.

In hoc doceo gradatim creabimus POC (Proba notionis, PoC) hoc novum notam demonstrans. Exspectatus es ut Kubernetes et Hashicorpus consulis praecipuam notitiam habere potes. Dum nube aliqua suggestum vel praemissarum ambitum uti potes, in hoc doceo utetur Google Cloud rostris.

Overview

Si ad Consul documentum de sua licentia methodo tradendumdabimusque celerem contemplationem eius propositi et usus casus, necnon quaedam technicae singulares et generalem considerationem logicam. Magnopere commendo legendi saltem semel ante procedendum, ut nunc omnia exponam ac mandendo.

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

Diagram I: Commentarium Officiale perspectum consulis ex auctoritate methodi

Intueamur Documenta pro certa auctoritate Kubernetes methodo.

Certe utile est ibi informationem, sed non est dux in actu omnibus uti. Ergo, sicut aliquis sanus homo, percurris interreti ad regimen. Et tunc deficis. Contingit. Hoc figamus.

Priusquam ad nostram POC creandam accedamus, ad inspectionem methodi concessionis consulis (Diagram I) revertamur et in contextu Kubernetes excolatur.

Architecture

In hoc doceo, in apparatus separato consule creabimus, qui cum Kubernetes botrum consulem inauguratum communicabit. Faciemus ergo applicationem phantasticam nostram in legumine et methodo authoritatis conformatae ad legendum a nostro consule clavem/pretii copia.

Figura infra singula architecturae quam in hoc doceo creamus, tum logica post modum auctoritatis, de quo postea dicetur.

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

Tabula II: Kubernetes LICENTIA Methodi Overview

Celer nota: Consul consul extra Kubernetes botrum ad hoc opus vivere non indiget. Sed sic et hoc facere potest.

Consule igitur adhibito schemate (I Diagram I) et Kubernetes ad illud applicando, schema supra (Diagram II) consequitur, et logica hic est:

  1. Quodlibet vasculum servitii rationem ei coniunctam habebit, cuius signum JWT generatum et notum ab Kubernetes habebit. Hoc signum etiam in vasculo per defaltam inseritur.
  2. Nostra applicatio seu ministerium intra vasculum login mandatum inchoat clienti nostro Consuli. Petitio login etiam includuntur nostrum indicium et nomen specialiter creatus auctoritas methodi (Kubernetes type). Hic gradus #2 respondet ad gradum 1 consulis schematis (Schemae 1).
  3. Cliens noster Consul deinde hanc petitionem ad consulem nostrum proferet.
  4. CANTO! Hic est ubi consul server authenticitatem petitionis verificat, informationes colligit de identitate petitionis et comparat cum quibusvis regulis praedefinitis coniungendis. Infra alterum schema illustrandum est. Hic gradus respondet gradibus 3 , 4 et 5 consulis perceptio schematis ( Diagram I ) .
  5. Servus Consul consulem nostrum signum cum permissionibus generat secundum modum certae auctoritatis nostrae regulae (quam definivimus) circa identitatem rogantis. Hoc signum erit tunc remitte. Hoc respondet ad gradum 6 tabulae consulis (Diagram 1).
  6. Cliens noster consul in medium procedit signum ad petitionem vel servitium petens.

Applicatio nostra seu ministerium hoc Consule uti nunc potest tessera ad communicandum cum nostro Consule data, prout ex privilegiis tesserarum statuitur.

Magica revelatur!

Nam qui ex vobis non felices sunt sicut lepus ex bireto et volentes scire quomodo operatur. lepus foramen".

Ut ante, noster gradus "magicae" (Figura 2: Gradus IV) est ubi consul petitionem confirmat, informationes colligit de petitione, eamque comparat quibusvis regulis praedefinitis coniungitur. Hic gradus respondet gradibus 4 , 3 et 4 consulis perceptio schematis ( Diagram I ) . Infra schema est (ad Diagramma III), cuius propositum est evidenter ostendere quid actu eveniat sub cucullo certa rato Kubernetes methodo.

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

Diagram 3: Magica revelatur!

  1. Incipiente puncto, clientis noster consul login petitionem ad consulem nostrum cum Kubernetibus rationum tesseram et instantiam specificam nomine concessionis methodi, quae antea creatus est, promovet. Huic gradui respondet gradus 3 in praecedenti circuli explicatione.
  2. Nunc server consul (vel princeps) authenticitatem receptae indicii comprobare debet. Ideo consulet Kubernetes botrum (per clientem consulem) et, cum opportunis permissionibus, investigabimus an signum genuinum sit et quisnam conveniat.
  3. Petitio convalidata inde ad ducem consulem revertitur, et consul ministrans modum concessionis spectat exempli causa cum certo nomine e petitione login (et genus Kubernetes).
  4. Consul princeps modum auctoritatis certae exempli (if found) designat et legit praecepta ligandi quae ei coniuncta sunt. Deinde has regulas legit et eas comparat attributis veri- tatibus.
  5. TA-dah! Transeamus ad 5 gradum in praecedenti explicatione.

Curre consul-server in iusto virtualis apparatus

Posthac potissimum praecipiam quomodo hoc POC creandum, saepe in bulleta puncta, sine plenae sententiae explicationibus. Item, ut supra dictum est, GCP utar infrastructuram omnem creare, sed idem infrastructuram alibi creare potes.

  • Satus virtualis apparatus (exempli gratia/servo).

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

  • Regulam creare pro firewall (securitatem coetus in AWS);
  • Idem machinae nomen utrique regulae et tag retis assignare placet, hoc in casu "skywiz consul-serv-poc".
  • Locum computatrum tuum IP inscriptionem invenire et eam ad indicem fontei IP inscriptionum adde ut ad usoris interfaciem accedere possimus (UI).
  • Apertum portum (VIII)D pro III. Click crea. Hoc firewall mox iterum mutabimus [Link].
  • Adde regulam firewall ad instanciam. Redi ad VM ashboardday in Servo Consule et adde "skywiz consul-servi-poc" ad tags retis campum. Click Servare.

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

  • Consulem in virtualis machina ina, hic reprehendo. Memento debes consul versionis ≥ 1.5 [link]
  • Unum nodi consulem faciamus - conformatio haec est.

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

  • Pro accuratiore duce de consule inaugurando et botrum 3 nodis erigendis, vide hic.
  • file /etc/consul.d/agent.json ut sequitur [Link]:

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

  • Incipit servo consulis nostri:

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

  • Fasciculum output videas et tandem cum "... renovatio saepta ACLs".
  • Invenire externam IP adscriptionem consulis servientis et navigatrum aperi cum hac IP inscriptione in portu 8500. Fac ut UI aperiat.
  • Conare addere clavis / par pretii. Error esse debet. Causa est, quod consulem servo ACL oneravit et omnes regulas debiles fecit.
  • Redi ad testam tuam in consule server et processum in curriculo vel aliquo alio modo incipias ut currendo accedas et sequentia ingredere:

consul acl bootstrap

  • Invenire valorem "SecretID" et ad UI redire. In ACL tab, intrant secretum ID tesserae quam proxime exscripsimus. Exemplar alibi SecretID, postea opus erit.
  • Nunc adde clavem/par pretii. Pro hoc POC, haec adiunge: clavis: "custodi-ns/test_key", valor: "in folder in usu-ns sum!"

Botrus Kubernetes immissus ad applicationem cum consule cliente ut Daemonset

  • Botrus crea in K8s (Kubernetes). In eadem zona nos creabimus ac ministrans ad accessum velociorem, et ideo eodem subneto uti possumus cum inscriptionibus IP internis facile coniungere. Appellabimus eum "cum consulum client-poc" skywiz.

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

  • Ut a parte notae, hic est bonus tutorial I accessi dum ascendens POC Consul botrum cum Consule Connect.
  • Volumus etiam utere chart hashicorp galeae cum lima extensa valores.
  • Instrue et configurare Helm. Configurationis gradus:

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

  • Applicare galeam chart;

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

  • Cum currere tentaverit, licentias servo consulis indigebit, eas ergo addamus.
  • Nota "Pod Inscriptio Range" in botro ashboardday sitam et ad nostrum "cancel-pocum" firemarium regulam referri.
  • Locutionem range pro vasculum addere ad indicem inscriptionum IP et portus apertis 8301 et 8300.

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

  • Vade ad Consulem UI et post aliquot minutas videbis botrum nostrum in nodis tab.

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

Configurans LICENTIA methodo integrandi consul cum Kubernetes

  • Redi ad consulem testam et emunda signum quod antea servasti;

export CONSUL_HTTP_TOKEN=<SecretID>

  • Indicium e nostris Kubernetes botrum debebimus ad instanciam auth methodi creandam;
  • kubernetes-hospes

kubectl get endpoints | grep kubernetes

  • kubernetes-ob-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:

  • Vestigium base64 encoded est, ita minutum illud utens instrumentum tuum.Link]
  • kubernetes-ca-cert

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

  • Accipe "ca.crt" libellum (post base64 decoctionem) et scribe in fasciculum "ca.crt".
  • Nunc auth methodum instantia, et locatores cum bonis acceptis repone.

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

  • Deinde regulam condere necesse est eamque novo munere adiungere. Hac parte uti potes Consul UI, sed linea imperio utemur.
  • Scribere regulae

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

  • Applicare regula

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

  • Invenire ID regulae quam ex output creatae sunt.
  • Partem cum nova regula crea.

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"'

Denique configurationes

permissionibus

  • Accessum crea ius. Nobis necesse est licentiam consuli dare cognoscendi et cognoscendi identitatem rationis servitii K8s tesserae.
  • Scribere haec in tabella [link]:

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

  • Faciamus accessum ius

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

Connectens ad consulem Client

  • Ut dictum est hicPlures optiones daemonset connectendi, sed ad solutionem simplicem sequentem movebimus;
  • Applicare sequentem fasciculum [Link].

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

  • Tum uti hoc builtin mandatum ad configmap creare [Link]. Quaeso note quod de nomine officii nostri referamus, si opus fuerit, repone.

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

Testis auth modum

Nunc videamus magicam agendo!

  • Plures plures folders clavis crea cum eodem clave summo gradu (i.e. /sample_key) et electionis tuae valorem. Novas semitas clavis clavis ac muneribus aptas rationes crea. Vincula postea faciemus.

Introductio ad Hashicorp Consulis Kubernetes LICENTIA

Consuetudinem spatii nominandi test:

  • Nominum nostrorum spatio creemus:

kubectl create namespace custom-ns

  • Vasculum faciamus in spatio novo nostro. Configurationem scribe pro vasculum.

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

  • Sub crea:

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

  • Postquam continens currit, ibis et Crispum institue.

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

  • Nunc petitionem login mittemus ad Consulem utens methodo concessionis antea creavimusLink].
  • Ingressus indicium videre obsequium tuum;

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

  • Scribe haec ad fasciculum in quo est;

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

  • Login!

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

  • Ut gradus superiores in una linea compleas (quia plures probationes curremus), potes facere sequentia:

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

  • Opera! Ut at dictum nisi. Nunc SecretID sume et ad clavem/pretii accessum habere debemus.

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

  • Potes base64 "valorem" decode et videre quod congruit pretii in consuetudinariis/test_key in UI. Si tantundem supra in hac doceo uteres, valor tuus encoded IkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi.

Ratio muneris test User:

  • Facere consuetudinem ServiceAccount utens hoc mandatum [Link].

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

  • Novam configurationem lima pro vasculum crea. Quaeso note me institutionem Crispum inclusam ad laborem servandum :)

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

  • Post hoc concha currite intra continentem.

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

  • 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

  • Licentia negavit. Oh, obliti sumus novas regulas cum opportunis permissionibus ligare addere, quod nunc agamus.

Superiora iterare vestigia supra:
a) Policy identitatem crea pro praepositione "custo-sa/".
b) Partem crea, eam appella « consuetum munus ».
c) Documentum affigere ad partes.

  • Regulam-Binding crea (modo ex cli/api fieri potest). Nota diversam significationem selectoris vexillum.

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

  • Rursum ex "poc-ubuntu-cus-sa" continens. Prosperitas!
  • Reprehendo sicco accessum nostrum ad iter clavis consuetudinis.

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

  • Potes efficere ut hoc signum non aditum ad kv in "custodi-ns/" tribuat. Iuste repetere praeceptum superius post "custum-sa" cum praepositione "custo-ns".
    Licentia negavit.

Exemplum deaurabis:

  • Notatu dignum est omnia ligamina mappings regulae cum his iuribus adicere.
  • Nostra continens "poc-ubuntu-cus-sa" in spatio nominali defalta est, ut eo utamur pro alia regula ligandi.
  • Vestigia iterare priora:
    a) Facere eundem Policy pro "default/" clavem praepositionis.
    b) Partem crea, eam nominare "default-ns-munus"
    c) Documentum affigere ad partes.
  • Create a Rule-Binding (modo fieri potest ex 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"'

  • Redi ad nostrum "poc-ubuntu-cus-sa" continens et tentare ad viam "default/" kv accedere.
  • Licentia negavit.
    Inspicere potes certa documentorum pro unoquoque signo in UI sub ACL > Signis. Ut perspicis, signum hodiernum tantum unum "custo-sa-mune" ei adnexum habet. Vestigium quo nunc utimur generatum est cum initium fecimus et una tantum regula ligatura erat quae tunc temporis congruebat. Opus est iterum aperire et novo signo utere.
  • Fac ut ex utroque "custu-sa/" et "default/" kv semitas legere possis.
    Success!
    Causa est, quod noster "poc-ubuntu-cus-sa" "cus-sa" et "default-ns" regulae ligamentorum respondet.

conclusio,

ttl agie mgmt?

In tempore huius scriptionis, nulla est integra via ad designandum TTL signa quae ex hac concessionis methodo generantur. Fantastica occasio esset ut secure automationem Consulis auctoritatis praeberet.

Est optio manually creare signum TTL:

Utinam in proximo futuro poterimus regere quomodo signa generantur (per modum regulae vel auctoritatis) et addere TTL.

Hucusque suggeritur quod in logica tua concludere finem uteris.

Legunt etiam alia capitula in nostro diario:

Source: www.habr.com

Add a comment