Cloudera AI Registry 는 온프레미스에서 모델 아티팩트를 Apache Ozone 에 저장한다. 생성할 때 Ozone S3 게이트웨이 엔드포인트, access key, secret key 세 가지를 요구하므로 미리 확보해야 한다.
Cloudera Manager 호스트에 접속해 om 서비스 계정으로 티켓을 받는다.
klist
kinit -kt /cdep/keytabs/om.keytab om
klist # Default principal 이 om@<REALM> 인지 확인
S3 access key 와 secret 을 발급받는다. --om-service-id 에는 실제 Ozone 서비스 ID 를 넣는다.
ozone s3 getsecret --om-service-id=<om-service-id>
ozone s3 getsecret -e # export 형태로 출력
출력된 awsAccessKey 는 보통 om@<REALM> 형태이고 awsSecret 이 비밀값이다. 이 두 값을 Registry 생성 화면에 넣는다.
S3 게이트웨이 엔드포인트는 Cloudera Manager 의 S3 Gateway Web UI 탭에서 --endpoint 값으로 확인한다. 웹 포트가 열려 있지 않으면 터미널에서 확인한다.
grep -A1 "ozone.s3g.http-address\|ozone.s3g.https-address" $OZONE_CONF_DIR/ozone-site.xml
ozone getconf -confKey ozone.s3g.http-address
# S3G 데몬이 뜬 노드에서
ss -tlnp | grep -E '9878|9879'
hostname -f
기본 포트는 HTTP 9878, HTTPS 9879 다. 설정이 0.0.0.0 이면 실제 접속에는 해당 노드의 FQDN 을 쓴다.
발급한 키가 실제로 동작하는지 AWS CLI 로 검증한다.
export AWS_ACCESS_KEY_ID=${OZONE_ACCESS_KEY}
export AWS_SECRET_ACCESS_KEY=${OZONE_SECRET_KEY}
aws s3api list-buckets --endpoint http://<s3g-host>:9878
aws s3 ls s3://<bucket> --endpoint http://<s3g-host>:9878
ozone sh volume list
ozone sh volume info /<volume>
ozone sh volume create /<volume>
ozone sh bucket list /<volume>
ozone sh bucket create /<volume>/<bucket>
S3 게이트웨이를 통해 만든 버킷은 s3v 볼륨 아래에 놓이므로 셸에서는 /s3v/<bucket> 으로 보인다. 볼륨 생성은 ozone.administrators 에 등록된 관리자 principal 이어야 가능하다. 서비스 계정에 접근 권한만 따로 줄 때는 ACL 을 추가한다.
ozone sh bucket addacl -a user:<service-account>:rwl /s3v/<bucket>
cm_ozone 리소스 권한을 가져야 한다. 권한이 없으면 키는 발급되지만 실제 접근에서 막힌다.ozone s3 getsecret 출력은 자격 증명이므로 로그·코드·이슈 본문에 남기지 않는다.