7a6b9872f6
rancher 2.14.3 - custom-values 의 `preinstallHook: true` 제거. 2.10.1 에 있던 templates/preinstallHook/ (tls-ca secret 생성 Job)이 2.14.3 본문에는 없어 이 값이 아무 동작도 하지 않는다. dipup 은 설치 전 단계에서 직접 만든다 (pkg/kube/secret.go CreateRancherCASecret). - privateCA: true 는 deployment 가 tls-ca secret 을 non-optional 로 마운트하게 하므로, 카탈로그 차트만으로 배포할 때 secret 이 없으면 파드가 ContainerCreating 에서 멈춘다. 해당 주의를 custom-values·CUSTOM-README 에 명시. - BUILD-README 상단에 2.14.3 이 dipup tgz 전개본이라 이 문서의 차트 수정 절차가 적용되지 않았음을 명시하고, preinstallHook 단계를 무효 표시. infisical-standalone 1.9.0 - custom-values 에 `ingress.nginx.enabled: false` 추가. 차트 기본값이 활성이라 스캐너(extract-helm-images.sh 가 custom-values 로 effective image 산출)가 dipup 이 배포하지 않는 k8s.gcr.io/ingress-nginx/controller:v1.1.0 · kube-webhook-certgen:v1.1.1 을 잡아 CVE 트리아지 잡음이 됐다. dipup env/values/infisical-values.yaml 과 값을 맞춘다. 검증: 12/12 차트 helm template --kube-version 1.34.1 렌더 성공. infisical effective image 가 dipup 배포분 3종으로 축소됨을 확인. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
151 lines
5.1 KiB
Markdown
151 lines
5.1 KiB
Markdown
# Rancher 버전 갱신 가이드
|
|
|
|
> ⚠️ **2.14.3 은 아래 절차로 만들어지지 않았다.** dipup 이 임베딩한
|
|
> `rancher-2.14.3.tgz` 를 그대로 전개한 것이라(dipup 배포 바이트와 동일함을 보장),
|
|
> 이 문서의 "차트 수정" 단계는 2.14.3 본문에 적용되어 있지 않다.
|
|
> 특히 **`preinstallHook` 커스터마이징은 2.14.3 에 존재하지 않는다** —
|
|
> `templates/preinstallHook/` 도 `values.yaml` 의 `preinstallHook` 키도 없다.
|
|
> tls-ca secret 은 dipup 이 설치 전 단계에서 직접 만든다
|
|
> (`pkg/kube/secret.go` `CreateRancherCASecret`).
|
|
> 아래 본문은 2.10.1 을 만들 때의 절차 기록으로 남긴다.
|
|
|
|
## 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/*
|
|
|
|
- 삭제 명령어.
|
|
|
|
``` sh
|
|
# 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 버전의 차트를 다운로드
|
|
``` sh
|
|
# 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에서 실행시 문제 발생 > 해당 문제 해결 시 제외)
|
|
``` sh
|
|
rm -f templates/post-delete-hook*
|
|
```
|
|
- post-delete-hook.sh 수정
|
|
``` 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` 추가~~ (2.14.3 에는 적용하지 않는다 — 문서 상단 주의 참고)
|
|
|
|
## 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 삭제 후처리를 위한 스크립트 수정 및 추가하였다. |