런타임 영역 구성요소 관리

이 주제에서는 Apigee Hybrid 런타임 영역 구성요소를 구성하고 관리하는 방법을 설명합니다. 구성할 수 있는 런타임 영역 구성요소 목록은 런타임 서비스 구성 개요를 참조하세요.

재정의 파일 정보

하이브리드 런타임을 클러스터에 처음 설치할 때는 구성 재정의 파일을 만들어야 합니다. 이 파일을 사용하면 필요에 따라 기본 구성 값을 재정의하고, 환경을 구성하고, TLS 인증서 및 서비스 계정 키를 참조하고, Kubernetes 노드 풀을 특정 하이브리드 구성요소에 할당하는 일 등을 할 수 있습니다.

하이브리드 설치 단계는 재정의 파일을 만들고 클러스터에 구성을 적용하는 프로세스를 안내합니다. 구성을 나중에 변경하려면 만든 재정의 파일을 수정하고 다시 적용합니다.

구성 변경

하이브리드 런타임 영역 구성요소에 대한 구성을 변경하려면 재정의 파일을 수정하고 관리 도구에 따라 Helm 또는 apigeectl을 사용하여 변경사항을 적용합니다.

예를 들어 메시지 프로세서에서 복제본 수를 변경하려면 다음 단계를 따르세요.

  1. OVERRIDES.yaml 파일을 엽니다. 하이브리드 런타임을 클러스터에 설치할 때 사용한 것과 동일한 재정의 파일을 사용해야 합니다.
  2. 파일에서 runtime 요소를 찾습니다. 예를 들면 다음과 같습니다.
    ...
    runtime:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      replicaCountMin: 1
      replicaCountMax: 2
    ...
  3. 필요에 따라 복제본 수 속성을 변경합니다. 예를 들면 다음과 같습니다.
    ...
    runtime:
      nodeSelector:
        key: cloud.google.com/gke-nodepool
        value: apigee-runtime
      replicaCountMin: 2
      replicaCountMax: 4
    ...
  4. Helm

    apigee-org 차트를 사용하여 변경사항을 적용합니다.

      helm upgrade ORG_NAME apigee-org/ \
        --namespace apigee \
        --atomic \
        -f OVERRIDES_FILE.yaml
      

    apigeectl

    apigeectl을 사용하여 클러스터에 변경 사항을 적용합니다.

    apigeectl apply -f ./OVERRIDES.yaml --org --env ENV_NAME

수정할 수 있는 구성 속성

구성 가능한 속성의 전체 목록은 구성 속성 참조에서 확인할 수 있습니다. 참조에는 수정할 수 있는 속성만 나열됩니다. 참조에 없는 속성을 수정하려고 하면 변경사항이 무시됩니다.

구성 참조 사용 방법

구성 속성 참조는 점 표기법을 사용하여 구성요소를 설명합니다. 여기서 첫 번째 항목은 최상위 요소 이름 다음에 속성 및 하위 속성이 옵니다. 예를 들면 다음과 같습니다.

ao.image.pullPolicy

재정의 파일에서 속성이 적절한 YAML 형식으로 지정됩니다. 위의 예에서 최상위 ao 요소는 왼쪽 들여쓰기 되고 하위 요소 속성은 그 아래에 들여쓰기 됩니다. 또한 YAML에는 각 요소와 하위 요소의 끝에 콜론이 필요합니다.

예를 들어 ao.image.pullPolicy 속성을 Always로 설정하려면 재정의 파일에서 이 YAML 스탠자를 찾아서 아래와 같이 설정하세요.

ao:
  image:
    pullPolicy: Always

다른 예시에서는 cassandra.auth.admin.password 속성(구성 속성 참조에 나와 있음)이 Cassandra 관리자 비밀번호를 설정하는 데 사용됩니다. 이를 변경하려면 재정의 파일에서 다음 YAML을 찾아 다음과 같이 설정합니다.

cassandra:
  auth:
    admin:
      password: abc123

구성 속성 참조는 하이브리드 런타임 영역 구성요소에 설정할 수 있는 모든 속성을 설명합니다. 위에 설명된 패턴을 따라 클러스터에 변경사항을 적용하기 전에 재정의 파일에서 이러한 요소를 수정합니다.

사전 정의된 예시 재정의 파일 사용

