Code Engine 에서 서비스 엔드포인트 사용

모든 IBM Cloud® Code Engine 프로젝트는 IBM Cloud® 서비스 엔드포인트와의 통합을 제공합니다. 이 지원을 통해 기존 인프라에서 Code Engine 워크로드에 연결하고 IBM Cloud 네트워크 내에 머물 수 있습니다.

Code Engine 워크로드의 가시성을 제어하고 애플리케이션 또는 기능을 공용 또는 비공개 엔드포인트에 노출할지 여부를 지정할 수 있습니다. visibility = private 에 대해 구성된 애플리케이션 또는 기능은 서비스 엔드포인트를 통해 액세스됩니다. 서비스 엔드포인트를 통해 액세스하는 애플리케이션이나 기능은 IBM 네트워크를 벗어나지 않고 IBM Cloud 네트워크 내에 머물러 있습니다.

공용 엔드포인트

공용 엔드포인트는 공용 네트워크에서 배치에 대한 연결을 제공합니다. 프로비저닝 시 공용 엔드포인트는 모든 배치에 대한 기본 옵션입니다. 사용자 환경에는 배치에 연결하기 위한 인터넷 액세스 권한이 있어야 합니다.

사설 엔드포인트

사설 네트워크에 서비스 엔드포인트가 있는 배치는 공용 인터넷에서 액세스할 수 없는 엔드포인트를 가져옵니다. 모든 트래픽은 Code Engine 배치 전용 하드웨어로 라우팅되고 IBM Cloud 사설 네트워크에서 유지됩니다. 이 엔드포인트를 오가는 모든 트래픽은 무료이며 트래픽이 IBM Cloud 에 머무르는 조건으로 요금이 부과되지 않습니다. 사용자 환경에 IBM Cloud 사설 네트워크에 대한 액세스 권한이 있으면 인터넷 연결을 배치에 연결할 필요가 없습니다.

Code Engine 프라이빗 엔드포인트가 있는 애플리케이션 배포는 프라이빗 네트워크 내의 모든 계정에서 접속할 수 있으며 각 인스턴스에 대한 액세스는 인증이 필요합니다. 이 액세스를 특정 IP 주소, IP 주소 범위, IBM Cloud 서비스 또는 VPC로 제한하려면 컨텍스트 기반 제한 규칙을 구성하세요.

서비스 엔드포인트를 사용하여 안전하게 Code Engine 리소스 관리

  1. 사설 엔드포인트를 사용할 Code Engine 프로젝트를 지정하십시오. CLI에서만 개인용 엔드포인트를 사용하도록 Code Engine 프로젝트를 구성할 수 있습니다. 프로젝트를 작성하려면 ibmcloud ce project create 명령을 --endpoint=private 옵션과 함께 사용하십시오.

    ibmcloud ce project create --name myproject --endpoint=private
    

    프로젝트가 active 상태가 될 때까지 기다리십시오. CLI에서 ibmcloud ce project get 명령을 사용하여 프로젝트 상태를 확인할 수 있습니다.

    기존 Code Engine 프로젝트가 사설 엔드포인트를 사용하도록 하려면 ibmcloud ce project select 명령을 --endpoint=private 옵션과 함께 사용하십시오.

    ibmcloud ce project select --name myproject --endpoint=private
    

    project createproject select 명령의 경우, --endpoint 옵션을 명시적으로 지정하지 않으면 동작이 시스템에 의해 결정됩니다. IBM Cloud CLI가 private.cloud.ibm.com에 연결된 경우 Code Engine 프로젝트는 --endpointprivate인 것처럼 동작합니다. IBM Cloud CLI가 cloud.ibm.com에 연결된 경우 Code Engine 프로젝트는 --endpointpublic인 것처럼 동작합니다.

  2. 새 프로젝트를 만들지 않고 기존 프로젝트를 선택한 경우 애플리케이션이 비공개 엔드포인트에만 표시되도록 하려면 기존 프로젝트가 비공개 가시성을 가진 애플리케이션을 지원하는지 확인하세요. ibmcloud ce project get 명령을 사용하여 Application Private Visibility Supported의 출력이 true로 설정되었는지 확인하십시오. 값이 false인 경우 기존 프로젝트 내에서 이 기능을 사용할 수 있도록 IBM 지원 센터에 문의하십시오.

    ibmcloud ce project get -n myproject
    

    출력 예

    Getting project 'myproject'...
    OK
    
    Name:                                      myproject
    ID:                         abcdabcd-abcd-abcd-abcd-f1de4aab5d5d
    Status:                                    active
    Enabled:                                   true
    Application Private Visibility Supported:  false
    Selected:                                  true
    Region:                                    us-south
    Resource Group:             default
    Service Binding Service ID: ServiceId-1234abcd-abcd-abcd-1111-1a2b3c4d5e6f
    Age:                        52d
    Created:                                   Tue, 28 Sep 2021 05:12:16 -0500
    Updated:                                   Tue, 28 Sep 2021 05:12:19 -0500
    
    Quotas:
    Category                                  Used  Limit
    App revisions                             1     60
    Apps                                      1     20
    Build runs                                1     100
    Builds                                    2     100
    Configmaps                                2     100
    CPU                                       0     64
    Ephemeral storage                         0     256G
    Instances (active)                        0     250
    Instances (total)                         0     2500
    Job runs                                  0     100
    Jobs                                      0     100
    Memory                                    0     256G
    Secrets                                   6     100
    Subscriptions (cron)                      0     100
    Subscriptions (IBM Cloud Object Storage)  0     100
    Subscriptions (Kafka)                     0     100
    
  3. 비공개 엔드포인트에서만 볼 수 있는 애플리케이션 또는 함수를 만듭니다. ibmcloud ce application create 또는 ibmcloud ce function create 명령을 --visibility=private 옵션과 함께 사용하십시오. 또는 콘솔을 사용하여 애플리케이션 또는 기능을 만들거나 업데이트하고 앱의 가시성을 설정할 수 있습니다.

    ibmcloud ce application create -n myapp --visibility=private
    

