본문 바로가기
IT/리눅스

kubernetes를 외부에서 접근하는 방법

by 라떼야가자 2024. 9. 12.

서버에 있는 kubernetes를 외부에서 API를 호출하고자 할 때 인증 절차를 거쳐야 한다.

 

/etc/kubernetes/admin.conf 파일에서 인증서와 키 정보가 있으며 base64로 인코딩 되어 있다.

아래 이미지에서 client-certificate-data와 client-key-data가 그 부분이다.

쿠버네티스 인증서와 키

 

위의 인증서와 키를 사용하려면 먼저 base64를 디코딩해야한다.

 

/etc/kubernetes/admin.conf에서 "client-certificate-data"와 "client-key-data"를 찾아서 그 값을 base64로 디코딩하는 과정을 간단히 명령어로 작성해 보면 다음과 같이 된다.

sudo grep 'client-key-data' /etc/kubernetes/admin.conf | head -n 1 | awk '{print $2}' | base64 -d > ~/kubernetes.crt
sudo grep 'client-certificate-data' /etc/kubernetes/admin.conf | head -n 1 | awk '{print $2}' | base64 -d > ~/kubernetes.key

 

이 명령어를 실행하면 계정 홈 경로에 kubernetes.crt, kubernetes.key 파일이 생성된다.

 

생성된 파일을 확인해 보자.

$ cat ~/kubernetes.crt
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAyare5BI5sIDcm5gPK7a5Ra9SeEc7wSRuGf4BmrFoeOK0xSAB
JZzdjmRM43I0PXoDfYGPErJGRorgAbh7ji17WAz/7IUoMtJ4bo4OZAAlvuUsQ116
5e/r7UKDm2QwBefLIvlf2psn2jUJ1ClviOnXQRNwDMCuLcJHYBzpbBinzW13H4o6
jC6XURj2HDW5ayg0tIdz4UsCPri982tj3/O2dqhHgd5PB3b9ffGtaCro+7cGcpAF
q1PzS3Y3dMbZs2R3OZpCuiO5aJ10FAbcX5Em0gX3YVyC+obotzfl+l8Ij1EJUZRO
4vYkfIDF/FqxIvGOJwnr1H+6cahNVW3rkbSB5wIDAQABAoIBAQCI5X04xUZ0EoWu
+aISwo8yRrls/K4LhndXHZ5pLFUG+p5L0lX0+m9L4bpwC2567QDBidldj7c028EE
af81nJpGQ0zXeey30zf9lGEgcRkuZNOPRz3OKPe2r5g3O+N9nsO+khoHg5uh/K8X
Xqlf/50nh9JgVcvnNCLPk9DAmFwQjjHfquv8EKU8Mc/UaCRhk4E3wh0I5475FAwL
R195xUmrRLob84mNyW7uAEvOKgt6CJi78nHh7lgTvk2W0cKIcj10bFlpdG3R7I/j
fVJGq9Eh5LR3dfh1Al9viQZH77Kr2lzHZpYHNGvSxG2tzHBee4ECasPyW2+fV3MZ
d7Lp1fbBAoGBAOlXI9hGvX3pLz45q5SLz4si3xFzbPmxmOt8eqoNIDecKDzGwsJe
nsixPCLf74e//Hc3DiVg2Bhkm/z1O4t0Z6G9zDwABAfUr2cTFw6mCk6gQPD53fZT
bvbaPgSZgoXU7LghNTaUVtmyIpstlQd5rtGt1mPR5NhbPHmYOUJ0cGnNAoGBAN1A
VtlejNnNyyyMLafJKH5qXu5nZWBtnnsMWZPWkte+Yc/k94S74sRivcVfpDzjaQ/T
6RlNkRyU36coOEA9HmfKSKz4vmFNb9ANnMUASxekxvfJiNyZIPEpZDAAG5A97jvp
ItmezQiNDETCMUG+XlBlPxhwK+18/gUVTOVRsdaDAoGAIJE7/ISrD/bK1DmCXCJD
Xl0Im0vr6tHB0SQ3jqJ0W66c4xauuigwqzwpc4ijyuOd3hm+DLN+lbD9IIotvGIL
0MRHzBwIc/tYW9+LOU0tZRny1m9ZbnbopuWBAG1YjUtRmsVvwuVjVdEKCXSMN1Xh
c3x6zsXN1fCt+R6o50CPLAUCgYEAjF+Buq/OVXHH8h+N5+IsmugKCt/25dMmtZME
UlPVHqRfknMGx2QdX9P16v/fR/JQegZM4gzggG3D6F4QMlGUtO0WZwf6Yemrgyjf
ye2BtyKISjXHa46L4/YK5plq430nZUNpJQEnvMEgg49hiQCq/f7+pRamCCtBTyBQ
hT3rwtkCgYEAlMDoBci0olyErRgpjcGUuvHxrJcwUe+HsJfvDcftAxSDnPKwwjGg
uDAo6OXXg41es2uO3hIfBU41+iXrA82z0VLgYSDSl3OjaA5ugdTdw93cf8QaQ9j1
TU9+k7TvFG3iawz9f0F+dwg6qw5Vv+UpVwabyyHbkcsO2MNUfFdsj74=
-----END RSA PRIVATE KEY-----

 

 

