6장. 작업 영역에서 인증 정보 및 구성 사용
작업 영역에서 인증 정보 및 구성을 사용할 수 있습니다.
이렇게 하려면 조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터에 있는 Dev Workspace
컨테이너에 인증 정보 및 구성을 마운트합니다.
- 인증 정보 및 민감한 구성을 Kubernetes 시크릿으로 마운트합니다.
- 중요하지 않은 구성을 Kubernetes ConfigMap으로 마운트합니다.
클러스터의 Dev Workspace
Pod가 인증이 필요한 컨테이너 레지스트리에 액세스하도록 허용해야 하는 경우 Dev Workspace
Pod에 대한 이미지 가져오기 보안 을 생성합니다.
마운트 프로세스에서는 표준 Kubernetes 마운트 메커니즘을 사용하며 기존 리소스에 추가 라벨 및 주석을 적용해야 합니다. 새 작업 영역을 시작하거나 기존 작업 영역을 다시 시작할 때 리소스가 마운트됩니다.
다양한 구성 요소에 대한 영구 마운트 지점을 생성할 수 있습니다.
-
사용자별
settings.xml
파일과 같은 Maven 구성 - SSH 키 쌍
- git-provider 액세스 토큰
- Git 구성
- AWS 권한 부여 토큰
- 구성 파일
- 영구 스토리지
6.1. 마운트 보안 링크 복사링크가 클립보드에 복사되었습니다!
기밀 데이터를 작업 공간에 마운트하려면 Kubernetes 보안을 사용합니다.
Kubernetes 보안을 사용하면 사용자 이름, 암호, SSH 키 쌍, 인증 토큰(예: AWS) 및 중요한 구성을 마운트할 수 있습니다.
조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터에 있는 Dev Workspace
컨테이너에 Kubernetes 보안을 마운트합니다.
사전 요구 사항
-
대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성
oc
세션. CLI 시작하기를 참조하십시오. -
사용자 프로젝트에서 새 시크릿을 생성하거나 모든
Dev Workspace
컨테이너에 마운트할 기존 보안을 선택했습니다.
프로세스
시크릿을 마운트하는 데 필요한 레이블을 시크릿에 추가합니다.
oc label secret <Secret_name> \ controller.devfile.io/mount-to-devworkspace=true \ controller.devfile.io/watch-secret=true
$ oc label secret <Secret_name> \ controller.devfile.io/mount-to-devworkspace=true \ controller.devfile.io/watch-secret=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 주석을 사용하여 시크릿 마운트 방법을 구성합니다.
Expand 표 6.1. 선택적 주석 주석 설명 controller.devfile.io/mount-path:
마운트 경로를 지정합니다.
기본값은
/etc/secret/ <Secret_name>입니다
.controller.devfile.io/mount-as:
리소스를 마운트하는 방법(
file
,subpath
또는env
)을 지정합니다.기본값은
file
입니다.mount-as: 파일은
키와 값을 마운트 경로에 파일로 마운트합니다.mount-as: 하위 경로는 subpath
볼륨 마운트를 사용하여 마운트 경로 내에 키와 값을 마운트합니다.mount-as: env
는 모든Dev Workspace
컨테이너에서 키와 값을 환경 변수로 마운트합니다.
예 6.1. 시크릿을 파일로 마운트
작업 영역을 시작하면 Dev Workspace
컨테이너에서 /home/user/.m2/settings.xml
파일을 사용할 수 있습니다.
Maven을 사용하면 settings.xml
파일의 사용자 지정 경로를 설정할 수 있습니다. 예를 들면 다음과 같습니다.
mvn --settings /home/user/.m2/settings.xml clean install
$ mvn --settings /home/user/.m2/settings.xml clean install
6.1.1. 이미지 가져오기 보안 생성 링크 복사링크가 클립보드에 복사되었습니다!
조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터에 있는 Dev Workspace
Pod가 인증이 필요한 컨테이너 레지스트리에 액세스할 수 있도록 하려면 이미지 가져오기 보안을 생성합니다.
oc
또는 .dockercfg
파일 또는 config.json
파일을 사용하여 이미지 가져오기 보안을 생성할 수 있습니다.
6.1.1.1. oc를 사용하여 이미지 가져오기 보안 생성 링크 복사링크가 클립보드에 복사되었습니다!
사전 요구 사항
-
대상 OpenShift 클러스터에 대한 관리 권한이 있는 활성
oc
세션. CLI 시작하기를 참조하십시오.
프로세스
사용자 프로젝트에서 개인 컨테이너 레지스트리 세부 정보 및 인증 정보를 사용하여 이미지 가져오기 보안을 생성합니다.
oc create secret docker-registry <Secret_name> \ --docker-server=<registry_server> \ --docker-username=<username> \ --docker-password=<password> \ --docker-email=<email_address>
$ oc create secret docker-registry <Secret_name> \ --docker-server=<registry_server> \ --docker-username=<username> \ --docker-password=<password> \ --docker-email=<email_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이미지 가져오기 보안에 다음 라벨을 추가합니다.
oc label secret <Secret_name> controller.devfile.io/devworkspace_pullsecret=true controller.devfile.io/watch-secret=true
$ oc label secret <Secret_name> controller.devfile.io/devworkspace_pullsecret=true controller.devfile.io/watch-secret=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.1.2. .dockercfg 파일에서 이미지 가져오기 보안 생성 링크 복사링크가 클립보드에 복사되었습니다!
프라이빗 컨테이너 레지스트리의 인증 정보를 .dockercfg
파일에 이미 저장한 경우 해당 파일을 사용하여 이미지 가져오기 보안을 생성할 수 있습니다.
사전 요구 사항
프로세스
.dockercfg
파일을 Base64로 인코딩합니다.cat .dockercfg | base64 | tr -d '\n'
$ cat .dockercfg | base64 | tr -d '\n'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 프로젝트에 새 OpenShift 보안을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 보안을 적용합니다.
oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.1.3. config.json 파일에서 이미지 가져오기 보안 생성 링크 복사링크가 클립보드에 복사되었습니다!
개인 컨테이너 레지스트리에 대한 인증 정보를 $HOME/.docker/config.json
파일에 이미 저장한 경우 해당 파일을 사용하여 이미지 가져오기 보안을 생성할 수 있습니다.
사전 요구 사항
프로세스
$HOME/.docker/config.json
파일을 Base64로 인코딩합니다.cat config.json | base64 | tr -d '\n'
$ cat config.json | base64 | tr -d '\n'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 프로젝트에 새 OpenShift 보안을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 보안을 적용합니다.
oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_the_previous_step> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.2. Git-provider 액세스 토큰 사용 링크 복사링크가 클립보드에 복사되었습니다!
GitHub, GitLab, Bitbucket 또는 Microsoft Azure Repos에 대한 OAuth는 조직의 OpenShift Dev Spaces 인스턴스 관리자가 구성해야 합니다. 관리자가 OpenShift Dev Spaces 사용자에 대해 구성할 수 없는 경우 개인 액세스 토큰을 사용하는 해결 방법이 있습니다. OpenShift Dev Spaces 대시보드의 사용자 환경 설정 페이지에서 개인 액세스 토큰을 구성할 수 있습니다. https:// <openshift_dev_spaces_fqdn> /dashboard/#/user-preferences?tab=personal-access-tokens
, 또는 네임스페이스의 Kubernetes 시크릿으로 수동으로 적용할 수 있습니다.
액세스 토큰을 Secret으로 마운트하면 OpenShift Dev Spaces Server가 리포지토리의 /.che
및 /.vscode
폴더에 대한 액세스를 포함하여 작업 공간 생성 중에 복제된 원격 리포지토리에 액세스할 수 있습니다.
조직의 OpenShift Dev Spaces 인스턴스의 OpenShift 클러스터의 사용자 프로젝트에 보안을 적용합니다.
시크릿을 적용한 후 GitHub, GitLab, Bitbucket Server 또는 Microsoft Azure Repos에서 호스팅되는 개인 Git 리포지토리 복제를 사용하여 작업 영역을 생성할 수 있습니다.
Git 공급자당 여러 access-token 시크릿을 생성하고 적용할 수 있습니다. 사용자 프로젝트의 각 시크릿을 적용해야 합니다.
사전 요구 사항
클러스터에 로그인했습니다.
작은 정보OpenShift에서
oc
명령줄 툴을 사용하여 클러스터에 로그인할 수 있습니다.$ oc login https://<openshift_dev_spaces_fqdn> --username=<my_user>
프로세스
Git 공급자의 웹 사이트에서 액세스 토큰을 생성합니다.
중요개인 액세스 토큰은 민감한 정보이며 기밀로 유지되어야 합니다. 암호처럼 취급합니다. 인증에 문제가 있는 경우 올바른 토큰을 사용하고 있으며 리포지토리 복제에 적절한 권한이 있는지 확인합니다.
- 컴퓨터에서 로컬로 터미널을 엽니다.
-
개인 액세스 토큰을 사용하여 리포지토리를 복제하려면
git
명령을 사용합니다.git
명령의 형식은 Git 공급자에 따라 다릅니다. 예를 들어 다음 명령을 사용하여 GitHub 개인 액세스 토큰 확인을 수행할 수 있습니다.
git clone https://<PAT>@github.com/username/repo.git
git clone https://<PAT>@github.com/username/repo.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow &
lt;PAT
>를 개인 액세스 토큰으로 바꾸고username/repo
를 적절한 리포지토리 경로로 바꿉니다. 토큰이 유효하고 필요한 권한이 있는 경우 복제 프로세스에 성공해야 합니다. 그렇지 않으면 잘못된 개인 액세스 토큰, 사용 권한이 부족하거나 기타 문제가 있음을 나타냅니다.중요GitHub Enterprise Cloud의 경우 조직 내에서 토큰을 사용할 수 있는 권한이 있는지 확인합니다.
-
웹 브라우저에서
https:// <openshift_dev_spaces_fqdn> /api/user/id
로 이동하여 OpenShift Dev Spaces 사용자 ID를 가져옵니다. 새 OpenShift 시크릿을 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
https:// <openshift_dev_spaces_fqdn> /api/kubernetes/namespace
를 방문하여 OpenShift Dev Spaces 사용자 네임스페이스를이름으로
가져옵니다. 클러스터의 OpenShift Dev Spaces 사용자 네임스페이스로 전환합니다.
작은 정보On OpenShift:
oc
명령줄 툴에서 현재 클러스터에 있는 네임스페이스를 반환할 수 있습니다. 현재 네임스페이스를 확인하는 데 사용할 수 있습니다.$ oc project
필요한 경우 명령줄에서 OpenShift Dev Spaces 사용자 네임스페이스로 전환할 수 있습니다.
$ oc project < ;your_user_namespace>
시크릿을 적용합니다.
작은 정보OpenShift에서는
oc
명령줄 툴을 사용할 수 있습니다.oc apply -f - <<EOF <Secret_prepared_in_step_5> EOF
$ oc apply -f - <<EOF <Secret_prepared_in_step_5> EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Azure DevOps Server를 사용하는 경우 다음 섹션을 사용하여 작업 공간의 gitconfig 도 수정해야 합니다.
[http] extraheader = "Authorization: Basic <base64-encoded(:personal-access-token)>"
[http]
extraheader = "Authorization: Basic <base64-encoded(:personal-access-token)>"
키-값 쌍을 생성하려면 다음 명령을 사용합니다.
echo -n "extraheader = \"Authorization: Basic "$(printf ":%s" <personal access token> | base64)\"
echo -n "extraheader = \"Authorization: Basic "$(printf ":%s" <personal access token> | base64)\"
자세한 내용은 설명서 페이지를 참조하십시오.
추가 헤더 구성은
Azure Devops Server에 대한 원격 git 작업에 필요합니다(예: git clone
). 이 인증 방법은 git 인증 정보 저장소보다 우선 순위가 높으므로 다른 Git 공급자에 대한 원격 작업이 실패합니다.
검증
- Git 공급자가 호스팅하는 원격 Git 리포지토리의 URL을 사용하여 새 작업 공간을 시작합니다.
- 일부 변경 사항을 수행하고 작업 영역에서 원격 Git 리포지토리로 내보냅니다.