Amazon ECS 및 Amazon에서 AWS AppConfig 에이전트 사용 EKS - AWS AppConfig

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

Amazon ECS 및 Amazon에서 AWS AppConfig 에이전트 사용 EKS

AWS AppConfig 에이전트를 사용하여 Amazon Elastic Container Service(Amazon ECS) 및 Amazon Elastic Kubernetes Service(Amazon EKS) AWS AppConfig 와 통합할 수 있습니다. 에이전트는 Amazon ECS 및 Amazon 컨테이너 애플리케이션과 함께 실행되는 사이드카 EKS 컨테이너 역할을 합니다. 에이전트는 다음과 같은 방식으로 컨테이너식 애플리케이션 처리 및 관리를 개선합니다.

  • 에이전트는 AWS Identity and Access Management (IAM) 역할을 사용하고 구성 데이터의 로컬 캐시를 관리하여 AWS AppConfig 사용자를 대신하여 호출합니다. 로컬 캐시에서 구성 데이터를 가져오면 애플리케이션에서 구성 데이터를 관리하는 데 필요한 코드 업데이트 횟수가 줄어들고, 구성 데이터를 밀리초 단위로 검색할 수 있으며, 이러한 데이터에 대한 호출을 방해할 수 있는 네트워크 문제의 영향을 받지 않습니다.*

  • 에이전트는 AWS AppConfig 특성 플래그를 검색하고 해결하기 위한 기본 환경을 제공합니다.

  • 에이전트는 기본적으로 캐싱 전략, 폴링 간격, 로컬 구성 데이터 가용성에 대한 모범 사례를 제공하는 동시에 후속 서비스 호출에 필요한 구성 토큰을 추적합니다.

  • 백그라운드에서 실행되는 동안 에이전트는 구성 AWS AppConfig 데이터 업데이트를 위해 데이터 영역을 주기적으로 폴링합니다. 컨테이너화된 애플리케이션은 포트 2772(사용자 지정 가능한 기본 포트 값)의 localhost에 연결하고 를 호출HTTPGET하여 데이터를 검색할 수 있습니다.

  • AWS AppConfig 에이전트는 컨테이너를 다시 시작하거나 재활용할 필요 없이 컨테이너의 구성 데이터를 업데이트합니다.

*AWS AppConfig 에이전트는 서비스가 구성 데이터를 처음 검색할 때 데이터를 캐시합니다. 이러한 이유로 데이터를 검색하기 위한 첫 번째 호출은 후속 호출보다 느립니다.

시작하기 전 준비 사항

컨테이너 애플리케이션 AWS AppConfig 과 통합하려면 특성 플래그 또는 자유 형식 구성 데이터를 포함하여 AWS AppConfig 아티팩트 및 구성 데이터를 생성해야 합니다. 자세한 내용은 기능 플래그 및 자유 형식 구성 데이터 생성 AWS AppConfig 단원을 참조하십시오.

에서 호스팅하는 구성 데이터를 검색하려면 AWS AppConfig컨테이너 애플리케이션을 AWS AppConfig 데이터 영역에 대한 액세스 권한으로 구성해야 합니다. 애플리케이션에 액세스 권한을 부여하려면 컨테이너 서비스 IAM 역할에서 사용하는 IAM 권한 정책을 업데이트합니다. 특히, 정책에 appconfig:StartConfigurationSessionappconfig:GetLatestConfiguration 액션을 추가해야 합니다. 컨테이너 서비스 IAM 역할에는 다음이 포함됩니다.

  • Amazon ECS 작업 역할

  • Amazon EKS 노드 역할

  • AWS Fargate (Fargate) 포드 실행 역할(Amazon EKS 컨테이너가 컴퓨팅 처리에 Fargate를 사용하는 경우)

정책에 권한을 추가하는 방법에 대한 자세한 내용은 IAM 사용 설명서 IAM 자격 증명 권한 추가 및 제거를 참조하세요.

Amazon ECS 통합을 AWS AppConfig 위한 에이전트 시작

Amazon ECS 환경에서 AWS AppConfig 에이전트 사이드카 컨테이너를 자동으로 사용할 수 있습니다. 사용하려면 다음 절차에 설명된 대로 시작해야 합니다.

