기능에 대한 사용자 정의 도메인 맵핑 구성

도메인 맵핑은 프로젝트 내에서 Code Engine 함수에 대한 URL 라우트를 제공합니다. Code Engine를 사용하면 함수를 배치할 때마다 기본적으로 이러한 맵핑이 자동으로 작성됩니다. 그러나 사용자 고유의 사용자 정의 도메인을 Code Engine 함수에 맵핑하여 Code Engine 콘솔 또는 CLI에서 사용자 정의 URL의 요청을 함수로 라우팅할 수 있습니다.

사용자가 소유한 도메인을 사용하여 기능을 대상으로 지정하려는 경우 사용자 정의 도메인 맵핑을 사용할 수 있습니다. Code Engine에서 사용자 정의 도메인 맵핑을 설정할 때 프로젝트에서 완전한 도메인 이름 (FQDN) 과 Code Engine 함수 간에 1-to-1 맵핑을 정의합니다.

사용자 정의 도메인 맵핑은 하나의 맵핑만을 가리켜야 합니다. 그러나 단일 기능에 대한 다중 도메인 맵핑을 구성할 수 있습니다.

프로젝트당 최대 80개의 사용자 정의 도메인 맵핑을 작성할 수 있습니다. 프로젝트 할당량 을 참조하십시오.

Code Engine에서 사용자 정의 도메인 맵핑을 작성할 때 맵핑에서 사용하는 도메인 이름은 리젼에서 고유해야 합니다.

사용자 정의 도메인 맵핑을 작성하고 설정하려면 다음 단계를 완료하십시오.

  1. Code Engine 을 검토하십시오.
  2. 도메인 등록자로부터 사용자 정의 도메인 확보 (Code Engine 외부).
  3. 함수 (* Code Engine 콘솔 또는 CLI에서*) 에 대해 Code Engine 에서 사용자 정의 도메인 맵핑을 구성하십시오.
  4. 도메인 등록자를 사용하여 사용자 정의 도메인 구성을 완료하십시오. (* Code Engine외부*).

www.example.comshop.example.com 에 대한 사용자 정의 도메인 맵핑을 작성한다고 가정하십시오. 이 경우 각 고유 도메인 또는 하위 도메인에 대한 사용자 정의 도메인 맵핑을 작성해야 합니다. 그러나 TLS 시크릿의 인증서에 사용자 정의 도메인 맵핑에 지정된 도메인이 포함된 경우 여러 사용자 정의 도메인 맵핑에 동일한 TLS 시크릿을 재사용할 수 있습니다. 이는 TLS 시크릿을 다중 도메인 (예: www.example.comshop.example.com) 또는 와일드카드 도메인 (예: *.example.com) 에 맵핑할 수 있음을 의미합니다.

콘솔에서 사용자 정의 도메인 맵핑 구성

Code Engine 콘솔을 사용하여 등록된 도메인 이름에 Code Engine 함수를 사용하여 사용자 정의 도메인 맵핑을 작성할 수 있습니다.

시작하기 전에

이 시나리오에서 TLS 시크릿을 사용하여 함수에 대한 사용자 정의 도메인 맵핑을 작성하십시오. 예를 들어, www.example.com 도메인을 myfunction 함수에 맵핑하는 사용자 정의 도메인 맵핑을 작성하십시오.

  1. Code Engine Projects page 프로젝트로 이동합니다.

  2. 개요 페이지에서 도메인 맵핑을 클릭하십시오.

  3. 도메인 맵핑 페이지에서 작성 을 클릭하여 맵핑을 작성하십시오.

  4. 도메인 맵핑 작성 페이지에서 이 도메인 맵핑에 사용할 TLS 시크릿을 지정하십시오. Code Engine 는 인증서가 신뢰할 수 있는 CA에 의해 서명되었는지 여부 및 인증서가 제공된 사용자 정의 도메인 이름 및 개인 키와 일치하는지 여부를 유효성 검증합니다.

    새 TLS 시크릿을 작성하려면 다음을 수행하십시오.

    1. 작성을 클릭하십시오.
    2. 도메인과 연관된 모든 중간 인증서를 포함하여 TLS 인증서를 추가하십시오. 인증서가 별도의 파일로 제공되는 경우 파일의 컨텐츠를 연결하십시오. 이 정보를 파일에 제공할 수 있습니다.
    3. 인증서에 해당하는 개인 키를 추가합니다. 이 정보를 파일에 제공할 수 있습니다.

    인증서 체인의 예제 형식

    -----BEGIN CERTIFICATE-----
    ...certificate...
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    ...intermediate-certificate...
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    ...intermediate-certificate...
    -----END CERTIFICATE-----
    

    또는 기존 TLS 시크릿을 사용하려면 다음을 수행하십시오.

    1. 선택을 클릭하십시오.
    2. 사용할 목록에서 기존 시크릿을 선택하십시오.
  5. 도메인 이름 및 대상 컴포넌트를 지정하십시오.

    • 사용자 정의 도메인 이름의 완전한 도메인 이름을 지정하십시오 (예: www.example.com).
    • 기존 대상 함수 (예: myfunction) 를 선택하십시오. 이 예에서 myfunction 함수는 icr.io/codeengine/helloworld 샘플 이미지를 사용합니다. 이 예제에 사용되는 코드에 대한 자세한 정보는 helloworld의 내용을 참조하십시오.
    • CNAME 대상 필드에 주의하십시오. 이 값은 사용자 정의 도메인을 대상으로 하는 트래픽이 지정된 기능으로 라우팅되도록 도메인 등록자를 사용하여 사용자 정의 도메인 구성을 완료 할 때 필요한 CNAME 항목입니다.
  6. 작성 을 클릭하여 사용자 정의 도메인 맵핑을 작성하십시오.

