diff --git a/README.md b/README.md index 3ff09a92..fb9427a0 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ ### 아키텍처 -![Architecture](docs/images/archi-without-pe.png) +![Architecture](docs/images/archi-real.png) ### 시나리오 diff --git a/docs/00-get-ready.md b/docs/00-get-ready.md new file mode 100644 index 00000000..803c40fb --- /dev/null +++ b/docs/00-get-ready.md @@ -0,0 +1,39 @@ +# 환경 세팅하기 + +## VScode에서 devcontainer 열기 + +fork한 레포를 VScode에서 열면 오른쪽 하단에 devcontainer로 폴더를 열건지 알림창이 뜨는 분들은 `Reopen in Container` 를 해주세요. +![alt text](images/image.png) + +만약 해당 창이 뜨지 않으면 devcontianer extension이 없는거라서, 설치 해준 다음 커맨드 팔레트에서 명령어를 찾아서 동일하게 Container를 실행합니다. +![devcontainer-open](images/Screenshot%202024-03-15%20at%209.43.27 PM.png) + +## az login 하기 + +```bash +az login +``` + +## `.env` 파일 다운받기 + +클클 슬랙을 통해 공유되는 구글 드라이브 파일을 다운 받아서 `app` 폴더에 넣습니다. + +## 로컬에서 앱 실행하기 + +```bash +cd app +source start-dev.sh +``` + +`http://localhost:50505` 로 접속 + +## Terraform 으로 인프라 배포하기 + +시간이 없으니 배포부터 하고 설명 들읍시다... + +```bash +cd infra +terraform init +terraform plan +terraform apply +``` \ No newline at end of file diff --git a/docs/01-intro.md b/docs/01-intro.md deleted file mode 100644 index 5a237a5c..00000000 --- a/docs/01-intro.md +++ /dev/null @@ -1,26 +0,0 @@ -# Azure 기본 개념 소개 - -## Application Gateway - -- TBD - -## Azure Kubernetes Service(AKS) - -- TBD - -## Azure OpenAI - -- TBD - -## Storage Account & Blob storage - -- TBD - -# 인프라 구성은 Infra as Code(IaC)로 - -## Azure의 인프라 배포는 어떻게 작동할까? - -- ARM Template -- TBD - -## Terraform \ No newline at end of file diff --git a/docs/01-scenario-intro.md b/docs/01-scenario-intro.md new file mode 100644 index 00000000..e382f18c --- /dev/null +++ b/docs/01-scenario-intro.md @@ -0,0 +1,15 @@ +# 시나리오 소개 + +## 오늘 우리가 할 것 + +![real-archi](images/archi-real.png) + +- 클라우드 클럽 GPT를 운영하기 위한 아키텍처를 설계했따! +- 제일 간단하게 할 수 있는 건 PaaS 앱서비스를 이용해서 바로 앱을 배포하는 거지만, 우리는 쿠버네티스를 좋아하는 사람들이 많으니까 쿠버로 한다! + +## 미리 만들어 둔 리소스들 + +- AOAI +- Storage Account & Blob storage +- AI Search +- Document Intelligence \ No newline at end of file diff --git a/docs/02-azure-explain.md b/docs/02-azure-explain.md new file mode 100644 index 00000000..b952bc7a --- /dev/null +++ b/docs/02-azure-explain.md @@ -0,0 +1,51 @@ +# Azure 소개 + +## Application Gateway + +- L7 Load balancer + - SSL 오프로딩, cookie-based 세션 affinity, URL 기반 라우팅... +- AWS Elastic LB +- Web Application Firewall 기능 +- Application Gateway Ingress Controller? + +## Azure Kubernetes Service(AKS) + +- Azure의 Managed Kubernetes Cluster +- EKS +- 네트워크 플러그인 옵션(kubenet, Azure CNI, Azure CNI Overlay..)에 따라 달라지는 pod ip 할당 +- Entra(AzureAD)와 연동되는 RBAC 관리 및 접근 제어 + +- Azure OpenAI 를 호출하는 앱을 AKS에 띄운다. + +## Virtual Machine Scale Set + +- AWS autoscaling group + +## Azure OpenAI + +- 다양한 모델 배포 가능 + - Chat + - gpt3, gpt3.5, gpt3.5-turbo, gpt4, gpt4-turbo, gpt4v + - Text completion + - text-davinci-002, text-curie-002 + - Embedding + - EDA + - Image + - DALLE +- 단순히 API 엔드포인트만 제공하는 것이 아니라 RAG, 튜닝, 플러그인, 프롬프트 플로우 기능 제공. Private하게 구성할 수 있게 엔드포인트 설정 가능 + +## Azure AI Search + +- RAG를 위해 데이터 인덱싱 및 vector 값 저장 + +## Storage Account & Blob storage + +- DynamoDB +- export한 클클 노션 / 홈페이지 정보를 저장 + +## 인프라 구성은 Infra as Code(IaC)로 + +## Azure의 인프라 배포는 어떻게 작동할까? + +- ARM Template 기반 +![alt text](images/arm.png) \ No newline at end of file diff --git a/docs/gh-action-setting.md b/docs/03-gh-action-setting.md similarity index 92% rename from docs/gh-action-setting.md rename to docs/03-gh-action-setting.md index 5fbe7a27..8ed3fd91 100644 --- a/docs/gh-action-setting.md +++ b/docs/03-gh-action-setting.md @@ -35,6 +35,11 @@ ouput 값으로 이런 값들이 나옵니다. } ``` +## 3. Service Principal 에게 필요한 권한 주기 + +- ACR Push +- AKS RBAC cluster admin + ## 3. Secret 값 지정하기 포크를 떠서 가져간 레포에서 `Settings > Security > Secrets and Variables > Actions` 에 들어가 output으로 나온 값들과 AKS/ACR 정보를 차례로 입력합니다. @@ -53,7 +58,7 @@ ouput 값으로 이런 값들이 나옵니다. ## Action 테스트하기 -- TBD +- AKS에 앱을 배포해봅시다 +- build 성공~ -## [Todo] Github Action 에러 보면서 원인 찾기 diff --git a/docs/04-aks-final.md b/docs/04-aks-final.md new file mode 100644 index 00000000..f1386018 --- /dev/null +++ b/docs/04-aks-final.md @@ -0,0 +1,18 @@ +# 결과물 + +## AKS service & ingress 배포하기 + +```bash +az aks get-credentials --resource-group --name +kubelogin convert-kubeconfig -l azurecli + +cd manifest +kubectl apply -f ingress.yaml +kubectl apply -f internal-lb.yaml +``` + +- `kubelogin` 쓰는 이유 + +## App Gateway public ip로 앱 확인하기 + +짜잔. diff --git "a/docs/images/Screenshot 2024-03-15 at 9.43.27\342\200\257PM.png" "b/docs/images/Screenshot 2024-03-15 at 9.43.27\342\200\257PM.png" new file mode 100644 index 00000000..b4f5d3bc Binary files /dev/null and "b/docs/images/Screenshot 2024-03-15 at 9.43.27\342\200\257PM.png" differ diff --git a/docs/images/archi-real.png b/docs/images/archi-real.png new file mode 100644 index 00000000..8994dc41 Binary files /dev/null and b/docs/images/archi-real.png differ diff --git a/docs/images/arm.png b/docs/images/arm.png new file mode 100644 index 00000000..1aa81461 Binary files /dev/null and b/docs/images/arm.png differ diff --git a/docs/images/image.png b/docs/images/image.png new file mode 100644 index 00000000..367ad9fe Binary files /dev/null and b/docs/images/image.png differ