Amazon을 시작하려면ECS(콘솔)
  1. https://console.aws.amazon.com/ecs/v2에서 콘솔을 엽니다.

  2. 탐색 창에서 작업 정의를 선택합니다.

  3. 애플리케이션의 작업 정의를 선택한 다음 최신 수정 버전을 선택합니다.

  4. 새 개정 생성, 새 개정 생성을 선택합니다.

  5. 컨테이너 추가를 선택합니다.

  6. 이름 에 AWS AppConfig 에이전트 컨테이너의 고유한 이름을 입력합니다.

  7. 이미지 URI에 다음을 입력합니다. public.ecr.aws/aws-appconfig/aws-appconfig-agent:2.x

  8. 필수 컨테이너의 경우 를 선택합니다.

  9. 포트 매핑 섹션에서, 포트 매핑 추가를 선택합니다.

  10. 컨테이너 포트2772를 입력합니다.

    참고

    AWS AppConfig 에이전트는 기본적으로 포트 2772에서 실행됩니다. 다른 포트를 지정할 수 있습니다.

  11. 생성(Create)을 선택합니다. Amazon은 새 컨테이너 개정을 ECS 생성하고 세부 정보를 표시합니다.

  12. 탐색 창에서 클러스터를 선택한 다음 목록에서 애플리케이션 클러스터를 선택합니다.

  13. 서비스 탭에서 애플리케이션에 맞는 서비스를 선택합니다.

  14. 업데이트를 선택합니다.

  15. 배포 구성에서 개정에 대해 최신 버전을 선택합니다.

  16. 업데이트를 선택합니다. Amazon은 최신 작업 정의를 ECS 배포합니다.

  17. 배포가 완료되면 구성 및 작업 탭에서 AWS AppConfig 에이전트가 실행 중인지 확인할 수 있습니다. 작업 탭에서 실행 중인 작업을 선택합니다.

  18. 컨테이너 섹션에서 AWS AppConfig 에이전트 컨테이너가 나열되어 있는지 확인합니다.

  19. AWS AppConfig 에이전트가 시작되었는지 확인하려면 로그 탭을 선택합니다. AWS AppConfig 에이전트 컨테이너에 대해 다음과 같은 문을 찾습니다. [appconfig agent] 1970/01/01 00:00:00 INFO serving on localhost:2772

참고

환경 변수를 입력하거나 변경하여 AWS AppConfig 에이전트의 기본 동작을 조정할 수 있습니다. 사용할 수 있는 환경 변수에 대한 자세한 내용은 (선택 사항) 환경 변수를 사용하여 Amazon ECS 및 Amazon용 AWS AppConfig 에이전트 구성 EKS 섹션을 참조하십시오. Amazon 에서 환경 변수를 변경하는 방법에 대한 자세한 내용은 Amazon Elastic Container Service 개발자 안내서컨테이너에 환경 변수 전달을 ECS참조하세요.

Amazon EKS 통합을 AWS AppConfig 위한 에이전트 시작

Amazon EKS 환경에서 AWS AppConfig 에이전트 사이드카 컨테이너를 자동으로 사용할 수 있습니다. 사용하려면 시작해야 합니다. 다음 절차에서는 Amazon EKS kubectl 명령줄 도구를 사용하여 에이전트를 시작하는 방법을 설명합니다.

참고

계속하기 전에 kubeconfig 파일이 최신 상태인지 확인하세요. kubeconfig 파일 생성 또는 편집에 대한 자세한 내용은 Amazon 사용 설명서의 Amazon EKS 클러스터용 kubeconfig 파일 생성 또는 업데이트를 참조하세요. EKS

AWS AppConfig 에이전트를 시작하려면(kubectl 명령줄 도구)
  1. 애플리케이션의 매니페스트를 열고 Amazon EKS 애플리케이션이 단일 컨테이너 배포로 실행되고 있는지 확인합니다. 파일의 내용은 다음과 비슷해야 합니다.

    apiVersion: apps/v1 kind: Deployment metadata: name: my-app namespace: my-namespace labels: app: my-application-label spec: replicas: 1 selector: matchLabels: app: my-application-label template: metadata: labels: app: my-application-label spec: containers: - name: my-app image: my-repo/my-image imagePullPolicy: IfNotPresent
  2. 배포 매니페스트에 AWS AppConfig 에이전트 컨테이너 정의 세부 정보를 추가합니다.

    - name: appconfig-agent image: public.ecr.aws/aws-appconfig/aws-appconfig-agent:2.x ports: - name: http containerPort: 2772 protocol: TCP env: - name: SERVICE_REGION value: region imagePullPolicy: IfNotPresent
    참고

    다음 정보를 참고하세요.

    • AWS AppConfig 에이전트는 기본적으로 포트 2772에서 실행됩니다. 다른 포트를 지정할 수 있습니다.

    • 환경 변수를 입력하여 AWS AppConfig 에이전트의 기본 동작을 조정할 수 있습니다. 자세한 내용은 (선택 사항) 환경 변수를 사용하여 Amazon ECS 및 Amazon용 AWS AppConfig 에이전트 구성 EKS 단원을 참조하십시오.

    • 에 대해 SERVICE_REGION에서 AWS AppConfig 에이전트가 구성 데이터를 검색하는 AWS 리전 코드(예: us-west-1)를 지정합니다.

  3. 다음 kubectl 명령을 실행하여 변경 사항을 클러스터에 적용합니다. Replace my-deployment 배포 매니페스트의 이름을 사용합니다.

    kubectl apply -f my-deployment.yml
  4. 배포가 완료되면 AWS AppConfig 에이전트가 실행 중인지 확인합니다. 다음 명령을 사용하여 Application Pod 로그 파일을 확인합니다.

    kubectl logs -n my-namespace -c appconfig-agent my-pod

    AWS AppConfig 에이전트 컨테이너에 대해 다음과 같은 문을 찾습니다. [appconfig agent] 1970/01/01 00:00:00 INFO serving on localhost:2772