하이브리드 런타임을 처음 설치하는 경우 사전 구성된 예시 재정의 파일 중 하나를 Apigee에 사용하는 것이 좋습니다. 이 예는 프로덕션 또는 테스트 설치를 설정하는 것과 같은 특정 설치 시나리오에 대한 전체 구성 속성 집합을 제공합니다. 속성에 적절한 값을 제공하고 클러스터에 재정의 파일 적용을 수행하면 됩니다. 자세한 내용은 6단계: 클러스터 구성을 참조하세요.

구성 기본값 정보

Apigee는 HYBRID_ROOT_DIR/config/values.yaml 파일에서 기본 구성요소 구성을 유지합니다. 재정의 파일은 values.yaml과 동일한 YAML 구조를 따릅니다.

재정의 파일에는 일반적으로 values.yaml에 있는 구성 속성의 하위 집합만 포함됩니다. 모든 속성을 수정할 수 있는 것은 아닙니다. 클러스터에 구성을 적용하면 재정의가 기본값과 병합되어 완전한 Kubernetes 클러스터 구성을 만듭니다. 병합된 구성 테스트도 참조하세요.

다음 코드는 values.yaml에 있는 mart 구성요소의 기본 구성을 보여줍니다. 일부 값은 기본값이 있지만 sslCertPathsslKeyPath와 같은 다른 값은 그렇지 않습니다. 설치 단계에 설명된 대로 재정의 파일에 이러한 누락된 값을 제공해야 합니다. 기본값을 변경하려면 구성 속성 참조를 확인하여 기본값을 수정할 수 있는지 확인합니다.

...
mart:
  replicaCountMin: 2
  replicaCountMax: 4
  targetCPUUtilizationPercentage: 75
  terminationGracePeriodSeconds: 30
  sslCertPath:
  sslKeyPath:
  hostAlias:
  nodeSelector:
    key:
    value:
  revision: blue
  image:
    url: "gcr.io/apigee-release/hybrid/apigee-mart-server"
    tag: "1.3.6"
    pullPolicy: IfNotPresent
  resources:
    requests:
      cpu: 500m
      memory: 512Mi
  initCheckCF:
    resources:
      requests:
        cpu: 10m
  livenessProbe:
    timeoutSeconds: 1
    failureThreshold: 12
    periodSeconds: 5
    initialDelaySeconds: 15
  readinessProbe:
    timeoutSeconds: 1
    successThreshold: 1
    failureThreshold: 2
    periodSeconds: 5
    initialDelaySeconds: 15
  metricsURL: "/v1/server/metrics"
  cwcAppend: |
...

구성요소의 기본값을 수정하고 구성요소가 구성요소 재정의 파일에 아직 없는 경우 YAML을 values.yaml에서 재정의 파일에 복사하여 수정하면 됩니다.

샘플 재정의 파일

Apigee는 하이브리드 배포를 설정하는 데 도움이 되는 일련의 샘플 재정의 파일을 제공합니다. 설치 요구사항과 가장 일치하는 재정의 파일을 복사하고 수정하는 것이 좋습니다.

다음 샘플은 HYBRID_ROOT_DIR/examples 디렉터리에 포함되어 있습니다.

샘플 재정의 파일 설명
overrides-small.yaml 이 샘플은 빠르게 시작할 때 적합합니다. 최소 권장 공간을 사용하여 하이브리드 런타임 구성요소를 시작합니다. 이 샘플 구성은 기본 설정 및 값에 최대한 의존합니다. 모든 최소 복제본은 1로 설정됩니다.
overrides-medium.yaml 이 샘플은 테스트 및 QA 환경을 시작하는 데 좋은 출발점입니다. 개별 구성요소에는 추가 트래픽을 처리할 수 있는 상위 수준 리소스가 부여됩니다. Cassandra는 성능을 위해 SSD 디스크를 사용합니다. 이 환경에서는 사용자가 개별 노드에 스테이트풀(Stateful) 및 스테이트리스(Stateless) 구성요소를 설치하는 것이 좋습니다. 전용 노드 구성을 참조하세요.
overrides-large.yaml 이 샘플은 사전 프로덕션 및 프로덕션과 같은 고성능 환경을 위한 좋은 시작점입니다. 샘플에는 암호화 키, 비밀번호 등을 설정하는 속성이 포함되어 있습니다. 개별 구성요소는 최소 2개의 복제본을 가집니다.

커스텀 주석

주석은 Apigee Hybrid Kubernetes pod에 메타데이터를 연결할 때 사용되는 키/값 맵입니다. 구성 속성 참조에 나열된 다음 속성에 대하여 커스텀 주석을 만들 수 있습니다.

