2.3. 프로젝트 생성 구성
OpenShift Container Platform에서 프로젝트는 관련 오브젝트를 그룹화하고 격리하는 데 사용됩니다. 웹 콘솔 또는 oc new-project
명령을 사용하여 새 프로젝트를 생성하라는 요청이 생성되면 OpenShift Container Platform의 끝점을 사용하여 사용자 지정할 수 있는 템플릿에 따라 프로젝트를 프로비저닝합니다.
클러스터 관리자는 개발자 및 서비스 계정이 자체 프로젝트를 생성하거나 자체 프로비저닝하는 방법을 허용하고 구성할 수 있습니다.
2.3.1. 프로젝트 생성 정보
OpenShift Container Platform API 서버는 클러스터의 프로젝트 구성 리소스에서 projectRequestTemplate
매개변수로 식별하는 프로젝트 템플릿을 기반으로 새 프로젝트를 자동으로 프로비저닝합니다. 매개변수가 정의되지 않은 경우 API 서버는 요청된 이름으로 프로젝트를 생성하는 기본 템플릿을 생성하고 요청하는 사용자에게 해당 프로젝트의 admin
역할을 할당합니다.
프로젝트 요청을 제출하면 API에서 다음 매개변수를 템플릿으로 대체합니다.
매개변수 | 설명 |
---|---|
| 프로젝트 이름입니다. 필수 항목입니다. |
| 프로젝트의 표시 이름입니다. 비어 있을 수 있습니다. |
| 프로젝트에 대한 설명입니다. 비어 있을 수 있습니다. |
| 관리 사용자의 사용자 이름입니다. |
| 요청하는 사용자의 사용자 이름입니다. |
API에 대한 액세스 권한은 self-provisioner
역할 및 self-provisioner
클러스터 역할 바인딩을 가진 개발자에게 부여됩니다. 이 역할은 기본적으로 인증된 모든 개발자에게 제공됩니다.
2.3.2. 새 프로젝트의 템플릿 수정
클러스터 관리자는 사용자 정의 요구 사항을 사용하여 새 프로젝트를 생성하도록 기본 프로젝트 템플릿을 수정할 수 있습니다.
사용자 정의 프로젝트 템플릿을 만들려면:
사전 요구 사항
-
cluster-admin
권한이 있는 계정을 사용하여 OpenShift Container Platform 클러스터에 액세스할 수 있습니다.
프로세스
-
cluster-admin
권한이 있는 사용자로 로그인합니다. 기본 프로젝트 템플릿을 생성합니다.
$ oc adm create-bootstrap-project-template -o yaml > template.yaml
-
텍스트 편집기를 사용하여 오브젝트를 추가하거나 기존 오브젝트를 수정하여 생성된
template.yaml
파일을 수정합니다. 프로젝트 템플릿은
openshift-config
네임스페이스에서 생성해야 합니다. 수정된 템플릿을 불러옵니다.$ oc create -f template.yaml -n openshift-config
웹 콘솔 또는 CLI를 사용하여 프로젝트 구성 리소스를 편집합니다.
웹 콘솔에 액세스:
-
관리
클러스터 설정으로 이동합니다. - 구성 을 클릭하여 모든 구성 리소스를 확인합니다.
- 프로젝트 항목을 찾아 YAML 편집을 클릭합니다.
-
관리
CLI 사용:
다음과 같이
project.config.openshift.io/cluster
리소스를 편집합니다.$ oc edit project.config.openshift.io/cluster
projectRequestTemplate
및name
매개변수를 포함하도록spec
섹션을 업데이트하고 업로드된 프로젝트 템플릿의 이름을 설정합니다. 기본 이름은project-request
입니다.사용자 정의 프로젝트 템플릿이 포함된 프로젝트 구성 리소스
apiVersion: config.openshift.io/v1 kind: Project metadata: # ... spec: projectRequestTemplate: name: <template_name> # ...
- 변경 사항을 저장한 후 새 프로젝트를 생성하여 변경 사항이 성공적으로 적용되었는지 확인합니다.
2.3.3. 프로젝트 자체 프로비저닝 비활성화
인증된 사용자 그룹이 새 프로젝트를 자체 프로비저닝하지 못하도록 할 수 있습니다.
프로세스
-
cluster-admin
권한이 있는 사용자로 로그인합니다. 다음 명령을 실행하여
self-provisioners
클러스터 역할 바인딩 사용을 확인합니다.$ oc describe clusterrolebinding.rbac self-provisioners
출력 예
Name: self-provisioners Labels: <none> Annotations: rbac.authorization.kubernetes.io/autoupdate=true Role: Kind: ClusterRole Name: self-provisioner Subjects: Kind Name Namespace ---- ---- --------- Group system:authenticated:oauth
self-provisioners
섹션의 제목을 검토합니다.그룹
system:authenticated:oauth
에서self-provisioner
클러스터 역할을 제거합니다.self-provisioners
클러스터 역할 바인딩에서self-provisioner
역할을system:authenticated:oauth
그룹에만 바인딩하는 경우 다음 명령을 실행합니다.$ oc patch clusterrolebinding.rbac self-provisioners -p '{"subjects": null}'
self-provisioners
클러스터 역할 바인딩에서self-provisioner
역할을system:authenticated:oauth
그룹 이외에도 추가 사용자, 그룹 또는 서비스 계정에 바인딩하는 경우 다음 명령을 실행합니다.$ oc adm policy \ remove-cluster-role-from-group self-provisioner \ system:authenticated:oauth
역할이 자동으로 업데이트되지 않도록
self-provisioners
클러스터 역할 바인딩을 편집합니다. 역할이 자동으로 업데이트되면 클러스터 역할이 기본 상태로 재설정됩니다.CLI를 사용하여 역할 바인딩을 업데이트하려면 다음을 수행합니다.
다음 명령을 실행합니다.
$ oc edit clusterrolebinding.rbac self-provisioners
표시된 역할 바인딩에서 다음 예와 같이
rbac.authorization.kubernetes.io/autoupdate
매개변수 값을false
로 설정합니다.apiVersion: authorization.openshift.io/v1 kind: ClusterRoleBinding metadata: annotations: rbac.authorization.kubernetes.io/autoupdate: "false" # ...
단일 명령을 사용하여 역할 바인딩을 업데이트하려면 다음을 실행합니다.
$ oc patch clusterrolebinding.rbac self-provisioners -p '{ "metadata": { "annotations": { "rbac.authorization.kubernetes.io/autoupdate": "false" } } }'
인증된 사용자로 로그인하여 프로젝트를 더 이상 자체 프로비저닝할 수 없는지 확인합니다.
$ oc new-project test
출력 예
Error from server (Forbidden): You may not request a new project via this API.
조직과 관련된 더 유용한 지침을 제공하도록 이 프로젝트 요청 메시지를 사용자 정의하는 것이 좋습니다.
2.3.4. 프로젝트 요청 메시지 사용자 정의
프로젝트를 자체 프로비저닝할 수 없는 개발자 또는 서비스 계정이 웹 콘솔 또는 CLI를 사용하여 프로젝트 생성을 요청하면 기본적으로 다음과 같은 오류 메시지가 반환됩니다.
You may not request a new project via this API.
클러스터 관리자는 이 메시지를 사용자 지정할 수 있습니다. 조직과 관련된 새 프로젝트를 요청하는 방법에 대한 추가 지침을 제공하려면 업데이트하는 것이 좋습니다. 예를 들면 다음과 같습니다.
-
프로젝트를 요청하려면
projectname@example.com
을 통해 시스템 관리자에게 문의하십시오. -
새 프로젝트를 요청하려면
https://internal.example.com/openshift-project-request
에 있는 프로젝트 요청 양식을 작성합니다.
프로젝트 요청 메시지를 사용자 지정하려면 다음을 수행합니다.
프로세스
웹 콘솔 또는 CLI를 사용하여 프로젝트 구성 리소스를 편집합니다.
웹 콘솔에 액세스:
-
관리
클러스터 설정으로 이동합니다. - 구성 을 클릭하여 모든 구성 리소스를 확인합니다.
- 프로젝트 항목을 찾아 YAML 편집을 클릭합니다.
-
관리
CLI 사용:
-
cluster-admin
권한이 있는 사용자로 로그인합니다. 다음과 같이
project.config.openshift.io/cluster
리소스를 편집합니다.$ oc edit project.config.openshift.io/cluster
-
projectRequestMessage
매개변수를 포함하도록spec
섹션을 업데이트하고 해당 값을 사용자 정의 메시지로 설정합니다.사용자 정의 프로젝트 요청 메시지가 포함된 프로젝트 구성 리소스
apiVersion: config.openshift.io/v1 kind: Project metadata: # ... spec: projectRequestMessage: <message_string> # ...
예를 들면 다음과 같습니다.
apiVersion: config.openshift.io/v1 kind: Project metadata: # ... spec: projectRequestMessage: To request a project, contact your system administrator at projectname@example.com. # ...
- 변경 사항을 저장한 후 프로젝트를 자체 프로비저닝하여 변경 사항이 성공적으로 적용되었는지 확인할 수 없는 개발자 또는 서비스 계정으로 새 프로젝트를 생성합니다.