본문 바로가기
kubenetes

KServe Private container registry certificates 설정

by kyeongseo.oh 2024. 9. 29.

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 컨트롤러가 사설 레지스트리의 인증서를 신뢰하게 되어, 해당 레지스트리에서 이미지를 정상적으로 가져올 수 있게 된다.

댓글