Kubernetes 통합 태스크

<ph type="x-smartling-placeholder"></ph> 현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서.
정보

맞춤 플러그인 추가

커스텀 구성 파일을 작성하여 마이크로게이트웨이에 새로운 기능을 플러그인을 사용합니다. 커스텀 플러그인을 사용하면 프로그래매틱 방식으로 요청과 상호작용할 수 있습니다. 마이크로서비스로 전송되는 요청에 액세스할 수 있습니다

이 섹션에서는 플러그인을 패키징하고 Edge Microgateway에 배포하는 방법을 설명합니다. kube-apiserver와 통신하는 역할을 합니다

이 섹션의 나머지 부분에서는 애플리케이션을 작성하고 구성하는 데 익숙한 표준 Edge Microgateway 설정용 플러그인입니다. 그렇지 않은 경우 맞춤 플러그인 개발을 참고하세요.

플러그인 패키징

맞춤 플러그인을 패키징하려면 다음 단계를 따르세요.

  1. 간단한 플러그인 작성의 안내에 따라 플러그인을 작성하고 테스트합니다.

  2. 플러그인 코드를 적절한 디렉터리 구조에 배치합니다. 플러그인 디렉터리는 설정된 구조를 따라야 합니다. 다음 예는 따라야 하는 구조로, 여기서 response-uppercaserequest-headers는 커스텀 플러그인 코드가 포함된 폴더의 이름 (이 이름은 예시일 뿐이며, 폴더 이름은 다를 수 있음).

    plugin
      |
      |-- plugins
        |
        |- response-uppercase
        |     |- index.js
        |     |- package.json
        |- request-headers
        |     | - index.js
              | - package.json
    
  3. plugin 폴더로 cd하세요.

  4. plugin 폴더에서 plugins 폴더 전체를 압축합니다.

    zip -r plugins.zip plugins/

Docker 이미지 만들기

  1. ZIP 파일이 있는 디렉터리에서 Dockerfile라는 새 파일을 만듭니다.
  2. 다음 코드를 Dockerfile에 추가하고 파일을 저장합니다.

    FROM gcr.io/apigee-microgateway/edgemicro:latest
    RUN apt-get install unzip
    COPY plugins.zip /opt/apigee/
    RUN chown apigee:apigee /opt/apigee/plugins.zip
    RUN su - apigee -c "unzip /opt/apigee/plugins.zip -d /opt/apigee"
    EXPOSE 8000
    EXPOSE 8443
    ENTRYPOINT ["entrypoint"]
    
  3. 플러그인으로 새 Edge Microgateway Docker 이미지를 만들고 푸시 Docker 레지스트리로 복사하겠습니다 원하는 레지스트리를 사용할 수 있습니다. docker.io 또는 gcr.io 형식:

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins container-registry/your-project/edgemicroplugins
    docker push container-registry/your-project/edgemicroplugins
    

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

    docker build -t edgemicroplugins .
    docker tag edgemicroplugins gcr.io/my-project/edgemicroplugins
    docker push   gcr.io/my-project/edgemicroplugins
    
    드림

Edge Microgateway 구성을 업데이트합니다.

  1. Edge Microgateway 구성 파일에 플러그인을 추가합니다. 여기에서 구성 파일:

    $HOME/.edgemicro/org-env-config.yaml
    

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

    $HOME/.edgemicro/myorg-test-config.yaml

다음 샘플 구성에는 맞춤 플러그인 response-uppercase가 추가되었습니다. oauth 플러그인은 이미 기본적으로 설치되어 있습니다.

  edgemicro:
    ...
    plugins:
      sequence:
        - oauth
        - response-uppercase

Kubernetes 클러스터 업데이트

마지막 단계는 구성 변경사항을 Kubernetes 클러스터에 적용하는 것입니다. Kubernetes Container Registry에 푸시한 플러그인 코드로 새 이미지를 가져와 만들 수 있습니다

Edge Microgateway를 서비스로 배포한 경우