커스텀 주석을 추가하려면 각 구성요소의 OVERRIDES.yaml 파일에 스탠자를 추가하세요.

다음 예시에서는 runtime 포드에서 주석을 지정하는 방법을 보여줍니다.

runtime:
  annotations:
    businessunit: "bu1"

병합된 구성 테스트

--dry-run 플래그를 사용하면 실제로 클러스터에 적용하지 않고 병합된 구성 파일을 테스트할 수 있습니다. 이 옵션은 클러스터에 적용할 내용을 정확히 보여주기 때문에 설치 문제를 디버깅하는 데 유용합니다. 또한 클러스터에 설치 및 구성된 리소스를 참조할 수 있도록 구성을 테스트하고 소스 제어에 저장하는 것이 좋습니다.

Helm

kubectl apply -k  apigee-operator/etc/crds/default/
      
helm upgrade operator apigee-operator/ \
  --install \
  --namespace apigee-system \
  --atomic \
  -f OVERRIDES_FILE.yaml \
  --dry-run
helm upgrade ingress-manager apigee-ingress-manager/ /
  --install \
  --namespace apigee \
  --atomic \
  -f OVERRIDES_FILE.yaml \
  --dry-run

apigeectl

APIGEECTL_HOME/apigeectl init -f overrides/OVERRIDES.yaml --dry-run=client

자세한 내용은 apigeectl를 참조하세요.

필요에 따라 여러 재정의 파일 만들기

재정의 파일은 원하는 만큼 만들 수 있으며 각 파일에는 특정 요구사항이 적용됩니다. 예를 들어 프로덕션용 클러스터를 조정하는 재정의 파일과 테스트 클러스터를 만들기 위한 재정의 파일이 있을 수 있습니다. 그런 다음 소스 제어 시스템에서 이러한 파일을 유지할 수 있습니다.

예를 들면 다음과 같습니다.

Helm

helm upgrade test-1-env apigee-env/ \
  --namespace apigee \
  --atomic \
  --set env=test-1-env \
  -f test-1-env-overrides.yaml

apigeectl

$APIGEECTL_HOME/apigeectl apply -f test-1-env-overrides.yaml --env test-1-env

하이브리드 전용 런타임 영역 구성요소 삭제

런타임 영역 구성요소에는 synchronizer, mart, runtime, cassandra, udca가 포함됩니다.

클러스터에서 하이브리드 전용 런타임 영역 구성요소를 삭제하려면 helm delete 또는 apigeectl delete 명령어를 사용합니다. 런타임 구성요소를 설치하는 데 사용한 것과 동일한 재정의 파일을 지정해야 합니다.

예를 들면 다음과 같습니다.

Helm

Helm을 사용하는 경우 각 구성요소를 개별적으로 삭제해야 합니다. 예를 들어 cassandra 구성요소를 삭제하려면 다음 명령어를 사용합니다.
helm -n apigee delete datastore

위 예시에서는 데이터 스토어 구성요소가 '데이터 스토어'라는 이름으로 설치되었습니다. 다른 이름으로 설치한 경우 해당 이름을 제공하여 구성요소를 삭제합니다. 예를 들어 helm install my-cassandra-storage apigee-datastore/apigee-datastore 차트를 설치한 경우 다음 명령어로 삭제합니다.

helm delete -n apigee my-cassandra-storage

apigeectl

apigeectl을 사용하면 모든 런타임 구성요소를 한 번에 삭제하거나 범위를 제한하여 한 번에 하나의 구성요소를 삭제할 수 있습니다. 예를 들어 모든 구성요소를 한 번에 삭제하려면 다음을 실행합니다.
$APIGEECTL_HOME/apigeectl delete -f OVERRIDES_FILE.yaml

cassandra 구성요소를 삭제하려면 다음 안내를 따르세요.

$APIGEECTL_HOME/apigeectl delete -f OVERRIDES_FILE.yaml --datastore

특정 구성요소(이 예시의 환경 그룹)를 다시 만들려면 다음 안내를 따르세요.

Helm

helm upgrade ENV_GROUP apigee-virtualhost/ \
  --install \
  --namespace apigee \
  --atomic \
  --set envgroup=ENV_GROUP_NAME \
  -f OVERRIDES_FILE.yaml

apigeectl

$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --env ENV_NAME --settings virtualhosts