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

AWS Cloud

Updated 2024.12.02

AWS Cloud 환경에 Edge Conductor 설치할 수 있습니다. 쿠버네티스 객체 사용화 도구인 Helm을 사용하여 설치합니다.

infra

아래는 EKS내부에서 수행되는 컨포넌트들 입니다.

infra

Deploy Server 준비


aws cli 설치 및 구성하기

aws cli 설치

AWS Command Line Interface(AWS CLI)는 명령줄 셸의 명령을 사용하여 AWS 서비스와 상호 작용할 수 있는 오픈 소스 도구입니다.

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
$ unzip awscliv2.zip
$ sudo ./aws/install

$ aws --version
aws-cli/2.12.7 Python/3.11.4 Linux/5.4.0-196-generic exe/x86_64.ubuntu.20 prompt/off

aws cli 설치에 대한 자세한 사항은 아래 링크를 참조하세요. https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html

aws configure 구성

## aws configure 설정
$ aws configure
AWS Access Key ID [None]: {{access-key}}
AWS Secret Access Key [None]: {{secret-key}}
Default region name [None]: ap-northeast-2
Default output format [None]: json

## 설정 확인
$ cat .aws/credentials
[default]
aws_access_key_id = {{access-key}}
aws_secret_access_key = {{secret-key}}

## IAM user에 대한 구성 확인
$ aws sts get-caller-identity
{
"UserId": "userid",
"Account": "account",
"Arn": "arn:aws:iam::account:user/username"
}
  • access-key : Edge Conductor 설치 AWS Cloud EKS 제어권한을 가진 역할 Access Key
  • secret-key : Edge Conductor 설치 AWS Cloud EKS 제어권한을 가진 역할 Access Key

kubeconfig 설정

Edge Conductor 설치할 AWS Cloud EKS 클러스터를 제어하기위해 kubectl을 설정합니다.

## kubeconfig 설정
$ aws eks update-kubeconfig --region ap-northeast-2 --name {{eks-cluster-name}}

## kubeconfig 설정 확인
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* arn:aws:eks:ap-northeast-2:000000000000:cluster/eks-cluster-name arn:aws:eks:ap-northeast-2:000000000000:cluster/eks-cluster-name arn:aws:eks:ap-northeast-2:000000000000:cluster/eks-cluster-name
  • eks-cluster-name : Edge Conductor를 설치할 AWS Cloud EKS Cluster의 이름

Amazon EKS install-kubectl 에서 좀 더 상세한 정보를 참고할 수 있습니다.

helm 설치

Helm Community는 다양한 package manager를 통해 설치를 할수있는 방법을 제공합니다. 다른 방식(script, apt 등)으로의 설치방법은 official installation helm page을 참조하세요.

snap으로 설치

sudo snap install helm --classic

apt로 설치

curl https://baltocdn.com/helm/signing.asc | gpg --dearmor | sudo tee /usr/share/keyrings/helm.gpg > /dev/null
sudo apt-get install apt-transport-https --yes
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/helm.gpg] https://baltocdn.com/helm/stable/debian/ all main" | sudo tee /etc/apt/sources.list.d/helm-stable-debian.list
sudo apt-get update
sudo apt-get install helm

helm 설치 확인

$ helm version
version.BuildInfo{Version:"v3.16.4", GitCommit:"7877b45b63f95635153b29a42c0c2f4273ec45ca", GitTreeState:"clean", GoVersion:"go1.22.7"}

$ helm
The Kubernetes package manager

Common actions for Helm:

- helm search: search for charts
- helm pull: download a chart to your local directory to view
- helm install: upload the chart to Kubernetes
- helm list: list releases of charts

Environment variables:
...

Edge Conductor 설치하기


Deploy Server 설정 및 helm client 설치 이후, Helm repo(Chartmuseum)을 추가하여 Edge Conductor를 설치합니다.

Helm repo 추가하기

helm repo add mellerikat-edge-conductor https://mellerikat.github.io/Edge-Conductor/

Helm repo 목록 확인하기

helm repo ls

Helm repo 정보 갱신하기

사용 가능한 차트의 정보를 차트 저장소로부터 업데이트하려면 다음 명령어를 실행하세요

helm repo update

Helm chart 검색

helm search repo mellerikat-edge-conductor [ --versions {{chart-version}} ]

Chart 정보 출력하기

helm show chart mellerikat-edge-conductor/edge-conductor [ --version {{chart-version}} ]

아래는 Helm repo 추가 후 repo 및 chart정보를 확인한 예시입니다.

$ helm repo add mellerikat-edge-conductor https://mellerikat.github.io/Edge-Conductor/
"mellerikat-edge-conductor" has been added to your repositories

$ helm repo list
NAME URL
mellerikat-edge-conductor https://mellerikat.github.io/Edge-Conductor/

