Repository for dip
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

4.5 KiB

Rancher 버전 갱신 가이드

1. git 작업 환경 구성

  • 서비스 카탈로그 git 다운로드
$ git clone https://github.com/paasup/service-catalog.git
  • 작업 브랜치로 체크아웃
$ git checkout -b update-rancher/2.10.1

2. helm 차트 버전 업데이트

1) 차트 버전 변경

  • rancher 차트에 추가한 파일을 제외한 나미지 파일을 삭제한다.

    • 삭제 제외 파일,디렉토리 목록

      • BUILD-README.md

      • CUSTOM-README.md

      • custom-values.yaml

      • templates/preinstallHook/*

    • 삭제 명령어.

    # chart 디렉토리로 이동
    cd ~/service-catalog/charts/rancher
    
    # 파일 삭제 전 삭제할 파일 목록 확인
    find . -type f -not \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" -o -path "./scripts/cleanup-rancher.sh" -o -path "./scripts/README.md" -o -path "*/templates/preinstallHook/*" \)
    
    # 파일 삭제
    find . -type f -not \( -name "CUSTOM-README.md" -o -name "BUILD-README.md" -o -name "custom-values.yaml" -o -path "./scripts/cleanup-rancher.sh" -o -path "./scripts/README.md" -o -path "*/templates/preinstallHook/*" \) -delete
    
  • 변경할 rancher 버전의 차트를 다운로드

    # charts 디렉토리로 이동
    cd ~/service-catalog/charts
    
    # helm repo 추가
    helm repo add rancher-latest https://releases.rancher.com/server-charts/latest
    helm repo update
    
    # helm 차트 
    helm pull rancher-latest/rancher --version="2.10.1"
    
    # 차트 변경
    tar xzvf rancher*.tgz
    
    # 필요 없는 파일 삭제
    rm rancher-*.tgz
    

2) 차트 수정

  • post delete hook 파일 삭제(argocd에서 실행시 문제 발생 > 해당 문제 해결 시 제외)

    rm -f templates/post-delete-hook*
    
  • post-delete-hook.sh 수정

    # line 81에 kubectl delete 문 추가
    kubectl --ignore-not-found=true delete secret tls-ca -n ${rancher_namespace}
    ...
    # 스크립트 마지막에 아래 내용 추가
    for ns in $(kubectl get namespaces -o jsonpath='{.items[*].metadata.name}'); do
      # Remove finalizers from the namespace itself
      kubectl patch namespace "$ns" -p '{"metadata":{"finalizers":[]}}' --type=merge
    
      # Remove finalizers from all roles in the namespace
      for role in $(kubectl get roles -n "$ns" -o jsonpath='{.items[*].metadata.name}'); do
          kubectl patch role "$role" -n "$ns" -p '{"metadata":{"finalizers":[]}}' --type=merge
      done
    
      # Remove finalizers from all rolebindings in the namespace
      for rolebinding in $(kubectl get rolebindings -n $ns -o jsonpath='{.items[*].metadata.name}'); do
          kubectl patch rolebinding "$rolebinding" -n "$ns" -p '{"metadata":{"finalizers":[]}}' --type=merge
      done
    done
    
    for cr in $(kubectl get clusterroles -o jsonpath='{.items[*].metadata.name}'); do
        kubectl patch clusterrole "$cr" -p '{"metadata":{"finalizers":[]}}' --type=merge
    done
    
    for crb in $(kubectl get clusterrolebindings -o jsonpath='{.items[*].metadata.name}'); do
        kubectl patch clusterrolebinding "$crb" -p '{"metadata":{"finalizers":[]}}' --type=merge
    done
    
  • values.yaml에 preinstallHook: false 추가

    # 문서 마지막에 아래 값 추가
    preinstallHook: false
    

3. git push 및 tag 추가

  • 갱신작업 진행후 commit
$ git add .
$ git commit -m "update rancher/2.10.1"
  • main 브랜치에 체크아웃 후 merge
$ git checkout main
$ git merge update-rancher/2.10.1
  • git에 push 후 작업 브랜치 삭제
$ git push -u origin main
$ git branch -d update-rancher/2.10.1
  • git tag 추가 후 push
$ git tag rancher/2.10.1
$ git push origin rancher/2.10.1

4. 차트 버전 정보

  • rancher/2.10.1
    • 서비스 배포를 위하여 custom-values.yam에 정의하였다.
    • 차트의 빌드 방법과 배포 방법을 BUILD-README.md, CUSTOM-README.md 문서에 작성하였다.
  • rancher/2.10.1-1
    • 사설 인증서 사용시 전처리를 위한 Helm preinstall Hook을 추가하였다.
    • 변경 사항을 BUILD-README.md, CUSTOM-README.md 문서에 반영하였다.
  • rancher/2.10.1-2
    • Helm preinstall Hook에 rancher labels 추가
    • Helm preinstall Hook으로 생성된 자원을 삭제하기 위해 Helm postdelete Hook을 추가하였다.
    • 변경 사항을 BUILD-README.md 문서에 반영하였다.
  • rancher/2.10.1-3
    • Argocd post-delete Hook 이슈로 Hook을 삭제하였다.
    • Rancher 삭제 후처리를 위한 스크립트 수정 및 추가하였다.