개요
쿠버네티스 Java™ 클라이언트는 쿠버네티스와 상호 작용할 수 있도록 Java 프로그래밍 언어 사용을 지원하는 클라이언트 라이브러리입니다. 쿠버네티스 REST API를 기반으로 구축된 Java 클라이언트는 쿠버네티스에 대한 프로그래밍 방식 액세스를 제공하며, 쿠버네티스 클러스터 내에서 다양한 리소스를 생성, 수정, 삭제하고, 배포를 확장하고, 커맨드를 실행하고, 이벤트를 모니터링할 수 있는 기능을 부여합니다.
쿠버네티스는 컨테이너화된 애플리케이션의 배포, 관리, 스케일링을 자동화하는 오픈소스 컨테이너 오케스트레이션 플랫폼입니다. 쿠버네티스 클라이언트 라이브러리는 인증과 같은 작업을 처리하고, 개발자가 쿠버네티스 API를 사용하는 애플리케이션을 더욱 쉽게 작성하도록 합니다.
가장 오래되고 가장 널리 사용되고 있는 클라이언트 프레임워크는 client-go라고 불리는 공식 쿠버네티스 Go 클라이언트입니다. Client-go는 쿠버네티스 자체에서 사용되기도 하지만 Red Hat® OpenShift와 같은 기타 배포판과 플랫폼에서도 사용됩니다. 널리 사용되는 다른 클라이언트로는 다양한 프로그래밍 언어를 위한 공식 클라이언트 라이브러리와 커뮤니티에서 유지 관리하는 클라이언트 라이브러리가 있습니다. 쿠버네티스에는 다수의 커뮤니티 Java 클라이언트가 존재하지만, 쿠버네티스 Java 클라이언트는 쿠버네티스 API Machinery SIG(Special Interest Group)에서 유지 관리하는 공식 클라이언트 라이브러리 입니다.
쿠버네티스 Java 클라이언트를 사용해야 하는 이유
최근 몇 년간 개발자는 더욱 다양하게 활용할 수 있는 클라우드 네이티브 애플리케이션을 선호하면서 모놀리식 아키텍처에서 벗어나고 있습니다. 레거시 Java 애플리케이션을 현대화하려는 많은 조직은 클라우드 배포 모델로 전환합니다. Java 애플리케이션 현대화의 핵심이라 할 수 있는 클라우드 네이티브 Java는 쿠버네티스와 같은 컨테이너 오케스트레이션 플랫폼을 사용하여 애플리케이션을 효율적으로 관리, 배포, 확장하는 것을 포함하는 경우가 많습니다.
컨테이너화된 애플리케이션이 항상 쿠버네티스 API와 커뮤니케이션할 필요는 없지만, 특정 작업을 수행하려면 API 호출이 필요한 활용 사례가 많습니다. 쿠버네티스 클러스터 관리를 위해 Red Hat OpenShift 같은 플랫폼과 Red Hat Advanced Cluster Management for Kubernetes 같은 구성 요소를 사용하는 대신 DIY 접근 방식을 선택하는 경우, 공식 Java 클라이언트를 사용하여 다음과 같은 활용 사례에 대해 쿠버네티스 API와 커뮤니케이션할 수 있습니다.
- 애플리케이션 관리
- 스케일링 및 자동 스케일링(autoscaling)
- 모니터링, 경고, 로깅
- 지속적 배포 설정
- 맞춤형 오퍼레이터로 쿠버네티스 API 확장
- 클러스터 관리
- 하이브리드 클라우드 관리
쿠버네티스와 관련 툴 및 라이브러리의 많은 부분이 Golang으로 작성되었기 때문에 쿠버네티스에서 클라우드 네이티브 개발로 전환하려면 조직의 기존 개발자가 Golang 배경 지식을 가지고 있지 않은 경우 추가 교육과 리소스가 필요할 수 있습니다. 기존 Java 애플리케이션을 보유하거나 Java 배경 지식이 있는 개발자를 보유한 조직의 경우, 쿠버네티스 Java 클라이언트는 새로운 프로그래밍 언어를 학습할 필요가 없으며 클라우드 네이티브 개발로 간단히 전환할 수 있습니다.
Red Hat 리소스
쿠버네티스 Java 클라이언트의 대안
공식 쿠버네티스 Java 클라이언트가 Java 개발자에게 가장 적합한 선택지인 것처럼 보일 수 있지만, 쿠버네티스 클러스터의 운영과 관리를 지원하는 데 사용할 수 있는 옵션은 다양합니다.
쿠버네티스 REST API 및 kubectl
쿠버네티스 REST API는 쿠버네티스 컨트롤 플레인의 프론트엔드 역할을 하며, 쿠버네티스 클러스터를 관리, 생성, 구성하는 데 사용됩니다. 쿠버네티스 커맨드라인 툴인 kubectl을 사용하여 API와 상호 작용하고 API를 호출하며 쿠버네티스 리소스를 관리할 수 있습니다. 또한 curl이나 Wget과 같은 http 클라이언트를 사용하여 REST API에 직접 액세스할 수도 있습니다.
Fabric8 Java 클라이언트
Fabric8 Java 클라이언트는 커뮤니티에서 유지 관리하는 클라이언트 라이브러리이며, 가장 오래된 쿠버네티스용 Java 라이브러리입니다. 이는 추가적인 종속성 없이도 강력한 도메인별 언어(DSL), 다양한 확장자, 맞춤형 리소스에 대한 지원을 제공하여 공식 Java 클라이언트와는 차이가 있습니다.
쿠버네티스 오퍼레이터
쿠버네티스 오퍼레이터는 애플리케이션별 맞춤형 컨트롤러로서, 쿠버네티스 API와 kubectl 툴링을 사용하여 애플리케이션을 생성, 구성, 관리합니다. 대다수의 컨트롤러와 달리 쿠버네티스 오퍼레이터는 도메인 또는 애플리케이션별 지식을 포함하여 컨테이너화된 애플리케이션의 라이프사이클 전체를 자동화함으로써 이와 같은 애플리케이션이 사용하는 프로세스를 개발자가 손쉽게 배포하고 확장할 수 있도록 합니다.
그 외 타사 라이브러리
Fabric8과 공식 Java 클라이언트가 가장 널리 사용되는 쿠버네티스용 Java 라이브러리이지만, 유일한 옵션은 아닙니다. 그 외 Java 클라이언트에는 OSGI Java 프레임워크용 Amdatu Labs Java 클라이언트와 쿠버네티스용 YAKC Java 클라이언트가 있습니다.
다른 프로그래밍 언어에 대한 전문성을 지닌 개발자의 경우 요구 사항에 더욱 적합한 Java 외의 클라이언트를 선택할 수 있습니다. 다른 공식 및 타사 라이브러리의 경우 C, dotnet, Haskell, Javascript, Perl, Python, Ruby 등 수많은 언어를 사용할 수 있습니다.
Red Hat의 지원 방식
쿠버네티스는 강력한 오픈소스 컨테이너 오케스트레이션 플랫폼이지만, 더욱 신속한 애플리케이션 개발에 필요한 네트워킹, 스토리지, 모니터링, CI/CD와 같은 다른 구성 요소와 통합하는 기능이 부족합니다. Red Hat OpenShift는 쿠버네티스에 구축되어 엔터프라이즈 컨테이너 오케스트레이션 플랫폼을 제공하는 동시에 이러한 구성 요소를 모두 통합하여 컨테이너화된 애플리케이션을 더 빠르게 제공합니다.
공식 쿠버네티스 Java 클라이언트와 그 외 쿠버네티스 라이브러리를 계속 사용할 수도 있지만, Red Hat OpenShift가 추가한 API 엔드포인트와 추가 리소스를 활용할 수 있도록 다른 클라이언트를 이용할 수도 있습니다. 쿠버네티스 클라이언트와 마찬가지로 OpenShift용 REST API 클라이언트 라이브러리는 Java를 비롯한 다양한 프로그래밍 언어를 사용할 수 있습니다.
컨테이너 기술에 대한 전문성을 제공하는 것 외에도 Red Hat은 Red Hat OpenShift, Red Hat Ansible Automation Platform, 쿠버네티스 오퍼레이터를 통해 인프라 관리를 자동화하여 애플리케이션 현대화의 복잡성을 극복할 수 있도록 지원합니다. 또한 Red Hat은 Red Hat Advanced Cluster Management for Kubernetes를 통해 여러 클러스터와 다양한 인프라 전반에서 애플리케이션 관리를 자동화하기 위한 추가적인 툴링을 제공하여 애플리케이션을 더 빠르게 제공하고 워크로드를 현대화하도록 지원합니다.
레드햇 공식 블로그
레드햇 공식 블로그에서 고객, 파트너, 커뮤니티 에코시스템 등 현재 화제가 되는 최신 정보를 살펴 보세요.