Code Engine에서 Kubernetes 사용

IBM Cloud® Code Engine은 빌드된 기본 기술과 상호 작용할 필요가 없도록 설계되었습니다. 그러나 Kubernetes 또는 Knative를 기반으로 하는 기존 도구가 있는 경우 Code Engine에서 해당 도구를 계속 사용할 수 있습니다. Code Engine은 Kubernetes 및 Knative API와 해당 CLI 명령을 지원합니다. Knative에 대한 자세한 정보는 Code Engine에서 Knative 사용을 참조하십시오.

Kubernetes 를 Code Engine 와 함께 사용하기로 결정한 경우, 다음 사항을 고려하시기 바랍니다:

  • Kubernetes에서 실행되는 대부분의 컨테이너 또는 팟(Pod)은 Code Engine에서 실행됩니다.
  • 배치와 같은 Kubernetes 구성은 보안 정책과 같은 클러스터 전체 기능을 사용하지 않는 경우 Code Engine에서 실행됩니다. Code Engine은 Kubernetes 네임스페이스에서 실행할 수 있는 범위로 지정됩니다.

Code Engine은 OpenShift 관련 리소스 또는 Docker Swarm 또는 Compose Swarm과 같은 기타 컨테이너 오케스트레이션 플랫폼을 지원하지 않습니다.

Kubernetes 명령행 인터페이스 설치

Kubernetes CLI를 설치하려면 kubectl CLI를 다운로드하여 설치하십시오.

시스템의 PATH 환경 변수에 kubectl 바이너리를 추가해야 합니다.

Kubernetes API와 상호작용

Kubernetes 명령행 인터페이스(kubectl) 또는 Knative(kn)에서 프로젝트와 상호작용하려면 Code Engine의 Kubernetes API와 상호작용하도록 환경을 설정해야 합니다.

시작하기 전에

다음과 같은 방법으로 환경을 설정할 수 있습니다.

  • --kubecfg 명령에 project select 옵션을 추가할 수 있습니다. 예를 들면 다음과 같습니다.

    ibmcloud ce project select --name PROJECT_NAME --kubecfg
    
  • kubeconfig 파일을 직접 내보낼 수 있습니다. 현재 대상 프로젝트를 찾으려면 ibmcloud ce project current 명령을 실행하십시오. 이 명령은 또한 kubeconfig 파일에 대해 export 명령을 리턴합니다. 예를 들면 다음과 같습니다.

    ibmcloud ce project current
    

    출력 예

    Getting the current project context...
    OK
    Name:       myproject
    ID:         01234567-abcd-abcd-abcd-abcdabcd1111
    Subdomain:  aabon2dfwa0
    Domain:     us-south.codeengine.appdomain.cloud
    Region:     us-south
    Kubectl Context:  4svg40kna19
    Kubernetes Config:
    Context:             aabon2dfwa0
    Environment Variable: export KUBECONFIG=/user/myusername/.bluemix/plugins/code-engine/myproject-01234567-abcd-abcd-abcd-abcdabcd1111.yaml
    

    그런 다음 내보내기 명령을 복사하여 명령행 인터페이스에 붙여넣은 후 실행하십시오.

kubectl config 명령을 실행하여 환경이 올바르게 설정되었는지 확인하십시오.

kubectl config current-context

컨텍스트가 올바르게 설정된 경우 출력은 프로젝트의 Kubectl Context 값과 일치합니다. 예를 들어, 프로젝트의 값이 Kubectl Context 값이 4svg40kna19이면 명령은 4svg40kna19를 리턴합니다.

Kubernetes 및 Code Engine 아키텍처에서의 작동 방법에 대한 자세한 정보는 Code Engine 아키텍처 및 워크로드 격리에 대해 알아보기를 참조하십시오.

Kubernetes API 작업에 필요한 액세스 권한

환경을 설정한 후에는 Kubernetes API와 상호 작용할 수 있습니다. 특정 태스크에 대한 올바른 레벨의 권한이 있어야 합니다. 이러한 역할은 ID및 액세스 관리에서 설정됩니다. IBM Cloud 서비스 역할을 참조하십시오.

