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

도메인 매핑은 프로젝트 내에서 Code Engine 애플리케이션에 대한 URL 경로를 제공합니다. Code Engine 을 사용하면 애플리케이션을 배포할 때마다 기본적으로 이러한 매핑이 자동으로 생성됩니다. 그러나 사용자 지정 도메인을 Code Engine 애플리케이션에 매핑하여 사용자 지정 URL 요청을 Code Engine 콘솔 또는 CLI에서 애플리케이션으로 라우팅할 수 있습니다.

사용자가 소유한 도메인을 사용하여 애플리케이션을 대상으로 지정하려는 경우 사용자 정의 도메인 맵핑을 사용할 수 있습니다. 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 도메인을 myapp 애플리케이션에 맵핑하십시오.

시작하기 전에

  1. Code Engine 프로젝트 페이지에서 프로젝트로 이동합니다.

  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).
    • 기존 대상 애플리케이션 (예: myapp) 을 선택하십시오. 이 예제의 경우 myapp 애플리케이션은 icr.io/codeengine/helloworld 샘플 이미지를 사용합니다. 이 예제에 사용되는 코드에 대한 자세한 정보는 helloworld의 내용을 참조하십시오.
    • CNAME 대상 필드에 주의하십시오. 이 값은 사용자 정의 도메인을 대상으로 하는 트래픽이 지정된 애플리케이션으로 라우팅되도록 도메인 등록자를 사용하여 사용자 정의 도메인 구성을 완료 할 때 필요한 CNAME 항목입니다.
  6. 작성 을 클릭하여 사용자 정의 도메인 맵핑을 작성하십시오.

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

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 myapp 애플리케이션과 사용자 정의 도메인 www.example.com 간에 사용자 정의 도메인 맵핑을 작성하십시오. 이전 단계에서 작성한 TLS 시크릿을 사용하십시오.

    ibmcloud ce domainmapping create --domain-name www.example.com --target myapp --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 외부) 입니다.

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

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

사용자 정의 도메인 테스트

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

브라우저에서 curl 를 사용하여 사용자 정의 도메인을 대상으로 하여 애플리케이션을 호출하십시오.

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

출력 예

Hello World from:
     ___  __  ____  ____
    / __)/  \(    \(  __)
   ( (__(  O )) D ( ) _)
    \___)\__/(____/(____)
 ____  __ _   ___  __  __ _  ____
(  __)(  ( \ / __)(  )(  ( \(  __)
 ) _) /    /( (_ \ )( /    / ) _)
(____)\_)__) \___/(__)\_)__)(____)
Some Env Vars:
--------------
CE_API_BASE_URL=https://api.private.us-south.codeengine.cloud.ibm.com
CE_APP=myapp
CE_DOMAIN=us-south.codeengine.appdomain.cloud
CE_PROJECT_ID=abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f
CE_REGION=us-south
CE_SUBDOMAIN=abcdabcdab
HOME=/root
HOSTNAME=myapp-00001-deployment-6db6d89dc7-k6qc7
K_REVISION=myapp-00001
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PORT=8080
PWD=/
SHLVL=1

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

Code Engine의 도메인 맵핑에 대한 자세한 정보는 사용자 정의 도메인 맵핑에 대한 작업 을 참조하십시오.