KServe에서 자체 서명된 인증서를 사용하는 Private container registry를 활용하려면, Knative Serving 컨트롤러가 해당 인증서를 신뢰하도록 설정해야 한다.
문제 상황
사설 인증서를 사용하는 레지스트리에서 이미지를 가져오려고 할 때, 다음과 같은 x509 에러가 발생했다.
Message: Revision "iris-svm-transformer-transformer-00001" failed with message: Unable to fetch image "registry.dd.io/shared/iris-transformer:0.1.0": failed to resolve image to digest: Get "https://registry.dd.io/v2/": tls: failed to verify certificate: x509: certificate signed by unknown authority.
해결 방법
1. CA 인증서를 포함하는 Secret 생성
레지스트리의 CA 인증서를 Kubernetes Secret으로 생성한다.
kubectl -n knative-serving create secret generic custom-certs --from-file=ca.crt=/etc/pki/ca-trust/source/anchors/registry.dd.io.crt
2. Knative Serving 컨트롤러 Deployment 수정
Knative Serving 컨트롤러 Deployment를 수정하여 생성한 Secret을 마운트하고 필요한 환경 변수를 설정한다.
kubectl edit deployment controller -n knative-serving
다음과 같이 Deployment를 수정한다.
spec:
template:
spec:
containers:
- name: controller
# 기존 컨테이너 설정...
# 새로운 환경 변수 추가
env:
- name: SSL_CERT_DIR
value: /path/to/custom/certs
# 볼륨 마운트 추가
volumeMounts:
- name: custom-certs
mountPath: /path/to/custom/certs
readOnly: true
# 볼륨 추가
volumes:
- name: custom-certs
secret:
secretName: custom-certs
위와 같이 설정을 완료하면 Knative Serving 컨트롤러가 사설 레지스트리의 인증서를 신뢰하게 되어, 해당 레지스트리에서 이미지를 정상적으로 가져올 수 있게 된다.
'kubenetes' 카테고리의 다른 글
KServe Custom Predictor 이미지 빌드 가이드 - v2 protocol (1) | 2024.10.01 |
---|---|
KServe Transformer 개발 가이드 (1) | 2024.09.29 |
MLflow와 KServe를 이용한 모델 배포 가이드 (4) | 2024.09.26 |
KServe를 이용한 scikit-learn 모델 배포 및 사용 가이드 (1) | 2024.09.26 |
kserve 사용 및 설정 가이드 (0) | 2024.09.24 |
댓글