kubernetes-client 소개
npm - kuebernetes-client
gitlab pipeline의 상태 체크만으로는 kubernetes 클러스터에 온전히 배포가 완료되었는지 체크할 수 없었다.
kubernetes-client는 Node.js에서 kubernetes api를 사용할 수 있도록 도와주는 패키지이다.
2020-03-03 기준, kubernetes API 1.13 ~ 1.7 버전까지 지원하고 있다.
간단 사용법
1 | const { KubeConfig } = require('kubernetes-client'); |
최초의 생각.
kubernetes 클러스터를 여럿 운용하고 있었다.
Database에 배포 정보를 저장하고, 클러스터 id key를 기록한다.
1분 크론으로 등록하여, 해당 클러스터 정보에 매핑되는 context-name을 불러온다.
해당 컨텍스트로 정상 배포되었는지 체크한다.
deployment의 status가 complate 혹은 success 면 배포 성공이 아닐까?
소스코드 작업 진행
1 | const { KubeConfig, Client } = require('kubernetes-client'); |
namespace.items array elements
1 | { metadata: |
deployment.items array elements
1 | { metadata: |
deployment.items[n].status.conditions
1 | [ { type: 'Available', |
문제점
Deployment의 Status는 MinimumReplicasAvailable에서 확인 할 수 있 듯, 최소 replica 수를 만족하는지만 체크한다. :: 배포 정책이 rolling update이기 때문에..
차안
Deployment에 연결된 Pod들의 상태를 모두 체크한다.
Rolling update 배포 방식이어도, 모든 파드가 Running일때만 성공으로 확인하면 배포 상태를 잡을 수 있다.
소스 작업 :: 2차
1 | const { KubeConfig, Client } = require('kubernetes-client'); |
Pod의 metadata - label을 통해 Deployment에 연결된 Pod들을 조회할 수 있었고
해당 Pod들의 상태가 모두 Running이어야 배포 완료로 체크하여 처리했다.