2.4. CLI 프로필 관리

CLI 구성 파일을 사용하면 CLI 툴 개요 와 함께 사용할 수 있도록 다양한 프로필 또는 컨텍스트를 구성할 수 있습니다. 컨텍스트는 닉네임 과 관련된 사용자 인증 및 OpenShift Container Platform 서버 정보로 구성됩니다.

2.4.1. CLI 프로필 간 전환 정보

컨텍스트를 사용하면 CLI 작업을 사용할 때 여러 OpenShift Container Platform 서버 또는 클러스터에서 여러 사용자 간에 쉽게 전환할 수 있습니다. nicknames는 컨텍스트, 사용자 인증 정보, 클러스터 세부 정보에 대한 단기 참조를 제공하여 CLI 구성을 더 쉽게 관리합니다. CLI를 처음 사용한 후 OpenShift Container Platform은 아직 없는 경우 ~/.kube/config 파일을 생성합니다. oc 로그인 작업 중 자동으로 또는 CLI 프로필을 수동으로 구성하여 CLI에 인증 및 연결 세부 정보가 제공되면 업데이트된 정보가 구성 파일에 저장됩니다.

CLI 구성 파일

apiVersion: v1
clusters: 1
- cluster:
    insecure-skip-tls-verify: true
    server: https://openshift1.example.com:8443
  name: openshift1.example.com:8443
- cluster:
    insecure-skip-tls-verify: true
    server: https://openshift2.example.com:8443
  name: openshift2.example.com:8443
contexts: 2
- context:
    cluster: openshift1.example.com:8443
    namespace: alice-project
    user: alice/openshift1.example.com:8443
  name: alice-project/openshift1.example.com:8443/alice
- context:
    cluster: openshift1.example.com:8443
    namespace: joe-project
    user: alice/openshift1.example.com:8443
  name: joe-project/openshift1/alice
current-context: joe-project/openshift1.example.com:8443/alice 3
kind: Config
preferences: {}
users: 4
- name: alice/openshift1.example.com:8443
  user:
    token: xZHd2piv5_9vQrg-SKXRJ2Dsl9SceNJdhNTljEKTb8k

1
클러스터 섹션에서는 마스터 서버의 주소를 포함하여 OpenShift Container Platform 클러스터에 대한 연결 세부 정보를 정의합니다. 이 예에서 한 클러스터는 닉네임 openshift1.example.com:8443 이며 다른 클러스터는 닉네임 openshift2.example.com:8443 입니다.
2
컨텍스트 섹션에서는 한 개의 nick named alice-project/openshift1.example.com:8443/alice, alice-project 프로젝트, openshift1.example.com:8443 클러스터 및 alice 사용자 및 기타 nicknamed joe-project/openshift1.example.com:8443/alice, 두 가지 컨텍스트를 정의합니다. joe-project 프로젝트 사용, openshift1.example.com:8443 cluster 및 alice 사용자.
3
current-context 매개변수는 joe-project/openshift1.example.com:8443/alice 컨텍스트가 현재 사용 중이므로 alice 사용자가 openshift1.example.com:8443 클러스터의 joe-project 프로젝트에서 작업할 수 있습니다.
4
users 섹션에서는 사용자 자격 증명을 정의합니다. 이 예제에서 사용자 nickname alice/openshift1.example.com:8443 은 액세스 토큰을 사용합니다.

CLI는 런타임에 로드되고 명령줄에서 지정된 재정의 옵션과 함께 병합되는 여러 구성 파일을 지원할 수 있습니다. 로그인한 후 oc status 또는 oc project 명령을 사용하여 현재 작업 환경을 확인할 수 있습니다.

현재 작업 환경 확인

$ oc status

출력 예

oc status
In project Joe's Project (joe-project)

service database (172.30.43.12:5434 -> 3306)
  database deploys docker.io/openshift/mysql-55-centos7:latest
    #1 deployed 25 minutes ago - 1 pod

service frontend (172.30.159.137:5432 -> 8080)
  frontend deploys origin-ruby-sample:latest <-
    builds https://github.com/openshift/ruby-hello-world with joe-project/ruby-20-centos7:latest
    #1 deployed 22 minutes ago - 2 pods