$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "mellerikat-edge-conductor" chart repository
Update Complete. ⎈Happy Helming!⎈

$ helm search repo edge-conductor --versions
NAME CHART VERSION APP VERSION DESCRIPTION
mellerikat-edge-conductor/edge-conductor 1.1.3 2.3.1-beta1 A Helm chart for Edge Conductor
mellerikat-edge-conductor/edge-conductor 1.1.0 2.3.1 A Helm chart for Edge Conductor

$ helm show chart mellerikat-edge-conductor/edge-conductor --version 1.1.3
apiVersion: v2
appVersion: 2.3.1-beta1
dependencies:
- condition: backend.enabled
name: backend
repository: ""
- condition: frontend.enabled
name: frontend
repository: ""
description: A Helm chart for Edge Conductor
home: https://github.com/mellerikat/Edge-Conductor
maintainers:
- email: youngjun.jeon@lge.com
name: youngjun.jeon
name: edge-conductor
sources:
- https://github.com/mellerikat/Edge-Conductor
type: application
version: 1.1.3

Create Project Value

helm show values mellerikat-edge-conductor/edge-conductor [ --version {{chart-version}} ] | tee project-values.yaml

Edge Conductor 설치 Cloud 환경에 따라서, 인프라 자원 이름, 권한 그밖의 설정값들이 다른 경우를 지원합니다.

다운받은 Base charts 파일에는 위 설정들이 기본값들로 저장되어 있으며, 설치자가 필요한 경우 값을 수정할 수 있습니다.

수정값들을 YAML 파일(예. project-values.yaml)에 저장하고, helm install 혹은 upgrade 할 때 사용하도록 합니다.

일부항목은 EKS에서 설정되어 있는 리소스의 이름 및 설정 값들을 따라야합니다.

Value 상세한 설명은 About Project Value 항목 참고

Install

helm install {{release-name}} --values {{project-value}} --namespace {{namespace}} {{chart-name}} --version {{chart-version}}

Upgrade

helm upgrade --install {{release-name}} --values {{project-value}} --namespace {{namespace}} {{chart-name}} --version {{chart-version}}

아래는 명령어 수행의 예시이며, Install 혹은 Upgrade 상황에 맞는 명령어를 수행하면 됩니다.

$ helm install edge-conductor --values ./project-vaules.yaml --namespace edge-conductor mellerikat-edge-conductor/edge-conductor --version 1.0.0

$ helm upgrade --install edge-conductor --values ./project-values.yaml --namespace edge-conductor mellerikat-edge-conductor/edge-conductor --version 1.0.0

Delete

helm delete {{release_name}} -n {{namespace}}

필요한 경우 사용자는 서비스를 종료할 수 있으며 아래는 현재 helm 수행 중인 리스트 확인 및 종료하는 예시입니다.

$ helm list -n edge-conductor
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
edge-conductor edge-conductor 1 2024-07-16 07:53:36.231641998 +0000 UTC deployed edge-conductor-0.1.7 v2.2.1

$ helm delete edge-conductor -n edge-conductor

About Project Value


참고로 아래는 1.0.0 차트 버전에 포함되어 있는 기본값들 확인 예제 입니다. 하나의 예제이며 차트 버전에 따라 env Value 값의 추가 삭제는 있을 수 있습니다.

Global parameters

NameDescriptionCloud 인프라 의존 값EKS Cluster내 유일값예제
serviceAccount.nameEdge Conductor 실행될 K8s Service Account NameOOedge-conductor
nodeSelector.nodegroupEdge Conductor 실행될 Cloud에서 생성된 NodeGroup 정보OXnodegroup: ng-an2-edgecond-mellerikat

backend parameters

NameDescriptionCloud 인프라 의존 값EKS Cluster내 유일값예제
backend.service.nodePortbackend Service 포트정보OO31020
backend.replicaCountDeployment안에서 수행될 pod relicasetXX2
backend.flower.replicaCountflower Deployment안에서 수행될 pod relicasetXX2

frontend parameters

NameDescriptionCloud 인프라 의존 값EKS Cluster내 유일값예제
frontend.service.nodePortfrontend Service 포트정보OO31010
frontend.replicaCountDeployment안에서 수행될 pod relicasetXX1

common parameters

