v0.0.10 | README.md 개선
All checks were successful
Build And Test / build-and-push (push) Successful in 38s
All checks were successful
Build And Test / build-and-push (push) Successful in 38s
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
160
README.md
160
README.md
@ -1,3 +1,163 @@
|
||||
# msa-django-nhn
|
||||
|
||||
NHN Cloud 리소스 관리를 위한 통합 API 서비스입니다.
|
||||
|
||||
## 기술 스택
|
||||
|
||||
| 분류 | 기술 |
|
||||
|------|------|
|
||||
| Framework | Django 4.2.14 |
|
||||
| API | Django REST Framework 3.16.0 |
|
||||
| Auth | SimpleJWT 5.5.0 (RS256) |
|
||||
| Database | MySQL (mysqlclient 2.2.7) |
|
||||
| Docs | drf-yasg 1.21.10 |
|
||||
| Server | Gunicorn 20.1.0 |
|
||||
|
||||
## 지원 서비스
|
||||
|
||||
- **Compute**: 인스턴스, Flavor, Keypair, 이미지
|
||||
- **VPC**: VPC, 서브넷, Floating IP, 보안 그룹
|
||||
- **NKS**: Kubernetes 클러스터, 노드 그룹
|
||||
- **Storage**: Object Storage 컨테이너
|
||||
- **DNS Plus**: Zone, 레코드셋, GSLB, Pool, 헬스체크
|
||||
- **Load Balancer**: LB, 리스너, 풀, 멤버, L7 정책
|
||||
|
||||
## API 엔드포인트
|
||||
|
||||
### Token
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| POST | `/api/nhn/token/` | 토큰 생성 |
|
||||
|
||||
### Compute
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| GET | `/api/nhn/compute/instances/` | 인스턴스 목록 |
|
||||
| POST | `/api/nhn/compute/instances/create/` | 인스턴스 생성 |
|
||||
| GET | `/api/nhn/compute/instances/<id>/` | 인스턴스 상세 |
|
||||
| POST | `/api/nhn/compute/instances/<id>/action/` | 인스턴스 액션 |
|
||||
| GET | `/api/nhn/compute/flavors/` | Flavor 목록 |
|
||||
| GET | `/api/nhn/compute/keypairs/` | Keypair 목록 |
|
||||
| GET | `/api/nhn/compute/images/` | 이미지 목록 |
|
||||
|
||||
### VPC/Network
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| GET/POST | `/api/nhn/vpc/` | VPC 목록/생성 |
|
||||
| GET | `/api/nhn/vpc/<id>/` | VPC 상세 |
|
||||
| GET/POST | `/api/nhn/subnet/` | 서브넷 목록/생성 |
|
||||
| GET | `/api/nhn/floatingip/` | Floating IP 목록 |
|
||||
| GET | `/api/nhn/securitygroup/` | 보안 그룹 목록 |
|
||||
|
||||
### NKS (Kubernetes)
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| GET | `/api/nhn/nks/clusters/` | 클러스터 목록 |
|
||||
| POST | `/api/nhn/nks/clusters/create/` | 클러스터 생성 |
|
||||
| GET | `/api/nhn/nks/clusters/<name>/` | 클러스터 상세 |
|
||||
| GET | `/api/nhn/nks/clusters/<name>/config/` | kubeconfig |
|
||||
| GET | `/api/nhn/nks/clusters/<name>/nodegroups/` | 노드 그룹 목록 |
|
||||
| POST | `/api/nhn/nks/clusters/<name>/nodegroups/create/` | 노드 그룹 생성 |
|
||||
|
||||
### DNS Plus
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| GET/POST | `/api/nhn/dns/zones/` | Zone 목록/생성 |
|
||||
| GET/POST | `/api/nhn/dns/zones/<id>/recordsets/` | 레코드셋 |
|
||||
| GET/POST | `/api/nhn/dns/gslbs/` | GSLB 목록/생성 |
|
||||
| GET/POST | `/api/nhn/dns/pools/` | Pool 목록/생성 |
|
||||
| GET/POST | `/api/nhn/dns/health-checks/` | 헬스체크 |
|
||||
|
||||
### Load Balancer
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| GET/POST | `/api/nhn/lb/loadbalancers/` | LB 목록/생성 |
|
||||
| GET/POST | `/api/nhn/lb/listeners/` | 리스너 |
|
||||
| GET/POST | `/api/nhn/lb/pools/` | 풀 |
|
||||
| GET/POST | `/api/nhn/lb/pools/<id>/members/` | 멤버 |
|
||||
| GET/POST | `/api/nhn/lb/healthmonitors/` | 헬스 모니터 |
|
||||
| GET/POST | `/api/nhn/lb/l7policies/` | L7 정책 |
|
||||
|
||||
### Async Task
|
||||
|
||||
| Method | Endpoint | 설명 |
|
||||
|--------|----------|------|
|
||||
| GET | `/api/nhn/tasks/` | 비동기 작업 목록 |
|
||||
| GET | `/api/nhn/tasks/<id>/` | 작업 상세 |
|
||||
|
||||
### API 문서
|
||||
|
||||
- Swagger UI: `/swagger/`
|
||||
|
||||
## 프로젝트 구조
|
||||
|
||||
```
|
||||
nhn/
|
||||
├── views.py # API 뷰 (40개 이상)
|
||||
├── models.py # AsyncTask 모델
|
||||
├── urls.py # URL 라우팅
|
||||
├── serializers.py # DRF 직렬화
|
||||
├── authentication.py # JWT 인증
|
||||
└── packages/ # NHN Cloud API 클라이언트
|
||||
├── base.py # 기본 클래스, 엔드포인트
|
||||
├── token.py # Token API
|
||||
├── compute.py # Compute API
|
||||
├── vpc.py # VPC API
|
||||
├── nks.py # NKS API
|
||||
├── storage.py # Storage API
|
||||
├── dnsplus.py # DNS Plus API
|
||||
└── loadbalancer.py # LB API
|
||||
```
|
||||
|
||||
## 환경 변수
|
||||
|
||||
```env
|
||||
# Django
|
||||
DEBUG=1
|
||||
SECRET_KEY=your-secret-key
|
||||
ISTIO_JWT=1
|
||||
|
||||
# Database
|
||||
SQL_ENGINE=django.db.backends.mysql
|
||||
SQL_HOST=localhost
|
||||
SQL_USER=user
|
||||
SQL_PASSWORD=password
|
||||
SQL_DATABASE=msa-nhn
|
||||
SQL_PORT=3306
|
||||
```
|
||||
|
||||
## 요청 헤더
|
||||
|
||||
NHN Cloud API 호출 시 다음 헤더가 필요합니다:
|
||||
|
||||
| 헤더 | 설명 |
|
||||
|------|------|
|
||||
| X-NHN-Token | NHN Cloud API 토큰 |
|
||||
| X-NHN-Region | 리전 (kr1, kr2, jp1) |
|
||||
| X-NHN-Tenant-ID | 테넌트 ID |
|
||||
| X-NHN-Appkey | DNS Plus Appkey (DNS API용) |
|
||||
|
||||
## 실행 방법
|
||||
|
||||
### 개발 서버
|
||||
|
||||
```bash
|
||||
python3 -m venv venv
|
||||
source venv/bin/activate
|
||||
pip install -r requirements.txt
|
||||
python3 manage.py migrate
|
||||
python3 manage.py runserver 0.0.0.0:8900
|
||||
```
|
||||
|
||||
### Docker
|
||||
|
||||
```bash
|
||||
docker build -t msa-django-nhn .
|
||||
docker run -p 8000:8000 --env-file .env.dev msa-django-nhn
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user