

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 설치 옵션
<a name="installation-options"></a>

Red Hat OpenShift on AWS를 설치하는 방법은 크게 두 가지입니다.
+ 설치 프로그램 프로비저닝 인프라(IPI) – 사용자는 기본 정보(예: 컨트롤 플레인 시스템 수)를 제공하고 대부분의 질문에 대해 기본값을 선택할 수 있습니다. AWS 명령줄 유틸리티(`rosa` CLI)의 Red Hat OpenShift Service는 다음 섹션에서 설명한 대로 IPI 구조에 배치할 수 있습니다.
+ UPI(User-Provisioned Infrastructure) – 도메인 이름 서버(DNS), Amazon Virtual Private Cloud(VPC), 부트스트랩 머신, 컨트롤 플레인과 같은 모든 인프라 구성 요소가 수동으로 생성되고 Red Hat OpenShift가 해당 인프라 위에 설치됩니다.

두 설정 모두 대상 및 종속성을 기반으로 구성 요소를 설치하는 동일한 설치 프로그램(`install-config.yaml`)을 사용합니다. 각 대상에는 고유한 종속성이 있으므로 프로그램은 여러 대상을 병렬로 지원하고 대상이 클러스터를 성공적으로 실행할 수 있도록 보장할 수 있습니다. 다음 다이어그램에서는 일부 대상과 종속성을 보여줍니다.

![에서 Red Hat OpenShift의 대상 및 종속성 AWS](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/red-hat-openshift-on-aws-implementation/images/targets-dependencies.png)


## 각 접근 방식의 장점 및 단점
<a name="adv-disadv"></a>


****  

| 설치 프로그램 프로비저닝 인프라(IPI) | 사용자 프로비저닝 인프라(UPI) | 
| --- | --- | 
| 설치가 쉽습니다. | 복잡합니다. 설정하는 데 시간이 좀 걸립니다. | 
| 많은 사용자 지정 옵션을 제공하지 않습니다. | 토폴로지와 전체 인프라를 사용자 지정할 수 있습니다. | 
|  AWS 및 기타 퍼블릭 클라우드 옵션을 지원합니다. | VMware 및 베어 메탈 시스템과 AWS 및 기타 클라우드 옵션을 지원합니다. | 
| 로드 밸런서와 가상 네트워크를 포함한 모든 인프라 구성 요소를 생성합니다. | 기본 플랫폼이 모든 요구 사항을 충족하지 않을 때 사용할 수 있습니다. 예를 들어, 베어 메탈 시스템은 로드 밸런서를 제공하지 않습니다. | 
| 고도로 자동화되었습니다. | 기본 인프라를 프로비저닝하기 위한 전체 자동화 계층을 생성해야 합니다. 이 용도로 AWS CloudFormation 템플릿을 사용할 수 있습니다. | 
| 사전 조건 검사를 쉽게 수행할 수 있습니다. | 사전 조건을 신중하게 검증해야 합니다. | 

## IPI 예제 – `rosa` CLI 사용
<a name="ipi-example1"></a>