NameDescriptionCloud 인프라 의존 값EKS Cluster내 유일값예제
pv.storageClassNamePersistentVolume에서 사용할 StorageClass 이름XXefs-sc-edgecond
pv.csi.vloumeHandlepv storageClass에서 사용할 efs idOOfs-00000000000000000
redis.urlaws에 설치된 elasticcache(redis) 주소OOrediss://master.redis.xxxxx.apn2.cache.amazonaws.com:6379
secret.objects.nameAWS sceretmanager 정보OX/parameter/ap-northeast-2/mellerikat/dev/rds
configMap.data.BACKEND_CORS_ORIGINSRoute53에 정의된 Edge Conductor Domain정보OX'["https://edgecond.meerkat-dev.com"]'
configMap.data.BACKEND_ENDPOINTRoute53에 정의된 Edge Conductor Domain정보OXhttps://edgecond.meerkat-dev.com
configMap.data.MYSQL_NAMErds mysql에서 사용할 database schemaOXedge_conductor
configMap.data.SERVER_IPRoute53 정의된 edge conductor domainOXedgecond.meerkat-dev.com
configMap.data.WORKSPACE서머리서버에서 사용될 설치된 Edge Conductor고유이름XXedge_conductor_meerkat_dev
configMap.data.LDAP_HOSTldap 정보 (미지원인 경우 "")XX*
configMap.data.UPDATE_CENTER_URLUpdate Center URL 정보XXhttps://xxxxxxxx.execute-api.ap-northeast-2.amazonaws.com/v1

The following is the values file in edge-conductor chart version 1.1.0

values.yaml

$ helm show values edge-conductor-1.1.0.tgz | tree values.yaml

# Default values for edge-conductor.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.

## Global values are values that can be used from templetes or subchart(backend/frontend)
##
global:
## Set the deployed serviceAccount name
serviceAccount:
name: "edge-conductor"

## Set the nodeSelector
nodeSelector:
nodegroup: ng-an2-edgecond-mellerikat

## If not set, backend/frontend image tag will be "appVersion" in Chart.yaml.
# tag: "2.2.1"


backend:
## Deploy backend
enabled: true

celery:
enabled: true
replicaCount: 1

flower:
enabled: false
replicaCount: 1
service:
nodePort: 31070

image:
repository: "edge-conductor/backend"
pullPolicy: IfNotPresent

## If not set, backend image tag will be .Values.global.tag.
# tag: "2.2.1"

replicaCount: 1

service:
nodePort: 31020
internal:
enabled: true


frontend:
## Deploy frontend
enabled: true

image:
repository: "edge-conductor/frontend"
pullPolicy: IfNotPresent

## If not set, backend image tag will be .Values.global.tag.
# tag: "2.2.1"

replicaCount: 1

service:
nodePort: 31010


pv:
## Use 'pv-{{ include "edge-conductor.fullname" . }}' by default
nameOverride: ""
csi:
volumeHandle: fs-00000000000000000
storageClassName: efs-sc-edgecond
storage: 30Gi

## Use 'pvc-{{ include "edge-conductor.fullname" . }}' by default
pvc:
nameOverride: ""


redis:
url: rediss://master.redis-an2-meerkat-dev-private.xxxxxx.apn2.cache.amazonaws.com:6379


secret:
## If you need additional secret data
#
data: []
# - key: "MYSQL_USER"
# objectName: "dbusername"

objects:
name: "/parameter/ap-northeast-2/mellerikat/dev/rds"

## If you need additional objects data
#
additionalObjects: []
# - objectName: "/parameter/ap-northeast-2/mellerikat/dev/rds"
# objectType: "secretsmanager"
# jmesPath:
# - path: "username"
# objectAlias: "dbusername"

## Use '{{ include "edge-conductor.fullname" . }}-secretprovider' by default
secretProvider:
nameOverride: ""


configMap:
## Use config-{release-name} by default
nameOverride: ""
additionalConfig: {}

data:
BACKEND_CORS_ORIGINS: '["https://edgecond.meerkat-dev.com"]'
BACKEND_ENDPOINT: https://edgecond.meerkat-dev.com
MYSQL_NAME: edgecond_db
SERVER_IP: edgecond.meerkat-dev.com
WORKSPACE: edgecond.meerkat-dev

## The key below is given a default value, please modify it out if you want to change it.
# CONTAINER_NAME: "edgecond" # sh-script에서 사용 -> 삭제
# DAILY_SUMMARY_SERVER_URL: "http://0.0.0.0:46599"
# HOSTGID: HOSTGID "1175"
# HOSTUID: HOSTUID "1175"
# JWT_SECRET: "edgecond@lge"
# LDAP_HOST: ""
# LOGGING_COUNT: "90"
# LOGGING_LEVEL: "INFO"
# LOGGING_ROTATE: "0:00"
# MYSQL_NAME: "edgecond_db" # config에서 사용
# PROJECT_NAME: "Mellerikat Edge Conductor"
# SQLALCHEMY_POOL_MAX_OVERFLOW: "10"
# SQLALCHEMY_POOL_SIZE: "5"
# UPDATE_CENTER_URL: ""
# VAULT_CATOZ: ""
# VAULT_NAMESPACE: ""
# VAULT_TOKEN: ""
# WEBHOOK_TEAMS: ""
#