<ph type="x-smartling-placeholder"></ph>
현재 Apigee Edge 문서를 보고 있습니다.
Apigee X 문서. 정보
맞춤 플러그인 추가
커스텀 구성 파일을 작성하여 마이크로게이트웨이에 새로운 기능을 플러그인을 사용합니다. 커스텀 플러그인을 사용하면 프로그래매틱 방식으로 요청과 상호작용할 수 있습니다. 마이크로서비스로 전송되는 요청에 액세스할 수 있습니다
이 섹션에서는 플러그인을 패키징하고 Edge Microgateway에 배포하는 방법을 설명합니다. kube-apiserver와 통신하는 역할을 합니다
이 섹션의 나머지 부분에서는 애플리케이션을 작성하고 구성하는 데 익숙한 표준 Edge Microgateway 설정용 플러그인입니다. 그렇지 않은 경우 맞춤 플러그인 개발을 참고하세요.
플러그인 패키징
맞춤 플러그인을 패키징하려면 다음 단계를 따르세요.
간단한 플러그인 작성의 안내에 따라 플러그인을 작성하고 테스트합니다.
플러그인 코드를 적절한 디렉터리 구조에 배치합니다. 플러그인 디렉터리는 설정된 구조를 따라야 합니다. 다음 예는 따라야 하는 구조로, 여기서
response-uppercase
및request-headers
는 커스텀 플러그인 코드가 포함된 폴더의 이름 (이 이름은 예시일 뿐이며, 폴더 이름은 다를 수 있음).plugin | |-- plugins | |- response-uppercase | |- index.js | |- package.json |- request-headers | | - index.js | - package.json
plugin
폴더로cd
하세요.plugin
폴더에서plugins
폴더 전체를 압축합니다.zip -r plugins.zip plugins/
Docker 이미지 만들기
- ZIP 파일이 있는 디렉터리에서
Dockerfile
라는 새 파일을 만듭니다. 다음 코드를
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"]
플러그인으로 새 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 구성을 업데이트합니다.
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 구성을 삽입합니다.
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)
플러그인을 테스트합니다. API를 호출하여 예상된 동작이 발생하는지 확인합니다. 대상 예를 들어 '응답 대문자'의 경우 플러그인에서는 응답 텍스트가 대문자를 사용합니다.
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
출력:
HELLO WORLD
수동으로 새 구성 삽입
수동 삽입은 간단한 접근 방식으로, 새 구성을 삽입합니다. gcloud 명령어입니다
다음 명령어를 실행합니다.
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)
플러그인을 테스트합니다. 서비스 API 호출 확인할 수 있습니다 예를 들어 '응답 대문자'의 경우 플러그인, 응답 텍스트는 아래와 같이 모두 대문자로 변환됩니다.
curl $GATEWAY_IP -H 'x-api-key:3eqeedJRFLlCshwWBiXq4xKFoH1Se3xR'
출력:
HELLO WORLD
Edge Microgateway 구성 변경
경우에 따라 Edge Microgateway 구성을 수정해야 할 수 있습니다. 예를 들어 Edge Microgateway에 새 플러그인을 추가하거나 구성 매개변수를 변경하는 것이 좋습니다. 이 섹션에서는 Edge Microgateway 구성을 변경하고 적용하는 방법을 설명합니다. 실행할 수도 있습니다
아래와 같이
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
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'
조직의 Edge Microgateway 구성 파일을 변경합니다. 환경:
$HOME/.edgemicro/your_org-your_env-config.yaml
두 배의 Base64 인코딩 구성 파일의 내용은 다음과 같습니다.
cat $HOME/.edgemicro/org-env-config.yaml | base64 | tr -d '\n' | base64 | tr -d '\n'
서비스가 실행 중인 네임스페이스의 Kubernetes에 변경사항을 적용합니다.
kubectl apply -f secret.yaml -n
이러한 새로운 변경사항은 기존 Microgateway 포드에 의해 자동으로 선택되지 않습니다. 하지만 새 포드가 변경사항을 가져옵니다 기존 포드를 삭제하여 변경사항을 적용하는 새 포드를 만듭니다
서비스 예
다음 예는 새 버전 제어로 서비스 배포를 업데이트하는 방법을 보여줍니다.
포드를 가져옵니다.
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
edge-microgateway
포드를 삭제합니다.kubectl delete pod edge-microgateway-57ccc7776b-g7nrg
출력 예시:
pod "edge-microgateway-57ccc7776b-g7nrg" deleted
포드를 다시 가져옵니다. 새 포드가 가동되고 구성 변경사항이 적용됩니다.
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 확장 원칙을 사용하여 배포를 확장할 수 있습니다
서비스 배포 확장
배포를 확인합니다.
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개가 배포되었다고 표시됩니다.
배포의 크기를 1개에서 원하는 만큼 늘립니다. 이 예에서는
edge-microgateway
서비스가 확장됩니다.kubectl scale deployment edge-microgateway --replicas=2
(선택사항) 자동 확장을 사용하려면 다음 명령어를 사용합니다.
kubectl autoscale deployment edge-microgateway --cpu-percent=50 --min=1 --max=10
배포를 확인하여 확장이 사용 설정되었는지 확인합니다.
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개를 포함하도록 상태가 변경되었습니다.
포드를 확인합니다.
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