의 Red Hat OpenShift Service는 IPI 유형의 설치를 AWS 구현하지만 추가 이점을 제공합니다. `rosa` CLI를 사용하여 AWS 클러스터 및 리소스에서 Red Hat OpenShift를 관리(업데이트, 삭제 또는 프로비저닝)합니다. 자세한 내용은 [Red Hat OpenShift 설명서](https://docs.openshift.com/rosa/rosa_getting_started/rosa-getting-started.html)를 참조하세요.

Red Hat OpenShift 클러스터를 프로비저닝하려면 AWS먼저 `rosa` CLI를 설치하고 AWS Command Line Interface (AWS CLI)가 AWS 계정을 가리키는지 확인합니다. 그런 다음 `rosa` CLI를 사용하여 검증을 수행하고 다음과 유사한 명령을 사용하여 클러스터를 프로비저닝할 수 있습니다.

```
rosa verify permissions [arguments]
rosa download oc

rosa verify quota [arguments]
rosa init --token=<token> 
rosa create cluster --cluster-name=<cluster_name>
```

클러스터가 프로비저닝되면 OpenShift 명령을 사용하여 이를 확인할 수 있습니다.

```
oc get nodes (list all nodes if connected to cluster)
oc get ns (list all namespaces)
```

자세한 내용은 [OpenShift 설명서](https://docs.openshift.com/rosa/cli_reference/openshift_cli/getting-started-cli.html)를 참조하세요.

이 방법 사용의 이점은 다음과 같습니다.
+  AWS에서 클러스터를 쉽게 설정하고 빠르게 프로비저닝할 수 있습니다.
+ 로깅 정보를 제공합니다. 문제가 발생할 경우 쉽게 해결할 수 있습니다.
+ 명령줄을 통해 사전 조건을 검증할 수 있습니다.
+ 삭제 및 기타 작업에도 사용할 수 있습니다.

가능한 몇 가지 문제:
+ 사용자 지정 옵션이 제한될 수 있습니다.
+ `rosa` CLI AWS CLI및 기타 기본 설정이 필요합니다.
+ IPI와 관련된 모든 문제는 `rosa` CLI 사용에도 적용됩니다.

## IPI 예제 - `openshift-install` 사용
<a name="ipi-example2"></a>

`openshift-install`은 클러스터를 빠르게 생성하는 데 사용할 수 있는 명령줄 유틸리티입니다. 이 명령은 `install-config.yaml` 파일 수정을 통해 어느 정도의 유연성을 제공합니다. 이 섹션에서는 이 유틸리티를 사용하는 단계를 개략적으로 설명합니다. 자세한 설치 단계는 [OpenShift 설명서](https://docs.openshift.com/container-platform/4.6/installing/installing_aws/installing-aws-default.html)를 참조하세요.

1. [Red Hat 웹 사이트](https://console.redhat.com/openshift/install)에서 설치 프로그램을 다운로드합니다(Red Hat 계정 필요).

1. 패키지의 압축을 풉니다.

   ```
   tar xvf openshift-install-linux.tar.gz
   ```

1. 설치 디렉터리를 식별하고 `create cluster` 명령을 실행합니다.

   ```
   ./openshift-install create cluster --dir <installation_directory> --log-level=info
   ```

1. 설치를 사용자 지정하려면 `install-config.yaml` 파일을 생성합니다.

   ```
   ./openshift-install create install-config --dir <installation_directory>
   ```

다음은 샘플 `install-config.yaml` 파일에서 발췌한 내용입니다. 구성 옵션은 [OpenShift 설명서](https://docs.openshift.com/container-platform/4.7/installing/installing_aws/installing-aws-customizations.html)를 참조하세요.

```
      apiVersion: v1
baseDomain: sample.com 
credentialsMode: Mint 
controlPlane:   
  hyperthreading: Enabled 
  name: master
  platform:
    aws:
      zones:
      - us-east-2a
      - us-east-2b
      rootVolume:
        iops: 4000
        size: 500
        type: io1 
      type: m5.xlarge
  replicas: 3
compute: 
- hyperthreading: Enabled 
  name: worker
  platform:
    aws:
      rootVolume:
        iops: 2000
        size: 500
        type: io1 
      type: c5.4xlarge
      zones:
      - us-east-2c
  replicas: 3
metadata:
  name: sample-cluster 
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14
    hostPrefix: 23
  machineNetwork:
  - cidr: 10.0.0.0/16
  networkType: OpenShiftSDN
  serviceNetwork:
  - 172.30.0.0/16
platform:
  aws:
    region: us-west-2 
    userTags:
      adminContact: jdoe
      costCenter: 7536
    amiID: ami-96c6f8f7 
    serviceEndpoints: 
      - name: ec2
        url: https://vpce-id.ec2.us-west-2.vpce.amazonaws.com
fips: false 
sshKey: ssh-ed25519 AAAA... 
pullSecret: '{"auths": ...}'
```

## UPI 예제 - 사용자 프로비저닝 AWS 인프라에 설치
<a name="upi-example"></a>

별도로 프로비저닝하는 기존 AWS 인프라에서 Red Hat OpenShift 클러스터를 프로비저닝할 수 있습니다. 인프라를 프로비저닝하려면 CloudFormation 템플릿을 사용하여 VPC, 호스팅 영역, DNS 레코드 및 기타 구성 요소를 생성할 수 있습니다. 자세한 단계와 CloudFormation 템플릿은 [OpenShift 설명서](https://docs.redhat.com/en/documentation/openshift_container_platform/4.1/html/installing/installing-on-user-provisioned-aws)를 참조하세요.

클러스터가 프로비저닝되면 작업자 노드를 `Ready` 상태로 이동하기 위해 모든 인증서 서명 요청(CSR)을 승인해야 합니다.

```
oc get nodes

NAME      STATUS    ROLES   AGE  VERSION
master-0  Ready     master  63m  v1.13.4+b626c2fe1
master-1  Ready     master  63m  v1.13.4+b626c2fe1
master-2  Ready     master  64m  v1.13.4+b626c2fe1
worker-0  NotReady  worker  76s  v1.13.4+b626c2fe1
worker-1  NotReady  worker  70s  v1.13.4+b626c2fe1
```

다음 명령을 사용하여 모든 인증서를 승인할 수 있습니다.

```
    oc get csr -ojson | jq -r '.items[] | select(.status == {} ) | .metadata.name' | xargs oc adm certificate approve
```

`oc` 명령줄을 사용하거나 Red Hat 콘솔을 사용하여 모든 운영자가 `Ready` 단계에 있는지 확인할 수 있습니다.

확인 후 부트스트랩 리소스를 삭제할 수 있습니다. `stack-name`와 스택을 생성할 때 제공한 이름 AWS Management Console에서를 확인할 수 있습니다.

```
aws cloudformation delete-stack --stack-name <name> 
```

다음 명령을 사용하여 클러스터 프로비저닝을 마칩니다.

```
./openshift-install --dir=<installation_directory> wait-for install-complete 

INFO Waiting up to 30m0s for the cluster to initialize...
```

이해관계자에게 클러스터를 제공하기 전에 로그를 확인하고 오류가 없는지 확인합니다.