이제 Code Engine에서 작성된 도메인 맵핑이 있습니다. 그러나 기능으로 전송되는 요청은 아직 사용자 정의 도메인으로 라우팅되지 않습니다. 그런 다음 도메인 등록자를 사용하여 사용자 정의 도메인 구성을 완료 하십시오.

www.example.comshop.example.com 에 대한 사용자 정의 도메인 맵핑을 작성한다고 가정하십시오. 이 경우 각 고유 도메인 또는 하위 도메인에 대한 사용자 정의 도메인 맵핑을 작성해야 합니다. 그러나 TLS 시크릿에 사용자 정의 도메인 맵핑에 지정된 도메인에 대한 인증이 포함된 경우 여러 사용자 정의 도메인 맵핑에 동일한 TLS 시크릿을 재사용할 수 있습니다. TLS 시크릿은 특정 다중 도메인 (예: www.example.comshop.example.com) 또는 와일드카드 도메인 (예: *.example.com) 에 맵핑되는 인증서를 포함할 수 있습니다. 영역 내에서 와일드카드 도메인을 두 번 이상 사용할 수 없습니다.

CLI를 사용하여 사용자 정의 도메인 맵핑 구성

CLI를 사용하여 사용자 정의 도메인 맵핑을 작성하려면 domainmapping create 명령을 사용하십시오. 이 명령에는 www.example.com, 대상 함수 및 TLS 시크릿과 같은 완전한 도메인 이름 (FQDN) 이 필요합니다. 전체 옵션 목록은 ibmcloud ce domainmapping create 명령을 참조하세요.

시작하기 전에

도메인 이름이 등록되면 이 도메인에 대해 서명된 TLS 인증서 및 일치하는 개인 키가 있으며 기존 Code Engine 기능이 있는 경우 사용자 정의 도메인 맵핑을 추가할 준비가 된 것입니다. CLI에서 domainmapping create 명령을 사용하여 Code Engine 함수로 사용자 정의 도메인 맵핑을 작성할 수 있습니다.

  1. 서명된 TLS 인증서 및 개인 키를 사용하여 TLS 시크릿을 작성하십시오. 이 예제에서 mycert.txt 파일에는 도메인과 연관된 모든 중간 인증서를 포함하여 TLS 인증서가 포함되어 있습니다. 인증서가 별도의 파일로 제공되는 경우 파일의 컨텐츠를 연결하십시오. myprivatekey.txt 파일에는 인증서 체인에 해당하는 일치하는 개인 키가 포함되어 있습니다.

    ibmcloud ce secret create --name mytlssecret --format tls --cert-chain-file  mycertchain.txt --private-key-file myprivatekey.txt
    

    출력 예

    Creating tls secret 'mytlssecret'...
    OK
    
  2. Code Engine myfunction 함수와 사용자 정의 도메인 www.example.com 간에 사용자 정의 도메인 맵핑을 작성하십시오. 이전 단계에서 작성한 TLS 시크릿을 사용하십시오.

    ibmcloud ce domainmapping create --domain-name www.example.com --target myhellofun --tls-secret mytlssecret
    

    출력 예

    OK
    Domain mapping successfully created.
    

다음 표에는 이 예제에서 domainmapping create 명령과 함께 사용된 옵션이 요약되어 있습니다. 명령 및 해당 옵션에 대한 자세한 내용은 ibmcloud ce domainmapping create 명령을 참조하세요.

명령 설명
옵션 설명
--domain-name 사용자 지정 도메인 매핑의 이름입니다. 사용자 정의 도메인의 이름을 지정하십시오 (예: www.example.com). 이 값은 필수입니다.
--target 대상 Code Engine 함수의 이름입니다. 이 값은 필수입니다.
--tls-secret 도메인 맵핑에 대한 TLS 시크릿입니다. 이 값은 필수입니다.

이제 사용자 정의 도메인 맵핑이 Code Engine에 작성됩니다. 그러나 기능으로 전송되는 요청은 아직 사용자 정의 도메인으로 라우팅되지 않습니다. 그런 다음, 도메인 등록자를 사용하여 사용자 정의 도메인 구성을 완료 해야 합니다.

도메인 등록자를 사용하여 사용자 정의 도메인 구성 완료

Code Engine 사용자 정의 도메인 맵핑이 작성된 후 완전한 도메인 이름과 일치하는 CNAME 레코드를 사용자 정의 도메인의 DNS 설정에 추가해야 합니다. 해당 도메인 등록자의 구성 설정에서 DNS 설정을 찾을 수 있습니다. 사용자 정의 도메인을 대상으로 하는 트래픽이 Code Engine 사용자 정의 도메인 맵핑에 정의된 대로 Code Engine 함수로 라우팅되도록 이 단계를 완료하십시오.

사용자 정의 도메인 테스트

도메인 등록자를 사용하여 사용자 정의 도메인 구성을 완료하고 CNAME 레코드 업데이트가 공개되면 사용자 정의 도메인 맵핑을 사용하여 기능을 테스트할 수 있습니다.

브라우저에서 curl 명령으로 사용자 정의 도메인을 대상으로 지정하여 함수를 호출하십시오.

curl -v -X GET https://www.example.com

사용자 정의 도메인에 대한 호출의 출력은 icr.io/codeengine/helloworld 샘플 이미지를 사용하는 myhellofun 함수에 맵핑됩니다.