서비스 엔드포인트로 애플리케이션에 안전하게 액세스하기

  1. Code Engine 프로젝트에서 애플리케이션이 visibility=private 설정으로 구성되었는지 확인하십시오. 비공개 엔드포인트로 애플리케이션 배포하기를 참조하세요.

  2. 사설 네트워크에 노출된 Code Engine 애플리케이션의 URL을 검색하십시오. URL은 <app>.<uuid>.private.<region>.codeengine.appdomain.cloud 형식입니다.

    • Code Engine 콘솔에서 애플리케이션의 도메인 매핑 탭으로 이동하여 애플리케이션의 표시 여부와 사용 가능한 URL을 확인합니다.

    • Code Engine CLI 에서 --option url 옵션과 함께 ibmcloud ce application get 명령을 사용하십시오. 다음 예제에서는 myapp 의 가시성이 visibility=private 으로 설정되어 있으므로 이 명령에 --option url 을 지정하면 비공개 네트워크로 URL 출력됩니다.

      ibmcloud ce application get -n myapp -output url
      

      출력 예

      http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
      
  3. IBM Cloud 비공개 네트워크 내에서 애플리케이션을 호출합니다(예: IBM Cloud 셸에서 애플리케이션 호출).

    myapp 애플리케이션은 간단한 Hello World 애플리케이션입니다. cURL, 을 사용하여 myapp 애플리케이션을 실행하면 Hello World 이 반환됩니다. 예를 들어 IBM Cloud 셸에서 실행합니다:

    curl http://myapp.4svg40kna19.private.us-south.codeengine.appdomain.cloud
    

서비스 엔드포인트를 사용하여 안전하게 기능에 액세스

  1. Code Engine 프로젝트에서 visibility=private 설정으로 함수가 구성되었는지 확인합니다. 사설 엔드포인트를 사용하여 기능 배치 를 참조하십시오.

  2. 비공개 네트워크에 노출된 Code Engine 함수의 URL 를 검색합니다. URL은 <function>.<uuid>.private.<region>.codeengine.appdomain.cloud 형식입니다.

    • Code Engine 콘솔에서 함수에 대한 도메인 매핑 탭으로 이동하여 함수의 표시 여부와 사용 가능한 URL을 확인합니다.

    • Code Engine CLI 에서 ibmcloud ce function get 명령을 사용하십시오. 다음 예제에서는 myfunction 의 가시성이 visibility=private 으로 설정되어 있으므로 이 명령은 URL 비공개 네트워크로 출력합니다.

      ibmcloud ce function get -n myfunction
      

      출력 예

      http://myfunction.1abc23def19.private.us-south.codeengine.appdomain.cloud