4.5. Reporting Operator 구성
미터링은 더 이상 사용되지 않는 기능입니다. 더 이상 사용되지 않는 기능은 여전히 OpenShift Container Platform에 포함되어 있으며 계속 지원됩니다. 그러나 이 기능은 향후 릴리스에서 제거될 예정이므로 새로운 배포에는 사용하지 않는 것이 좋습니다.
OpenShift Container Platform에서 더 이상 사용되지 않거나 삭제된 주요 기능의 최신 목록은 OpenShift Container Platform 릴리스 노트에서 더 이상 사용되지 않고 삭제된 기능 섹션을 참조하십시오.
Reporting Operator는 Prometheus에서 데이터를 수집하고, Presto에 메트릭을 저장하고, Presto에 대한 보고서 쿼리를 실행하며 HTTP API를 통해 결과를 노출합니다. Reporting Operator 구성은 주로 MeteringConfig
사용자 정의 리소스에서 수행됩니다.
4.5.1. Prometheus 연결 보안
OpenShift Container Platform에 미터링을 설치하는 경우 Prometheus는 https://prometheus-k8s.openshift-monitoring.svc:9091/에서 사용할 수 있습니다.
Prometheus에 대한 연결을 보호하려면 기본 미터링 설치에서 OpenShift Container Platform 인증 기관(CA)을 사용합니다. Prometheus 인스턴스에서 다른 CA를 사용하는 경우 구성 맵을 통해 CA를 삽입할 수 있습니다. Prometheus를 사용하여 지정된 전달자 토큰을 사용하도록 Reporting Operator를 구성할 수도 있습니다.
절차
구성 맵을 통해 Prometheus 인스턴스에서 사용하는 CA를 삽입합니다. 예를 들면 다음과 같습니다.
spec: reporting-operator: spec: config: prometheus: certificateAuthority: useServiceAccountCA: false configMap: enabled: true create: true name: reporting-operator-certificate-authority-config filename: "internal-ca.crt" value: | -----BEGIN CERTIFICATE----- (snip) -----END CERTIFICATE-----
또는 공개적으로 유효한 인증서에 시스템 인증 기관을 사용하려면
useServiceAccountCA
및configMap.enabled
를 모두false
로 설정합니다.- Prometheus로 인증할 전달자 토큰을 지정합니다. 예를 들면 다음과 같습니다.
spec: reporting-operator: spec: config: prometheus: metricsImporter: auth: useServiceAccountToken: false tokenSecret: enabled: true create: true value: "abc-123"
4.5.2. 보고 API 노출
OpenShift Container Platform에서 기본 미터링 설치는 경로를 자동으로 노출하여 보고 API를 사용할 수 있습니다. 이는 다음 기능을 제공합니다.
- 자동 DNS
- 클러스터 CA 기반 자동 TLS
또한 기본 설치를 통해 인증서를 제공하는 데 OpenShift Container Platform 서비스를 사용하여 TLS로 보고 API를 보호할 수 있습니다. OpenShift Container Platform OAuth 프록시는 보고 API를 인증으로 보호하는 Reporting Operator의 사이드카 컨테이너로 배포됩니다.
4.5.2.1. OpenShift Container Platform 인증 사용
기본적으로 보고 API는 TLS 및 인증으로 보호됩니다. 이는 Reporting Operator의 컨테이너와 OpenShift Container Platform auth-proxy를 실행하는 사이드카 컨테이너를 모두 포함하는 Pod를 배포하도록 Reporting Operator를 구성하여 수행됩니다.
보고 API에 액세스하기 위해 Metering Operator가 경로를 노출합니다. 해당 경로가 설치되면 다음 명령을 실행하여 경로의 호스트 이름을 가져올 수 있습니다.
$ METERING_ROUTE_HOSTNAME=$(oc -n openshift-metering get routes metering -o json | jq -r '.status.ingress[].host')
다음으로 사용자 이름 및 암호와 함께 서비스 계정 토큰 또는 기본 인증을 사용하여 인증을 설정합니다.
4.5.2.1.1. 서비스 계정 토큰을 사용하여 인증
이 방법을 사용하여 Reporting Operator의 서비스 계정에서 토큰을 사용하고 다음 명령에서 해당 전달자 토큰을 인증 헤더에 전달합니다.
$ TOKEN=$(oc -n openshift-metering serviceaccounts get-token reporting-operator) curl -H "Authorization: Bearer $TOKEN" -k "https://$METERING_ROUTE_HOSTNAME/api/v1/reports/get?name=[Report Name]&namespace=openshift-metering&format=[Format]"
위 URL에서 name=[Report Name]
및 format=[Format]
매개변수를 바꿔야 합니다. format
매개변수는 json, csv 또는 tabular일 수 있습니다.
4.5.2.1.2. 사용자 이름과 암호를 사용하여 인증
미터링은 htpasswd 파일의 콘텐츠에 지정된 사용자 이름 및 암호 조합을 사용하여 기본 인증 구성을 지원합니다. 기본적으로 빈 htpasswd 데이터를 포함하는 시크릿을 생성합니다. 그러나 이 방법을 사용하기 위해 reporting-operator.spec.authProxy.htpasswd.data
및 reporting-operator.spec.authProxy.htpasswd.createSecret
키를 구성할 수 있습니다.
MeteringConfig
리소스에서 위를 지정하면 다음 명령을 실행할 수 있습니다.
$ curl -u testuser:password123 -k "https://$METERING_ROUTE_HOSTNAME/api/v1/reports/get?name=[Report Name]&namespace=openshift-metering&format=[Format]"
testuser:password123
을 유효한 사용자 이름 및 암호 조합으로 바꿉니다.
4.5.2.2. 수동으로 인증 구성
Reporting Operator에서 OAuth를 수동으로 구성하거나 비활성화하려면 MeteringConfig
리소스에서 spec.tls.enabled: false
를 설정해야 합니다.
이는 또한 Reporting Operator, Presto, Hive간의 모든 TLS 및 인증을 비활성화합니다. 이러한 리소스를 수동으로 설정해야 합니다.
다음 옵션을 구성하여 인증을 활성화할 수 있습니다. 인증을 활성화하면 Reporting Operator Pod가 Pod에서 사이드카 컨테이너로 OpenShift Container Platform auth-proxy를 실행하도록 구성됩니다. 이렇게 하면 보고 API가 직접 노출되지 않도록 포트가 조정되지만 대신 자동 프록시 사이드카 컨테이너를 통해 프록시됩니다.
-
reporting-operator.spec.authProxy.enabled
-
reporting-operator.spec.authProxy.cookie.createSecret
-
reporting-operator.spec.authProxy.cookie.seed
reporting-operator.spec.authProxy.enabled
및 reporting-operator.spec.authProxy.cookie.createSecret
을 true
로 설정하고 reporting-operator.spec.authProxy.cookie.seed
를 32자 임의 문자열로 설정해야 합니다.
다음 명령을 사용하여 32자 임의 문자열을 생성할 수 있습니다.
$ openssl rand -base64 32 | head -c32; echo.
4.5.2.2.1. 토큰 인증
다음 옵션을 true
로 설정하면 REST API 보고에 대해 전달자 토큰을 사용한 인증이 활성화됩니다. 전달자 토큰은 서비스 계정 또는 사용자에서 가져올 수 있습니다.
-
reporting-operator.spec.authProxy.subjectAccessReview.enabled
-
reporting-operator.spec.authProxy.delegateURLs.enabled
인증이 활성화되면 다음 역할 중 하나를 사용하여 사용자 또는 서비스 계정의 보고 API를 쿼리하는 데 사용되는 전달자 토큰에 대한 액세스 권한이 있어야 합니다.
- report-exporter
- reporting-admin
- reporting-viewer
- metering-admin
- metering-viewer
Metering Operator는 역할 바인딩을 생성할 수 있으며 spec.permissions
섹션에 주체 목록을 지정하여 이러한 권한을 부여할 수 있습니다. 예를 들어 다음 advanced-auth.yaml
예제 구성을 참조하십시오.
apiVersion: metering.openshift.io/v1 kind: MeteringConfig metadata: name: "operator-metering" spec: permissions: # anyone in the "metering-admins" group can create, update, delete, etc any # metering.openshift.io resources in the namespace. # This also grants permissions to get query report results from the reporting REST API. meteringAdmins: - kind: Group name: metering-admins # Same as above except read only access and for the metering-viewers group. meteringViewers: - kind: Group name: metering-viewers # the default serviceaccount in the namespace "my-custom-ns" can: # create, update, delete, etc reports. # This also gives permissions query the results from the reporting REST API. reportingAdmins: - kind: ServiceAccount name: default namespace: my-custom-ns # anyone in the group reporting-readers can get, list, watch reports, and # query report results from the reporting REST API. reportingViewers: - kind: Group name: reporting-readers # anyone in the group cluster-admins can query report results # from the reporting REST API. So can the user bob-from-accounting. reportExporters: - kind: Group name: cluster-admins - kind: User name: bob-from-accounting reporting-operator: spec: authProxy: # htpasswd.data can contain htpasswd file contents for allowing auth # using a static list of usernames and their password hashes. # # username is 'testuser' password is 'password123' # generated htpasswdData using: `htpasswd -nb -s testuser password123` # htpasswd: # data: | # testuser:{SHA}y/2sYAj5yrQIN4TL0YdPdmGNKpc= # # change REPLACEME to the output of your htpasswd command htpasswd: data: | REPLACEME
또는 get
권한을 reports/export
에 부여하는 규칙이 있는 모든 역할을 사용할 수 있습니다. 즉, Reporting Operator의 네임스페이스에서 Report
리소스의 export
하위 리소스에 대한 get
액세스 권한을 의미합니다. 예: admin
및 cluster-admin
.
기본적으로 Reporting Operator 및 Metering Operator 서비스 계정에는 모두 이러한 권한이 있으며 해당 토큰은 인증에 사용할 수 있습니다.
4.5.2.2.2. 사용자 이름과 암호를 사용하는 기본 인증
기본 인증의 경우 reporting-operator.spec.authProxy.htpasswd.data
필드에 사용자 이름 및 암호를 제공할 수 있습니다. 사용자 이름과 암호는 htpasswd 파일에서 찾은 항목과 동일해야 합니다. 설정된 경우 HTTP 기본 인증을 사용하여 htpasswdData
콘텐츠에 해당 항목이 있는 사용자 이름 및 암호를 제공할 수 있습니다.