Knative(케이-네이-티브로 발음)는 Kubernetes 컨테이너 오케스트레이션 플랫폼의 확장으로, 서버리스 워크로드를 Kubernetes 클러스터에서 실행할 수 있도록 지원하며, Kubernetes 내에서 컨테이너화된 애플리케이션을 구축, 배포, 관리하는 툴과 유틸리티를 제공하여 더 단순하고 'Kubernetes 네이티브'적인 경험을 제공합니다(즉, Knative는 'Kubernetes'의 K와 native를 결합한 것임).
Kubernetes처럼, Knative는 오픈 소스 소프트웨어입니다. Knative는 원래 Google에서 IBM, Pivotal, Red Hat, SAP 및 약 50개의 다른 기업과 협력하여 개발되었습니다. 현재 Knative 오픈 소스 프로젝트는 CNCF(Cloud Native Computing Foundation)에서 주관하고 있습니다.
Kubernetes는 컨테이너의 배포, 관리, 확장을 자동화하고 일정을 관리합니다. 컨테이너는 환경에서 코드를 실행하는 데 필요한 운영 체제(OS) 라이브러리 및 종속성 항목과 소스 코드를 결합하는 실행 가능한 경량 애플리케이션 컴포넌트입니다.
가상 머신(VM)을 통해 애플리케이션이 하나의 물리적 컴퓨터 리소스를 공유하는 것과 거의 동일한 방식으로, 컨테이너를 통해 애플리케이션 컴포넌트가 OS의 단일 인스턴스 리소스를 공유할 수 있습니다. 컨테이너는 VM보다 더 작고 리소스 효율이 높으며, 애자일 및 DevOps 개발 방법론에 더 적합하므로, 사실상 최신 클라우드 네이티브 애플리케이션의 컴퓨팅 유닛이 되었습니다. 컨테이너를 사용하는 기업들은 앱 품질 향상, 혁신 수준 향상 등 또 다른 이점도 보고했습니다.
보고서 전체 다운로드: 엔터프라이즈의 컨테이너 (PDF, 1.4MB)
클라우드 네이티브 개발의 인기가 높아지고 조직에서 컨테이너가 확산되는 가운데 Kubernetes의 컨테이너 오케스트레이션 기능(예: 일정 관리, 로드 밸런싱, 상태 모니터링 등)으로 훨씬 더 쉽게 이러한 확산을 관리할 수 있게 되었습니다. 그러나, Kubernetes는 개발자가 Kubernetes 외부에서 여러 가지 툴을 사용하여 많은 반복적인 작업(저장소에서 애플리케이션 소스 코드 가져오기, 코드 주위에 컨테이너 이미지 구축 및 프로비저닝, 네트워크 연결 구성)을 수행하거나 템플리트화하는 데 필요한 복잡한 툴입니다. 그리고 Kubernetes 관리형 컨테이너를 지속적 통합/지속적 딜리버리 (CI/DC) 파이프라인에 통합하려면 특수한 툴과 맞춤형 코딩 작업이 필요합니다.
Knative는 Kubernetes 내에서 이러한 작업을 자동화하는 툴을 사용하여 복잡성을 해소합니다. 개발자가 단일 YAML 매니페스트 파일에서 컨테이너의 컨텐츠와 구성을 정의하면, Knative에서 나머지 작업을 수행하여 컨테이너를 만들고 네트워크 프로그래밍을 수행합니다. 그리고 이를 통해 루트, 인그레스, 로드 밸런싱 등을 설정합니다. (Knative는 또한 Knative CLI라는 명령행 인터페이스를 제공합니다. 개발자는 이 CLI로 YAML 파일을 편집하지 않고도 Knative 기능에 액세스할 수 있습니다.)
서버리스 컴퓨팅은 애플리케이션 개발을 용이하게 하고 애플리케이션 실행 시 비용 효율성을 높이는 클라우드 네이티브 실행 모델입니다. 서버리스 컴퓨팅 모델은
Kubernetes는 그 자체로 서버리스 애플리케이션을 실행할 수 없습니다. 이를 위해서는 Kubernetes를 특정 클라우드 제공자의 서버리스 플랫폼과 통합하는 전문화된 소프트웨어가 필요합니다. Knative는 코드를 추상화하고 네트워크 라우팅, 이벤트 트리거 및 자동 스케일링을 처리하여 어느 Kubernetes 클러스터에서든(컨테이너가 서버리스 기능에 따라 구축되었거나, 다른 애플리케이션 코드(예: 마이크로서비스)를 기반으로 하든 상관없이) 컨테이너가 서버리스 워크로드로 실행되도록 지원합니다.
Knative는 Kubernetes 위에 있으며, 빌드(build), 서빙(serving), 이벤팅(eventing)이라는 세 가지 주요 컴포넌트, 즉 프리미티브를 추가합니다.
Knative의 빌드 컴포넌트는 소스 코드를 컨테이너로 바꾸는 프로세스를 자동화합니다. 이 프로세스에는 일반적으로 다음과 같은 여러 단계가 포함됩니다.
Knative는 빌드 프로세스에 Kubernetes API 및 기타 툴을 사용합니다. 개발자는 모든 변수(소스 코드의 위치, 필요한 종속성 항목 등)를 지정하는 단일 매니페스트(일반적으로 YAML 파일임)를 만들 수 있으며, Knative는 이 매니페스트를 사용하여 컨테이너 빌드를 자동화합니다.
서빙 컴포넌트는 확장 가능한 Knative 서비스로서 컨테이너를 배포하고 실행합니다. 서빙은 다음과 같은 중요한 기능을 제공합니다.
Knative 서빙은 Kubernetes 생태계의 또 다른 애플리케이션인 Istio로부터 지능형 서비스 라우팅을 가져옵니다. Kubernetes를 위한 오픈 소스 서비스 메시. Istio는 또한 서비스 요청에 대한 인증, 서비스 간의 안전한 통신을 위한 자동 트래픽 암호화 그리고 개발자와 관리자가 인프라 최적화를 위해 사용할 수 있는 마이크로서비스 및 서버리스 기능 운영에 대한 상세한 메트릭을 제공합니다. (Knative가 Istio를 사용하는 방식을 자세히 알아보려면 “Istio 및 Knative: 새로운 개발자 경험을 위해 Kubernetes 확장"을 읽어 보세요.)
Knative의 이벤팅 컴포넌트를 사용하면 다양한 이벤트에서 컨테이너 기반 서비스 및 기능을 트리거할 수 있습니다.Knative는 이벤트의 줄을 세우고 이러한 이벤트를 적절한 컨테이너에 제공합니다. 따라서 이 기능을 위한 스크립트를 작성하거나 미들웨어를 실행하지 않아도 됩니다. Knative는 개발자가 선택할 수 있는 이벤트의 큐인 채널과 이벤트를 컨테이너에 제공하는 메시징 플랫폼인 버스도 처리합니다. 또한 Knative는 개발자가 피드를 설정하도록 지원합니다. 피드는 이벤트를 컨테이너가 수행할 작업에 연결합니다.
Knative 이벤트 소스로 개발자는 더 쉽게 써드파티 이벤트 생성자와 연결할 수 있습니다. Knative 이벤팅은 자동으로 이벤트 생성자에 대한 연결을 작성하고 생성된 이벤트를 라우팅합니다. 이러한 작업을 수행하기 위해 어떻게 프로그래밍해야 하는지 몰라도 괜챦습니다. Knative가 다 해주기 때문입니다.
요약하면, Knative는 컨테이너화된 앱 개발을 간소화하거나 컨테이너 사용 방식을 한 차원 더 향상시키려는 Kubernetes 사용자를 위해 여러 가지 사용 사례를 지원합니다.
Kubernetes 간소화.Knative는 반복적인 빌드 및 구성 작업을 제거하여 Kubernetes로 작업하는 개발자의 생산성을 높여 줍니다. 늘어나는 Kubernetes 클러스터를 관리하느라 애를 먹고 있는 개발 팀이라면 누구나 Knative를 사용할 수 있습니다.
서버리스로의 전환 여정 가속화. 서버리스 환경을 수동으로 설정하고 관리하는 일은 부담스러울 수 있습니다. Knative를 사용하면 조직에서 서버리스 워크로드를 신속하게 설정할 수 있습니다. 개발자의 입장에서 보면, 개발자는 컨테이너만 빌드합니다. 보이지 않게 서버리스 기능으로 컨테이너를 실행하는 것은 Knative입니다.
애자일 및 DevOps 라이프사이클 지원. Knative는 개발자가 새 컨테이너와 컨테이너 버전을 더 빨리 작성할 수 있도록 지원하므로 애자일 또는 DevOps 워크플로우의 일부인 소규모의 빠르고 반복적인 단계에서 컨테이너화된 애플리케이션을 더 쉽게 배포할 수 있습니다. 그리고 Knative 서비스는 특별한 소프트웨어나 맞춤형 프로그래밍 없이도 자동화된 CI/CD 파이프라인으로 쉽게 통합됩니다.
원활하게 새 기능을 배포하도록 지원. 고객에게 새 릴리스를 배포하면 비즈니스 프로세스에 영향을 줄 수 있는 소프트웨어 문제가 노출될 수 있습니다. Knative의 구성 및 라우팅 기능을 통해 개발자는 새 컨테이너 개정판을 사용자 층의 일부에게만 노출한 다음 문제를 해결하면서 시간이 흐름에 따라 대상을 점진적으로 확대할 수 있습니다. 또는 필요한 경우 이전 버전으로 빨리 돌아갈 수 있습니다.
개발자가 코딩과 혁신에 집중하도록 지원. DevOps는 개발자가 자신의 환경을 관리할 수 있도록 힘을 실어 줄 수 있습니다. 그러나 결국 개발자가 원하는 건 이벤트 트리거 또는 컨테이너 확장을 위한 메시지 버스 대기열을 구성하는 것이 아니라 버그 없는 소프트웨어와 혁신적인 새 기능을 구축하는 데 집중하는 것입니다. Knative는 개발자가 가장 잘 하는 일에 더 많은 시간을 쓸 수 있도록 지원합니다.
Red Hat OpenShift on IBM Cloud를 사용하는 OpenShift 개발자는 Kubernetes 클러스터에서 엔터프라이즈 워크로드를 컨테이너화 및 배치할 수 있는 빠르고 안전한 방법을 보유합니다.
툴체인, 데이터베이스, AI가 포함된 공통 클라우드 서비스 세트를 사용하여 모든 클라우드 벤더의 온프레미스, 엣지 컴퓨팅, 퍼블릭 클라우드 환경에서 일관되게 앱을 배포 및 실행합니다.
완전 관리형 서버리스 플랫폼인 IBM Cloud Code Engine을 사용하면 완전 관리형 컨테이너 런타임에서 컨테이너, 애플리케이션 코드 또는 배치 작업을 실행할 수 있습니다.