Kubernetes 권한
자원 관리자 역할 작성자 역할 독자 역할
serviceaccounts get, list, watch get, list, watch 없음
secrets get, list, watch, create, delete, update, patch, apply, edit get, list, watch, create, delete, update, patch, apply, edit 없음
configmaps get, list, watch, create, delete, update, patch, apply, edit get, list, watch, create, delete, update, patch, apply, edit 없음
events get, list, watch get, list, watch 없음
pods/log get, list, watch get, list, watch get, list, watch
pods get, list, watch, create, delete, patch, apply get, list, watch, create, delete, patch, apply get, list, watch
services get, list, watch, create, delete, patch, apply get, list, watch, create, delete, patch, apply get, list, watch
pods/exec create create 없음
pods/portforward create create 없음
pods/attach create 없음 없음
pods/status get, list get, list 없음
resourcequotas get, list, watch get, list, watch 가져오기, 나열, 감시
limitranges get, list, watch get, list, watch 없음
deployments get, list, watch, create, delete, patch, apply get, list, watch, create, delete, patch, apply get, list, watch
daemonset get, list, watch get, list, watch get, list, watch
pods.metrics.k8s.io 목록 목록 목록

Kubernetes 구성 검색

REST API 또는 Code Engine CLI 를 사용하여 Kubernetes 구성을 검색할 수 있습니다.

REST API로 Kubernetes 구성 검색

REST API를 사용하여 Kubernetes 구성을 검색하려면 다음을 수행하십시오.

  1. IBM Cloud® Identity and Access Management(IAM)로 인증하여 IAM 액세스 토큰을 받으십시오.
  2. IBM Cloud 카탈로그 및 IBM Cloud 리소스 제어기를 조회하여 프로젝트의 GUID를 받으십시오.
  3. IBM Cloud Code Engine API를 사용하여 Kubernetes 구성을 받으십시오.

Cloud Identity and Access Management로 인증

https://iam.cloud.ibm.com/identity/token 에 대한 POST 요청을 작성하여 IBM Cloud IAM 액세스 토큰 을 작성하십시오.

Code Engine 프로젝트의 GUID 판별

Code Engine 카탈로그와 IBM Cloud를 조회하여 IBM Cloud 프로젝트의 GUID를 판별하십시오. 이 GUID는 변경되지 않으므로 이 단계는 한 번만 수행해야 합니다. Code Engine 프로젝트 GUID를 이미 알고 있는 경우 이 단계를 건너뛸 수 있습니다.

Code Engine CLI를 사용하여 Code Engine 프로젝트의 GUID를 검색하려면 다음 단계를 완료하십시오.

  1. IBM Cloud에 로그인한 후 지역, 계정 및 리소스 그룹을 대상으로 지정하십시오.

    ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP
    
  2. ibmcloud resource 명령을 실행하십시오.

    ibmcloud resource service-instances --service-name codeengine --long
    
  3. Code Engine 프로젝트를 나타내는 서비스 인스턴스를 식별하고 출력에서 GUID를 판별하십시오.

REST API를 사용하여 Code Engine 프로젝트의 GUID를 검색하려면 다음 단계를 완료하십시오.

시작하기 전에 이전 단계의 access_token이 있어야 합니다.

  1. 다음 IBM Cloud 카탈로그 API 메소드를 사용하십시오. 상위 카탈로그 항목을 리턴합니다.

    출력 예

    curl -X GET \
      'https://globalcatalog.cloud.ibm.com/api/v1?include=*&q=name:codeengine+active:true' \
      -H 'Authorization: Bearer ACCESS_TOKEN'
    

    리소스 목록에서 고유한 리소스 ID를 식별하십시오. 필드 이름은 ID이고 JSON 경로는 resources[].id입니다.

  2. IBM Cloud 리소스 컨트롤러의 API 메서드를 사용하여 IBM Cloud 리소스 컨트롤러에 쿼리를 보내 모든 리소스 인스턴스의 목록을 가져옵니다. Code Engine 프로젝트 이름, 프로젝트가 상주하는 지역 및 Code Engine의 고유한 리소스 ID가 글로벌 카탈로그에 있어야 합니다. Code Engine 프로젝트의 이름을 조회 매개변수로 사용하십시오.

    출력 예

    curl -X GET \
        'https://resource-controller.cloud.ibm.com/v2/resource_instances?name=MY_PROJECT&resource_id=RESOURCE_ID' \
        -H 'Authorization: Bearer ACCESS_TOKEN'
    
  3. 결과 목록에 있는 지역에서 Code Engine 프로젝트를 식별하십시오. 다음 단계에서 사용할 guid 출력을 찾으십시오.

