ááœáŸááºááŒá®ážááẠááŸááºáááºá
á€áááºáááºážá
á¬ááœáẠá¡ááá·áºááá·áºáááºáá®ážáá«áááºá
áá±áá¯áá»á¡ááŒááº
ááœá¬ážáááºááá¯áááº
áá¯á¶ á- áá±á¬ááºá á áºáááºááœáá·áºááŒá¯áá»ááºáááºážáááºážáááá¬ážáááºááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááº
áááºááŒáá·áºáá¡á±á¬ááº
áá±áá»á¬áá¬áá±á«á·á á¡á²áá®ááŸá¬ á¡áá¯á¶ážáááºáá²á· á¡áá»ááºá¡áááºááœá±ááŸááááºá áá«áá±ááá·áº á¡á²áá«á¡á¬ážáá¯á¶ážááᯠáááºááœá±á·áááºááá¯áá¯á¶ážáááá²ááá¯áᬠáááºážááœáŸááºáá»ááºáááŸááá°ážá ááá¯á·ááŒá±á¬áá·áº áá¬ááºáá±á¬ááºážáá°ááá¯ááºážááẠáááºážááœáŸááºááŸá¯ááá°ááẠá¡ááºáá¬áááºááᯠááŒá¯ááºážáá®ážáá±áá«áááºá ááŒá®ážáá±á¬á·... áááºáž áá»ááºááœá¬ážáááºá ááŒá áºáá»ááºá áá«ááá¯ááŒááºáá¡á±á¬ááºá
áá»áœááºá¯ááºááá¯á·á POC ááá¯áááºáá®ážááŒááºážáááŒá¯áá®á áá±á¬ááºá á áºáááºáááœáá·áºááŒá¯áá»ááºáááºážáááºážáá»á¬ážáááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»áẠ(Diagram 1) ááá¯á·ááŒááºááœá¬ážáᬠKubernetes áá¡ááŒá±á¬ááºážá¡áá¬ááᯠááŒááºáááºááŒááºáááºááŒáá«á áá¯á·á
áááá¯áá¬á¡áááºááá¬
á€áááºáááºážá á¬ááœááºá ááá·áºááœááºážáá¬ážáá±á¬ Consul client ááŸáá·áº Kubernetes á¡á á¯á¡áá±ážáá áºáá¯ááŸáá·áº áááºááœááºááá·áº áá®ážááŒá¬ážá ááºáá áºáá¯ááœáẠáá±á¬ááºá á áºáááºáá¬áá¬ááᯠáá»áœááºá¯ááºááá¯á· áááºáá®ážáá«áááºá ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·áá¡áá¯á¶ážá¡áá±á¬ááºá¡ááá®áá±ážááŸááºážááᯠpod ááœááºáááºáá®ážááŒá®áž áá»áœááºá¯ááºááá¯á·ááá±á¬ááºá á áºáááºáá±á¬á·/áááºááá¯ážá ááá¯ážááŸáááºááŸá¯ááẠáá»áœááºá¯ááºááá¯á·áááŒááºáááºáá¬ážáá±á¬ááœáá·áºááŒá¯áá»ááºáááºážáááºážááá¯á¡áá¯á¶ážááŒá¯áá«áááºá
á¡á±á¬ááºáá±á¬áºááŒáá« áá¯á¶ááẠá€áá»á°ááá¯áá®áááºááœáẠáá»áœááºá¯ááºááá¯á·áááºáá®ážáá±ááá·áº áááá¯áá¬áááºáá¬ááŸáá·áº ááœáá·áºááŒá¯áá»ááºáááºážáááºážáá±á¬ááºááœááºááŸá áá¯áá¹áááá±áááá¯á·ááᯠá¡áá±ážá áááºáá±á¬áºááŒáá¬ážáááºáá áá±á¬ááºááá¯ááºážááœáẠááŸááºážááŒáá«áááºá
áá¯á¶ 2- Kubernetes ááœáá·áºááŒá¯áá»ááºáááºážáááºáž ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááº
á¡ááŒááºááŸááºá á¯- áááºážááá¯á¡áá¯ááºáá¯ááºáááºá¡ááœáẠáá±á¬ááºá á áºáááºáá¬áá¬ááẠKubernetes á¡á á¯á¡áá±ážááŒááºáááœáẠáá±ááá¯ááºááẠáááá¯á¡ááºáá«á áá«áá±ááá·áº áá¯ááºáááºá áá°á áá®áááºážáá²á· áá¯ááºááá¯ááºáááºá
ááá¯á·ááŒá±á¬áá·áºá Consul ááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»áẠááá¬áž (Diagram 1) ááá¯áá°ááŒá®áž áááºážááŸáá·áº Kubernetes ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠá¡áááºáá±á¬áºááŒáá« áá¯á¶ááŒááºáž (Diagram 2) ááᯠáááŸáááŒá®áž á€áá±áá¬ááœáẠáá¯áá¹áááá±áááŸá¬ á¡á±á¬ááºáá«á¡ááá¯ááºáž ááŒá áºáá«áááºá
- áá±á«á·ááºáá áºáá¯á á®ááœáẠKubernetes á០áá¯ááºáá¯ááºááŒá®áž áááá¬ážááá·áº JWT ááá¯áááºáá áºáá¯áá«ááŸááá±á¬ áááºážááŸáá·áº áá»áááºáááºáá¬ážáá±á¬ áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºáá áºáᯠááŸááá«áááºá á€ááá¯áááºááᯠáá°áááºážá¡ááá¯ááºáž pod áá²ááá¯á· ááá·áºááœááºážáá«áááºá
- pod á¡ááœááºážááŸááá»áœááºá¯ááºááá¯á·áá¡ááá®áá±ážááŸááºážááá¯á·ááá¯ááºáááºáá±á¬ááºááŸá¯áááºáá»áœááºá¯ááºááá¯á·ááá±á¬ááºá á áºáááºáá±á¬ááºáááºáá¶ááá¯á·áááºáá±á¬ááºáááºá¡áááá·áºáá±ážáááºá á¡áá±á¬áá·áºáááºááẠáá±á¬ááºážááá¯áá»ááºááœáẠáá»áœááºá¯ááºááá¯á·á ááá¯áááºááŸáá·áº á¡áááºáááºáž áá«áááºáááºááŒá áºáááºá á¡áá°ážáááºáá®ážáá¬ážáááºá ááœáá·áºááŒá¯áá»ááºáááºážáááºáž ( Kubernetes á¡áá»áá¯ážá¡á á¬áž)á á€á¡ááá·áº áá¶áá«áẠ2 ááẠáá±á¬ááºá á áºáááºáá¯á¶ááŒááºáž (á¡á á®á¡á á¥áº 1) á á¡ááá·áº 1 ááŸáá·áº ááá¯ááºáá®áá«áááºá
- áá»áœááºá¯ááºááá¯á·á áá±á¬ááºá á áºáááºááẠá€áá±á¬ááºážááá¯áá»ááºááᯠáá»áœááºá¯ááºááá¯á·ááá±á¬ááºá á áºáááºáá¬áá¬áᶠáá±ážááá¯á·áá«áááºá
- áá»ááºááŸáá·áº! á€áá±áá¬ááœáẠáá±á¬ááºá á áºáááºáá¬áá¬ááẠáá±á¬ááºážááá¯áá»ááºá á á áºááŸááºááŸá¯ááᯠá á áºáá±ážááŒá®áž áá±á¬ááºážááá¯áá»ááºá á¡áá±á¬ááºá¡áá¬ážááŸáá·áº áááºáááºáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠá á¯áá±á¬ááºážáᬠáááºá ááºááŒáá¯áááºáááºááŸááºáá¬ážáá±á¬ á ááºážáá»ááºážáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«áááºá áá«ááᯠááá¯ááºáá±á¬áºááá¯á· á¡á±á¬ááºááŸá¬ áá±á¬ááºááẠáá¯á¶áá áºáá¯á¶ áá«áá«áááºá á€á¡ááá·áºááẠáá±á¬ááºá á áºáááºááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºáá¯á¶ááŒááºáž (Diagram 3) á á¡ááá·áº 4á 5 ááŸáá·áº 1 ááá¯á·ááŸáá·áº áááºááá¯ááºáááºá
- áá»áœááºá¯ááºááá¯á·á áá±á¬ááºá á áºáááºáá¬áá¬ááẠáá±á¬ááºážááá¯áá°áá¡áá±á¬ááºá¡áá¬ážááŸáá·áºáááºáááºá áá»áœááºá¯ááºááá¯á·ááááºááŸááºáá¬ážáá±á¬ ááœáá·áºááŒá¯áá»ááºáááºážáááºážá ááºážáá»ááºážáá»á¬áž (áá»áœááºá¯ááºááá¯á·áááºááŸááºáá¬ážáá±á¬) ááœáá·áºááŒá¯áá»ááºááŒáá·áº áá±á¬ááºá á áºáááºááá¯áááºááᯠáá¯ááºáá±ážáá«áááºá ááŒá®ážááẠá¡á²áá® token ááᯠááŒááºááá¯á·áá±ážáááºá áááºážááẠáá±á¬ááºá á áºáááºááŒá±áá¯á¶ (áá¯á¶ á) á á¡ááá·áº á ááŸáá·áº ááá¯ááºáá®áááºá
- áá»áœááºá¯ááºááá¯á·ááá±á¬ááºá á áºáááºáá±á¬ááºáááºááẠáá±á¬ááºážááá¯áá±áá±á¬áá»áŸá±á¬ááºááœáŸá¬ ááá¯á·ááá¯áẠáááºáá±á¬ááºááŸá¯ááá¯á· ááá¯áááºááᯠáá±ážááá¯á·áááºá
áá»áœááºá¯ááºááá¯á·á á¡ááá®áá±ážááŸááºáž ááá¯á·ááá¯áẠáááºáá±á¬ááºááŸá¯ááẠááá¯áááºáá¡ááœáá·áºáá°ážáá»á¬ážááŒáá·áº áá¯á¶ážááŒááºáá¬ážááá·áºá¡ááá¯ááºáž áá»áœááºá¯ááºááá¯á·ááá±á¬ááºá á áºáááºáá±áá¬ááŸáá·áº áááºááœááºáááºá¡ááœáẠááᯠá€áá±á¬ááºá á áºáááºááá¯áááºááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
ááŸá±á¬áºááá¬ááẠáááºááŸá¬ážáá¬áá
áŠážáá¯ááºáá²á áá¯ááºáá áºáá±á¬ááºáá²á· á¡áááºáááŒá±áá²á· áá°ááœá±á¡ááœáẠáááºááᯠáá±ážáááºáááºááá¯áᬠááŒáá«áá á±...á áá¯ááºáá±á«ááº"á
á¡á á±á¬ááá¯ááºážááœááºáá±á¬áºááŒáá²á·ááá·áºá¡ááá¯ááºážá áá»áœááºá¯ááºááá¯á·á "ááŸá±á¬áºááá¬" á¡ááá·áº (áá¯á¶ 2- á¡ááá·áº 4) ááẠáá±á¬ááºá á áºáááºáá¬áá¬ááẠáá±á¬ááºážááá¯áá»ááºááᯠá á áºááŸááºááŒá±á¬ááºážáááºáá±ááŒááŒá®áž áá±á¬ááºážááá¯áá»ááºá¡áá»ááºá¡áááºáá»á¬ážááᯠá á¯áá±á¬ááºážáᬠáááºážááŸáá·áºáááºá ááºáá±áá±á¬ ááŒáá¯áááºáááºááŸááºáá¬ážáá±á¬á ááºážáá»ááºážáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá¬ážááá·áºáá±áá¬ááŒá áºáááºá á€á¡ááá·áºááẠáá±á¬ááºá á áºáááºááŒá¯á¶áá¯á¶áá¯á¶ážáááºáá»ááºáá¯á¶ááŒááºáž (Diagram 3) á á¡ááá·áº 4á 5 ááŸáá·áº 1 ááá¯á·ááŸáá·áº áááºááá¯ááºáááºá á¡á±á¬ááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ áá¯á¶ááŒááºáž (Diagram 3) ááẠá¡ááŸááºááááºááŒá áºáá»ááºáá±ááá·áºá¡áá¬ááᯠááŸááºážááŸááºážáááºážáááºážááŒáááẠáááºááœááºáááºá á¡ááá¯áá«áá«ážáá»ááºážá¡á±á¬ááºááŸá¬ áá®ážááŒá¬áž Kubernetes ááœáá·áºááŒá¯áá»ááºáááºážáááºážá
Diagram 3- ááŸá±á¬áºááá¬ááᯠáá¯ááºáá±á¬áºááŒáááá¯ááºáá«ááŒá®á
- á áááºááá·áºá¡áá»ááºá¡áá±ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááá±á¬ááºá á áºáááºáá±á¬ááºáááºááẠKubernetes á¡áá±á¬áá·áºááá¯áááºááŸáá·áº á¡á á±á¬ááá¯ááºážáááºáá®ážáá¬ážááá·áº ááœáá·áºááŒá¯áá»ááºáááºážáááºážá áá®ážááŒá¬ážá¥ááá¬á¡áááºááŒáá·áº áá»áœááºá¯ááºááá¯á·ááá±á¬ááºá á áºáááºáá¬áá¬áᶠá¡áá±á¬áá·áºáááºááẠáá±á¬ááºážááá¯áá»ááºááᯠáá±ážááá¯á·áá«áááºá á€á¡ááá·áºááẠáááẠcircuit ááŸááºážááŒáá»ááºááœáẠá¡ááá·áº 3 ááŸáá·áº ááá¯ááºáá®áá«áááºá
- ááá¯á¡áá« áá±á¬ááºá á áºáááºáá¬áᬠ(ááá¯á·ááá¯áẠáá±á«ááºážáá±á¬ááº) ááẠáááŸááá¬ážáá±á¬ ááá¯áááºá á á áºááŸááºááŒá±á¬ááºáž á¡áááºááŒá¯ááẠááá¯á¡ááºáááºá ááá¯á·ááŒá±á¬áá·áºá áááºážááẠKubernetes á¡á á¯á¡áá±áž (áá±á¬ááºá á áºáááºáááá¯ááºážááá·áºááŸáá áºááá·áº) ááŸáá·áº ááá¯ááºáááºáááºááŒá áºááŒá®ážá ááá·áºáá»á±á¬áºáá±á¬ááœáá·áºááŒá¯áá»ááºáá»á¬ážááŒáá·áºá ááá¯áááºááẠá¡á á áºá¡ááŸááºáá¯ááºááá¯ááºá áááºáá°ááŸáá·áºáááºááá¯ááºáááºááᯠáá»áœááºá¯ááºááá¯á· ááááŸááá«áááºá
- ááá¯á·áá±á¬áẠá¡áááºááŒá¯áá¬ážáá±á¬ áá±á¬ááºážááá¯áá»ááºá¡á¬áž áá±á¬ááºá á áºáááºáá±á«ááºážáá±á¬ááºáᶠááŒááºáááºáá±ážááá¯á·ááŒá®áž áá±á¬ááºá á áºáááºáá¬áá¬ááẠá¡áá±á¬áá·áºáááºááẠáá±á¬ááºážááá¯áá»ááºá០áááºááŸááºáá¬ážáá±á¬ á¡áááºááŒáá·áº ááœáá·áºááŒá¯áá»ááºáááºážáááºážááᯠá á¶ááá°áá¬ááŒáá¬ážááẠ(ááŸáá·áº Kubernetes á¡áá»áá¯ážá¡á á¬áž)á
- áá±á¬ááºá á áºáááºáá±á«ááºážáá±á¬ááºááẠáááºááŸááºáá¬ážáá±á¬ ááœáá·áºááŒá¯áá»ááºáááºážáááºáž á¥ááᬠ(ááœá±á·ááŸááá«á) áá±á¬áºáá¯ááºááŒá®áž áááºážááŸáá·áº áá°ážááœá²áá«ááŸááá±á¬ á ááºážáá»á¥áºážá ááºážáá»á¥áºážá¡á á¯á¶ááᯠáááºááŒáááºá ááá¯á·áá±á¬áẠáááºážááẠá€á ááºážáá»ááºážáá»á¬ážááᯠáááºááŒá®áž áááºážááá¯á·ááᯠá¡áááºááŒá¯áá¬ážáá±á¬ á¡áá±á¬ááºá¡áá¬ážáá»á¬áž ááŸáá·áº ááŸáá¯ááºážááŸááºáá«áááºá
- ááá·áºá¡ááºáž! áááẠcircuit ááŸááºážááŒáá»ááºááœáẠá¡ááá·áº 5 ááá¯á· áááºááœá¬ážááŒáá«á áá¯á·á
áá¯á¶ááŸáẠvirtual machine áá áºáá¯ááœáẠConsul-server ááá¯ááœáá·áºáá«á
ááá¯ááŸá ááŒá®áž áá«áá»á¡ááŒáá·áºá¡á á¯á¶ááŒáá·áº ááŸááºážáááºážáá»ááºáááŒáᲠဠPOC ááᯠáá»ááºáá¶á¡ááŸááºáá»á¬ážááŒáá·áº áááŒá¬áá áááºáá®ážáááºážááᯠáá»áœááºá¯áẠá¡áá»á¬ážá á¯á¡á¬áž áááºážááœáŸááºáá±ážáá«áááºá ááá¯á·á¡ááŒááºá á¡á á±á¬ááá¯ááºážááœááºáá±á¬áºááŒáá²á·ááá·áºá¡ááá¯ááºážá á¡ááŒá±áá¶á¡áá±á¬ááºá¡áŠá¡á¬ážáá¯á¶ážááá¯áááºáá®ážááẠGCP ááá¯á¡áá¯á¶ážááŒá¯áááºá ááá¯á·áá±á¬áºáááºáááºá¡ááŒá¬ážáááºááá·áºáá±áá¬ááœááºáááá¯áá°áá®áá±á¬á¡ááŒá±áá¶á¡áá±á¬ááºá¡á¡á¯á¶ááá¯áááºáá®ážááá¯ááºáááºá
- virtual machine (á¥ááá¬/áá¬áá¬) ááᯠá áááºáá«á
- Firewall á¡ááœáẠá ááºážáá»ááºážáá áºáᯠáááºáá®ážáá« (AWS ááŸá áá¯á¶ááŒá¯á¶áá±ážá¡ááœá²á·)
- á€ááá á¹á ááœáẠ"skywiz-consul-server-poc" ááŸáá·áº rule ááŸáá·áº network tag ááŸá áºáá¯áá¯á¶ážááœáẠáá°áá®áá±á¬á ááºá¡áááºááᯠáááºááŸááºáá±ážááá¯áá«áááºá
- ááá·áºááŒááºááœááºážááœááºáá»á°áá¬á IP ááááºá á¬ááá¯ááŸá¬ááœá±ááŒá®áž á¡áá¯á¶ážááŒá¯áá°á¡ááºáá¬áá±á·á Ạ(UI) ááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯ááá¯ááºá á±áááºá¡ááœáẠáááºážááŒá ẠIP ááááºá á¬áá»á¬ážá á¬áááºážááá¯á· áá±á«ááºážááá·áºáá«á
- UI á¡ááœáẠport 8500 ááá¯ááœáá·áºáá«á Create ááá¯ááŸáááºáá«á áá»áœááºá¯ááºááá¯á·ááẠဠfirewall ááᯠáááŒá¬áá® áááºáá¶ááŒá±á¬ááºážáá²áá«ááẠ[
link ááᯠ]. - á¥ááá¬ááœáẠFirewall á ááºážáá»ááºážáá áºáá¯ááá·áºáá«á Consul Server ááŸá VM áááºááŸáºáá¯ááºááá¯á· ááŒááºááœá¬ážááŒá®áž âskywiz-consul-server-pocâ ááᯠááœááºáááºáááºááºá¡ááœááºááœáẠááá·áºáá«á Save ááá¯ááŸáááºáá«á
- virtual machine ááœáẠConsul ááá¯ááá·áºááœááºážáá«á á€áá±áá¬ááœááºá á áºáá±ážáá«á áá±á¬ááºá á áºáááºáá¬ážááŸááºáž ⥠1.5 [link] ááá¯á¡ááºáááºááᯠááá±á·áá«ááŸáá·áºá
- áá áºáá¯áááºážáá±á¬ node áá±á¬ááºá á áºáááºááá¯áááºáá®ážááŒáá«á áá¯á· - ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áááºá¡á±á¬ááºáá«á¡ááá¯ááºážááŒá áºáááºá
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
- Consul áááºáááºááŒááºážááŸáá·áº node 3 áá¯áá¡á
á¯á¡áá±ážáá
áºáá¯áááºáá±á¬ááºááŒááºážááá¯ááºáᬠáá±á¬ááºáááºá¡áá±ážá
áááºáááºážááœáŸááºáá»ááºá¡ááœáẠááŒáá·áºáá«á
áá®ááŸá¬ . - á¡á±á¬ááºáá«á¡ááá¯ááºáž /etc/consul.d/agent.json ááá¯ááºáá
áºáá¯áááºáá®ážáá« [
link ááᯠ]:
### /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 ááŸááááºááá¯á·áá¬ážáááºá" ááŒáá·áº á¡áá¯á¶ážáááºáá«á
- Consul áá¬áá¬á ááŒááºá IP ááááºá á¬ááᯠááŸá¬ááŒá®áž port 8500 ááœáẠဠIP ááááºá á¬ááŒáá·áº ááá±á¬ááºáá¬ááá¯ááœáá·áºáá«á UI ááá¯ááœáá·áºáá¬ážááŒá±á¬ááºáž áá±áá»á¬áá«á á±á
- áá±á¬á·/áááºááá¯ážá¡ááœá²ááᯠááá·áºááŒáá·áºáá«á áá áºáá¯áá¯ááŸá¬ážááœá¬ážáá¬ááŒá áºáááºá á¡áááºááŒá±á¬áá·áºááá¯áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠConsul áá¬áá¬á¡á¬áž ACL áá áºáá¯ááŒáá·áº áááºááŒá®áž á ááºážáá»ááºážá¡á¬ážáá¯á¶ážááᯠááááºáá¬ážáá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
- Consul áá¬áá¬ááŸá áááºá shell ááá¯á· ááŒááºááœá¬ážááŒá®áž áá¯ááºáááºážá ááºááᯠáá±á¬ááºáá¶ááœáẠááá¯á·ááá¯áẠáááºážááᯠáááºáááºá á±ááẠá¡ááŒá¬ážáááºážáááºážááŒáá·áº á áááºááŒá®áž á¡á±á¬ááºáá«ááá¯á·ááᯠááá·áºááœááºážáá«-
consul acl bootstrap
- "SecretID" áááºááá¯ážááá¯ááŸá¬ááŒá®áž UI ááá¯á·ááŒááºááœá¬ážáá«á ACL áááºááºááœááºá áááºáá°ážáá°ááá¯ááºáá±á¬ ááá¯áááºááá»áŸáá¯á·ááŸáẠID ááá¯ááá·áºáá«á SecretID ááᯠá¡ááŒá¬ážáá áºáá±áá¬áá¬ááŸá¬ áá°ážáá°áá«á áá±á¬ááºá០ááá¯á¡ááºáá«áááá·áºáááºá
- ááᯠáá±á¬á·/áááºááá¯ážá¡ááœá²ááᯠááá·áºáá«á ဠPOC á¡ááœááºá á¡á±á¬ááºáá«ááá¯á·ááᯠáá±á«ááºážááá·áºáá«- áá±á¬á·- "á áááºááŒáá¯ááº-ns/test_áá®áž", áááºááá¯áž- "áá»áœááºá¯ááºááẠá áááºááŒáá¯ááº-ns ááá¯ááºááœá²ááœáẠááŸááá±áá«áááºá"
Daemonset á¡ááŒá ẠConsul client ááŒáá·áº áá»áœááºá¯ááºááá¯á·á áá»áŸá±á¬ááºááœáŸá¬á¡ááœáẠKubernetes á¡á á¯á¡áá±ážáá áºáá¯ááᯠá áááºááŒááºážá
- K8s (Kubernetes) á¡á á¯á¡áá±ážáá áºáá¯ááᯠáááºáá®ážáá«á ááá¯ááá¯ááŒááºáááºá áœá¬áááºáá±á¬ááºááá¯ááºááẠáá¬áá¬ááŸáá·áºáá°áá®áá±á¬áá¯ááºááœáẠáá»áœááºá¯ááºááá¯á·áááºáá®ážáááºááŒá áºááŒá®ážá ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠá¡ááœááºážááá¯ááºáž IP ááááºá á¬áá»á¬ážááŸáá·áº á¡ááœááºááá°áá»áááºáááºááá¯ááºááẠáá°áá®áá±á¬ subnet ááá¯áá¯á¶ážááá¯ááºáááºá á¡á²áá«ááᯠ"skywiz-app-with-consul-client-poc" ááá¯á·áá±á«áºáááºá
- áá±ážááœááºááŸááºá á¯á¡áá±ááŒáá·áºá á€áááºááŸá¬ Consul Connect ááŒáá·áº POC Consul á¡á á¯á¡áá±ážááᯠáááºáá±á¬ááºá ááºááœáẠáá»áœááºá¯ááºááœá±á·áá²á·áá±á¬ áááºáááºážá á¬áá±á¬ááºážáá áºáá¯ááŒá áºáááºá
- áá»áœááºá¯ááºááá¯á·ááẠááá¯ážáá»á²á·áááºááá¯ážáá»á¬áž ááá¯ááºáá áºáá¯ááŸáá·áºá¡áá° Hashicorp áá²á·ááá¯ááºááá¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá
- 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
- áááºážááᯠrun áááºááŒáá¯ážá á¬ážáá±á¬á¡áá«á áááºážááẠConsul áá¬áá¬á¡ááœááºááœáá·áºááŒá¯áá»ááºáá»á¬ážááá¯á¡ááºáááá·áºáááºá ááá¯á·ááŒá±á¬áá·áºáá°ááá¯á·ááá¯ááá·áºááŒáá«á áá¯á·á
- á¡á á¯á¡ááœá²á·áááºááŸáºáá¯ááºááœááºááŸááá±á¬ âPod Address Rangeâ ááᯠááŸááºáá¬ážááŒá®áž áá»áœááºá¯ááºááá¯á·á âskywiz-consul-server-pocâ firewall á ááºážáá»ááºážááᯠááŒááºááá¯ážáá¬ážáá«á
- pod á¡ááœáẠááááºá á¬á¡ááœá¬á¡áá±ážááᯠIP ááááºá á¬áá»á¬ážááŸáá·áº ááœáá·áºáá¬ážáá±á¬ ports 8301 ááŸáá·áº 8300 á á¬áááºážááœáẠááá·áºáá«á
- áá±á¬ááºá á áºááẠUI ááá¯á·ááœá¬ážá áááá áºá¡áááºážáááºááŒá¬ááŒá®ážáá±á¬áẠáá»áœááºá¯ááºááá¯á·áá¡á á¯á¡áá±ážááᯠnodes áááºááºááœáẠááœá±á·ááááºááŒá áºáá«áááºá
Kubernetes ááŸáá·áº áá±á¬ááºá á áºáááºááᯠáá±á«ááºážá ááºážááŒááºážááŒáá·áº ááá¬ážáááºááœáá·áºááŒá¯áá»ááºáááºážáááºážááᯠááŒááºáááºááŒááºážá
- áá±á¬ááºá á áºáááºáá¬áá¬ááœá¶ááá¯á· ááŒááºááœá¬ážááŒá®áž á á±á¬á á±á¬á áááºááááºážáááºážáá¬ážáá±á¬ ááá¯áááºááᯠáááºááá¯á·áá«-
export CONSUL_HTTP_TOKEN=<SecretID>
- auth method ááá¯áááºáá®ážáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·á Kubernetes á¡á á¯á¡áá±ážá០á¡áá»ááºá¡áááºáá»á¬ážááᯠááá¯á¡ááºáá«áááº-
- kubernetes-á¡áááºááŸááº
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:
- ááá¯áááºááẠbase64 encode áá¯ááºáá¬ážáá±á¬ááŒá±á¬áá·áº ááá·áºá
áááºááŒáá¯áẠtool ááá¯á¡áá¯á¶ážááŒá¯á áááºážááᯠdecrypt áá¯ááºáá«á
link ááᯠ] - kubernetes-ca-cert
kubectl get secret <secret_name_from_prev_command> -o yaml | grep ca.crt:
- âca.crtâ áááºááŸáẠ(base64 decoding ááŒá®ážáá±á¬ááº) ááá¯áá°ááŒá®áž â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 ááá¯áá¯á¶ážááá¯ááºáá±á¬áºáááºáž command line ááá¯á¡áá¯á¶ážááŒá¯áá«áááºá
- á ááºážáááºážáá±ážáá«á
### 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>
- ááᯠáá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·á á¡áááºážááá¹áá¡áá
áºááᯠauth method instance ááŸáá·áº áá»áááºáááºáá«áááºá áá»áœááºá¯ááºááá¯á·á á¡áá±á¬áá·áºáááºááẠáá±á¬ááºážááá¯áá»ááºááẠá€á¡áááºážááá¹áááᯠáááºáá¶áááŸááááºááᯠ"ááœá±ážáá»ááºáá°" á¡áá¶á áá¯á¶ážááŒááºáá±ážááŒá±á¬ááºáž áááááŒá¯áá«á á¡ááŒá¬ážááœá±ážáá»ááºááŸá¯ááœá±ážáá»ááºá
áá¬áá»á¬ážá¡ááœáẠá€áá±áá¬ááœáẠá
á
áºáá±ážáá«-
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
Consul Client ááá¯á· áá»áááºáááºáá±áááºá
- ááŸááºáá»ááºáá»áááºá
áá®ááŸá¬ daemonset ááá¯á· áá»áááºáááºáááºá¡ááœáẠááœá±ážáá»ááºá áá¬áá»á¬ážá áœá¬ááŸááááºá ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááẠá¡á±á¬ááºáá«ááá¯ážááŸááºážáá±á¬ááŒá±ááŸááºážáá»ááºááá¯á· áááºááœá¬ážáá«áááºá - á¡á±á¬ááºáá«ááá¯ááºááᯠá¡áá¯á¶ážááŒá¯áá« [
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
- ááá¯á·áá±á¬áẠconfigmap áááºáá®ážááẠá¡á±á¬ááºáá« builtin command ááá¯áá¯á¶ážáá«á
link ááᯠ] áá»áœááºá¯ááºááá¯á·ááẠáá»áœááºá¯ááºááá¯á·ááááºáá±á¬ááºááŸá¯áá¡áááºááá¯áááºááœáŸááºážáá±áá«áááºá ááá¯á¡ááºáá«á á¡á á¬ážááá¯ážáá«á
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) ááŸáá·áº ááá·áºááœá±ážáá»ááºááŸá¯áááºááá¯ážááŒáá·áº áá±á¬ááºáááºáá±á¬á·ááá¯ááºááœá²áá»á¬ážá áœá¬ááᯠáááºáá®ážáá«á á¡ááááááºážááŒá±á¬ááºážá¡áá áºá¡ááœáẠááá·áºáá»á±á¬áºáá±á¬áá°áá«ááá»á¬ážááŸáá·áº á¡áááºážááá¹ááá»á¬ážááᯠáááºáá®ážáá«á áá±á¬ááºá០ááœá²áá¯ááºáááºá
á áááºááŒáá¯áẠnamespace á ááºážáááºááŸá¯-
- áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯áẠnamespace ááá¯áááºáá®ážááŒáá«á áá¯á·á
kubectl create namespace custom-ns
- áá»áœááºá¯ááºááá¯á·á namespace á¡áá áºááœáẠpod áá áºáá¯ááᯠáááºáá®ážááŒáá«á áá¯á·á pod á¡ááœáẠconfiguration ááá¯áá±ážáá«á
###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
- ááá¯áá»áœááºá¯ááºááá¯á·áááºá¡á
á±á¬ááá¯ááºážááááºáá®ážáá¬ážáá±á¬ááœáá·áºááŒá¯áá»ááºáááºážáááºážááᯠá¡áá¯á¶ážááŒá¯á áá±á¬ááºá
á
áºáááºáá¶áááºáá±á¬ááºáááºáá±á¬ááºážááá¯ááŸá¯ááá¯áá±ážááá¯á·áá«áááºá
link ááᯠ]. - ááá·áºáááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºá០ááá·áºááœááºážáá¬ážáá±á¬ ááá¯áááºááᯠááŒáá·áºáááº-
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>â
- áááºááẠbase64 "áááºááá¯áž" ááᯠáá¯ááºáá¯ááºááá¯ááºááŒá®áž UI ááŸá custom-ns/test_key ááŸá áááºááá¯ážááŸáá·áº ááá¯ááºáá®ááŒá±á¬ááºáž ááœá±á·ááá¯ááºáááºá á€áááºáááºážá á¬ááœáẠá¡áááºáá±á¬áºááŒáá«áááºááá¯ážááᯠáááºá¡áá¯á¶ážááŒá¯áá«áá áááºááá¯ááºáá¶áá«ááºáááºááá¯ážááẠIkknbSBpbiB0aGUgY3VzdG9tLW5zIGZvbGRlciEi ááŒá áºáááá·áºáááºá
á¡áá¯á¶ážááŒá¯áá°áááºáá±á¬ááºááŸá¯á¡áá±á¬áá·áºá ááºážáááºááŸá¯
- á¡á±á¬ááºáá« command ááᯠá¡áá¯á¶ážááŒá¯á á
áááºááŒáá¯áẠServiceAccount áá
áºáá¯áááºáá®ážáá«
link ááᯠ].
kubectl apply -f - <<EOF
apiVersion: v1
kind: ServiceAccount
metadata:
name: custom-sa
EOF
- pod á¡ááœáẠááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááá¯ááºá¡áá áºáá áºáᯠáááºáá®ážáá«á áá¯ááºá¡á¬ážááá¯áááºáá¬á á±ááẠcurl installation áá«áááºáááºááᯠáááááŒá¯áá«á :)
###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
- ááœááºá·áá±á¬ááºážááŸá¯ááŒááºážááá¯ááŒááºážá á¡áá¯ážá ááá·áºáá»á±á¬áºáá±á¬ááœáá·áºááŒá¯áá»ááºáá»á¬ážááŒáá·áº áá±á«ááºážá ááºáá¬ážáá±á¬ á ááºážáá»ááºážá¡áá áºáá áºáá¯ááᯠááá·áºááẠáá±á·ááœá¬ážáááºá ááá¯ááŒá¯áá¯ááºááá¯ááºááŒáá«á áá¯á·á
á¡áááºáá« ááááºá¡ááá·áºáá»á¬ážááᯠááŒááºáá¯ááºáá«-
á) ááŸá±á·ááẠâcustom-sa/â á¡ááœáẠáááºáá°áá»áá±á¬ áá°áá«áááᯠáááºáá®ážáá«á
b) Role áá
áºáá¯áááºáá®ážáá«á áááºážááᯠ"á
áááºááŒáá¯ááº-sa-role" áá¯áá±á«áºááá¯áá«á
á) áá°áá«áááᯠá¡áááºážááá¹áááœáẠáá°ážááœá²áá«ááŸááááºá
- Rule-Binding ááá¯áááºáá®ážáá« (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>â
- á€ááá¯áááºááẠkv ááᯠ"custom-ns/" ááœáẠá¡áá¯á¶ážááŒá¯ááœáá·áºááá±ážááŒá±á¬ááºáž áá±áá»á¬á
á±ááá¯ááºáááºá "custom-sa" ááᯠprefix "custom-ns" ááŒáá·áº á¡á
á¬ážááá¯ážááŒá®ážáá±á¬áẠá¡áááºáá« command ááᯠááŒááºáá¯ááºáá«á
ááœááºá·áá±á¬ááºážááŸá¯ááŒááºážááá¯ááŒááºážá
áááºááá·áºá¥ááá¬-
- á€á¡ááœáá·áºá¡áá±ážáá»á¬ážááŒáá·áº á ááºážáá»ááºážá ááºážááŸá±á¬ááºááŸá¯ááŒá±áá¯á¶áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááá¯áááºááá¯á· áá±á«ááºážááá·áºáááºááŒá áºááŒá±á¬ááºáž áááááŒá¯ááá·áºáá«áááºá
- áá»áœááºá¯ááºááá¯á·áááœááºááááºáᬠ"poc-ubuntu-custom-sa" ááẠáá°áááºážá¡áááºááœááºááœáẠááŸáááẠ- ááá¯á·ááŒá±á¬áá·áº ááá°áá®áá±á¬á ááºážáá»ááºážá ááºážááŸá±á¬ááºááŸá¯áá áºáá¯á¡ááœáẠáááºážááá¯á¡áá¯á¶ážááŒá¯ááŒáá«á áá¯á·á
- ááááºá¡ááá·áºáá»á¬ážááᯠááŒááºáá¯ááºáá«-
á) "default/" key prefix á¡ááœáẠáááºáá°áá»áá±á¬ áá°áá«áááᯠáááºáá®ážáá«á
b) Role áá áºáá¯áááºáá®ážáá«á áááºážááᯠ"default-ns-role" áᯠá¡áááºáá±ážááá¯ááºáá«á
á) áá°áá«áááᯠá¡áááºážááá¹áááœáẠáá°ážááœá²áá«ááŸááááºá - Rule-Binding ááá¯áááºáá®ážáá« (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 ááŸá ááá¯áááºáá áºáá¯á á®á¡ááœáẠáááºááŸááºáá¬ážáá±á¬á¡áá±á¬ááºá¡áá¬ážáá»á¬ážááᯠáááºááŒáá·áºááŸá¯ááá¯ááºáá«áááºá áááºááœá±á·ááŒááºáááá·áºá¡ááá¯ááºáž áá»áœááºá¯ááºááá¯á·ááááºááŸáááá¯áááºááœáẠáááºážááŸáá·áºááœá²áá¬ážááá·áº "á áááºááŒáá¯ááº-áá¬-á¡áááºážááá¹á" áá áºáá¯áá¬ááŸááááºá áá»áœááºá¯ááºááá¯á· á¡áá±á¬áá·áºáááºáá±á¬á¡áá«ááœáẠáá»áœááºá¯ááºááá¯á·á¡áá¯á¶ážááŒá¯áá±áá±á¬ ááá¯áááºááᯠáá¯ááºáá±ážáá²á·ááŒá®áž ááá¯á¡áá»áááºááŸáá·áº ááá¯ááºáá®ááá·áº á ááºážáá»ááºážá ááºážááŸá±á¬ááºááŸá¯áá áºáá¯áᬠááŸááá²á·áá«áááºá áá»áœááºá¯ááºááá¯á· áááºáá¶áááºáá±á¬ááºááŒá®áž ááá¯áááºá¡áá áºááᯠá¡áá¯á¶ážááŒá¯ááẠááá¯á¡ááºáá«áááºá - "custom-sa/" ááŸáá·áº "default/" kv paths ááŸá
áºáá¯áá¯á¶ážá០áááºááá¯ááºáááºááᯠáá±áá»á¬áá«á
á±á
á¡á±á¬ááºááŒááºáá«áááº!
áá»áœááºá¯ááºááá¯á·á "poc-ubuntu-custom-sa" ááẠ"á áááºááŒáá¯ááº-sa" ááŸáá·áº "default-ns" á ááºážáá»ááºážá ááºážááŸá±á¬ááºááŸá¯áá»á¬ážááŸáá·áº ááá¯ááºáá®áá±á¬ááŒá±á¬áá·áºááŒá áºáááºá
áá±á¬ááºáá»ááº
TTL ááá¯ááẠmgmt?
á€á á¬áá±ážáá¬ážáá»áááºááœááºá á€ááœáá·áºááŒá¯áá»ááºáááºážáááºážááŸáá¯ááºáá±ážáá±á¬ ááá¯áááºáá»á¬ážá¡ááœáẠTTL ááᯠáá¯á¶ážááŒááºááẠáá±á«ááºážá ááºáááºážáááºážáááŸááá«á áá±á¬ááºá á áºáááºááœáá·áºááŒá¯áá»ááºá áá¯á¶ááŒá¯á¶áá±á¬ á¡ááá¯á¡áá»á±á¬ááºá áá áºááŒáá·áº áá¶á·ááá¯ážááẠá¡ááœáá·áºá¡áááºážáá±á¬ááºážáá áºáá¯ááŒá áºáááºá
TTL ááŒáá·áº ááá¯áááºáá áºáá¯ááᯠááá¯ááºááá¯ááºáááºáá®ážááẠááœá±ážáá»ááºááœáá·áºááŸááá«áááºá
https://www.consul.io/docs/acl/acl-system.html#acl-tokens
áááºáááºážáá¯ááºáá¯á¶ážáá»ááẠ- á€ááá¯áááºááᯠáá¯ááºááááºážááá·áºá¡áá»áááºá (ááœá±ážáá»ááºááá¯ááºáááºá Consul 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 áá¯á¶áá»á¬ážááá¯áá»á¯á¶á·áááºááá¯ážááŸááºážáá±á¬ááŸáá·áºááœááºáá¯á¶ážáᯠK8S á¡ááœáẠIngress controller á¡ááŒá ẠTraefik ááœá²ááŒá¬ážáá±á¬ áááºááá±á¬áá»ááºáá»á¬ážá áœá¬ááᯠá¡áááºááááºážááŒááºážá Redmine á¡ááœáẠTelegram bot á áááºááá¯ááºááá¯ááºáá±á¬ á¡ááŒá¬ážáá°áá»á¬ážá¡ááœááºáá« ááááᯠááá¯ážááŸááºážá¡á±á¬áẠáááºááá¯áá¯ááºááá²á
source: www.habr.com