áá áá á¨á°ááá á áá
á áá
áááŞáŤ ááľáĽ á°á¨á á á°á¨á áĽáááĽáŤáá
á á ááá áĽááł
áá° á¨ááľá
áĽááá ááá፠1ᥠá¨áááľá á¨áááł áá´ ááá ááááŤ
áá° ááľáĽ áĽáá
áĽááἠááᣠáĽá፠á áá áá¨á á áᣠáá áááá á áľááá áĽáá´áľ áá áá áĽáá°ááťá áá ááá áááŞáŤ á¨ááᢠáľááá ᣠáá áĽáá° ááááá á¤áá á°áᣠááááŞáŤ á áááá¨áĄá ááááłáᢠáĽá á¨ááŤ... ááľáááᢠáŤááĽáá. áá á áĽááľá°áŤáá.
á¨áĽáá POC áááá á á¨ááá áá˝á á ááľáŁ áá° áááľá á¨áááľ áľááśá˝ á á ááá áĽááł áĽááááľ (á˛áŤááŤá 1) áĽá á Kubernetes á ááľ ááľáĽ áĽááĽáŤáá˘
áĽá ááá
á áá áá áá¨áŞáŤ áľáá ááľ á¨áŠá áááľáľ áááľá°á áá á¨á°áŤáá á¨áááľá á°áá á áá á¨áááá á¨áááľá á áááá á á°áᨠáá˝á áá áĽáááĽáŤááᢠá¨á፠á¨áá á˛á á áááŹá˝á á ááľ ááľáĽ áĽáááĽáŤáá áĽá á¨á°ááá¨áá á¨áááľ á á°áŁáĽ áá´áŤá˝áá á¨áááľá ááá/áá áá¨ááťá˝á áááá ἠáĽáá ááááá˘
á¨áá á áłá˝ áŤáá áĽááá ááá፠á áá áá áá¨áŞáŤ áľáá ááľ ááľáĽ á¨ááááĽá¨áá á ááá´áá¸á áĽáá˛áá á¨áááł áá´á á áááᎠá áááá ááá¨ááŤáᣠáá á á áá ááĽáŤáŤáá˘
áĽáá 2ᥠá¨áŠá áááľáľ á¨áááł áá´ á á ááá áĽááł
ááŁá ááľáłááťáĄ áá áĽáá˛á°áŤ á¨áááľá á áááአá¨áŠá áááľáľ áááľá°á áá ááá á áŤáľáááááᢠáá á á, á áá ááááľ áĽá á áá ááááľ ááľá¨á áá˝áá.
áľááá á¨áááľáá á á ááá áĽááł á˛áŤááŤá (áĽááá ááá፠1) ááľá°á áŠá áááľáľ á áĽáą áá á áá°áá á á¨áá áŤááá áĽááá ááá፠áĽááááá (áĽááá ááá፠2) áĽá áĽáá áŤáá á áááᎠáĽáá°áá¨á°áá áá á˘
- áĽáŤááłááą ááľ á áŠá áááľáľ á¨á°áá ᨠáĽá á¨ááłáá JWT áśá¨á á¨áŤá á¨á áááááľ á áŤáááľ ááŤááᢠáá ááľáá°áŤ á ááŁáŞááľ á ááľ ááľáĽ ááĽáˇáá˘
- á ááľ ááľáĽ á¨áĽá áá°áá áŞáŤ ááá á áááááłá˝á ááááľá á°áá ááťá˝á á¨ááá˘áŤ áľáĽáá ááááŤáᢠá¨ááá˘áŤ áĽáŤáá á¨áĽáá ááľáá°áŤ áĽá áľáá˝ááá áá¨ááŤá á á°áᨠáááł á¨á°áá ᨠá¨áááł áá´ (á¨áŠá áááľáľ ááááľ). áá á°á¨á #2 á¨áááľá á˛áŤááŤá (áĽá áľ 1) á°á¨á 1 áá ááááłáá˘
- á¨áááľá á°áá áá˝á áá áá áĽáŤá áá° áááľá á ááááŤá˝á áŤáľá°ááááá˘
- á áľááľ! á¨áááľá á áááአá¨áĽáŤááá áľááááááľ á¨ááŤá¨áááĽá áľáŁ áľááĽáŤáá ááááľ áá¨á á¨áá°á áľáĽá áľ áĽá á¨ááá¸áá á°áŤáŤáĽ á áľá-á¨á°áááš á áá˝ áá á¨ááŤááłáľá¨á áá ááᢠáá áá áááłá¨áľ áá áĽááá ááá፠á¨áá á áłá˝ á áᢠáá áĽááá á¨áááľá á á ááá áĽááł á˛áŤááŤá (áĽááá ááá፠3) á°á¨ááá˝ 4 ᣠ5 áĽá 1 áá ááááłáá˘
- á¨á áááľá á ááááŤá˝á á¨á áŤááá ááááľ á áááá¨áľ á á°á áá°á á¨áááľ áá´ á°ááŚáťá˝á (á ááá˝áá) áá°á¨áľ áááľ áŤáá á¨áááľá ááľáá°áŤ áŤáááŤáᢠá¨á፠áŤáá ááľáá°áŤ áááś áááŤáᢠáá á¨áááľá áĽááá ááá፠(áĽááá ááá፠6) á°á¨á 1 áá ááááłáá˘
- á¨áááľá á°áá ááťá˝á ááľáá°áŤáá áá° á áŤáá áá°áá áŞáŤ ááá á áááááľ áŤáľá°ááááá˘
á¨á áá°áá áŞáŤ ááá á áááááłá˝á á áá áá á á¨áááľá ááľáá°áŤ á°á á á á¨áááľá áłáłá˝á áá ááááááľ á áśá¨á áአááĽáśá˝ ááá°ááá˘
á áľááľ á°ááá !
á¨áŁááᣠááĽáł áĽáá¸á á áááŁáľ á°áľá°á ááááá˝á áĽá áĽáá´áľ áĽáá°áá°áŤ ááá áááľááá... áĽáľá˛ ááłáŤá˝áᢠáĽáá¸á ááľááľÂť.
áá°á á˛á áĽáá°á°áááá á¨á âá áľááľâ áĽááá (ááľá 2ᥠá°á¨á 4) á¨áááľá á áááአáĽáŤááá á¨ááŤá¨áááĽá áľáŁ áľááĽáŤáá áá¨á á¨áá°á áľáĽá áľ áĽá á¨ááááá á°ááá á áľá-á¨á°áááš á áá˝ áá á¨ááŤááłáľáá áľ ááᢠáá áĽááá á¨áááľá á á ááá áĽááł á˛áŤááŤá (áĽááá ááá፠3) á°á¨ááá˝ 4 ᣠ5 áĽá 1 áá ááááłáᢠá¨áłá˝ áŤáá áĽááá ááá፠(áĽááá ááá፠3) á˛áá áááá á áľááá áá áĽá¨á°áá ᨠáĽááłá á ááá˝ áááłá¨áľ áá á áá¨ááŤá áľá á¨á°áá°á á¨áŠá áááľáľ áááľ áá´.
áĽááá ááá፠3ᥠá áľááľ á°ááá !
- áĽáá° áááťáŁ á¨áááľá á°áá ááťá˝á á¨ááá˘áŤ áĽáŤááá á Kubernetes áá፠áśá¨á áĽá áá°á á˛á á¨á°áá á¨áá á¨áááł áá´á á áá áá áá° áááľá á ááááŤá˝á áŤáľá°ááááᢠáá á°á¨á á ááľáá á¨áá¨áł ááĽáŤáŞáŤ á¨á°á¨á 3 áá ááááłáá˘
- á áá á¨áááľá á áááá (ááá ááŞ) á¨á°áá ááá ááľáá°áŤ áľááááááľ áá¨ááἠá áá áľá˘ áľááá á¨áŠá áááľáľ áááľá°áá (á áááľá á°áá á á áŠá) áŤáááŤá áĽá á¨á°áá˘á áááśá˝ áá ááááą áĽááá°á áááá áĽá á¨áá áĽáá°áá áááá áĽááááŤááá˘
- á¨á°á¨ááá á áĽáŤá áá° áááľá á᪠ááááłáᣠáĽá á¨áááľá á áááአá¨áááľ á á°áŁáĽ áá´á áááłá á¨ááá˘áŤ áĽáŤáá (áĽá á¨áŠá áááľáľ á áááľ) á á°á áá°á áľá áááá¨áłáá˘
- á¨áááľá ááŞá á¨á°ááá¸áá á¨áááľ áá´ ááłá (á¨á°áá) áááŤá áĽá á¨áĽáą áá á¨á°áŤáŤááľá á áľááłá á°ááŚá˝ áŤááŁáᢠá¨ááŤá áĽááá á á°ááŚá˝ áŤááŁá áĽá á¨á°á¨áááĄáľ á¨ááááľ áŁá áŞáŤáľ áá áŤááłáľáŤá¸áá.
- áł-áłá ! á áá°áá á¨áá¨áł ááĽáŤáŞáŤ áá° á°á¨á 5 áĽáááľá˘
á¨áááľá á ááááá á áá°á á á¨áášáá áá˝á áŤááą
á¨á áá á ááᣠáĽá á áĽáááá áá áá áá POC áĽáá´áľ ááá á áĽáá°ááťá áááŞáŤáá˝á áĽá°áŁááᣠáĽá áá á áĽááľ ááĽáŚá˝áŁ áŤá áá áá¨áá° ááá ááĽáŤáŞáŤá˘ áĽáá˛áá, áá°á á˛á áĽáá°á°áááá, áááá áá á¨á° áááľ áááá á GCP áĽá áááá, ááá áá á á¨áľááá áŚáł á°ááłáłá áá á¨á° áááľ ááá á áá˝áá.
- á¨áášáá áá˝áá (ááłá/á áááá) ááááŠá˘
- ááá¨ááá (á¨á°á áááľ áĄáľá á AWS) á á ááá áŠáĄ
- á°ááłáłáŠá á¨áá˝á áľá áá°ááĄá áá áá ááłá¨áá¨áĽ áá፠ááľá áľ áĽáááááᣠá áá á ááŁá "skywiz-consul-server-poc"á˘
- á¨á á¨áŁá˘áá á¨áŽáááŠá°á á áá á áľáŤáť áááá áĽá áá° ááá á áá á áľáŤáťáá˝ áááá áŤáááľ áľááá á¨á°á áá á áááá˝ (UI)á˘
- áá°áĽ 8500 áUI áááľá˘ áá áá á á
áŤáľááᢠáá
áá áá¨ááá á á
áᥠáĽááááŁáá
áłáá˛á ]. - á ááłáá áá á¨áá¨ááá á áá áŤááᢠá áŽááąá á áááá áá áá° VM áłá˝áŚááľ á°áááľ áĽá "skywiz-consul-server-poc" á ááľááá áááŤáá˝ ááľá áá á¨ááᢠá áľáááĽá á á áŤáľááá˘
- áááľáá á áááŁá áá˝á áá ááŤáᣠáĽáá áŤá¨áááĄá˘ áŤáľáłááą á¨áááľá áľáŞáľ ⼠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" áĽáááááá˘
- áĽáá° ááľáłááťáŁ ᨠ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 ááááąá˘
- áá° áááľá UI áááą áĽá á¨áĽááľ á°áááá˝ á áá á¨áĽá áááľá°á á á áááá˝ áľá ááľáĽ ááłáŤáá˘
áááľáá á¨áŠá áááľáľ áá á ááááľ á¨áááľ áá´á áááá
- áá° áááľá á áááá áźá ááááą áĽá áá°á áĽáá áŤáľáááĄáľá ááľáá°áŤ áááŠáĄ
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
á¨áá¨áá፠áá´á ááá¨á
á áá á áľááąá á á°ááŁá áĽáá¨á!
- á á°ááłáłáŠ á¨áá°á-á°á¨á ááá áĽá á°á¨á᪠ááá á áááá˝á ááá አ(áááľá. / ááá_ááá) áĽá á¨áá¨áĄáľ ááᢠáá á˛áľ ááá ááááśá˝ á°áᢠááá˛áá˝á áĽá áááá˝á ááá áŠá˘ áá°áŞáŤáášá á áá áĽáá°ááááá˘
áĽá á¨áľá áŚáł áá¨áŤáĄ-
- á¨áŤáłá˝áá á¨áľá áŚáł áĽááá ááĄ-
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á áááá°á á¨á°ááá ááááľ á¨ááᢠá°á áááą á¨á°á á á á¨áááľá áááľ á ááśáá˛áá ááá á¨áĽ á áŁá áĽáŠ á ááŁá ááá˘
á á˛á˛á¤á ááľáá°áŤ á áĽá á¨ááá á á ááŤá á ááĄ-
https://www.consul.io/docs/acl/acl-system.html#acl-tokens
á¨ááá፠áá - áá ááľáá°áŤ á¨ááťáá áľ ááᢠ(á ááŤáᥠá áááľá 1.5.0 áá á°á¨ááŻá)- á áĽá
áááá á/ááááá áĽáť á áá˘
https://www.consul.io/api/acl/tokens.html#expirationtime
á á áἠáá ááľáĽ áśá¨áá˝ áĽáá´áľ áĽáá°ááá አ(á á°áἠááá á¨áááł áá´) ááááŁá á áĽá TTLá ááá¨áá áĽáá°ááá˝á á°áľá áĽáá°ááááá˘
áĽáľá¨á፠áľá¨áľáŁ á áááá ááľáĽ á¨áááŁáľ á¨áá¨á¨áť ááĽáĽá áĽáá˛á áá ááá¨áŤáá˘
https://www.consul.io/api/acl/acl.html#logout-from-auth-method https://www.consul.io/docs/acl/acl-auth-methods.html#overall-login-process
á áĽááá˝á áá ááá˝ á˝ááá˝á áŤááĽáĄáĄ-
áŤáááᾠᨠClickHouse áá° ClickHouse á¨áááľ áááŁáą áá á ááŁá? GitLab CI/CD á á áá áá áĽá á¨á§á᧠ááľááŽá˝á áĽáá´áľ ááľáŹáľ áĽáá°ááťá Docker ááľáá˝á áááááľ áśáľáľ ááá áá´áá˝ Traefik áĽáá° Ingress áááŁá áŞáŤ áK8S áĽá ááĽá áŤáá¸á á¨á°ááŤáŠ á¨áľá ááŽáááśá˝ ááľáŹ á¨á´áááŤá áŚáľ ááŹáľááᢠááŤáľá áĽá áááá˝ á áááľ áĽáá´áľ ááá ááľá¨á áĽáá°ááľá˝á
ááá: hab.com