IBM Code Engine API 조회

시작하기 전에 다음 정보를 알고 있어야 합니다.

  • 이전 단계의 access_tokenrefresh_token
  • Code Engine 프로젝트의 guid
  • Code Engine 프로젝트가 위치한 지역

다음 get kubeconfig for the specified projectCode Engine API 메서드를 사용하여 Kubernetes 구성을 가져옵니다.

출력 예

curl -X GET \
    'https://resource-controller.cloud.ibm.com/v2/resource_instances?name=MY_PROJECT&resource_id=RESOURCE_ID' \
    -H 'Authorization: Bearer ACCESS_TOKEN'

Code Engine CLI를 사용하여 Kubernetes 구성을 가져오기

  1. IBM Cloud에 로그인한 후 지역, 계정 및 리소스 그룹을 대상으로 지정하십시오.

    ibmcloud login target -r REGION -c ACCOUNT_ID -g RESOURCE_GROUP
    
  2. Code Engine 프로젝트를 작성하십시오.

    ibmcloud ce project create --name PROJECT
    
  3. 현재 컨텍스트로서 Code Engine 프로젝트를 선택하고 기본 Kubernetes 구성 파일에 프로젝트를 추가하십시오.

    ibmcloud ce project select --name PROJECT --kubecfg
    

이제 프로젝트에서 kubectl 명령을 사용할 준비가 되었습니다.

Code Engine API, Kubernetes API 및 kubectl 사용에 대한 자세한 정보는 다음 주제를 참조하십시오.

사용자 정의 리소스 정의(CRD)

다음 절에는 Code Engine에서 사용할 사용자 정의 리소스 정의 메소드가 나열되어 있습니다.

일괄처리 CRD 메소드

Code Engine 시 일괄처리 CRD를 사용할 수 있습니다.

Code Engine
그룹 버전 유형
codeengine.cloud.ibm.com v1beta1 JobDefinition
codeengine.cloud.ibm.com v1beta1 JobRun

Kubernetes 구성을 검색한 후에는 다음 방법을 사용하여 일괄처리 CRD 세부사항을 확인할 수 있습니다.

  1. kubectl explain --api-version='codeengine.cloud.ibm.com/v1beta1' <Kind>을(를) 사용하십시오.
  2. CRD에 대한 Swagger 또는 OpenAPI 사양서를 다운로드하세요.

연관된 팟(Pod)을 삭제하지 않고 작업 실행을 삭제할 수 없습니다. propagationPolicy=Orphan 옵션을 사용하여 삭제하려는 모든 시도가 거부됩니다.

기능 CRD 메소드

Code Engine 시 기능 CRD를 사용할 수 있습니다.

Code Engine
그룹 버전 유형
codeengine.cloud.ibm.com v1beta1 Function

Serving CRD 메소드

Code Engine에서 애플리케이션에 대한 작업 을 수행할 때 CRD 제공을 사용할 수 있습니다.

Code Engine에 대한 CRD 제공
그룹 버전 유형
serving.knative.dev v1 Configuration
serving.knative.dev v1 Revision
serving.knative.dev v1 Route
serving.knative.dev v1 Service

이러한 CRD에 대한 자세한 내용은 Knative Serving API 사양을 참조하십시오.

Source-to-image CRD 메소드

Code Engine에서 빌드 및 빌드 실행에 대한 작업 을 수행할 때 소스 대 이미지 CRD를 사용할 수 있습니다.

Code Engine
그룹 버전 유형
shipwright.io v1beta1 Build
shipwright.io v1beta1 BuildRun

Kubernetes 구성을 검색한 후에는 다음 방법 중 하나를 사용하여 Source-to-image CRD 세부사항을 확인할 수 있습니다.

구독 CRD 메소드

Code Engine에서 구독에 대한 작업 을 수행할 때 구독 CRD를 사용할 수 있습니다.

Code Engine
그룹 버전 유형
sources.codeengine.cloud.ibm.com v1alpha1 CosSource
sources.knative.dev v1beta1 KafkaSource
sources.knative.dev v1 PingSource

Kubernetes 구성을 검색한 후에는 다음 방법 중 하나를 사용하여 구독 CRD 세부사항을 확인할 수 있습니다.