참고

환경 변수를 입력하거나 변경하여 AWS AppConfig 에이전트의 기본 동작을 조정할 수 있습니다. 사용할 수 있는 환경 변수에 대한 자세한 내용은 (선택 사항) 환경 변수를 사용하여 Amazon ECS 및 Amazon용 AWS AppConfig 에이전트 구성 EKS 섹션을 참조하십시오.

(선택 사항) 환경 변수를 사용하여 Amazon ECS 및 Amazon용 AWS AppConfig 에이전트 구성 EKS

AWS AppConfig 에이전트 컨테이너에 대해 다음 환경 변수를 변경하여 에이전트를 구성할 수 있습니다.

환경 변수 Details 기본값

ACCESS_TOKEN

이 환경 변수는 에이전트 HTTP 서버에서 구성 데이터를 요청할 때 제공해야 하는 토큰을 정의합니다. 토큰 값은 HTTP 요청 권한 부여 헤더에서 권한 부여 유형 로 설정해야 합니다Bearer. 다음 예를 참고하세요

GET /applications/my_app/... Host: localhost:2772 Authorization: Bearer <token value>
None

BACKUP_DIRECTORY

이 환경 변수를 사용하면 AWS AppConfig 에이전트가 검색하는 각 구성의 백업을 지정된 디렉터리에 저장할 수 있습니다.

중요

디스크에 백업된 구성은 암호화되지 않습니다. 구성에 민감한 데이터가 포함된 경우 파일 시스템 권한으로 최소 권한 원칙을 연습하는 것이 AWS AppConfig 좋습니다. 자세한 내용은 보안 내부 AWS AppConfig 단원을 참조하십시오.

None

HTTP_PORT

이 환경 변수는 에이전트의 HTTP 서버가 실행되는 포트를 지정합니다.

2772

LOG_LEVEL

이 환경 변수는 에이전트가 기록하는 세부 정보 수준을 지정합니다. 각 레벨에는 현재 레벨과 모든 상위 레벨이 포함됩니다. 변수는 대소문자를 구분합니다. 로그 수준은 가장 세부적인 것부터 세부적이지 않은 것까지 debug, info, warn, error, 및 none 입니다. Debug는 타이밍 정보를 비롯한 에이전트에 대한 자세한 정보가 포함됩니다.

info

LOG_PATH

로그가 기록되는 디스크 위치. 지정하지 않으면 로그가 stderr에 기록됩니다.

None

MANIFEST

이 환경 변수는 다중 계정 검색과 같은 추가 구성별 기능을 활용하고 구성을 디스크 에 저장하도록 AWS AppConfig Agent를 구성합니다. 다음 값 중 하나를 입력할 수 있습니다.

  • "app:env:manifest-config"

  • "file:/fully/qualified/path/to/manifest.json"

이러한 기능에 대한 자세한 내용은 매니페스트를 사용하여 추가 검색 기능 활성화 섹션을 참조하세요.

true

MAX_CONNECTIONS

이 환경 변수는 에이전트가 AWS AppConfig에서 구성을 검색하는 데 사용하는 최대 연결 수를 구성합니다.

3

POLL_INTERVAL

이 환경 변수는 에이전트가 업데이트된 구성 데이터를 AWS AppConfig 폴링하는 빈도를 제어합니다. 간격을 초 단위로 지정할 수 있습니다. 시간 단위를 사용하여 숫자를 지정할 수도 있습니다. 초는 s, 분은 m, 시간은 h입니다. 단위를 지정하지 않으면 에이전트의 기본값은 초로 설정됩니다. 예를 들어 60, 60초, 1분은 폴링 간격이 동일합니다.