To see more information about a service or deployment, use 'oc describe service <name>' or 'oc describe dc <name>'.
You can use 'oc get all' to see lists of each of the types described in this example.

현재 프로젝트 나열

$ oc project

출력 예

Using project "joe-project" from context named "joe-project/openshift1.example.com:8443/alice" on server "https://openshift1.example.com:8443".

oc login 명령을 다시 실행하고 대화형 프로세스 중에 필요한 정보를 제공하여 사용자 인증 정보 및 클러스터 세부 정보의 다른 조합을 사용하여 로그인할 수 있습니다. 제공된 정보가 아직 없는 경우 컨텍스트는 제공된 정보를 기반으로 생성됩니다. 이미 로그인하여 현재 사용자에게 액세스할 수 있는 다른 프로젝트로 전환하려면 oc project 명령을 사용하여 프로젝트 이름을 입력합니다.

$ oc project alice-project

출력 예

Now using project "alice-project" on server "https://openshift1.example.com:8443".

출력에 표시된 대로 언제든지 oc config view 명령을 사용하여 현재 CLI 구성을 볼 수 있습니다. 추가 CLI 구성 명령도 고급 용도로 사용할 수 있습니다.

참고

관리자 자격 증명에 액세스할 수 있지만 더 이상 기본 시스템 사용자 system:admin 으로 로그인하지 않은 경우 인증 정보가 CLI 구성 파일에 여전히 있는 경우 언제든지 이 사용자로 다시 로그인할 수 있습니다. 다음 명령은 로그인하여 기본 프로젝트로 전환합니다.

$ oc login -u system:admin -n default

2.4.2. CLI 프로필 수동 구성

참고

이 섹션에서는 CLI 구성의 고급 사용에 대해 설명합니다. 대부분의 경우 oc loginoc project 명령을 사용하여 컨텍스트와 프로젝트 간에 로그인하고 전환할 수 있습니다.

CLI 구성 파일을 수동으로 구성하려면 파일을 직접 수정하는 대신 oc config 명령을 사용하면 됩니다. oc config 명령에는 이러한 용도로 유용한 여러 하위 명령이 포함되어 있습니다.

표 2.2. CLI 구성 하위 명령

하위 명령사용법

set-cluster

CLI 구성 파일에 클러스터 항목을 설정합니다. 참조된 클러스터 닉네임이 이미 존재하는 경우 지정된 정보가 에 병합됩니다.

$ oc config set-cluster <cluster_nickname> [--server=<master_ip_or_fqdn>]
[--certificate-authority=<path/to/certificate/authority>]
[--api-version=<apiversion>] [--insecure-skip-tls-verify=true]

set-context

CLI 구성 파일에 컨텍스트 항목을 설정합니다. 참조된 컨텍스트 닉네임이 이미 존재하는 경우 지정된 정보가 에 병합됩니다.

$ oc config set-context <context_nickname> [--cluster=<cluster_nickname>]
[--user=<user_nickname>] [--namespace=<namespace>]

use-context

지정된 컨텍스트 닉네임을 사용하여 현재 컨텍스트를 설정합니다.

$ oc config use-context <context_nickname>

set

CLI 구성 파일에 개별 값을 설정합니다.

$ oc config set <property_name> <property_value>

& lt;property_name >은 각 토큰이 특성 이름 또는 맵 키를 나타내는 점으로 구분된 이름입니다. & lt;property_value& gt;는 새로운 값이 설정되는 것입니다.

unset

CLI 구성 파일에서 개별 값을 설정 해제합니다.

$ oc config unset <property_name>

& lt;property_name >은 각 토큰이 특성 이름 또는 맵 키를 나타내는 점으로 구분된 이름입니다.

view

현재 사용 중인 병합된 CLI 구성을 표시합니다.

$ oc config view

지정된 CLI 구성 파일의 결과를 표시합니다.

$ oc config view --config=<specific_filename>

사용 예

  • 액세스 토큰을 사용하는 사용자로 로그인합니다. 이 토큰은 alice 사용자가 사용합니다.
$ oc login https://openshift1.example.com --token=ns7yVhuRNpDM9cgzfhhxQ7bM5s7N2ZVrkZepSRf4LC0
  • 클러스터 항목이 자동으로 생성되었는지 확인합니다.
