본문으로 건너뛰기
버전: docs v25.02

For GCP Cloud

목차

  1. Edge App GCP CLI 설치
  2. Helm 설치
  3. Edge App Helm Chart 다운로드 및 인프라 정보 작성
  4. Edge App 설치/삭제/업데이트
  5. Edge Conductor 상에서 확인 후 사용  

1. Edge App GCP CLI Setup

  • Edge App GCP infra의 자원들을 이용하기 위해 GCP 계정은 필수 입니다. 클라우드 관리자에게 GCP 계정을 문의해 주세요.

  • gcp-cli, curl, kubectl 사전 설치

        sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates gnupg curl
    sudo curl -LO https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl
    sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
  • GCP 공개키 설치

        curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg
  • 패키지 소스로 gcloud CLI 배포 URI를 추가

        echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
  • gcloud CLI를 업데이트하고 설치

        sudo apt-get update && sudo apt-get install google-cloud-cli
  • GKE에 접근하기 위한 gke-gcloud-auth-plugin 설치

        gcloud components install gke-gcloud-auth-plugin
    or
    sudo apt-get install google-cloud-cli-gke-gcloud-auth-plugin

2. Helm 설치

  • helm 설치
    sudo snap install helm --classic

3. Edge App Helm Chart 다운로드 및 환경구성

  • Edge App Helm chart 설치

    git clone https://github.com/mellerikat/Edge-App.git
  • Edge App 환경 구성(최초 1회 )

        helm install init ./setup-pacakge/edgeapp-setup-[--version].tgz-f [namespace_setting_file] -n {namespace}

    (ex)

        helm install init ./setup-pacakge/edgeapp-setup-3.7.0.tgz -f example/aws-setup-for-each-namespace.yaml -n edge-app
  • 환경에 따라 맞는 하나의 예제파일을 선택해서 수정후 -f 옵션 뒤에 넣는다

    • example/aws-setup-for-each-namespace.yaml
    • example/gcp-setup-for-each-namespace.yaml
    • example/wsl-setup-for-each-namespace.yaml
  • 저장소, Rolebind 등 엣지앱이 동작위한 환경 설정을 위한 파일 (aws 예시)

    # gcp-setup-for-each-namespace.yaml
    global:
    is_gcp: True #aws환경인 경우 True

    env:
    namespace: gke-edge-app #k8s namespace
    serviceaccount: gke-edge-app #k8s service account

4. Edge App 설치/삭제/업데이트

  • Edge App 설치

    helm install [edgeapp name] ./edgeapp-package/edgeapp-manifest-[--version].tgz -f example/aws-edgeapp.yaml -n {namespace}

    (ex)

    helm install edgeapp-1 ./edgeapp-package/edgeapp-manifest-3.7.0.tgz -f example/gcp-edgeapp-1.yaml -n gke-edge-app
    helm install edgeapp-2 ./edgeapp-package/edgeapp-manifest-3.7.0.tgz -f example/gcp-edgeapp-2.yaml -n gke-edge-app
    • 환경에 따라 맞는 하나의 예제파일을 선택해서 수정후 -f 옵션 뒤에 넣는다

      • example/aws-edgeapp.yaml
      • example/gcp-edgeapp.yaml
      • example/wsl-edgeapp.yaml
    • 엣지앱의 사용자/인프라 정보를 저장하는 파일

    # gcp-edgeapp.yaml
    env:
    type: gcp
    cluster: edgeapp-cluster
    edgeapp_node: edgeapp # autopilot 일 경우 빈 공간
    alo_node: alo # autopilot 일 경우 빈 공간
    alo_memory: 6500Mi
    storage: cloud-storage-dev-meerkat
    controller_image_address: 339713051385.dkr.ecr.ap-northeast-2.amazonaws.com/mellerikat/release/edge-app/amd/controller:3.6.0-rc.1
    iomanager_image_address: 339713051385.dkr.ecr.ap-northeast-2.amazonaws.com/mellerikat/release/edge-app/amd/iomanager:3.6.0-rc.1
    redis_image_address: 339713051385.dkr.ecr.ap-northeast-2.amazonaws.com/mellerikat/release/edge-app/amd/redis:v7.2.3
    namespace: gke-edge-app
    serviceaccount: gke-edge-app

    ecr:
    token_renewable: true
    image_host: https://339713051385.dkr.ecr.ap-northeast-2.amazonaws.com

    pv:
    pv_enable: False

    conductor:
    host: edgecond.mellerikat-dev.com
    http_protocol: https
    port: 443
    wsprotocol: wss

    appinfo:
    data_input_path: gcp_test/input/
    data_ouput_path: gcp_test/output/
    data_input_policy: copy #'move','copy'
    data_save_policy: add_utc #'overwrite','add_utc','add_date'
    enable_result_to_edgecond: False
    Note: gcp-edgeapp-test
    ecr_token_enable: True

    cronjob:
    suspend: false
    base_image: asia-northeast3-docker.pkg.dev/nimble-sight-450802-a0/gcr-edgeapp-test/alpine/k8s:1.30.12
    onSchedule: "50 23 12 4 *"
    offSchedule: "50 23 12 4 *"
    api_server_endpoint: https://gke-3d9e615287614fea9ed3ae3765430baeaedf-684332823146.asia-northeast3-c.gke.goog # DNS endpoint
    gcp_project_id: "nimble-sight-450802-a0"
    gcp_region: "asia-northeast3-c"
    gcp_aws_role: arn:aws:iam::339713051385:role/role-gke-an3-auditdx-dev-gke-edge-app-sa
    edgeapp_cronjob_ecr_secret: edgeapp-cronjob-ecr-secret-helm
    ecr_token_command: |
    curl -k -X POST https://kubernetes.default.svc/api/v1/namespaces/{namespace}/serviceaccounts/{serviceaccount}/token \
    -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
    -H "Content-Type: application/json" \
    --data '{"apiVersion": "authentication.k8s.io/v1", "kind": "TokenRequest", "spec": { "audiences": ["sts.amazonaws.com"], "expirationSeconds": 3600 }}' \
    --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
    > /home/response.json && \
    token=$(grep -o '"token": *"[^"]*"' /home/response.json | sed 's/"token": *"//g' | sed 's/"//g') && \
    echo "$token" > /home/token && \
    ECR_TOKEN="$(aws ecr get-login-password --region ${AWS_REGION})" && \
    kubectl delete secret --ignore-not-found {edgeapp_cronjob_ecr_secret} -n {namespace} && \
    kubectl create secret docker-registry {edgeapp_cronjob_ecr_secret} --docker-server={image_host} --docker-username=AWS --docker-password=${ECR_TOKEN} --namespace={namespace}
  • Edge App 삭제

    helm uninstall [edgeapp name]

    (ex)

    helm uninstall example1
    helm uninstall example2
  • Helm 설정정보 업데이트

    helm upgrade [edgeapp name] ./edgeapp-package/edgeapp-manifest-[--version].tgz -n {namespace}
  • Alo 삭제

    kubectl delete pod [alo pod name] -n {namespace}

5. Edge Conductor 상에서 확인 후 사용

  • 엣지 컨덕터상에서 사용자가 설치한 엣지가 보이는지 확인한다
    • ex) {edgetest} -> {serail-number}{edgetest}