야미의 개발

Spring 프로젝트에서 쿠버네티스 API 사용하기(2) - fabric8를 사용한 매트릭 추출 본문

클라우드 개발/쿠버네티스

Spring 프로젝트에서 쿠버네티스 API 사용하기(2) - fabric8를 사용한 매트릭 추출

채야미 2024. 1. 30. 12:16

여러가지 방법을 통해 매트릭을 추출할 수 있지만 

fabric8를 사용하는 것이 가장 편리해 이 라이브러리를 사용해보겠습니다.

 

스프링부트 프로젝트 설정 및 Fabric8를 이용한 메트릭 추출

 

1. Gradle 파일에 implementation group:'io.fabric8', 부분 추가

dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
	implementation 'org.springframework.boot:spring-boot-starter-web'
	implementation 'org.mariadb.jdbc:mariadb-java-client'
	implementation group:'io.fabric8', name: 'kubernetes-client', version:'6.8.1'
	implementation 'o**rg.springframework.boot:spring-boot-starter-actuator'**
	implementation 'io.micrometer:micrometer-registry-prometheus'
	implementation 'org.json:json:20200518'

	compileOnly 'org.projectlombok:lombok'

	annotationProcessor 'org.projectlombok:lombok'
	testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

 

2. 연동을 위한 caCert 인증서 준비 cat $HOME/.kube/config 를 사용하여 caCert 확인

clusters:
- cluster:
    certificate-authority-data: <base64-encoded-ca-cert-data>
    server: <master-url>

<base64-encoded-ca-cert-data>가 caCert

 

3. 기본 설정 준비 - Test를 사용에 연동 확인

public class RestApiTest {
    private String kubernetesUrl = "API 주소"
    private String API_TOKEN = "Token 값 대"
    private String caCert = "ceCert 대입"
		Config config = new ConfigBuilder()
            .withCaCertData(caCert)
            .withMasterUrl(kubernetesUrl)
            .withOauthToken(API_TOKEN)
            .withTrustCerts(true)
            .build();
    KubernetesClient client = new DefaultKubernetesClient(config);

 

4. 이제 아래와 같은 코드로 메트릭 정보를 불러올 수 있음

@Test
    public void getPodCPUAndMemory() {
        logger.info("==== Pod Metrics ====");

        client.top().pods().metrics("default").getItems().forEach(podMetrics ->
                podMetrics.getContainers().forEach(containerMetrics ->
                        logger.info("{}\\t{}\\tCPU: {}{}\\tMemory: {}{}",
                                podMetrics.getMetadata().getName(), containerMetrics.getName(),
                                containerMetrics.getUsage().get("cpu").getAmount(), containerMetrics.getUsage().get("cpu").getFormat(),
                                containerMetrics.getUsage().get("memory").getAmount(), containerMetrics.getUsage().get("memory").getFormat()
                        ))
        );
    }
    참고
 

[Kubernetes] Spring에서 쿠버네티스 Pod 정보조회

[kubernetes] 쿠버네티스 목차 [kubernetes] 모니터링 방법 정리 ㅁ 개요 지난 글 [Kubernetes] 쿠버네티스API 서버 CURL 접속 방법에서 쿠버네티스API와 REST API 요청을 위한 JWT Token, Service Account 권한 설정을

peterica.tistory.com

 

Comments