$ oc config view

출력 예

apiVersion: v1
clusters:
- cluster:
    insecure-skip-tls-verify: true
    server: https://openshift1.example.com
  name: openshift1-example-com
contexts:
- context:
    cluster: openshift1-example-com
    namespace: default
    user: alice/openshift1-example-com
  name: default/openshift1-example-com/alice
current-context: default/openshift1-example-com/alice
kind: Config
preferences: {}
users:
- name: alice/openshift1.example.com
  user:
    token: ns7yVhuRNpDM9cgzfhhxQ7bM5s7N2ZVrkZepSRf4LC0

  • 현재 컨텍스트를 업데이트하여 사용자가 원하는 네임스페이스에 로그인하도록 합니다.
$ oc config set-context `oc config current-context` --namespace=<project_name>
  • 현재 컨텍스트를 검사하여 변경 사항이 구현되었는지 확인합니다.
$ oc whoami -c

모든 후속 CLI 작업에서는 CLI 옵션을 재정의하거나 컨텍스트가 전환될 때까지 달리 지정하지 않는 한 새 컨텍스트를 사용합니다.

2.4.3. 규칙 로드 및 병합

CLI 구성에 대한 로드 및 병합 순서에 대한 CLI 작업을 실행할 때 다음 규칙을 따를 수 있습니다.

  • CLI 구성 파일은 다음 계층 구조 및 병합 규칙을 사용하여 워크스테이션에서 검색됩니다.

    • --config 옵션이 설정되면 해당 파일만 로드됩니다. 플래그가 한 번 설정되어 있으며 병합이 수행되지 않습니다.
    • $KUBECONFIG 환경 변수가 설정되면 사용됩니다. 변수는 경로 목록일 수 있으며, 이 경우 경로가 함께 병합됩니다. 값이 수정되면 스탠자를 정의하는 파일에서 수정됩니다. 값을 만들면 존재하는 첫 번째 파일에 생성됩니다. 체인에 파일이 없는 경우 목록에 마지막 파일이 생성됩니다.
    • 그렇지 않으면 ~/.kube/config 파일이 사용되고 병합이 수행되지 않습니다.
  • 사용할 컨텍스트는 다음 흐름의 첫 번째 일치에 따라 결정됩니다.

    • --context 옵션의 값입니다.
    • CLI 구성 파일의 current-context 값입니다.
    • 이 단계에서 빈 값이 허용됩니다.
  • 사용할 사용자 및 클러스터가 결정됩니다. 이 시점에는 컨텍스트가 있거나 없을 수 있습니다. 다음 흐름에서 첫 번째 일치 항목을 기반으로 빌드됩니다. 이는 사용자와 클러스터에 대해 한 번 실행됩니다.

    • 사용자 이름에 대한 --user 및 클러스터 이름에 대한 --cluster 옵션의 값입니다.
    • --context 옵션이 있는 경우 컨텍스트의 값을 사용합니다.
    • 이 단계에서 빈 값이 허용됩니다.
  • 사용할 실제 클러스터 정보가 결정됩니다. 이때 클러스터 정보가 있을 수도 있고 없을 수도 있습니다. 각 클러스터 정보는 다음 흐름의 첫 번째 일치 항목을 기반으로 빌드됩니다.

    • 다음 명령줄 옵션의 값:

      • --server,
      • --api-version
      • --certificate-authority
      • --insecure-skip-tls-verify
    • 특성의 클러스터 정보와 값이 있는 경우 이를 사용합니다.
    • 서버 위치가 없는 경우 오류가 발생합니다.
  • 사용할 실제 사용자 정보가 결정됩니다. 사용자는 사용자당 하나의 인증 기술만 가질 수 있다는 점을 제외하고 클러스터와 동일한 규칙을 사용하여 빌드됩니다. 충돌하는 기술으로 인해 작업이 실패합니다. 명령줄 옵션이 구성 파일 값보다 우선합니다. 유효한 명령행 옵션은 다음과 같습니다.

    • --auth-path
    • --client-certificate
    • --client-key
    • --token
  • 아직 누락된 정보에 대해 기본값이 사용되며 추가 정보에 대한 프롬프트가 표시됩니다.