전공영역 공부 기록

EKS upgrade in-place방식에서 가장 걱정했던 것

악분 2024. 7. 1. 01:40
반응형

1. EKS 업그레이드 종류

EKS버전 업그레이드는 in-place와 blue-green 2가지 방법이 있습니다.

  • bluegreen: 업그레이드된 EKS를 새로 생성하고 서비스를 이동하는 방법
  • in-place: 현재 버전 EKS에서 버전 업그레이드 하는 방법

 

2. 나의 쿠버네티스 업그레이드 버전 경험

저는 온프레미스에는 in-place방법으로 쿠버네티스 버전을 업그레이드 했었고 EKS는 blue-green방법으로 업그레이드를 했었습니다.

 

온프레미스는 서버 개수가 제한이 있어서 in-place방법으로 했었고 EKS는 언제든지 서버를 생성할 수 있어서 blue-green으로 버전 업그레이드 했습니다.

 

3. EKS in-place방법을 고민한 이유

2가지 EKS 업그레이드 각각 장단점이 있습니다.

 

서비스 장애 없이 안전하게 EKS버전을 업그레이드 하려면 blue-green이 좋습니다. 하지만, 서비스를 이동하는 작업은 In-place방법보다 많은 신경을 써야하고 시간도 많이 필요합니다. 서비스 개수가 많으면 더 신경쓸게 많아집니다.

 

강하게 표현하면 blue-green방식으로 EKS 버전 업그레이드를 하면, 많은 시간을 투자해야하고 그 시간만큼 다른 작업이 중단됩니다.

 

따라서 저는 EKS버전 업그레이드 방법을 시간을 덜 쓰는 in-place를 고민을 시작했습니다. 물론 in-place방법의 EKS 버전 업그레이드가 실패하지 않았다는 가정을 했습니다.

 

 

4. 내가 고민했던 부분

EKS in-place업그레이드 방법은 subnet IP 고갈 등을 고려해야 합니다. 그 중 저는 가장 걱정했던 부분이 OIDC provider입니다. OIDC provider이 변경되어 IRSA를 사용하는 pod가 장애가 나지 않을까 고민했습니다.

 

저는 테라폼으로 EKS를 관리하므로 테라폼 코드로 EKS버전을 업그레이드 할 계획이었습니다. 아래 예제는 EKS버전을 1.27을 1.28로 업그레이드하고 terraform plan을 실행한 결과입니다.

 

EKS 버전만 업그레이드 되야 하는데 OIDC provider의 thumbprint_list가 변경될려고 했습니다.

 

thumbprint_list가 변경되므로 IRSA IAM role이 업데이트 될려고 했습니다.

 

terraform plan 결과를 보고 저는 EKS를 업그레이드 한 후, IRSA를 사용하는 pod가 장애가 나지 않을까 생각했습니다.

 

5. 테스트환경에서 업그레이드를 해보자

EKS버전을 업그레이드하면 예상한 장애 상황이 정말 발생하는지 테스트하기 위해 terraform apply를 실행했습니다.

 

5.1 장애 확인을 위한 준비

terraform apply를 실행 후 OIDC관련 장애가 나는지 확인하기 위해 테스트 pod를 생성했습니다. 테스트 pod는 IRSA를 사용하고 1초에 1번 s3 버킷목록을 조회하는 API를 호출합니다.

 

그리고 terraform apply를 실행하기 전 OIDC provider thumbprint_list를 확인했습니다.

 

5.2 terraform apply이후 관찰

아래 그림은 terraform apply이후 결과입니다. 예상과 다르게 리소스가 업데이트되었다는 결과는 없었습니다. 업데이트 대신 상태를 읽는 reading이 있었습니다.

 

OIDC provider thumbprint_list는 terraform apply 실행 전과 실행 후 변화가 없었습니다. 따라서 s3버킷을 조회하는 pod에서도 에러로그가 없었습니다.

 

6. 1.29 -> 1.30버전 업그레이드에서는 오류 발생 이슈가 존재

2024년 6월에 AWS 질의응답 게시판에 OIDC provider이슈가 올라왔습니다. EKS버전을 1.29 -> 1.30업그레이드를 실패했고 AWS IAM과 OIDC provider연결을 해제 했더니 업그레이드가 성공했다는 글이었습니다.

 

저는 이유를 정확히 이해하지 못했지만 terraform 같은 도구로 EKS를 업그레이드 할 때 AWS console과 다른 부분이 있는 것 같습니다.

 

7. 마무리

테스트를 마치고 in-place방식으로 업그레이드 하면 OIDC provider이슈가 발생할 수 있다는 것을 알았습니다. 저에게 아직 발생하지 않았지만 2024년 7월 기준 1.29 -> 1.30버전 업그레이드에서 이슈가 올라와 있습니다. 테라폼으로 업그레이드 했기 때문에 발생한 이슈로 이해했고 AWS 콘솔에서 업그레이드 하고 terraform import를 해야할지 고민해봐야 되겠습니다.

 

참고자료

이하여백

반응형