7.2. Air-gapped OpenShift 클러스터에서 Clair의 취약점 데이터베이스를 수동으로 업데이트


Clair는 다양한 취약점 데이터베이스를 가져오고 구문 분석하는 논리를 캡슐화하는 update r라는 패키지를 활용합니다. Clair는 다른 환경에서 업데이트 프로그램을 실행하고 결과를 가져올 수 있습니다. 이는 Clair 클러스터가 인터넷에 직접 대화하지 못하도록 하는 설치를 지원하기 위한 것입니다.

Air-gapped OpenShift 클러스터에서 Clair의 취약점 데이터베이스를 수동으로 업데이트하려면 다음 단계를 사용합니다.

  • clairctl 프로그램 가져오기
  • Clair 구성 검색
  • clairctl 을 사용하여 인터넷에 액세스할 수 있는 Clair 인스턴스에서 업데이트됨 번들을 내보냅니다.
  • Clair 데이터베이스에 액세스할 수 있도록 air-gapped OpenShift 클러스터에서 Clair 구성을 업데이트합니다.
  • 인터넷 액세스가 가능한 시스템에서 업데이트 번들을 전송하여 에어-Gapped 환경에서 사용할 수 있도록 합니다.
  • clairctl 을 사용하여 Air-gapped OpenShift 클러스터의 Clair 인스턴스로 업데이트 번들을 가져옵니다.

7.2.1. clairctl 가져오기

OpenShift 클러스터의 Clair 배포에서 clairctl 프로그램을 가져오려면 oc cp 명령을 사용합니다. 예를 들면 다음과 같습니다.

$ oc -n quay-enterprise cp example-registry-clair-app-64dd48f866-6ptgw:/usr/bin/clairctl ./clairctl
$ chmod u+x ./clairctl

독립 실행형 Clair 배포의 경우 podman cp 명령을 사용합니다. 예를 들면 다음과 같습니다.

$ sudo podman cp clairv4:/usr/bin/clairctl ./clairctl
$ chmod u+x ./clairctl

7.2.2. Clair 구성 검색

7.2.2.1. OpenShift 구성의 Clair

OpenShift Operator를 사용하여 배포된 Clair 인스턴스의 구성 파일을 검색하려면 적절한 네임스페이스를 사용하여 config 시크릿을 검색하고 디코딩하고 파일에 저장합니다. 예를 들면 다음과 같습니다.

$ kubectl get secret -n quay-enterprise example-registry-clair-config-secret  -o "jsonpath={$.data['config\.yaml']}" | base64 -d > clair-config.yaml

Clair 구성 파일에서 발췌한 내용은 다음과 같습니다.

clair-config.yaml

http_listen_addr: :8080
introspection_addr: ""
log_level: info
indexer:
    connstring: host=example-registry-clair-postgres port=5432 dbname=postgres user=postgres password=postgres sslmode=disable
    scanlock_retry: 10
    layer_scan_concurrency: 5
    migrations: true
    scanner:
        package: {}
        dist: {}
        repo: {}
    airgap: false
matcher:
    connstring: host=example-registry-clair-postgres port=5432 dbname=postgres user=postgres password=postgres sslmode=disable
    max_conn_pool: 100
    indexer_addr: ""
    migrations: true
    period: null
    disable_updaters: false
notifier:
    connstring: host=example-registry-clair-postgres port=5432 dbname=postgres user=postgres password=postgres sslmode=disable
    migrations: true
    indexer_addr: ""
    matcher_addr: ""
    poll_interval: 5m
    delivery_interval: 1m
    ...

7.2.2.2. 독립 실행형 Clair 구성

독립 실행형 Clair 배포의 경우 구성 파일은 podman run 명령의 CLAIR_CONF 환경 변수에 지정된 파일입니다. 예를 들면 다음과 같습니다.

sudo podman run -d --rm --name clairv4 \
  -p 8081:8081 -p 8089:8089 \
  -e CLAIR_CONF=/clair/config.yaml -e CLAIR_MODE=combo \
  -v /etc/clairv4/config:/clair:Z \
  registry.redhat.io/quay/clair-rhel8:v3.7.10

7.2.3. 업데이트 번들 내보내기

인터넷에 액세스할 수 있는 Clair 인스턴스에서 적절한 구성 파일과 함께 clairctl 을 사용하여 업데이트 번들을 내보냅니다.

$ ./clairctl --config ./config.yaml export-updaters updates.gz
  • kubectl 을 사용하여 Clair 데이터베이스 서비스를 확인합니다.

    $ kubectl get svc -n quay-enterprise
    
    NAME                                  TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                             AGE
    example-registry-clair-app            ClusterIP      172.30.224.93    <none>        80/TCP,8089/TCP                     4d21h
    example-registry-clair-postgres       ClusterIP      172.30.246.88    <none>        5432/TCP                            4d21h
    ...
  • 로컬 시스템에서 액세스할 수 있도록 Clair 데이터베이스 포트를 전달합니다. 예를 들면 다음과 같습니다.

    $ kubectl port-forward -n quay-enterprise service/example-registry-clair-postgres 5432:5432
  • 여러 connstring 필드의 호스트 값을 localhost 로 교체하여 Clair 구성 파일을 업데이트합니다. 예를 들면 다음과 같습니다.

    clair-config.yaml

        ...
        connstring: host=localhost port=5432 dbname=postgres user=postgres password=postgres sslmode=disable
        ...

참고

kubectl port-forward 를 사용하는 대신 kubefwd 를 사용할 수 있습니다. 이 방법을 사용하면 localhost 를 사용하도록 Clair 구성 파일에서 connstring 필드를 수정할 필요가 없습니다.

7.2.5. Air-gapped 환경으로 업데이트 번들 가져오기

업데이트기 번들을 Air-gapped 환경으로 변환한 후 clairctl 을 사용하여 OpenShift Operator가 배포한 Clair 데이터베이스로 번들을 가져옵니다.

$ ./clairctl --config ./clair-config.yaml import-updaters updates.gz
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 문서 정보

Legal Notice

Theme

© 2026 Red Hat
맨 위로 이동