ืึทื ืก ืจืขืื, ื ืึธื ืืขืืืื ื
ืืื ืืขื ืืืืึธืจืืึทื ืืืจ ืืืขืื ืฉืึทืคึฟื ืฉืจืื ืืืจื ืฉืจืื
ืึธืคึผืฉืึทืฆืื ื
ืืืื ืืืจ ืืืื ืฆื
ืืืึทืืจืึทืืข 1: ืึทืคืืฉืึทื ืืืืขืจืืืืง ืคืื ืื ืงืึธื ืกืื ืืขืจืืืืืขื ืืฉ ืืืคึฟื
ืืึธืืืจ ืึทืจืฒึทื ืงืืงื
ืืืืขืจ, ืขืก ืืื ื ืืฆืืง ืืื ืคึฟืึธืจืืึทืฆืืข ืืึธืจื, ืึธืืขืจ ืขืก ืืื ืงืืื ืืืขืืืืืึทืืขืจ ืืื ืฆื ื ืืฆื ืขืก ืึทืืข. ืึทืืื, ืืื ืืขืืขืจ ืืึทืืึธืจืื ืืขื ืืฉ, ืืืจ ืืืกืคืึธืจืฉื ืื ืืื ืืขืจื ืขื ืคึฟืึทืจ ืืืืืึทื ืก. ืืื ืืขืืึธืื ... ืืืจ ืคืึทืจืืึธืื. ืขืก ืืขืฉืขืื. ืืื ืก ืคืึทืจืจืืืื ืืขื.
ืืืืืขืจ ืืืจ ืคืึธืจืืขืฆื ืฆื ืฉืึทืคึฟื ืืื ืืืขืจ POC, ืืึธืื ืืื ืื ืืืื ืฆืืจืืง ืฆื ืื ืืืืขืจืืืืง ืคืื ืงืึธื ืกืื ืก ืืขืจืืืืืขื ืืฉ ืืขืืืึธืืก (ืืืึทืืจืึทืืข 1) ืืื ืจืึทืคืื ืืจื ืขืก ืืื ืืขื ืงืึธื ืืขืงืกื ืคืื Kubernetes.
ืึทืจืงืึทืืขืงืืฉืขืจ
ืืื ืืขื ืืืืึธืจืืึทื, ืืืจ ืืืขืื ืฉืึทืคึฟื ืึท ืงืึธื ืกืื ืกืขืจืืืขืจ ืืืืฃ ืึท ืืึทืืื ืืขืจ ืืึทืฉืื ืืืึธืก ืืืขื ืืืขืจืืขืื ืืื ืึท Kubernetes ืงื ืืื ืืื ืื ืงืึธื ืกืื ืงืืืขื ื ืืื ืกืืึทืืืจื. ืืขืจื ืึธื, ืืืจ ืืืขืื ืฉืึทืคึฟื ืืื ืืืขืจ ืืึธืง ืึทืคึผืืึทืงืืืฉืึทื ืืื ืื ืคึผืึธื ืืื ื ืืฆื ืืื ืืืขืจ ืงืึทื ืคืืืืขืจื ืืขืจืืืืืขื ืืฉ ืืืคึฟื ืฆื ืืืืขื ืขื ืคึฟืื ืืื ืืืขืจ ืงืึทื ืกืึทื ืฉืืืกื / ืืืขืจื ืงืจืึธื.
ืื ืืืึทืืจืึทืืข ืืื ืื ืืขืืึทืืืก ืื ืึทืจืงืึทืืขืงืืฉืขืจ ืืืึธืก ืืืจ ืฉืึทืคึฟื ืืื ืืขื ืืืืึธืจืืึทื, ืืื ืืขืืื ื ืืื ืื ืืึธืืืง ืืื ืืขืจ ืื ืืขืจืืืืืขื ืืฉ ืืืคึฟื, ืืืึธืก ืืืขื ืืืื ืืขืจืงืืขืจื ืฉืคึผืขืืขืจ.
ืืืึทืืจืึทืืข 2: Kubernetes Authorization Method ืืืืขืจืืืืง
ื ืฉื ืขื ืืึธื: ืืขืจ ืงืึธื ืกืื ืกืขืจืืืขืจ ืืึทืจืฃ ื ืืฉื ืืขืื ืึทืจืืืก ืคืื ืื Kubernetes ืงื ืืื ืคึฟืึทืจ ืืขื ืฆื ืึทืจืืขืื. ืึธืืขืจ ืืึธ, ืขืจ ืงืขื ืืึธืก ืืึธื ืึทืืื ืืื ืึทื.
ืึทืืื, ืืืื ืืืจ ื ืขืืขื ืื ืงืึธื ืกืื ืืืืขืจืืืืง ืืืึทืืจืึทืืข (ืืืึทืืจืึทืืข 1) ืืื ืึทืคึผืืืืื ื ืงืืืขืจื ืขืืขืก, ืืืจ ืืึทืงืืืขื ืื ืืืึทืืจืึทืืข ืืืืื (ืืืึทืืจืึทืืข 2), ืืื ืื ืืึธืืืง ืืึธ ืืื ืืื ืืืื:
- ืืขืืขืจ ืคึผืึธื ืืืขื ืืึธืื ืึท ืกืขืจืืืืก ืืฉืืื ืึทืืึทืืฉื ืฆื ืืื ืืื ืึท JWT ืืึธืงืขื ืืืฉืขื ืขืจืืืืึทื ืืื ืืึทืืืืกื ืืืจื Kubernetes. ืืขื ืกืืืขื ืืื ืืืื ืื ืกืขืจืืึทื ืืื ืื ืคึผืึธื ืืืจื ืคืขืืืงืืึทื.
- ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืึธืืขืจ ืกืขืจืืืืก ืืื ืื ืคึผืึธื ืื ืืฉืืึทืฅ ืึท ืืึธืืื ืืึทืคึฟืขื ืฆื ืืื ืืืขืจ ืงืึธื ืกืื ืงืืืขื ื. ืื ืืึธืืื ืืขืื ืืืขื ืืืื ืึทืจืืึทื ื ืขืืขื ืืื ืืืขืจ ืกืืืขื ืืื ื ืึธืืขื ืกืคึผืขืฆืืขื ืืืฉืืคื ืืขืจืืืืืขื ืืฉ ืืืคึฟื (Kubernetes ืืืคึผ). ืืขืจ ืฉืจืื #2 ืงืึธืจืึทืกืคึผืึทื ืื ืฆื ืฉืจืื 1 ืคืื ืื ืงืึธื ืกืื ืืืึทืืจืึทืืข (ืกืงืืืข 1).
- ืืื ืืืขืจ ืงืึธื ืกืื ืงืืืขื ื ืืืขื ืืขืจื ืึธื ืคืึธืจืืืืื ืืขื ืืงืฉื ืฆื ืืื ืืืขืจ ืงืึธื ืกืื ืกืขืจืืืขืจ.
- ืืึทืืืฉ! ืืึธืก ืืื ืืื ืืขืจ ืงืึธื ืกืื ืกืขืจืืืขืจ ืืืขืจืึทืคืืื ืื ืึธืืึทื ืืืกืืื ืคืื ืื ืืขืื, ืงืึทืืขืงืฅ ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืื ืืืืขื ืืืืขื ืคืื ืื ืืขืื ืืื ืงืึทืืคึผืขืจื ืขืก ืืื ืงืืื ืคืืจืืื ืื ืคึผืจืืืืคืืื ื ืึผืืืื. ืื ืืขืจ ืืื ืื ืื ืืขืจ ืืืึทืืจืึทืืข ืฆื ืืืืืกืืจืืจื ืืขื. ืืขืจ ืฉืจืื ืงืึธืจืึทืกืคึผืึทื ืื ืฆื ืกืืขืคึผืก 3, 4 ืืื 5 ืคืื ืื ืงืึทื ืกืึทื ืืืืขืจืืืืง ืืืึทืืจืึทืืข (ืืืึทืืจืึทืืข 1).
- ืืื ืืืขืจ ืงืึธื ืกืื ืกืขืจืืืขืจ ืืืฉืขื ืขืจืืืฅ ืึท ืงืึธื ืกืื ืกืืืขื ืืื ืคึผืขืจืืืฉืึทื ื ืืืื ืืื ืืืขืจ ืกืคึผืขืกืืคืืขื ืืขืจืืืืืขื ืืฉ ืืขืืืึธืืก (ืืืึธืก ืืืจ ืืึธืื ืืืคืืื ื) ืืืขืื ืื ืืืืขื ืืืืขื ืคืื ืื ืจืืงืืืขืกื. ืขืก ืืืขื ืืขืจืืืขืจ ืฉืืงื ืืขื ืกืืืขื ืฆืืจืืง. ืืึธืก ืงืึธืจืึทืกืคึผืึทื ืื ืฆื ืฉืจืื 6 ืคืื ืื ืงืึธื ืกืื ืืืึทืืจืึทืืข (ืืืึทืืจืึทืืข 1).
- ืืื ืืืขืจ ืงืึธื ืกืื ืงืืืขื ื ืคืึธืจืืืขืจืื ืื ืกืืืขื ืฆื ืื ืจืืงืืืขืกืืื ื ืึทืคึผืืึทืงืืืฉืึทื ืึธืืขืจ ืืื ืกื.
ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืึธืืขืจ ืกืขืจืืืืก ืงืขื ืขื ืืืฆื ื ืืฆื ืืขื ืงืึธื ืกืื ืกืืืขื ืฆื ืืืขืจืืขืื ืืื ืืื ืืืขืจ ืงืึธื ืกืื ืืึทืื, ืืื ืืืฉืืืกื ืืืจื ืื ืคึผืจืืืืืืึทืืืฉืึทื ืคืื ืื ืกืืืขื.
ืื ืืึทืืืฉ ืืื ืืืืื!
ืคืืจ ืื ืคืื ืืืื ืืืืก ืืขื ืขื ื ืืฉื ืฆืืคืจืืื ืืื ืกืชื ื ืงืื ืืื ืืจืืืก ืคืื ื ืืื ืืื ืืืืื ืืืืกื ืืืืืืื ืขืก ืืจืืขื... ืืืืืจ ืืืจ "ืืืืืื ืืื ืืืฃ ืงืื ืืื ืืึธื'.
ืืื ืืขืจืืื ื ืคืจืืขืจ, ืืื ืืืขืจ "ืืึทืืืฉ" ืฉืจืื (ืคืืืืจืข 2: ืกืืขืคึผ 4) ืืื ืืื ืืขืจ ืงืึธื ืกืื ืกืขืจืืืขืจ ืึธืืขื ืืึทืงืืืฅ ืื ืืขืื, ืงืึทืืขืงืฅ ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืื ืืขืื ืืื ืงืึทืืคึผืขืจื ืขืก ืฆื ืงืืื ืคืืจืืื ืื ืคึผืจืืืืคืืื ื ืึผืืืื. ืืขืจ ืฉืจืื ืงืึธืจืึทืกืคึผืึทื ืื ืฆื ืกืืขืคึผืก 3, 4 ืืื 5 ืคืื ืื ืงืึทื ืกืึทื ืืืืขืจืืืืง ืืืึทืืจืึทืืข (ืืืึทืืจืึทืืข 1). ืื ืืขืจ ืืื ืึท ืืืึทืืจืึทืืข (ืืืึทืืจืึทืืข 3), ืืขืจ ืฆืื ืคืื ืืืึธืก ืืื ืฆื ืงืืืจ ืืืืึทืื ืืืึธืก ืืื ืคืืงืืืฉ ืืขืฉืขืขื ืืฉ ืืื ืืขืจ ืื ืงืึทืคึผืืขืจ ืกืคึผืขืฆืืคืืฉ Kubernetes ืืขืจืืืืืขื ืืฉ ืืืคึฟื.
ืืืึทืืจืึทืืข 3: ืื ืืึทืืืฉ ืืื ืืืืื!
- ืืื ืึท ืกืืึทืจืืื ื ืคืื ื, ืืื ืืืขืจ ืงืึธื ืกืื ืงืืืขื ื ืคืึธืจืืืขืจืื ืื ืืึธืืื ืืขืื ืฆื ืืื ืืืขืจ ืงืึธื ืกืื ืกืขืจืืืขืจ ืืื ืื Kubernetes ืืฉืืื ืกืืืขื ืืื ืกืคึผืขืฆืืคืืฉ ืืืึทืฉืคึผืื ื ืึธืืขื ืคืื ืื ืืขืจืืืืืขื ืืฉ ืืืคึฟื ืืืึธืก ืืื ืืขืืืขื ืืืฉืืคื ืคืจืืขืจ. ืืขืจ ืฉืจืื ืงืึธืจืึทืกืคึผืึทื ืื ืฆื ืฉืจืื 3 ืืื ืื ืคืจืืขืจืืืงืข ืงืจืืึทื ืืขืจืงืืขืจืื ื.
- ืืืฆื ืืขืจ ืงืึธื ืกืื ืกืขืจืืืขืจ (ืึธืืขืจ ืคืืจืขืจ) ืืึทืจืฃ ืฆื ืืึทืฉืืขืืืงื ืื ืึธืืึทื ืืืกืืื ืคืื ืื ืืืงืืืขื ืกืืืขื. ืืขืจืืืขืจ, ืขืก ืืืขื ืืึทืจืึทืื ืืื ืื Kubernetes ืงื ืืื (ืืืจื ืื ืงืึธื ืกืื ืงืืืขื ื) ืืื, ืืื ืื ืฆืื ืขืืขื ืคึผืขืจืืืฉืึทื ื, ืืืจ ืืืขืื ืืขืคึฟืื ืขื ืืืืก ืฆื ืืขืจ ืกืืืขื ืืื ืขืื ืืื ืฆื ืืืขืืขื ืขืก ืืขืืขืจื.
- ืื ืืืึทืืึทืืืืืึทื ืืขืื ืืื ืืึทื ืืืืืขืงืขืจื ืฆื ืืขืจ ืงืึธื ืกืื ืคืืจืขืจ, ืืื ืืขืจ ืงืึธื ืกืื ืกืขืจืืืขืจ ืงืืงื ืึทืจืืืฃ ืื ืืขืจืืืืืขื ืืฉ ืืขืืึธื ืืืึทืฉืคึผืื ืืื ืื ืกืคึผืขืกืืคืืขื ื ืึธืืขื ืคึฟืื ืื ืืึธืืื ืืขืื (ืืื Kubernetes ืืืคึผ).
- ืืขืจ ืงืึธื ืกืื ืคืืจืขืจ ืืืืขื ืึทืคืืื ืื ืกืคึผืขืกืืคืืขื ืืขืจืืืืืขื ืืฉ ืืขืืึธื ืืืึทืฉืคึผืื (ืืืื ืืขืคืื ืขื) ืืื ืืืืขื ื ืื ืืึทื ื ืคืื ืืืื ืืื ื ืึผืืืื ืืืึธืก ืืขื ืขื ืึทืืึทืืฉื ืฆื ืขืก. ืืขืจื ืึธื ืืืืขื ื ืื ืึผืืืื ืืื ืงืึทืืคึผืขืจื ืืื ืฆื ืื ืืืขืจืึทืคืืื ืืืืขื ืืืืขื ืึทืืจืืืืืฅ.
- ืืึทืงืข! ืืื ืก ืืึทื ืืืืฃ ืฆื ืฉืจืื 5 ืืื ืื ืคืจืืขืจืืืงืข ืงืจืืึทื ืืขืจืงืืขืจืื ื.
ืืืืคื ืงืึธื ืกืื-ืกืขืจืืืขืจ ืืืืฃ ืึท ืจืขืืืืขืจ ืืืืจืืืึทื ืืึทืฉืื
ืคึฟืื ืืืฆื ืืืืฃ, ืืื ืืืขื ืืขืจืกืื ืก ืืขืื ืื ืกืืจืึทืงืฉืึทื ื ืืืืฃ ืืื ืฆื ืฉืึทืคึฟื ืืขื POC, ืึธืคื ืืื ืงืืื ืืืืืื, ืึธื ืคืื ืืึทืฅ ืืขืจืงืืขืจืื ืืขื. ืืืื, ืืื ืฉืืื ืคืจืืขืจ, ืืื ืืืขื ื ืืฆื GCP ืฆื ืฉืึทืคึฟื ืึทืืข ืื ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ, ืึธืืขืจ ืืืจ ืงืขื ืขื ืืึทืื ืื ืืขืืืข ืื ืคืจืึทืกืืจืึทืงืืฉืขืจ ืขืจืืขืฅ ืึทื ืืขืจืฉ.
- ืึธื ืืืื ืื ืืืืจืืืึทื ืืึทืฉืื (ืืืฉื / ืกืขืจืืืขืจ).
- ืฉืึทืคึฟื ืึท ืืขืจืฉื ืคึฟืึทืจ ืื ืคืืืจืืืึทื (ืืืืขืจืืืื ืืจืืคึผืข ืืื AWS):
- ืืื ืืื ืฆื ืืึทืฉืืืืขื ืื ืืขืืืข ืืึทืฉืื ื ืึธืืขื ืฆื ืืืืืข ืื ืืขืจืฉื ืืื ืื ื ืขืฅ ืงืืืืื, ืืื ืืขื ืคืึทื "skywiz-consul-server-poc".
- ืืขืคึฟืื ืขื ืื IP ืึทืืจืขืก ืคืื ืืืื ืืืืข ืงืึธืืคึผืืืืขืจ ืืื ืืืืื ืขืก ืฆื ืืขืจ ืจืฉืืื ืคืื ืืงืืจ IP ืึทืืจืขืกืขืก ืึทืืื ืืืจ ืงืขื ืขื ืึทืงืกืขืก ืื ืืึทื ืืฆืขืจ ืฆืืืื ื (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
- ืืืจ ืืึธื ืืขื ืึท ืืื ืื ืคืื ืจืขืืืืืึทื ืืื ืขื ืืืงื ืืื "... ืืขืจืืืึทื ืืืงื ืืคืืขืฉืืขืื ืืืจื ืึทืงืืก."
- ืืขืคึฟืื ืขื ืื ืคืื ืืจืืืกื ืืืง IP ืึทืืจืขืก ืคืื ืื ืงืึธื ืกืื ืกืขืจืืืขืจ ืืื ืขืคืขื ืขื ืึท ืืืขืืขืจืขืจ ืืื ืืขื IP ืึทืืจืขืก ืืืืฃ ืคึผืึธืจื 8500. ืืึทืื ืืืืขืจ ืึทื ืื ืื ืึธืคึผืขื ืก.
- ืคึผืจืึผืืื ืฆื ืืืืื ืึท ืฉืืืกื / ืืืขืจื ืคึผืึธืจ. ืขืก ืืื ืืืื ื ืืขืืช. ืืึธืก ืืื ืืืืึทื ืืืจ ืืึธืืืื ืื ืงืึธื ืกืื ืกืขืจืืืขืจ ืืื ืึท ืึทืงื ืืื ืคืึทืจืงืจืืคึผืื ืึทืืข ืึผืืืื.
- ืืืื ืฆืืจืืง ืฆื ืืืื ืฉืึธื ืืืืฃ ืื ืงืึธื ืกืื ืกืขืจืืืขืจ ืืื ืึธื ืืืืื ืืขื ืคึผืจืึธืฆืขืก ืืื ืืขืจ ืืื ืืขืจืืจืื ื ืึธืืขืจ ืขืืืขืืข ืื ืืขืจืข ืืืขื ืฆื ืืืืคื ืขืก ืืื ืึทืจืืึทื ืื ืคืืืืขื ืืข:
consul acl bootstrap
- ืืขืคึฟืื ืขื ืื "SecretID" ืืืขืจื ืืื ืฆืืจืืงืงืืืขื ืฆื ืื ืื. ืืื ืื ืึทืงื ืงืืืืื, ืึทืจืืึทื ืื ืกืื ืฉืืึทื ืคืื ืื ืกืืืขื ืืืจ ื ืึธืจ ืงืึทืคึผืื. ืงืึธืคึผื SecretID ืขืจืืขืฅ ืึทื ืืขืจืฉ, ืืืจ ืืืขืื ืืึทืจืคึฟื ืขืก ืฉืคึผืขืืขืจ.
- ืืืฆื ืืืืื ืึท ืฉืืืกื / ืืืขืจื ืคึผืึธืจ. ืคึฟืึทืจ ืืขื POC, ืืืืื ืื ืคืืืืขื ืืข: ืฉืืืกื: "custom-ns/test_key", ืืืขืจื: "ืืื ืืื ืืื ืื Custom-ns ืืขืงืข!"
ืืึธื ืืฉืื ื ืึท Kubernetes ืงื ืืื ืคึฟืึทืจ ืืื ืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืืื ืื ืงืึธื ืกืื ืงืืืขื ื ืืื ืึท ืืึทืขืืึธื ืกืขื
- ืฉืึทืคึฟื ืึท K8s (Kubernetes) ืงื ืืื. ืืืจ ืืืขืื ืืึทืื ืขืก ืืื ืืขืจ ืืขืืืืงืขืจ ืืึธื ืข ืืื ืื ืกืขืจืืืขืจ ืคึฟืึทืจ ืคืึทืกืืขืจ ืึทืงืกืขืก, ืืื ืึทืืื ืืืจ ืงืขื ืขื ื ืืฆื ืื ืืขืืืข ืกืืื ืขื ืฆื ืืืืื ืคืึทืจืืื ืื ืืื ืื ืขืจืืขื IP ืึทืืจืขืกืขืก. ืืืจ ืืืขืื ืจืืคื ืขืก "ืกืงืืืืื-ืึทืคึผ-ืืื-ืงืึทื ืกืื-ืงืืืขื ื-ืคึผืึธืง".
- ืืื ืึท ืืืึทื ืืึธื, ืืึธ ืืื ืึท ืืื ืืืืึธืจืืึทื ืืืึธืก ืืื ืืขืคึฟืื ืขื ืืืขื ืืื ืฉืืขืื ืึทืจืืืฃ ืึท POC ืงืึธื ืกืื ืงื ืืื ืืื Consul Connect.
- ืืืจ ืืืขืื ืืืื ื ืืฆื Hashicorp ืืขืื ืืฉืึทืจื ืืื ืึทื ืขืงืกืืขื ืืขื ืืืึทืืืขืก ืืขืงืข.
- ืื ืกืืึทืืืจื ืืื ืงืึทื ืคืืืืขืจ ืืขืื. ืงืึธื ืคืืืืจืึทืืืึธื ืกืืขืคึผืก:
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
- ืืืขื ืขืก ืคืจืืืื ืฆื ืืืืคื, ืขืก ืืืขื ืืึทืจืคึฟื ืคึผืขืจืืืฉืึทื ื ืคึฟืึทืจ ืื ืงืึธื ืกืื ืกืขืจืืืขืจ, ืึทืืื ืืึธืื ืืื ืื ืืืืื ืืื.
- ืืึทืืขืจืงืื ื ืื "ืคึผืึธื ืึทืืจืขืก ืจืึทื ืืข" ืืืื ืืืืฃ ืื ืงื ืืื ืืึทืฉืืึธืจื ืืื ืึธืคึผืฉืืงื ืฆืืจืืง ืฆื ืืื ืืืขืจ "skywiz-consul-server-poc" ืคืืืจืืืึทื ืืขืจืฉื.
- ืืืื ืื ืึทืืจืขืก ืงืืื ืคึฟืึทืจ ืื ืคึผืึธื ืฆื ืืขืจ ืจืฉืืื ืคืื IP ืึทืืจืขืกืขืก ืืื ืขืคืขื ืขื ืคึผืึธืจืฅ 8301 ืืื 8300.
- ืืืื ืฆื ืื ืงืึธื ืกืื ืื ืืื ื ืึธื ืึท ืืืกื ืืื ืื ืืืจ ืืืขื ืืขื ืืื ืืืขืจ ืงื ืืื ืืื ืื ื ืึธืืื ืงืืืืื.
ืงืึทื ืคืืืืขืจ ืึท ืึทืืืืึธืจืืืึทืืืึธื ืืขืืึทื ืืืจื ืื ืืึทืืจืืืืื ื ืงืึธื ืกืื ืืื Kubernetes
- ืฆืืจืืงืงืืืขื ืฆื ืื ืงืึธื ืกืื ืกืขืจืืืขืจ ืฉืึธื ืืื ืึทืจืืืกืคืืจื ืื ืกืืืขื ืืืจ ืืขืจืืืขืืืขื ืคืจืืขืจ:
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>"
- ืืืืึทืืขืจ ืืืจ ืืึทืจืคึฟื ืฆื ืฉืึทืคึฟื ืึท ืืขืจืฉื ืืื ืฆืืืฉืขืคึผืขื ืขืก ืฆื ืื ื ืืึทืข ืจืึธืืข. ืคึฟืึทืจ ืืขื ืืืื ืืืจ ืงืขื ืขื ื ืืฆื 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
- ืืขืจื ืึธื ื ืืฆื ืื ืคืืืืขื ืืข ืืขืืืื-ืืื ืืึทืคึฟืขื ืฆื ืฉืึทืคึฟื ืึท ืงืึธื ืคืืืืึทืคึผ [
ืจืื ื ]. ืืืืข ืืึธื ืึทื ืืืจ ืจืืคืขืจืื ื ืฆื ืื ื ืึธืืขื ืคืื ืืื ืืืขืจ ืืื ืกื, ืคืึทืจืืืึทืื ืขืก ืืืื ื ืืืืืง.
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
- ืึทืืึธื ืืขืจ ืงืึทื ืืืื ืขืจ ืืื ืคืืืกื ืืืง, ืืืื ืืึธืจื ืืื ืื ืกืืึทืืืจื ืงืขืจื.
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 ืืขืงืึธืืข "ืืืขืจื" ืืื ืืขื ืึทื ืขืก ืืืืึทืื ืื ืืืขืจื ืืื 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
- ืขืจืืืืืขื ืืฉ ืฆืืจืืงืืขืืืืื. ืึธื, ืืืจ ืคืืจืืขืกื ืฆื ืืืืื ืึท ื ืืึทืข ืึผืืืื ืืื ืืื ื ืืื ืื ืฆืื ืขืืขื ืคึผืขืจืืืฉืึทื ื, ืืึธืื ืืื ืื ืืึธื ืืึธืก ืืืฆื.
ืืืืขืจืืืจื ืื ืคืจืืขืจืืืงืข ืกืืขืคึผืก ืืืืื:
ืึท) ืฉืึทืคึฟื ืึทื ืืืืขื ืืงืึทื ืคึผืึธืืืืืง ืคึฟืึทืจ ืื ืคึผืจืขืคืืงืก "ืงืึทืกืืึทื-ืกืึท/".
ื) ืฉืึทืคึฟื ืึท ืจืึธืืข, ืจืืคื ืขืก "ืงืึทืกืืึทื-ืกืึท-ืจืึธืืข"
c) ืฆืืืฉืขืคึผืขื ืื ืคึผืึธืืืืืง ืฆื ืื ืจืึธืืข.
- ืฉืึทืคึฟื ืึท ืืขืจืฉื-ืืืื ืืื ื (ืืืืื ืืขืืืขื ืคึฟืื ืงืื / ืึทืคึผื). ืืึทืืขืจืงืื ื ืื ืคืึทืจืฉืืืขื ืข ืืืึทืืฉ ืคืื ืื ืกืขืืขืงืืึธืจ ืคืึธื.
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>โ
- ืืืจ ืงืขื ื ืืืื ืคืึทืจืืืืขืจื ืึทื ืืขื ืกืืืขื ืืื ื ืืฉื ืืขืื ืึทืงืกืขืก ืฆื ืงืื ืืื "ืงืึทืกืืึทื-ื ืก/". ื ืึธืจ ืืืืขืจืืืจื ืื ืืืืื ืืึทืคึฟืขื ื ืึธื ืจืืคึผืืืืกืื ื "ืงืึทืกืืึทื-ืกืึท" ืืื ืื ืคึผืจืขืคืืงืก "ืงืึทืกืืึทื-ื ืก".
ืขืจืืืืืขื ืืฉ ืฆืืจืืงืืขืืืืื.
ืืืืฉืคึผืื ืคืื ืึธืืืืขืจืืื:
- ืขืก ืืื ืืืื ืฆื ืืืืขืจืงื ืึทื ืึทืืข ืืขืจืฉื-ืืืื ืืื ื ืืึทืคึผืื ืืก ืืืขื ืืืื ืืืกืืฃ ืฆื ืื ืกืืืขื ืืื ืื ืจืขืื.
- ืืื ืืืขืจ ืงืึทื ืืืื ืขืจ "poc-ubuntu-custom-sa" ืืื ืืื ืื ืคืขืืืงืืึทื ื ืึทืืขืกืคึผืึทืกืข - ืึทืืื ืืึธืื ืืื ืื ื ืืฆื ืขืก ืคึฟืึทืจ ืึท ืึทื ืืขืจืฉ ืืขืจืฉื-ืืืื ืืื ื.
- ืืืืขืจืืืจื ืื ืคืจืืขืจืืืงืข ืกืืขืคึผืก:
ืึท) ืฉืึทืคึฟื ืึทื ืืืืขื ืืงืึทื ืคึผืึธืืืืืง ืคึฟืึทืจ ืื "ืคืขืืืงืืึทื /" ืฉืืืกื ืคึผืจืขืคืืงืก.
ื) ืฉืึทืคึฟื ืึท ืจืึธืืข, ื ืึธืืขื ืขืก "Default-ns-role"
c) ืฆืืืฉืขืคึผืขื ืื ืคึผืึธืืืืืง ืฆื ืื ืจืึธืืข. - ืฉืึทืคึฟื ืึท ืืขืจืฉื-ืืืื ืืื ื (ืืืืื ืืขืืืขื ืคึฟืื ืงืื / ืึทืคึผื)
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" ืงืึทื ืืืื ืขืจ ืืื ืคึผืจืืืืจื ืฆื ืึทืงืกืขืก ืื "ืกืืึทื ืืึทืจื /" ืงืื ืืจื.
- ืขืจืืืืืขื ืืฉ ืฆืืจืืงืืขืืืืื.
ืืืจ ืงืขื ืขื ืืขื ืื ืกืคึผืขืกืืคืืขื ืงืจืึทืืขื ืืฉืึทืื ืคึฟืึทืจ ืืขืืขืจ ืกืืืขื ืืื ืื ืื ืืื ืืขืจ ACL> ืืึธืงืขื ืก. ืืื ืืืจ ืงืขื ืขื ืืขื, ืืื ืืืขืจ ืงืจืึทื ื ืกืืืขื ืืื ืืืืื ืืืื "ืื ืื-ืกืึท-ืจืึธืืข" ืึทืืึทืืฉื ืฆื ืขืก. ืืขืจ ืกืืืขื ืืืึธืก ืืืจ ืืืฆื ื ืืฆื ืืื ืืขืืืขื ืืืฉืขื ืขืจืืืืึทื ืืืขื ืืืจ ืืึธืื ืืื ืืื ืขืก ืืื ืืขืืืขื ืืืืื ืืืื ืืขืจืฉื-ืืืื ืืื ื ืืืึธืก ืืื ืืึทืืฉื ืืขืืึธืื. ืืืจ ืืึทืจืคึฟื ืฆื ืืึธืืื ืืืืืขืจ ืืื ื ืืฆื ืื ื ืืึทืข ืกืืืขื. - ืืึทืื ืืืืขืจ ืึทื ืืืจ ืงืขื ืขื ืืืืขื ืขื ืืืืืข ืื "ืงืึทืกืืึทื-ืกืึท/" ืืื "ืคืขืืืงืืึทื/" ืงืื ืคึผืึทืืก.
ืืฆืืื!
ืืึธืก ืืื ืืืืึทื ืืื ืืืขืจ "ืคึผืึธืง-ืืืื ืื-ืงืึทืกืืึทื-ืกืึท" ืฉืืืขืืขืืขื ืื "ืงืึทืกืืึทื-ืกืึท" ืืื "ืคืขืืืงืืึทื-ื ืก" ืืขืจืฉื ืืืื ืืื ืื.
ืกืึธืฃ
TTL token mgmt?
ืืื ืืขืจ ืฆืืื ืคืื ืืขื ืฉืจืืืื, ืขืก ืืื ืงืืื ืื ืึทืืจืืืืื ืืืขื ืฆื ืืึทืฉืืืกื ืื TTL ืคึฟืึทืจ ืืึธืงืขื ืก ืืืฉืขื ืขืจืืืืึทื ืืืจื ืืขื ืืขืจืืืืืขื ืืฉ ืืืคึฟื. ืขืก ืืืึธืื ืืืื ืึท ืคืึทื ืืึทืกืืืฉ ืืขืืขืื ืืืื ืฆื ืฆืืฉืืขืื ืืืืขืจ ืึธืืึทืืืืฉืึทื ืคืื ืงืึธื ืกืื ืืขืจืืืืืขื ืืฉ.
ืขืก ืืื ืึทื ืึธืคึผืฆืืข ืฆื ืืึทื ืืืึทืื ืฉืึทืคึฟื ืึท ืกืืืขื ืืื 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
ืืืืขื ืขื ืืืื ืื ืืขืจืข ืึทืจืืืงืืขื ืืืืฃ ืืื ืืืขืจ ืืืึธื:
ืืืึธืก ืืื ืื ืืืืืจืืืฉืึทื ืคืื ืงืืืงืงืืึทืืก ืึธื ืืขืจืืืืืขื ืืฉ ืฆื ืงืืืงืืึธืืกืข ืืื ืืขืจืืืืืขื ืืฉ ืคืืจื ืฆื? ืืื ืฆื ืืืืคื ืงืืืคื ืคึผืืืคึผืืืื ื ื ืืฆื GitLab CI / CD ืืจืื ืคึผืฉืื ืืจืืงืก ืฆื ืืึทื ืฉืจืืืคึผื ืืึธืงืงืขืจ ืืืืืขืจ Traefik ืืื ืื ืืจืขืกืก ืงืึธื ืืจืึธืืืขืจ ืคึฟืึทืจ K8S ืืึทืงืงืืคึผ ืคืื ืึท ืืจืืืก ื ืืืขืจ ืคืื ืืขืืขืจืึทืืืฉืื ืืึทืก ืืืขื ืคึผืจืึทืืืฉืขืงืก ืืขืืขืืจืึทื ืืึธื ืคึฟืึทืจ Redmine. ืืื ืฆื ืคืึทืจืคึผืึธืฉืขืืขืจื ืืขืื ืคึฟืึทืจ ืืื ืืื ืื ืืขืจืข
ืืงืืจ: www.habr.com