6.3. 사용자 정의 Helm 차트 리포지터리 구성
다음 방법을 사용하여 OpenShift Container Platform 클러스터에서 Helm 릴리스를 생성할 수 있습니다.
- CLI입니다.
- 웹 콘솔의 개발자 화면입니다.
개발자 카탈로그는 웹 콘솔의 개발자 관점으로 클러스터에서 사용할 수 있는 Helm 차트를 표시합니다. 기본적으로 Red Hat OpenShift Helm 차트 리포지터리의 Helm 차트를 나열합니다. 차트 목록은 Red Hat Helm 인덱스
파일을 참조하십시오.
클러스터 관리자는 기본 클러스터 범위 Helm 리포지터리와 분리된 여러 클러스터 범위 및 네임스페이스 범위의 Helm 차트 리포지터리를 추가하고 이러한 리포지터리의 Helm 차트를 개발자 카탈로그에 표시할 수 있습니다.
적절한 RBAC(역할 기반 액세스 제어) 권한이 있는 일반 사용자 또는 프로젝트 구성원으로 기본 클러스터 범위의 Helm 차트 리포지터리를 여러 개 추가하고 이러한 리포지터리의 Helm 차트를 개발자 카탈로그에 표시할 수 있습니다.
웹 콘솔의 개발자 화면에서 Helm 페이지를 사용하여 다음을 수행할 수 있습니다.
- 생성 버튼을 사용하여 Helm 릴리스 및 리포지토리를 생성합니다.
- 클러스터 범위 또는 네임스페이스 범위의 Helm 차트 리포지터리를 생성, 업데이트 또는 삭제합니다.
- 리포지토리 탭에서 기존 Helm 차트 리포지터리 목록을 확인합니다. 이 리포지토리는 클러스터 범위 또는 네임스페이스 범위로 쉽게 구분할 수 있습니다.
6.3.1. OpenShift Container Platform 클러스터에 Helm 차트 설치
사전 요구 사항
- 실행 중인 OpenShift Container Platform 클러스터가 있고 로그인되어 있어야 합니다.
- Helm이 설치되어 있어야 합니다.
절차
새 프로젝트를 생성합니다.
$ oc new-project vault
로컬 Helm 클라이언트에 Helm 차트 리포지터리를 추가합니다.
$ helm repo add openshift-helm-charts https://charts.openshift.io/
출력 예
"openshift-helm-charts" has been added to your repositories
리포지터리를 업데이트합니다.
$ helm repo update
HashiCorp Vault 예제를 설치합니다.
$ helm install example-vault openshift-helm-charts/hashicorp-vault
출력 예
NAME: example-vault LAST DEPLOYED: Fri Mar 11 12:02:12 2022 NAMESPACE: vault STATUS: deployed REVISION: 1 NOTES: Thank you for installing HashiCorp Vault!
차트가 성공적으로 설치되었는지 확인합니다.
$ helm list
출력 예
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION example-vault vault 1 2022-03-11 12:02:12.296226673 +0530 IST deployed vault-0.19.0 1.9.2
6.3.2. 개발자 화면을 사용하여 Helm 릴리스 생성
웹 콘솔의 개발자 화면 또는 CLI를 사용하여 개발자 카탈로그에 나열된 Helm 차트에서 릴리스를 선택하고 생성할 수 있습니다. Helm 차트를 설치하여 Helm 릴리스를 생성하고 웹 콘솔의 개발자 화면에서 확인할 수 있습니다.
사전 요구 사항
- 웹 콘솔에 로그인하여 개발자 화면으로 전환했습니다.
프로세스
개발자 카탈로그에 제공된 Helm 차트에서 Helm 릴리스를 생성하려면 다음을 수행합니다.
- 개발자 화면에서 +추가 보기로 이동하여 프로젝트를 선택합니다. 그런 다음 Helm 차트 옵션을 클릭하여 개발자 카탈로그의 모든 Helm 차트를 확인합니다.
- 차트를 선택하고 해당 차트에 대한 설명, README 및 기타 세부 정보를 읽습니다.
생성을 클릭합니다.
그림 6.1. 개발자 카탈로그의 Helm 차트
Helm 릴리스 생성 페이지에서 다음을 수행합니다.
- 릴리스 이름 필드에 고유한 릴리스 이름을 입력합니다.
- 차트 버전 드롭다운 목록에서 필요한 차트 버전을 선택합니다.
보기에서 또는 YAML 보기를 사용하여 Helm 차트를 구성합니다.
참고가능한 경우 YAML 보기 및 양식 보기를 전환할 수 있습니다. 다른 보기로 전환해도 데이터는 유지됩니다.
생성 을 클릭하여 Helm 릴리스를 생성합니다. 웹 콘솔에 토폴로지 보기에 새 릴리스가 표시됩니다.
Helm 차트에 릴리스 노트가 있는 경우 웹 콘솔에 해당 릴리스 정보가 표시됩니다.
Helm 차트에서 워크로드를 생성하는 경우 웹 콘솔은 토폴로지 또는 Helm 릴리스 세부 정보 페이지에 해당 워크로드를 표시합니다. 워크로드는
DaemonSet
,CronJob
,Pod
,Deployment
및DeploymentConfig
입니다.- Helm 릴리스 페이지에서 새로 생성된 Helm 릴리스를 확인합니다.
측면 패널의 작업 버튼을 사용하거나 Helm 릴리스를 마우스 오른쪽 버튼으로 클릭하여 Helm 릴리스를 업그레이드, 롤백 또는 삭제할 수 있습니다.
6.3.3. 웹 터미널에서 Helm 사용
웹 콘솔의 개발자 화면에서 웹 터미널에 액세스하여 Helm을 사용할 수 있습니다.
6.3.4. OpenShift Container Platform에서 사용자 정의 Helm 차트 생성
절차
새 프로젝트를 생성합니다.
$ oc new-project nodejs-ex-k
OpenShift Container Platform 오브젝트가 포함된 Node.js 차트 예를 다운로드합니다.
$ git clone https://github.com/redhat-developer/redhat-helm-charts
샘플 차트가 있는 디렉터리로 이동합니다.
$ cd redhat-helm-charts/alpha/nodejs-ex-k/
Chart.yaml
파일을 편집하고 차트에 대한 설명을 추가합니다.apiVersion: v2 1 name: nodejs-ex-k 2 description: A Helm chart for OpenShift 3 icon: https://static.redhat.com/libs/redhat/brand-assets/latest/corp/logo.svg 4 version: 0.2.1 5
차트 형식이 올바르게 지정되었는지 확인합니다.
$ helm lint
출력 예
[INFO] Chart.yaml: icon is recommended 1 chart(s) linted, 0 chart(s) failed
이전 디렉터리 수준으로 이동합니다.
$ cd ..
차트를 설치합니다.
$ helm install nodejs-chart nodejs-ex-k
차트가 성공적으로 설치되었는지 확인합니다.
$ helm list
출력 예
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION nodejs-chart nodejs-ex-k 1 2019-12-05 15:06:51.379134163 -0500 EST deployed nodejs-0.1.0 1.16.0
6.3.5. 사용자 정의 Helm 차트 리포지터리 추가
클러스터 관리자는 사용자 정의 Helm 차트 리포지터리를 클러스터에 추가하여 개발자 카탈로그에서 해당 리포지터리의 Helm 차트에 대한 액세스를 활성화할 수 있습니다.
절차
새 Helm 차트 리포지터리를 추가하려면 클러스터에 Helm 차트 리포지터리 CR(사용자 정의 리소스)을 추가해야 합니다.
샘플 Helm 차트 리포지터리 CR
apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: <name> spec: # optional name that might be used by console # name: <chart-display-name> connectionConfig: url: <helm-chart-repository-url>
예를 들어 Azure 샘플 차트 리포지터리를 추가하려면 다음을 실행합니다.
$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: azure-sample-repo spec: name: azure-sample-repo connectionConfig: url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs EOF
웹 콘솔에서 개발자 카탈로그로 이동하여 차트 리포지터리의 Helm 차트가 표시되는지 확인합니다.
예를 들어 차트 리포지터리 필터를 사용하여 리포지터리의 Helm 차트를 검색합니다.
그림 6.2. 차트 리포지터리 필터
참고클러스터 관리자가 모든 차트 리포지터리를 제거하는 경우 +추가 보기, 개발자 카탈로그 및 왼쪽 탐색 패널에서 Helm 옵션을 볼 수 없습니다.
6.3.6. 네임스페이스 범위의 사용자 정의 Helm 차트 리포지터리 추가
Helm 리포지토리의 클러스터 범위 HelmChartRepository
CRD(사용자 정의 리소스 정의)는 관리자가 Helm 리포지토리를 사용자 정의 리소스로 추가할 수 있는 기능을 제공합니다. 네임스페이스 범위 ProjectHelmChartRepository
CRD를 사용하면 적절한 RBAC(역할 기반 액세스 제어) 권한이 있는 프로젝트 멤버가 선택한 Helm 리포지토리 리소스를 생성할 수 있지만 해당 네임스페이스로 범위가 지정됩니다. 이러한 프로젝트 멤버는 클러스터 범위 및 네임스페이스 범위의 Helm 리포지토리 리소스의 차트를 볼 수 있습니다.
- 관리자는 사용자가 네임스페이스 범위의 Helm 리포지토리 리소스를 생성하지 못하도록 제한할 수 있습니다. 관리자는 사용자를 제한하여 클러스터 역할 대신 네임스페이스 역할을 통해 RBAC를 제어할 수 있는 유연성을 갖습니다. 따라서 사용자에게 불필요한 권한 상승을 방지하고 무단 서비스 또는 애플리케이션에 대한 액세스를 방지합니다.
- 네임스페이스 범위의 Helm 리포지터리를 추가해도 기존 클러스터 범위 Helm 리포지토리의 동작에 영향을 미치지 않습니다.
적절한 RBAC 권한이 있는 일반 사용자 또는 프로젝트 구성원으로 클러스터에 사용자 정의 네임스페이스 범위 Helm 차트 리포지터리를 추가하고 개발자 카탈로그 의 이러한 리포지터리에서 Helm 차트에 대한 액세스를 활성화할 수 있습니다.
프로세스
새 네임스페이스 범위의 Helm 차트 리포지터리를 추가하려면 네임스페이스에 Helm 차트 리포지터리 CR(사용자 정의 리소스)을 추가해야 합니다.
샘플 네임스페이스 범위 Helm 차트 리포지터리 CR
apiVersion: helm.openshift.io/v1beta1 kind: ProjectHelmChartRepository metadata: name: <name> spec: url: https://my.chart-repo.org/stable # optional name that might be used by console name: <chart-repo-display-name> # optional and only needed for UI purposes description: <My private chart repo> # required: chart repository URL connectionConfig: url: <helm-chart-repository-url>
예를 들어
my-namespace
네임스페이스에 범위가 지정된 Azure 샘플 차트 리포지터리를 추가하려면 다음을 실행합니다.$ cat <<EOF | oc apply --namespace my-namespace -f - apiVersion: helm.openshift.io/v1beta1 kind: ProjectHelmChartRepository metadata: name: azure-sample-repo spec: name: azure-sample-repo connectionConfig: url: https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs EOF
출력에서 네임스페이스 범위의 Helm 차트 리포지터리 CR이 생성되었는지 확인합니다.
출력 예
projecthelmchartrepository.helm.openshift.io/azure-sample-repo created
웹 콘솔에서 개발자 카탈로그로 이동하여 차트 리포지터리의 Helm 차트가
my-namespace
네임스페이스에 표시되는지 확인합니다.예를 들어 차트 리포지터리 필터를 사용하여 리포지터리의 Helm 차트를 검색합니다.
그림 6.3. 네임스페이스의 차트 리포지터리 필터
또는 다음을 실행합니다.
$ oc get projecthelmchartrepositories --namespace my-namespace
출력 예
NAME AGE azure-sample-repo 1m
참고클러스터 관리자 또는 적절한 RBAC 권한이 있는 일반 사용자가 특정 네임스페이스의 모든 차트 리포지터리를 제거하는 경우 해당 특정 네임스페이스에 대한 +추가 보기, 개발자 카탈로그 및 왼쪽 탐색 패널에서 Helm 옵션을 볼 수 없습니다.
6.3.7. 인증 정보 및 CA 인증서를 생성하여 Helm 차트 리포지터리 추가
일부 Helm 차트 리포지터리는 연결하려면 인증 정보 및 사용자 정의 CA(인증 기관) 인증서가 필요합니다. 웹 콘솔 및 CLI를 사용하여 인증 정보 및 인증서를 추가할 수 있습니다.
절차
CLI를 사용하여 인증 정보 및 인증서를 구성한 후 Helm 차트 리포지터리를 추가하려면 다음을 실행합니다.
openshift-config
네임스페이스에서 PEM 인코딩 형식의 사용자 정의 CA 인증서로ConfigMap
오브젝트를 생성한 후 구성 맵 내의ca-bundle.crt
키에 저장합니다.$ oc create configmap helm-ca-cert \ --from-file=ca-bundle.crt=/path/to/certs/ca.crt \ -n openshift-config
openshift-config
네임스페이스에서Secret
오브젝트를 생성하여 클라이언트 TLS 구성을 추가합니다.$ oc create secret tls helm-tls-configs \ --cert=/path/to/certs/client.crt \ --key=/path/to/certs/client.key \ -n openshift-config
클라이언트 인증서 및 키는 PEM 인코딩 형식이어야 하며 각각
tls.crt
및tls.key
키에 저장되어야 합니다.다음과 같이 Helm 리포지터리를 추가합니다.
$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: <helm-repository> spec: name: <helm-repository> connectionConfig: url: <URL for the Helm repository> tlsConfig: name: helm-tls-configs ca: name: helm-ca-cert EOF
ConfigMap
및Secret
은tlsConfig
및ca
필드를 사용하는 HelmChartRepository CR에서 사용됩니다. 이러한 인증서는 Helm 리포지터리 URL에 연결하는 데 사용됩니다.기본적으로 모든 인증된 사용자는 모든 구성된 차트에 액세스할 수 있습니다. 하지만 인증서가 필요한 차트 리포지터리의 경우 다음과 같이 사용자에게
openshift-config
네임스페이스의helm-ca-cert
구성 맵과helm-tls-configs
시크릿에 대한 읽기 액세스 권한을 제공해야 합니다.$ cat <<EOF | kubectl apply -f - apiVersion: rbac.authorization.k8s.io/v1 kind: Role metadata: namespace: openshift-config name: helm-chartrepos-tls-conf-viewer rules: - apiGroups: [""] resources: ["configmaps"] resourceNames: ["helm-ca-cert"] verbs: ["get"] - apiGroups: [""] resources: ["secrets"] resourceNames: ["helm-tls-configs"] verbs: ["get"] --- kind: RoleBinding apiVersion: rbac.authorization.k8s.io/v1 metadata: namespace: openshift-config name: helm-chartrepos-tls-conf-viewer subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: 'system:authenticated' roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: helm-chartrepos-tls-conf-viewer EOF
6.3.8. 인증 수준에 따라 Helm 차트 필터링
개발자 카탈로그의 인증 수준에 따라 Helm 차트를 필터링할 수 있습니다.
프로세스
- 개발자 화면에서 +추가 보기로 이동하여 프로젝트를 선택합니다.
- 개발자 카탈로그 타일에서 Helm 차트 옵션을 선택하여 개발자 카탈로그의 모든 Helm 차트를 확인합니다.
필요한 차트를 필터링하려면 Helm 차트 목록 왼쪽에 있는 필터를 사용합니다.
- 차트 리포지토리 필터를 사용하여 Red Hat 인증 차트 또는 OpenShift Helm 차트에서 제공하는 차트를 필터링합니다.
- 소스 필터를 사용하여 파트너,커뮤니티 또는 Red Hat에서 제공한 차트를 필터링합니다. 인증 차트는 ( ) 아이콘으로 표시됩니다.
공급업체 유형이 하나뿐이면 소스 필터가 표시되지 않습니다.
이제 필요한 차트를 선택하고 설치할 수 있습니다.
6.3.9. Helm 차트 리포지터리 비활성화
HelmChartRepository
사용자 정의 리소스의 disabled
속성을 true
로 설정하여 카탈로그의 특정 Helm 차트 리포지터리의 Helm 차트를 비활성화할 수 있습니다.
프로세스
CLI를 사용하여 Helm 차트 리포지터리를 비활성화하려면
disabled: true
플래그를 사용자 정의 리소스에 추가합니다. 예를 들어 Azure 샘플 차트 리포지터리를 제거하려면 다음을 실행합니다.$ cat <<EOF | oc apply -f - apiVersion: helm.openshift.io/v1beta1 kind: HelmChartRepository metadata: name: azure-sample-repo spec: connectionConfig: url:https://raw.githubusercontent.com/Azure-Samples/helm-charts/master/docs disabled: true EOF
웹 콘솔을 사용하여 최근에 추가된 Helm 차트 리포지터리를 비활성화하려면 다음을 수행합니다.
-
사용자 정의 리소스 정의로 이동하여
HelmChartRepository
사용자 정의 리소스를 검색합니다. - 인스턴스로 이동하여 비활성화할 저장소를 찾아 이름을 클릭합니다.
YAML 탭으로 이동하여
spec
섹션에disabled: true
플래그를 추가하고저장
을 클릭합니다.예제
spec: connectionConfig: url: <url-of-the-repositoru-to-be-disabled> disabled: true
이제 리포지터리가 비활성화되어 카탈로그에 표시되지 않습니다.
-
사용자 정의 리소스 정의로 이동하여