From e7be8f5d758a8431186cd6541eb162188ea189b4 Mon Sep 17 00:00:00 2001 From: sa_8001 Date: Mon, 5 Jan 2026 07:39:25 +0000 Subject: [PATCH] =?UTF-8?q?README.md=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 148 +++++++++++++++++++++--------------------------------- 1 file changed, 58 insertions(+), 90 deletions(-) diff --git a/README.md b/README.md index 111ee4c..db14450 100644 --- a/README.md +++ b/README.md @@ -1,95 +1,63 @@ -# 구성 (Local 실행 기준) -1. mapping.yaml - > 마이그레이션 할 어노테이션 정의가 작성 되는 파일 - ```yaml - # 예시 - nginx.ingress.kubernetes.io/ssl-redirect: - haproxy: haproxy.org/ssl-redirect - support: full +# Ingress Migrator - nginx.ingress.kubernetes.io/force-ssl-redirect: - haproxy: haproxy.org/ssl-redirect - support: full - - nginx.ingress.kubernetes.io/backend-protocol: - haproxy: haproxy.org/backend-protocol - support: full - - nginx.ingress.kubernetes.io/load-balance: - haproxy: haproxy.org/load-balance - support: full - ``` - support 기준은 아래와 같음 - ```yaml - full : 1:1 매핑 되는 옵션 - # ex) - # nginx.ingress.kubernetes.io/ssl-redirect: "true" - # haproxy.org/ssl-redirect: "true" - - partial : 기능은 같으나, 방식이 다름 - # nginx.ingress.kubernetes.io/limit-rps: "10" - # haproxy.org/rate-limit-requests: "10" - # haproxy.org/warning-limit-rps: "burst/period semantics differ" - - unsupported : 지원 되지 않음 - - # ex) - # nginx.ingress.kubernetes.io/configuration-snippet: | - # more_set_headers "X-Test: foo"; - ``` +### Container Image Build +```shell +git clone https://git.jhcloud.kr/sa_8001/ingress_migrate_annotations.git +cd ingress_migrate_annotations +podman build -t sa8001/ngtoha:v3.1.7 . +``` -2. migrate.py - > 실행 파일, 옵션은 아래와 같음 (pip install ruamel.yaml 실행 필요) - ```shell - --single : 하나의 파일로 결과물 생성 - --split : 각각의 yaml 파일로 저장 - --out : 저장 경로 설정 - --ingress-class : ingressClassName 설정 - --report : report 파일 저장 경로 - --mapping : 맵핑 파일 지정 (default : mapping.yaml) - --from-ingress-class : 기존 ingressclassname 지정 (지정된 대상만 변환) - --namespace : 지정시 해당 namespace 내 ingress만 변환 - ``` +### Deploy +```shell +kubectl apply -f ./yaml -n {NAMESPACE_NAME} +``` -# 구성 (Kubernetes 실행 기준) -1. Dockerfile - > 이미지 빌드 수행 +### 결과 +```shell +[root@p-jhbyun-master covert]# kubectl get all -n testapp +NAME READY STATUS RESTARTS AGE +pod/ingress-migrator-web-6777bb7cb7-k9kj7 1/1 Running 0 63s -2. mapping.yaml 파일 configmap으로 Kubernetes에 배포 - ```yaml - apiVersion: v1 - kind: ConfigMap - metadata: - name: ingress-annotation-mapping - namespace: default - data: - mapping.yaml: | - nginx.ingress.kubernetes.io/ssl-redirect: - haproxy: haproxy.org/ssl-redirect - support: full - - nginx.ingress.kubernetes.io/force-ssl-redirect: - haproxy: haproxy.org/ssl-redirect - support: full - - nginx.ingress.kubernetes.io/backend-protocol: - haproxy: haproxy.org/backend-protocol - support: full - - nginx.ingress.kubernetes.io/load-balance: - haproxy: haproxy.org/load-balance - support: full - - nginx.ingress.kubernetes.io/rewrite-target: - haproxy: haproxy.org/path-rewrite - support: full - - nginx.ingress.kubernetes.io/proxy-connect-timeout: - haproxy: haproxy.org/proxy-connect-timeout - support: full - ``` +NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE +service/ingress-migrator-web NodePort 10.97.101.243 80:30922/TCP 63s -3. Pod 배포 - ``` - 작성중 - ``` +NAME READY UP-TO-DATE AVAILABLE AGE +deployment.apps/ingress-migrator-web 1/1 1 1 63s + +NAME DESIRED CURRENT READY AGE +replicaset.apps/ingress-migrator-web-6777bb7cb7 1 1 1 63s +``` + +### UI +![메인화면](./image/main.png) +- 메인 화면, 변환 대상 인그레스 클레스 네임, 변경할 인그레스 클레스 네임, 네임스페이스 입력 + - From ingressClassName : default 값 nginx + - To ingressClassName: default 값 haproxy + - Namespace : 미입력시 모든 네임스페이스 대상 + +![결과](./image/preview.png) +- 각 `Yaml 이름` 클릭시 미리 보기 가능 +- `View Migration Report` 클릭시 변환 결과 확인 +- `Download Result ZIP` 클릭시 변환된 Yaml 다운로드 +- `Download Backup ZIP` 클릭시 원본 Yaml 다운로드 +- `Replace Converted YAML` 변환된 Yaml을 사용하여 ingress 재배포 +- `Rollback from Backup` 원본 Yaml을 사용하여 ingress 재배포 + +![변환](./image/coverted.png) +- 변환된 Yaml 내용 확인 가능 +- 내용 수정 후 `Save` 클릭시 저장 +- `Cancel` 클릭시 취소 및 뒤로가기 + +![백업](./image/original.png) +- 백업된 원본 Yaml 내용 확인 +- 원본은 `수정 불가능` + +![리포트](./image/report.png) +- 리포트를 통해서 변환된 내용 확인 가능 +- 해당 내용은 변환된 각 Yaml에도 있음 + +![배포](./image/replace.png) +- 변환된 Yaml을 통해서 재배포 후 결과 출력 + +![롤백](./image/rollback.png) +- 백업된 원본 Yaml을 통해서 재배포 후 결과 출력 \ No newline at end of file