edgemicroctl 명령어를 사용하여 업데이트된 Edge Microgateway 구성을 삽입합니다.

  1. Edge Microgateway 배포를 새 이미지로 업데이트합니다. 예를 들면 다음과 같습니다.

    kubectl apply -f <(edgemicroctl -org=your_organization -env=your_environment -key=configuration_key -sec=configuration_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest)

    각 항목의 의미는 다음과 같습니다.

    • your_organization - edgemicro configure 명령어에서 지정한 Apigee 조직입니다.
    • your_environment - edgemicro configure 명령어에서 지정한 환경입니다.
    • configuration_key - edgemicro configure 명령어에서 반환된 키입니다.
    • configuration_secret - edgemicro configure 명령어에서 반환된 보안 비밀입니다.
    • config_file_path - edgemicro configure 명령어에서 반환된 Edge Micro 구성 파일의 경로입니다.
    • container-registry - 이미지를 푸시한 Docker 레지스트리입니다. 예를 들어 gcr.io 또는 docker.io입니다.
    • your_project_name - Docker 이미지를 푸시한 Docker 저장소의 프로젝트 이름입니다.
    • image_name - 푸시한 Docker 이미지의 이름입니다.

    예:

    kubectl apply -f <(edgemicroctl -org=jdoe -env=test -key=f2d2eaa52b758493d00cec656e574ac947bee1d701c5c5f3295e5eaa39a3b -sec=0c38cda3fac6c59152f15657052ba1728f8003c1a763cf08da2a -conf=/Users/jdoe/.edgemicro/apigeesearch-test-config.yaml -img=gcr.io/jdoe-project/edgemicroplugins:latest)
  2. 플러그인을 테스트합니다. API를 호출하여 예상된 동작이 발생하는지 확인합니다. 대상 예를 들어 '응답 대문자'의 경우 플러그인에서는 응답 텍스트가 대문자를 사용합니다.

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    출력:

    HELLO WORLD
    
수동으로 새 구성 삽입

수동 삽입은 간단한 접근 방식으로, 새 구성을 삽입합니다. gcloud 명령어입니다

  1. 다음 명령어를 실행합니다.

    kubectl apply -f <(edgemicroctl -org=your_org -env=your_env -key=your_key -sec=your_secret -conf=config_file_path -img=container-registry/your_project_name/image_name:latest -svc=service_deployment_file)

    각 항목의 의미는 다음과 같습니다.

    • your_org - edgemicro configure 명령어에서 지정한 Apigee 조직입니다.
    • your_env - edgemicro configure 명령어에서 지정한 환경입니다.
    • your_key - edgemicro configure 명령어에서 반환된 키입니다.
    • your_secret - edgemicro configure 명령어에서 반환된 보안 비밀입니다.
    • config_file_path - edgemicro configure 명령어에서 반환된 Edge Micro 구성 파일의 경로입니다.
    • container-registry - 이미지를 푸시한 Docker 레지스트리입니다. 예를 들어 gcr.io 또는 docker.io입니다.
    • your_project_name - Docker 이미지를 푸시한 Docker 저장소의 프로젝트 이름입니다.
    • image_name - 푸시한 Docker 이미지의 이름입니다.
    • service_deployment_file - 다음에 해당하는 서비스 배포 파일 경로 플러그인이 적용됩니다. 예를 들면 samples/helloworld/helloworld.yaml입니다.

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

    kubectl apply -f <(edgemicroctl -org=myorg -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/jdoe/.edgemicro/myorg-test-config.yaml -img=gcr.io/myproject/edgemicroplugins:latest -svc=samples/helloworld/helloworld.yaml)
  2. 플러그인을 테스트합니다. 서비스 API 호출 확인할 수 있습니다 예를 들어 '응답 대문자'의 경우 플러그인, 응답 텍스트는 아래와 같이 모두 대문자로 변환됩니다.

    curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'

    출력:

    HELLO WORLD
    

Edge Microgateway 구성 변경

경우에 따라 Edge Microgateway 구성을 수정해야 할 수 있습니다. 예를 들어 Edge Microgateway에 새 플러그인을 추가하거나 구성 매개변수를 변경하는 것이 좋습니다. 이 섹션에서는 Edge Microgateway 구성을 변경하고 적용하는 방법을 설명합니다. 실행할 수도 있습니다

  1. 아래와 같이 secret.yaml 구성 파일을 만듭니다.

    apiVersion: v1
    kind: Secret
    metadata:
      name: mgwsecret
    type: Opaque
    data:
      mgorg: EDGEMICRO_ORG
      mgenv: EDGEMICRO_ENV
      mgkey: EDGEMICRO_KEY
      mgsecret: EDGEMICRO_SECRET
      mgconfig: EDGEMICRO_CONFIG
    
  2. base64로 인코딩된 EDGEMICRO_ORG, EDGEMICRO_ENV, EDGEMICRO_KEY, EDGEMICRO_SECRET 값을 지정합니다.

    echo -n "your-org" | base64 | tr -d '\n'
    echo -n "your-org-env" | base64 | tr -d '\n'
    echo -n "your-mg-key" | base64 | tr -d '\n'
    echo -n "your-mg-secret" | base64 | tr -d '\n'
    
  3. 조직의 Edge Microgateway 구성 파일을 변경합니다. 환경:

    $HOME/.edgemicro/your_org-your_env-config.yaml
  4. 두 배의 Base64 인코딩 구성 파일의 내용은 다음과 같습니다.

    cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64  | tr -d '\n'
  5. 서비스가 실행 중인 네임스페이스의 Kubernetes에 변경사항을 적용합니다.

    kubectl apply -f secret.yaml -n 