$ cat ~/kubernetes.key
-----BEGIN CERTIFICATE-----
MIIDKTCCAhGgAwIBAgIILCwluEZJkgQwDQYJKoZIhvcNAQELBQAwFTETMBEGA1UE
AxMKa3ViZXJuZXRlczAeFw0yNDA2MDQwODUzMTBaFw0yNTA2MDQwODU4MTRaMDwx
HzAdBgNVBAoTFmt1YmVhZG06Y2x1c3Rlci1hZG1pbnMxGTAXBgNVBAMTEGt1YmVy
bmV0ZXMtYWRtaW4wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJqt7k
EjmwgNybmA8rtrlFr1J4RzvBJG4Z/gGasWh44rTFIAElnN2OZEzjcjQ9egN9gY8S
skZGiuABuHuOLXtYDP/shSgy0nhujg5kACW+5SxDXXrl7+vtQoObZDAF58si+V/a
myfaNQnUKW+I6ddBE3AMwK4twkdgHOlsGKfNbXcfijqMLpdRGPYcNblrKDS0h3Ph
SwI+uL3za2Pf87Z2qEeB3k8Hdv198a1oKuj7twZykAWrU/NLdjd0xtmzZHc5mkK6
I7lonXQUBtxfkSbSBfdhXIL6hui3N+X6XwiPUQlRlE7i9iR8gMX8WrEi8Y4nCevU
f7pxqE1VbeuRtIHnAgMBAAGjVjBUMA4GA1UdDwEB/wQEAwIFoDATBgNVHSUEDDAK
BggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB8GA1UdIwQYMBaAFNQWjp1/VlKgVg+2
mmpp0AWiVBGuMA0GCSqGSIb3DQEBCwUAA4IBAQB4WXtR+00yy0D2cSUiwshHjyTY
aL0+BRPkEB7eWFpovfWma25gp52QfIVhRhNdwwZweLGW8WptMXmokXYWOcGGFiyR
FJPnFPloBtGEej5iKGRVCsrQyVO/+tDrAHlRGf5oon5SttoCJb9tmJnODquSGsdP
G37KmB1E33LkNwYZewUFIKGdREIySqOM51Bxu5MlJf5bxdSl21KbkKOud5k0kubh
cOHZT/qQAcLNTI0LeACbJkfkETeLUC/xaeaQ4KUfUlDFnbRj2yh4ZOm1QeAvdDY/
mnSIHgaTkEkgN01hMBZMTvvJxW1CzxH/C+3yyNE+IaPKMCh3tFrtNDTM2wCy
-----END CERTIFICATE-----

 

 

이 방법을 사용해서 쿠버네티스에 접근할 수 있다.

 

참고로, Postman에서 연결하려면 우측 상단의 톱니바퀴 아이콘을 클릭하여 Settings로 이동한다.

Postman 설정

 

Settings  > Certificates  > Add Certificate... 버튼을 클릭한다.

인증서 설정

 

아까 생성한 파일들을 서버에서 다운로드한 후 CRT file과 KEY file에 입력하고, Host에는 서버 주소를 넣는다.

인증서 추가

 

 

이렇게 설정하고 난 후에 API를 호출하면 성공!

Postman에서 API 호출 성공