45초

PREFETCH_LIST

이 환경 변수는 에이전트가 시작하는 AWS AppConfig 즉시 에서 요청하는 구성 데이터를 지정합니다.

None

PRELOAD_BACKUPS

로 설정하면 true AWS AppConfig 에이전트는 에 있는 구성 백업을 메모리BACKUP_DIRECTORY에 로드하고 서비스에서 최신 버전이 있는지 즉시 확인합니다. 로 AWS AppConfig 설정하면 false에이전트는 예를 들어 네트워크에 문제가 있는 경우 서비스에서 구성 데이터를 검색할 수 없는 경우에만 구성 백업에서 콘텐츠를 로드합니다.

true
PROXY_HEADERS 이 환경 변수는 PROXY_URL 환경 변수에서 참조되는 프록시에 필요한 헤더를 지정합니다. 값은 쉼표로 구분된 헤더 목록입니다. 각 헤더는 다음 형식을 사용합니다.
"header: value"
None
PROXY_URL 이 환경 변수는 를 AWS 서비스포함하여 에이전트에서 로 연결하는 URL 데 사용할 프록시를 지정합니다 AWS AppConfig. HTTPSHTTPURLs가 지원됩니다. None

REQUEST_TIMEOUT

이 환경 변수는 에이전트가 의 응답을 기다리는 시간을 제어합니다 AWS AppConfig. 서비스가 응답하지 않으면 요청이 실패합니다.

초기 데이터 검색을 위한 요청인 경우 에이전트는 애플리케이션에 오류를 반환합니다.

업데이트된 데이터에 대한 백그라운드 확인 중에 제한 시간이 초과되면 에이전트는 오류를 기록하고 잠시 후 다시 시도합니다.

제한 시간을 밀리초로 지정할 수 있습니다. 시간 단위로 숫자를 지정할 수도 있습니다. 밀리초는 ms이고 초는 s입니다. 단위를 지정하지 않으면 에이전트의 기본값은 밀리초로 설정됩니다. 예를 들어 5000, 5000ms 및 5s의 경우 요청 제한 시간 값이 동일합니다.

3000 밀리초
ROLE_ARN 이 환경 변수는 IAM 역할의 Amazon 리소스 이름(ARN)을 지정합니다. AWS AppConfig 에이전트는 이 역할을 수임하여 구성 데이터를 검색합니다. None
ROLE_EXTERNAL_ID 이 환경 변수는 가정된 역할 에 사용할 외부 ID를 지정합니다ARN. None
ROLE_SESSION_NAME 이 환경 변수는 가정된 IAM 역할의 자격 증명과 연결할 세션 이름을 지정합니다. None
SERVICE_REGION 이 환경 변수는 에이전트 AWS 리전 가 AWS AppConfig AWS AppConfig 서비스를 호출하는 데 사용하는 대안을 지정합니다. 정의되지 않은 상태로 두면 에이전트는 현재 리전을 확인하려고 시도합니다. 그렇게 할 수 없는 경우 에이전트가 시작되지 않습니다. None

WAIT_ON_MANIFEST

이 환경 변수는 시작을 완료하기 전에 매니페스트가 처리될 때까지 기다리도록 AWS AppConfig 에이전트를 구성합니다.

true

구성 데이터 검색

HTTP localhost 호출을 사용하여 AWS AppConfig Agent에서 구성 데이터를 검색할 수 있습니다. 다음 예제에서는 HTTP 클라이언트와 curl 함께 를 사용합니다. 애플리케이션 언어 또는 사용 가능한 라이브러리에서 지원하는 사용 가능한 HTTP 클라이언트를 사용하여 에이전트를 호출할 수 있습니다.

참고

애플리케이션이 “test-backend/test-service”와 같은 포워드 슬래시를 사용하는 경우 구성 데이터를 검색하려면 URL 인코딩을 사용해야 합니다.

배포된 구성의 전체 내용을 검색하려면

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name"

Feature Flag 유형의 AWS AppConfig 구성에서 단일 플래그와 해당 속성을 검색하려면

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name"

Feature Flag 유형의 AWS AppConfig 구성에서 여러 플래그와 해당 속성에 액세스하려면

$ curl "http://localhost:2772/applications/application_name/environments/environment_name/configurations/configuration_name?flag=flag_name_one&flag=flag_name_two"