이러한 새로운 변경사항은 기존 Microgateway 포드에 의해 자동으로 선택되지 않습니다. 하지만 새 포드가 변경사항을 가져옵니다 기존 포드를 삭제하여 변경사항을 적용하는 새 포드를 만듭니다

서비스 예

다음 예는 새 버전 제어로 서비스 배포를 업데이트하는 방법을 보여줍니다.

  1. 포드를 가져옵니다.

    kubectl get pods

    출력 예시:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          19h
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    
  2. edge-microgateway 포드를 삭제합니다.

    kubectl delete pod edge-microgateway-57ccc7776b-g7nrg

    출력 예시:

    pod "edge-microgateway-57ccc7776b-g7nrg" deleted
    
  3. 포드를 다시 가져옵니다. 새 포드가 가동되고 구성 변경사항이 적용됩니다.

    kubectl get pods

    출력 예시:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-7f6tc   1/1       Running   0          5s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

배포 확장

이 섹션에서는 Kubernetes 확장 원칙을 사용하여 배포를 확장할 수 있습니다

서비스 배포 확장

  1. 배포를 확인합니다.

    kubectl get deployments

    출력 예시:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   1         1         1            1           18h
    helloworld          1         1         1            1           1d
    

    출력에 복제본 1개가 배포되었다고 표시됩니다.

  2. 배포의 크기를 1개에서 원하는 만큼 늘립니다. 이 예에서는 edge-microgateway 서비스가 확장됩니다.

    kubectl scale deployment edge-microgateway --replicas=2
  3. (선택사항) 자동 확장을 사용하려면 다음 명령어를 사용합니다.

    kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
  4. 배포를 확인하여 확장이 사용 설정되었는지 확인합니다.

    kubectl get deployments

    출력 예시:

    NAME                DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
    edge-microgateway   2         2         2            2           18h
    helloworld          1         1         1            1           1d
    

    복제본 2개를 포함하도록 상태가 변경되었습니다.

  5. 포드를 확인합니다.

    kubectl get pods

    출력 예시:

    NAME                                 READY     STATUS    RESTARTS   AGE
    edge-microgateway-57ccc7776b-g7nrg   1/1       Running   0          18h
    edge-microgateway-57ccc7776b-rvfz4   1/1       Running   0          41s
    helloworld-6987878fc4-cltc2          1/1       Running   0          1d
    

    출력에 두 복제본이 모두 실행 중인 상태인 것으로 표시됩니다.

여러 Edge Microgateway 구성에 네임스페이스 사용

여러 Edge Microgateway 서비스 인스턴스를 Kubernetes 클러스터입니다 이 사용 사례를 통해 각 Microgateway 인스턴스를 구성할 수 있습니다. 사용할 수 있습니다. 예를 들면 다음과 같습니다.

  • Edge Microgateway 서비스 A에는 급증 저지 플러그인만 필요합니다.
  • Edge Microgateway Service B에는 할당량 및 OAuth 플러그인이 필요하지만 급증 저지에는 필요하지 않습니다.

이 사용 사례를 해결하려면 Kubernetes 네임스페이스를 사용합니다. 예를 들어 Edge Microgateway 서비스 A는 네임스페이스 foo, Edge Microgateway 서비스 B는 네임스페이스) 네임스페이스 bar

다음 예시에서는 OrgA 조직에 구성된 Edge Microgateway가 네임스페이스에 서비스로 배포됩니다. -n 옵션을 사용한 foo:

kubectl apply -f <(edgemicroctl -org=myorgA -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgA-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n foo

마찬가지로 다음 예시에서 Edge Microgateway는 OrgB 조직에 구성되어 있습니다. -n 옵션을 사용하여 bar 네임스페이스에 서비스로 배포됩니다.

kubectl apply -f <(edgemicroctl -org=myorgB -env=test-key=0e3ecea28a64099410594406b30e54439af5265f8 -sec=e3919250bee37c69cb2e5b41170b488e1c1d -conf=/Users/joed/.edgemicro/orgB-test-config.yaml -svc=samples/helloworld/helloworld.yaml) -n bar