cfctl init proxy

cfctl setting init의 하위 명령어 중 하나인 proxy는 SpaceONE의 도메인 URL을 이용하여 환경을 초기화하는 명령어입니다.

01. 플래그 종류

proxy 하위 명령어에는 세 가지 플래그가 있습니다.

cfctl setting init proxy {endpoint} {-app|--user|--internal}
  • --app: 애플리케이션 Token을 이용한 구성으로 초기화
    • cfctl setting init proxy http[s]://example.com --app
  • --user: User ID, Password를 이용한 구성으로 초기화
    • cfctl setting init proxy http[s]://example.com --user
  • --internal: 내부 엔드포인트 사용 (단독 혹은 --app 플래그와 함께 사용 가능)
    • cfctl setting init proxy http[s]://example.com --internal

1.1. --app

SpaceONE 으로 부터 제공받은 도메인 URL을 이용하여 환경을 초기화하는 예시입니다.

❯ cfctl setting init proxy https://spaceone.-.com --app
Environment name: spaceone
 SUCCESS  Successfully initialized proxy connection to https://spaceone.-.com
 SUCCESS  Environment 'spaceone-app' successfully initialized.
 INFO  Configuration saved to: /Users/yjinjo/.cfctl/setting.yaml
  • Envrionment name의 경우 기본적으로 default로 설정되어 있으며, 사용자가 원하는 이름으로 변경할 수 있습니다.
    • 위 예시에서는 spaceone으로 설정하였습니다.
  • --app 플래그로 설정한 경우 Environment name 뒤에 -app이 붙습니다.
    • 위 예시에서는 Environmnet namespaceone, 그리고 --app 플래그로 설정하였으므로 spaceone-app으로 설정되었습니다.

cfctl setting init 명령어를 이용하여 환경을 초기화하면 설정 파일이 생성되며, 이 설정 파일은 $HOME/.cfctl/setting.yaml에 저장됩니다.

    • setting.yaml

  • ~/.cfctl/setting.yaml
    environment: spaceone-app
    environments:
      cloudone-app:
        endpoint: https://spaceone.-.com
        proxy: true
        token: no_token

    token: no_token 에는 앱 생성을 통해 발급받은 앱 토큰을 복사해서 no_token을 대체하면 됩니다.

    ~/.cfctl/setting.yaml
    environment: spaceone-app
    environments:
      spaceone-app:
        endpoint: https://spaceone.-.com
        proxy: true
        token: eyJ...

    1.2. --user

    --user 플래그의 경우 Admin 페이지에서 Local(ID) 혹은 Local(Email)로 사용자를 생성하고, 생성한 User ID, Password를 이용하여 환경을 초기화하는 플래그입니다.

    Admin 페이지에서 사용자 추가하기

    사용자 추가는 Local(ID) 혹은 Local(Email)로 추가할 수 있습니다.

    사용자 추가 후, --user 플래그를 이용하여 환경을 초기화합니다.

    ❯ cfctl setting init proxy https://spaceone.-.com --user
    Environment name: spaceone
     SUCCESS  Successfully initialized proxy connection to https://spaceone.-.com
     SUCCESS  Environment 'spaceone-user' successfully initialized.
     INFO  Configuration saved to: /Users/yjinjo/.cfctl/setting.yaml
    • Envrionment name의 경우 기본적으로 default로 설정되어 있으며, 사용자가 원하는 이름으로 변경할 수 있습니다.
      • 위 예시에서는 spaceone으로 설정하였습니다.
    • --user 플래그로 설정한 경우 Environment name 뒤에 -user이 붙습니다.
      • 위 예시에서는 Environmnet namespaceone, 그리고 --user 플래그로 설정하였으므로 spaceone-user으로 설정되었습니다.

    --user 플래그로 환경을 초기화한 경우는 --app 플래그로 환경을 초기화한 것과는 달리 token key 값이 없습니다. 초기화한 경우 바로 환경이 기존의 spaceone-app 에서 spaceone-user 로 변경된 것을 확인할 수 있습니다.

    ~/.cfctl/setting.yaml
    environment: spaceone-user
    environments:
      spaceone-app:
        endpoint: https://spaceone.-.com
        proxy: true
        token: eyJ...
      spaceone-user:
        endpoint: https://spaceone.-.com
        proxy: true
    • --user 플래그로 환경을 초기화한 경우 앱 토큰을 사용하지 않으므로 token key 값이 없습니다. 대신 cfctl login 으로 이후에 로그인을 진행할 수 있습니다.
    • 접미사가 spaceone-user와 같이 -user 일 때 User ID, Password로 로그인하는 것은 login 섹션에서 확인할 수 있습니다.

    1.3. --internal

    --internal 플래그는 내부 엔드포인트를 사용하는 경우에 사용합니다. 예를 들어 쿠버네티스 클러스터 내부에 있는 SpaceONE 서비스에 접근할 때 사용합니다. 이번에는 이미 존재하는 환경에 덮어 씌어 봅시다.

    ❯ cfctl setting init proxy https://spaceone.-.com --internal
    Environment name: spaceone
     SUCCESS  Successfully initialized proxy connection to https://spaceone.-.com
    ┌─────────── Environment Already Exists ───────────┐
    |    Environment 'spaceone-app' already exists.    |
    |    Do you want to overwrite it?                  |
    └──────────────────────────────────────────────────┘
     INFO  Current configuration:
    environment: spaceone-app
    environments:
      spaceone-app:
        endpoint: https://spaceone.-.com
        proxy: false
        token: no_token
    
    
    Enter (y/n): y
     SUCCESS  Environment 'spaceone-app' successfully initialized.
     INFO  Configuration saved to: /Users/yjinjo/.cfctl/setting.yaml
    • --internal 플래그의 경우 Environment name 뒤에 -app이 붙습니다.
    • 기존에 spaceone-app 환경이 존재했으므로, 이미 환경이 존재한다고 경고가 뜨고, y 를 입력하면 기존 환경을 덮어씁니다.
    • endpoint의 경우 내부 엔드포인트인 grpc:/-.-.:[PORT]로 설정됩니다. 이는 내부 엔드포인트를 사용하므로 Domain URL을 입력했다 하더라도 grpc 프로토콜로 설정됩니다.
    • 여기서는 일부러 환경 정보를 덮어 씌울 때 어떤식으로 동작하는지 보여주기 위해서 같은 환경 이름으로 작성했지만, 실제로는 다른 환경 이름으로 설정하는 것을 권장합니다. (예: Environment name을 spaceone-internal로 설정할 경우 spaceone-internal-app 으로 설정됩니다.)

    --internal 플래그로 초기화한 환경 역시 -app 플래그로 초기화한 환경과 마찬가지로 token key 값이 있습니다. --app을 통해 환경을 초기화한 경우와 마찬가지로 token: no_token 에는 앱 생성을 통해 발급받은 앱 토큰을 복사해서 no_token을 대체하면 됩니다.

    ~/.cfctl/setting.yaml
    environment: spaceone-app
    environments:
      spaceone-app:
        endpoint: grpc://-.-.:[PORT]
        proxy: false
        token: eyJ...
      spaceone-user:
        endpoint: https://spaceone.-.com
        proxy: true