튜토리얼
Red Hat OpenShift Service on AWS 튜토리얼
초록
1장. 튜토리얼 개요 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 전문가의 단계별 튜토리얼을 사용하여 관리형 OpenShift 클러스터를 최대한 활용할 수 있습니다.
이 콘텐츠는 Red Hat 전문가가 작성했지만 지원되는 모든 구성에서 테스트되지 않았습니다.
2장. 튜토리얼: HCP 활성화 및 계정 연결을 통한 ROSA 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 첫 번째 클러스터를 배포하기 전에 호스팅되는 컨트롤 플레인(HCP)을 사용하여 AWS에서 Red Hat OpenShift Service를 활성화하고 AWS 계정에 연결하는 프로세스를 설명합니다.
제품에 대한 비공개 제안을 받은 경우 이 튜토리얼을 따르기 전에 개인 제안과 함께 제공된 지침에 따라 진행하십시오. 개인 오퍼링은 활성 서브스크립션을 대체하는 제품이 이미 활성화된 경우 또는 처음 활성화되는 경우를 위해 설계되었습니다.
2.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- ROSA 제품 서브스크립션을 활성화할 AWS 계정과 연결할 Red Hat 계정에 로그인합니다.
- 서비스 청구에 사용되는 AWS 계정은 단일 Red Hat 계정에만 연결할 수 있습니다. 일반적으로 AWS 유료 계정은 ROSA에 가입하고 계정 연결 및 청구에 사용되는 계정입니다.
- 동일한 Red Hat 조직에 속한 모든 팀 구성원은 HCP 클러스터와 ROSA를 생성하는 동안 연결된 AWS 계정을 서비스 청구에 사용할 수 있습니다.
2.2. 서브스크립션 사용 및 AWS 계정 설정 링크 복사링크가 클립보드에 복사되었습니다!
시작하기 버튼을 클릭하여 AWS 콘솔 페이지에서 HCP 제품으로 ROSA를 활성화합니다.
그림 2.1. 시작하기
ROSA를 이전에 활성화했지만 프로세스를 완료하지 않은 경우 버튼을 클릭하고 다음 단계에 설명된 대로 계정 링크를 완료할 수 있습니다.
연락처 정보를 Red Hat과 공유하도록 확인하고 서비스를 활성화합니다.
그림 2.2. ROSA 활성화
- 이 단계에서 서비스를 활성화하면 부과되지 않습니다. 첫 번째 클러스터를 배포한 후에만 발생하는 청구 및 미터링에 대한 연결이 수행됩니다. 이 작업은 몇 분 정도 걸릴 수 있습니다.
프로세스가 완료되면 확인이 표시됩니다.
그림 2.3. ROSA 활성화 확인
이 확인 페이지의 다른 섹션에는 추가 사전 요구 사항의 상태가 표시됩니다. 이러한 사전 요구 사항 중 하나라도 충족되지 않으면 해당 메시지가 표시됩니다. 다음은 선택한 리전에서 할당량 부족의 예입니다.
그림 2.4. 서비스 할당량
- Increase 서비스 할당량 버튼을 클릭하거나 자세히 알아보기 링크를 사용하여 서비스 할당량 관리 방법에 대한 자세한 정보를 가져옵니다. 할당량이 충분하지 않은 경우 할당량은 지역에 따라 다릅니다. 웹 콘솔의 오른쪽 상단에 있는 지역 전환기를 사용하여 관심 있는 모든 지역에 대한 할당량 검사를 다시 실행한 다음 필요에 따라 서비스 할당량 증가 요청을 제출할 수 있습니다.
사전 요구 사항이 모두 충족되면 페이지가 다음과 같이 표시됩니다.
그림 2.5. ROSA 사전 요구 사항 확인
ELB 서비스 연결 역할이 자동으로 생성됩니다. 작은 Info Blue 링크를 클릭하면 상황에 맞는 도움말과 리소스를 얻을 수 있습니다.
2.3. AWS 및 Red Hat 계정 및 서브스크립션 연결 링크 복사링크가 클립보드에 복사되었습니다!
주황색 계속 Red Hat 버튼을 클릭하여 계정 연결을 진행합니다.
그림 2.6. 계속 Red Hat으로
현재 브라우저 세션에서 Red Hat 계정에 로그인하지 않은 경우 계정에 로그인하라는 메시지가 표시됩니다.
참고AWS 계정이 단일 Red Hat 조직에 연결되어 있어야 합니다.
그림 2.7. Red Hat 계정에 로그인
- 새 Red Hat 계정에 등록하거나 이 페이지에서 비밀번호를 재설정할 수도 있습니다.
- ROSA를 HCP 제품 서브스크립션을 활성화한 AWS 계정과 연결하려는 Red Hat 계정에 로그인합니다.
- 서비스 청구에 사용되는 AWS 계정은 단일 Red Hat 계정에만 연결할 수 있습니다. 일반적으로 AWS 유료 계정은 ROSA에 가입하고 계정 연결 및 청구에 사용되는 계정입니다.
- 동일한 Red Hat 조직에 속한 모든 팀 구성원은 HCP 클러스터와 ROSA를 생성하는 동안 연결된 AWS 계정을 서비스 청구에 사용할 수 있습니다.
사용 약관을 검토한 후 Red Hat 계정 연결을 완료합니다.
참고이 단계는 AWS 계정이 이전에 Red Hat 계정에 연결되지 않은 경우에만 사용할 수 있습니다.
AWS 계정이 이미 사용자의 로그인된 Red Hat 계정에 연결되어 있는 경우 이 단계를 건너뜁니다.
AWS 계정이 다른 Red Hat 계정에 연결되어 있으면 오류가 표시됩니다. 문제 해결을 위해 HCP 클러스터의 고객 계정 수정 정보를 참조하십시오.
그림 2.8. 계정 연결 완료
이 화면에 Red Hat 및 AWS 계정 번호가 모두 표시됩니다.
서비스 약관에 동의한 경우 계정 연결 버튼을 클릭합니다.
Red Hat Hybrid Cloud Console을 처음 사용하는 경우 첫 번째 ROSA 클러스터를 생성하기 전에 일반 관리 서비스 사용 약관에 동의하라는 메시지가 표시됩니다.
그림 2.9. 이용 약관
약관 보기 버튼을 클릭하면 검토 및 수락이 필요한 추가 조건이 표시됩니다.
그림 2.10. Red Hat 이용 약관
현재 메시지가 표시되면 추가 약관을 검토한 후 계약을 제출하십시오.
Hybrid Cloud Console은 AWS 계정 설정이 완료되었음을 확인하고 클러스터 배포를 위한 사전 요구 사항을 나열합니다.
그림 2.11. ROSA 사전 요구 사항 완료
이 페이지의 마지막 섹션에는
rosa
CLI를 사용하거나 웹 콘솔을 통해 클러스터 배포 옵션이 표시됩니다.그림 2.12. 클러스터 배포 및 액세스 설정
2.4. CLI를 사용하여 클러스터를 배포하는 동안 HCP를 사용하는 ROSA의 AWS 청구 계정 선택 링크 복사링크가 클립보드에 복사되었습니다!
최신 ROSA CLI(명령줄 인터페이스) 및 AWS CLI가 설치되어 있고 이전 섹션에서 다루는 ROSA 사전 요구 사항을 완료했는지 확인합니다. 자세한 내용은 ROSA CLI 설정 및 지침의 도움말 을 참조하십시오.
rosa create cluster
명령을 사용하여 클러스터 배포를 시작합니다. AWS (ROSA) 콘솔 페이지에서 Red Hat OpenShift Service 설정 버튼을 클릭하고 터미널에 명령을 붙여넣을 수 있습니다. 그러면 대화형 모드에서 클러스터 생성 프로세스가 시작됩니다.그림 2.13. 클러스터 배포 및 액세스 설정
-
~/.aws/credentials
에 지정된 기본이 아닌 프로필 중 하나인 사용자 지정 AWS 프로필을 사용하려면 명령이rosa create cluster
> 선택기를 rosa create cluster 명령에 추가할 수 있습니다. 이 옵션을 사용하여 AWS CLI 프로필을 지정하지 않으면 기본 AWS CLI 프로파일에서 클러스터가 배포된 AWS 인프라 프로필이 결정됩니다. 다음 단계 중 하나에서 청구 AWS 프로파일이 선택됩니다.-profile stage
와 같이 표시되도록 -profile <profile_name HCP 클러스터를 사용하여 ROSA를 배포할 때 청구 AWS 계정을 지정해야 합니다.
그림 2.14. billing 계정을 지정합니다.
- Red Hat 계정에 로그인한 사용자 계정에 연결된 AWS 계정만 표시됩니다.
- 지정된 AWS 계정은 ROSA 서비스 사용에 대해 부과됩니다.
표시는 ROSA 계약이 지정된 AWS 청구 계정에 대해 활성화되었는지 여부를 나타냅니다.
- Contract가 활성화된 레이블을 표시하는 AWS 청구 계정을 선택하는 경우 사전 결제 계약 용량을 사용한 후에만 온디맨드 사용 요금이 부과됩니다.
- 계약 활성화 라벨이 없는 AWS 계정에는 해당 온디맨드 사용 요금이 부과됩니다.
추가 리소스
- 자세한 클러스터 배포 단계는 이 튜토리얼의 범위를 벗어납니다. CLI를 사용하여 HCP 클러스터 배포를 사용하여 ROSA를 완료하는 방법에 대한 자세한 내용은 기본 옵션을 사용하여 HCP 클러스터 생성 을 참조하십시오.
2.5. 웹 콘솔을 사용하여 클러스터를 배포하는 동안 HCP를 사용하는 ROSA의 AWS 청구 계정 선택 링크 복사링크가 클립보드에 복사되었습니다!
기본 설정 ROSA 페이지의 하단 섹션에서 두 번째 옵션을 선택하여 웹 콘솔을 사용하여 클러스터를 생성할 수 있습니다.
그림 2.15. 웹 인터페이스로 배포
참고웹 콘솔 배포 프로세스를 시작하기 전에 사전 요구 사항을 완료합니다.
계정 역할 생성과 같은 특정 작업에는
rosa
CLI가 필요합니다. ROSA를 처음 배포하는 경우 웹 콘솔 배포 단계를 시작하기 전에rosa whoami
명령을 실행할 때까지 CLI 단계를 수행합니다.웹 콘솔을 사용하여 ROSA 클러스터를 생성할 때 첫 번째 단계는 컨트롤 플레인 선택입니다. Next 버튼을 클릭하기 전에 Hosted 옵션이 선택되어 있는지 확인합니다.
그림 2.16. 호스팅 옵션 선택
다음 단계 계정 및 역할을 사용하면 ROSA 클러스터가 배포되고 리소스가 소비 및 관리되는 인프라 AWS 계정을 지정할 수 있습니다.
그림 2.17. AWS 인프라 계정
- 이 연결에 대한 계정 역할을 생성하거나 연결하는 방법에 대한 자세한 내용은 ROSA 클러스터를 배포하려는 계정이 표시되지 않는 경우 새 AWS 계정을 연결하는 방법을 클릭합니다.
-
rosa
CLI는 이를 위해 사용됩니다. -
여러 AWS 계정을 사용하고 AWS CLI에 대한 해당 프로필이 구성된 경우
--profile
선택기를 사용하여rosa
CLI 명령으로 작업할 때 AWS 프로필을 지정할 수 있습니다.
다음 섹션에서 청구 AWS 계정이 선택됩니다.
그림 2.18. AWS 청구 계정
- Red Hat 계정에 로그인한 사용자 계정에 연결된 AWS 계정만 표시됩니다.
- 지정된 AWS 계정은 ROSA 서비스 사용에 대해 부과됩니다.
표시는 ROSA 계약이 지정된 AWS 청구 계정에 대해 활성화되었는지 여부를 나타냅니다.
- Contract가 활성화된 레이블을 표시하는 AWS 청구 계정을 선택하는 경우 사전 결제 계약 용량을 사용한 후에만 온디맨드 사용 요금이 부과됩니다.
- 계약 활성화 라벨이 없는 AWS 계정에는 해당 온디맨드 사용 요금이 부과됩니다.
AWS 계정 선택 이후의 다음 단계는 이 튜토리얼의 범위를 벗어납니다.
추가 리소스
- CLI를 사용하여 클러스터를 생성하는 방법에 대한 자세한 내용은 CLI를 사용하여 HCP 클러스터로 ROSA 생성을 참조하십시오.
- 웹 콘솔을 사용하여 ROSA 클러스터 배포를 완료하는 방법에 대한 자세한 내용은 이 학습 경로를 참조하십시오.
3장. 튜토리얼: HCP 비공개를 사용하는 ROSA는 수락 및 공유를 제공합니다. 링크 복사링크가 클립보드에 복사되었습니다!
이 가이드에서는 호스팅된 컨트롤 플레인(HCP)을 사용하여 AWS(ROSA)의 Red Hat OpenShift Service에 대한 비공개 제안을 수락하는 방법과 모든 팀 멤버가 프로비저닝하는 클러스터에 대해 비공개 제안을 사용할 수 있도록 하는 방법을 설명합니다.
HCP 비용을 사용하는 ROSA는 AWS 인프라 비용과 HCP 서비스 비용이 포함된 ROSA로 구성됩니다. 필요한 워크로드를 실행하는 EC2 인스턴스와 같은 AWS 인프라 비용은 인프라가 배포된 AWS 계정으로 청구됩니다. ROSA 서비스 비용은 클러스터를 배포할 때 "AWS 청구 계정"으로 지정된 AWS 계정에 부과됩니다.
비용 구성 요소는 다른 AWS 계정으로 청구할 수 있습니다. ROSA 서비스 비용 및 AWS 인프라 비용 계산 방법에 대한 자세한 설명은 AWS 가격 책정 페이지의 Red Hat OpenShift Service에서 확인할 수 있습니다.
3.1. 비공개 제안 수락 링크 복사링크가 클립보드에 복사되었습니다!
HCP를 사용하는 ROSA에 대한 비공개 제안을 받으면 판매자가 지정한 특정 AWS 계정 ID로만 액세스할 수 있는 고유한 URL이 제공됩니다.
참고구매자로 지정된 AWS 계정을 사용하여 로그인했는지 확인합니다. 다른 AWS 계정을 사용하여 제안에 액세스하려고 하면 아래의 문제 해결 섹션에서 "페이지를 찾을 수 없음" 오류 메시지가 표시됩니다.
그림 1에서 미리 선택된 일반 개인 오퍼링을 사용하여 제안 선택 드롭다운 메뉴를 볼 수 있습니다. 이러한 유형의 제안은 HCP와 함께 ROSA가 공개 제안이나 다른 사적인 제안을 사용하기 전에 활성화되지 않은 경우에만 허용될 수 있습니다.
그림 3.1. 정기적인 개인 제공
공개 제안을 사용하여 HCP로 이전에 활성화된 ROSA를 사용하여 이전에 활성화된 AWS 계정에 대해 생성된 비공개 제안을 볼 수 있으며, 그림 2의 현재 ROSA에 대한 현재 실행 중인 계약을 대체하는 제품 이름 및 선택된 개인 제안을 "업그레이드"로 표시합니다.
그림 3.2. 개인 제안 선택 화면
드롭다운 메뉴에서는 사용 가능한 경우 여러 제안 중에서 선택할 수 있습니다. 이전에 활성화된 공개 제안은 그림 3에서 "업그레이드"로 표시된 새로 제공된 계약 기반 제안과 함께 표시됩니다.
그림 3.3. 개인 제안 선택 드롭다운
제안 구성이 선택되었는지 확인합니다. 그림 4는 제안 페이지의 하단과 함께 제안 세부 정보를 보여줍니다.
참고계약 종료일, 제안에 포함된 단위 수 및 결제 일정입니다. 이 예에서는 4개의 vCPU를 사용하는 클러스터 1개와 최대 3개의 노드가 포함됩니다.
그림 3.4. 개인 제공 세부 정보
선택 사항: 구매 중인 서브스크립션에 자체 구매 주문(PO) 번호를 추가할 수 있으므로 후속 AWS 송장에 포함됩니다. 또한 "New offer configuration details"의 범위 위에 있는 모든 사용에 대해 부과되는 "추가 사용 요금"을 확인하십시오.
참고개인 제공에는 몇 가지 사용 가능한 구성이 있습니다.
- 귀하가 수락하고 있는 개인 오퍼링은 고정된 향후 시작 날짜로 설정될 수 있습니다.
- 개인 제안을 수락할 때 HCP 서브스크립션이 있는 다른 활성 ROSA가 없는 경우, 공개 제안 또는 이전 개인 제안 인타이틀먼트를 수락하고, 비공개 제안을 수락하고, 지정된 서비스 시작일 이후에 계정 연결 및 클러스터 배포 단계를 계속합니다.
이러한 단계를 완료하려면 HCP 인타이틀먼트가 있는 활성 ROSA가 있어야 합니다. 서비스 시작 날짜는 항상 UTC 시간대에 보고됩니다.
계약을 생성하거나 업그레이드합니다.
HCP가 아직 활성화되어 있지 않고 이 서비스에 대한 첫 번째 계약을 생성하는 AWS 계정에서 수락한 개인 제공 사항의 경우 계약 생성 버튼을 클릭합니다.
그림 3.5. 계약 버튼 생성
계약 기반 제공의 경우 그림 4 및 6에 표시된 현재 계약 업그레이드 버튼을 클릭합니다.
그림 3.6. 업그레이드 계약 버튼
확인을 클릭합니다.
그림 3.7. 개인 제안 승인 확인 창
승인된 비공개 서비스 시작 날짜가 제안 수락 직후로 설정된 경우 확인 모달 창에서 계정 설정 버튼을 클릭합니다.
그림 3.8. 서브스크립션 확인
승인된 개인 제안에 향후 시작 날짜가 지정된 경우 서비스 시작일 이후 비공개 제안 페이지로 돌아가 계정 설정 버튼을 클릭하여 Red Hat 및 AWS 계정 연결을 진행합니다.
참고유효한 계약이 없으면 아래에 설명된 계정 링크가 트리거되지 않으며 "계정 설정" 프로세스는 "서비스 시작 날짜" 이후에만 수행할 수 있습니다.
항상 UTC 시간대입니다.
3.2. 개인 제안 공유 링크 복사링크가 클립보드에 복사되었습니다!
이전 단계에서 계정 설정 버튼을 클릭하면 AWS 및 Red Hat 계정 연결 단계로 이동합니다. 현재 해당 제안을 수락한 AWS 계정으로 이미 로그인되어 있습니다. Red Hat 계정으로 로그인하지 않은 경우 그렇게하라는 메시지가 표시됩니다.
ROSA with HCP 인타이틀먼트는 Red Hat 조직 계정을 통해 다른 팀 멤버와 공유됩니다. 동일한 Red Hat 조직의 기존 사용자는 위에 설명된 단계에 따라 개인 제안을 수락한 청구 AWS 계정을 선택할 수 있습니다. Red Hat 조직의 사용자를 관리하고 Red Hat 조직 관리자로 로그인하면 새 사용자를 초대하거나 생성할 수 있습니다.
참고HCP 개인 오퍼링을 사용하는 ROSA는 AWS License Manager를 통해 AWS 연결 계정과 공유할 수 없습니다.
- ROSA 클러스터를 배포하려는 사용자를 추가합니다. Red Hat 계정 사용자 관리 작업에 대한 자세한 내용은 이 사용자 관리 FAQ 를 확인하십시오.
- 이미 로그인한 Red Hat 계정에는 승인된 개인 제안의 혜택을 받는 ROSA 클러스터 배포자가 될 수 있는 모든 사용자가 포함되어 있는지 확인합니다.
Red Hat 계정 번호와 AWS 계정 ID가 연결되어야 하는 계정인지 확인합니다. 이 연결은 고유하며 Red Hat 계정은 단일 AWS(복제) 계정에만 연결할 수 있습니다.
그림 3.9. AWS 및 Red Hat 계정 연결
그림 9의 이 페이지에 표시된 것보다 다른 Red Hat 계정과 AWS 계정을 연결하려면 계정을 연결하기 전에 Red Hat Hybrid Cloud Console에서 로그아웃하고 이미 수락한 개인 제공 URL로 돌아가 계정을 설정하는 단계를 반복합니다.
AWS 계정은 단일 Red Hat 계정으로만 연결할 수 있습니다. Red Hat 및 AWS 계정이 연결되면 사용자가 변경할 수 없습니다. 변경이 필요한 경우 사용자가 지원 티켓을 생성해야 합니다.
- 이용 약관에 동의하고 계정 연결을 클릭합니다.
3.3. AWS 청구 계정 선택 링크 복사링크가 클립보드에 복사되었습니다!
- HCP 클러스터를 사용하여 ROSA를 배포할 때 최종 사용자가 비공개 제안을 수락한 AWS 청구 계정을 선택했는지 확인합니다.
HCP와 함께 ROSA를 배포하기 위해 웹 인터페이스를 사용하는 경우, Associated AWS 인프라 계정"은 일반적으로 생성 중인 클러스터 관리자가 사용하는 AWS 계정 ID로 설정됩니다.
- 이는 AWS 청구 계정과 동일한 AWS 계정일 수 있습니다.
AWS 리소스는 이 계정에 배포되며 해당 리소스와 연결된 모든 청구는 적절하게 처리됩니다.
그림 3.10. HCP 클러스터 배포를 통한 ROSA 중 AWS 계정 선택 인프라 및 청구
- 위의 스크린샷의 AWS 청구 계정의 드롭다운은 개인 제안을 수락한 AWS 계정으로 설정되어야 하며, 구매한 할당량을 생성하는 클러스터에서 사용할 수 있도록 제공됩니다. 인프라 및 청구 "roles"에서 다른 AWS 계정을 선택하면 그림 10에 표시되는 파란색 정보 노트가 표시됩니다.
3.4. 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
비공개와 관련된 가장 빈번한 문제는 수락 및 Red Hat 계정 연결을 제공합니다.
3.4.1. 다른 AWS 계정을 사용하여 개인 제안에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
해당 제안에 정의되지 않은 AWS 계정 ID에 로그인할 때 비공개 제안에 액세스하려고 하면 그림 11에 표시된 메시지를 확인한 다음 원하는 AWS 청구 계정으로 로그인했는지 확인합니다.
그림 3.11. 개인 제공 URL을 사용할 때 HTTP 404 오류
- 개인 제안을 다른 AWS 계정으로 확장해야 하는 경우 판매자에게 문의하십시오.
3.4.2. 활성 서브스크립션으로 인해 비공개 제안을 수락할 수 없습니다 링크 복사링크가 클립보드에 복사되었습니다!
HCP 활성화와 함께 ROSA가 처음으로 작성된 비공개 제안에 액세스하려고 하면, 이미 다른 공개 또는 사적인 제안을 사용하여 ROSA를 활성화한 상태에서 ROSA가 있는 경우 다음 공지를 참조하시기 바랍니다.
판매자는 이전 서브스크립션을 취소하지 않고도 현재 계약을 원활하게 대체할 새로운 제안을 제공할 수 있습니다.
그림 3.12. 개인 제안을 수락하지 않는 기존 서브스크립션
3.4.3. AWS 계정이 이미 다른 Red Hat 계정에 연결되어 있습니다. 링크 복사링크가 클립보드에 복사되었습니다!
현재 로그인된 Red Hat 사용자와 개인 제안을 수락한 AWS 계정을 연결하려고 할 때 "AWS 계정이 이미 다른 Red Hat 계정에 연결되어 있습니다."라는 오류 메시지가 표시되면 AWS 계정이 이미 다른 Red Hat 사용자에게 연결되어 있습니다.
그림 3.13. AWS 계정이 이미 다른 Red Hat 계정에 연결되어 있습니다.
다른 Red Hat 계정 또는 다른 AWS 계정을 사용하여 로그인할 수 있습니다.
- 그러나 이 안내서는 비공개 제안과 관련이 있으므로, 이는 귀하가 구매자로 지정된 AWS 계정으로 로그인하여 이미 비공개 제안을 수락했기 때문에 청구 계정으로 사용하도록 의도되었다는 가정입니다. 개인 제안을 수락한 후에는 다른 AWS 계정으로 로그인할 수 없습니다.
- 개인 제안을 수락한 AWS 계정에 이미 연결된 다른 Red Hat 사용자로 로그인할 수 있습니다. 그림 10과 같이 동일한 Red Hat 조직에 속한 다른 Red Hat 사용자는 클러스터를 생성할 때 ROSA와 HCP AWS 청구 계정으로 연결된 AWS 계정을 사용할 수 있습니다.
- 기존 계정 링크가 올바르지 않을 수 있다고 생각되면 아래의 "내 팀 멤버가 다른 Red Hat 조직에 속함" 질문을 참조하십시오.
3.4.4. 내 팀 구성원은 다른 Red Hat 조직에 속해 있습니다. 링크 복사링크가 클립보드에 복사되었습니다!
- AWS 계정은 단일 Red Hat 계정에만 연결할 수 있습니다. 클러스터를 생성하고 이 AWS 계정에 부여된 개인 제공의 혜택을 받으려면 모두 동일한 Red Hat 계정에 있어야 합니다. 이를 위해 사용자를 동일한 Red Hat 계정에 초대하고 새 Red Hat 사용자를 생성할 수 있습니다.
3.4.5. 클러스터를 생성할 때 잘못된 AWS 청구 계정이 선택됨 링크 복사링크가 클립보드에 복사되었습니다!
- 사용자가 잘못된 AWS 청구 계정을 선택한 경우 이를 해결하는 가장 빠른 방법은 클러스터를 삭제하고 올바른 AWS 청구 계정을 선택하는 동안 새 클러스터를 생성하는 것입니다.
- 쉽게 삭제할 수 없는 프로덕션 클러스터인 경우 Red Hat 지원팀에 문의하여 기존 클러스터의 청구 계정을 변경하십시오. 이 문제를 해결하기 위해 약간의 시간이 걸릴 것으로 예상됩니다.
4장. 튜토리얼: ROSA STS 배포에 대한 권한 확인 링크 복사링크가 클립보드에 복사되었습니다!
ROSA 클러스터 배포를 진행하려면 계정이 필요한 역할 및 권한을 지원해야 합니다. AWS 서비스 제어 정책(SCP)은 설치 프로그램 또는 Operator 역할에 의해 수행된 API 호출을 차단할 수 없습니다.
ROSA의 STS를 설치하는 데 필요한 IAM 리소스에 대한 세부 정보는 여기에서 확인할 수 있습니다. ROSA의 STS 지원 설치에 필요한 IAM 리소스에 대한 세부 정보는 여기에서 확인할 수 있습니다: STS를 사용하는 ROSA 클러스터의 IAM 리소스 정보
이 안내서는 ROSA v4.11.X에 대해 검증되었습니다.
4.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- AWS CLI
- ROSA CLI v1.2.6
- jq CLI
- 필요한 권한이 있는 AWS 역할
4.2. ROSA 권한 확인 링크 복사링크가 클립보드에 복사되었습니다!
ROSA에 필요한 권한을 확인하기 위해 AWS 리소스를 생성하지 않고도 다음 섹션에 포함된 스크립트를 실행할 수 있습니다.
이 스크립트는 rosa
,aws
및 jq
CLI 명령을 사용하여 현재 AWS 구성에 연결된 계정의 권한을 확인하는 데 사용할 작업 디렉터리에 파일을 생성합니다.
AWS 정책 시뮬레이터는 jq
에서 추출한 API 호출에 대해 각 역할 정책의 권한을 확인하는 데 사용됩니다. 결과는 .results
로 추가된 텍스트 파일에 저장됩니다.
이 스크립트는 현재 계정 및 지역에 대한 권한을 확인하도록 설계되었습니다.
4.3. usage instructions 링크 복사링크가 클립보드에 복사되었습니다!
스크립트를 사용하려면
bash
터미널에서 다음 명령을 실행합니다(-p 옵션은 역할에 대한 접두사를 정의합니다).Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스크립트가 완료되면 각 결과 파일을 검토하여 필요한 API 호출이 차단되지 않았는지 확인합니다.
for file in $(ls *.results); do echo $file; cat $file; done
$ for file in $(ls *.results); do echo $file; cat $file; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력은 다음과 유사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고작업이 차단되면 AWS에서 제공한 오류를 검토하고 관리자에게 문의하여 필요한 API 호출을 차단하는지 확인합니다.
5장. 튜토리얼: 사용자 정의 DNS 해결기를 사용하여 ROSA 배포 링크 복사링크가 클립보드에 복사되었습니다!
사용자 지정 DHCP 옵션 세트를 사용하면 자체 DNS 서버, 도메인 이름 등을 사용하여 VPC를 사용자 지정할 수 있습니다. ROSA(Red Hat OpenShift Service on AWS) 클러스터는 사용자 지정 DHCP 옵션 세트를 사용하여 지원합니다. 기본적으로 ROSA 클러스터에서는 클러스터 생성 및 작동을 위해 "도메인 이름 서버" 옵션을 AmazonProvidedDNS
로 설정해야 합니다. DNS 확인을 위해 사용자 지정 DNS 서버를 사용하려는 고객은 ROSA 클러스터 생성 및 작업을 성공적으로 수행하기 위해 추가 구성을 수행해야 합니다.
이 튜토리얼에서는 특정 DNS 영역에 대한 DNS 조회를 Amazon Route 53 인바운드 Resolver 에 전달하도록 DNS 서버를 구성합니다.
이 튜토리얼에서는 오픈 소스 BIND DNS 서버(named
)를 사용하여 ROSA 클러스터를 배포하려는 VPC에 있는 Amazon Route 53 Inbound Resolver에 DNS 조회를 전달하는 데 필요한 구성을 보여줍니다. 영역 전달을 구성하는 방법은 기본 DNS 서버에 대한 설명서를 참조하십시오.
5.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
-
ROSA CLI (
rosa
) -
AWS CLI (
aws
) - 수동으로 생성된 AWS VPC
- 사용자 지정 DNS 서버를 가리키도록 구성하고 VPC의 기본값으로 설정하도록 구성된 DHCP 옵션
5.2. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
다음 환경 변수를 구성합니다.
export VPC_ID=<vpc_ID> export REGION=<region> export VPC_CIDR=<vpc_CIDR>
$ export VPC_ID=<vpc_ID>
1 $ export REGION=<region>
2 $ export VPC_CIDR=<vpc_CIDR>
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 섹션으로 이동하기 전에 모든 필드가 올바르게 출력되는지 확인합니다.
echo "VPC ID: ${VPC_ID}, VPC CIDR Range: ${VPC_CIDR}, Region: ${REGION}"
$ echo "VPC ID: ${VPC_ID}, VPC CIDR Range: ${VPC_CIDR}, Region: ${REGION}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.3. Amazon Route 53 인바운드 Resolver 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 클러스터를 배포할 VPC에 Amazon Route 53 인바운드 Resolver 를 배포합니다.
이 예제에서는 클러스터가 사용할 동일한 VPC에 Amazon Route 53 Inbound Resolver를 배포합니다. 별도의 VPC에 배포하려면 클러스터 생성이 시작된 후 아래 설명된 프라이빗 호스팅 영역을 수동으로 연결해야 합니다. 클러스터 생성 프로세스가 시작되기 전에 영역을 연결할 수 없습니다. 클러스터 생성 프로세스 중에 프라이빗 호스팅 영역을 연결하지 않으면 클러스터 생성에 실패합니다.
보안 그룹을 생성하고 VPC에서 포트
53/tcp
및53/udp
에 대한 액세스를 허용합니다.SG_ID=$(aws ec2 create-security-group --group-name rosa-inbound-resolver --description "Security group for ROSA inbound resolver" --vpc-id ${VPC_ID} --region ${REGION} --output text) aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol tcp --port 53 --cidr ${VPC_CIDR} --region ${REGION} aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol udp --port 53 --cidr ${VPC_CIDR} --region ${REGION}
$ SG_ID=$(aws ec2 create-security-group --group-name rosa-inbound-resolver --description "Security group for ROSA inbound resolver" --vpc-id ${VPC_ID} --region ${REGION} --output text) $ aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol tcp --port 53 --cidr ${VPC_CIDR} --region ${REGION} $ aws ec2 authorize-security-group-ingress --group-id ${SG_ID} --protocol udp --port 53 --cidr ${VPC_CIDR} --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VPC에 Amazon Route 53 인바운드 Resolver를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고위의 명령은 동적으로 할당된 IP 주소를 사용하여 제공된 VPC의 모든 서브넷에 Amazon Route 53 Inbound Resolver 끝점을 연결합니다. 서브넷 및/또는 IP 주소를 수동으로 지정하려면 대신 다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- <
subnet_ID
>를 서브넷 ID로 바꾸고 <endpoint_IP
>를 인바운드 확인자 끝점에 추가하려는 고정 IP 주소로 바꿉니다.
DNS 서버 구성에서 구성할 인바운드 확인자 끝점의 IP 주소를 가져옵니다.
aws route53resolver list-resolver-endpoint-ip-addresses \ --resolver-endpoint-id ${RESOLVER_ID} \ --region=${REGION} \ --query 'IpAddresses[*].Ip'
$ aws route53resolver list-resolver-endpoint-ip-addresses \ --resolver-endpoint-id ${RESOLVER_ID} \ --region=${REGION} \ --query 'IpAddresses[*].Ip'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
[ "10.0.45.253", "10.0.23.131", "10.0.148.159" ]
[ "10.0.45.253", "10.0.23.131", "10.0.148.159" ]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. DNS 서버 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 필요한 프라이빗 호스팅 영역을 Amazon Route 53 Inbound Resolver로 전달하도록 DNS 서버를 구성합니다.
5.4.1. HCP를 사용하는 ROSA 링크 복사링크가 클립보드에 복사되었습니다!
HCP 클러스터를 사용하려면 두 개의 프라이빗 호스팅 영역에 대해 DNS 전달을 구성해야 합니다.
-
<cluster-name>.hypershift.local
-
rosa.<domain-prefix>.<unique-ID>.p3.openshiftapps.com
이러한 Amazon Route 53 개인 호스팅 영역은 클러스터 생성 중에 생성됩니다. cluster-name
및 domain-prefix
는 customer-specified 값이지만, unique-ID
는 클러스터 생성 중에 임의로 생성되며 사전 선택할 수 없습니다. 따라서 p3.openshiftapps.com
개인 호스팅 영역에 대한 전달을 구성하기 전에 클러스터 생성 프로세스가 시작될 때까지 기다려야 합니다.
클러스터가 생성되기 전에 <
cluster-name>.hypershift.local
에 대한 모든 DNS 요청을 Amazon Route 53 인바운드 Resolver 엔드포인트로 전달하도록 DNS 서버를 구성합니다. BIND DNS 서버의 경우 즐겨 찾는 텍스트 편집기에서/etc/named.conf
파일을 편집하고 다음 예제를 사용하여 새 영역을 추가합니다.예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 클러스터를 생성합니다.
클러스터가 생성 프로세스를 시작한 후 새로 생성된 개인 호스팅 영역을 찾습니다.
aws route53 list-hosted-zones-by-vpc \ --vpc-id ${VPC_ID} \ --vpc-region ${REGION} \ --query 'HostedZoneSummaries[*].Name' \ --output table
$ aws route53 list-hosted-zones-by-vpc \ --vpc-id ${VPC_ID} \ --vpc-region ${REGION} \ --query 'HostedZoneSummaries[*].Name' \ --output table
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고클러스터 생성 프로세스가 Route 53에서 개인 호스팅 영역을 생성하는 데 몇 분이 걸릴 수 있습니다.
p3.openshiftapps.com
도메인이 표시되지 않으면 몇 분 기다렸다가 명령을 다시 실행합니다.클러스터 도메인의 고유 ID를 알고 나면
rosa.<domain-prefix>.<unique-ID>.p3.openshiftapps.com
에 대한 모든 DNS 요청을 Amazon Route 53 인바운드 Resolver 엔드포인트로 전달하도록 DNS 서버를 구성합니다. BIND DNS 서버의 경우 즐겨 찾는 텍스트 편집기에서/etc/named.conf
파일을 편집하고 다음 예제를 사용하여 새 영역을 추가합니다.예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2. ROSA Classic 링크 복사링크가 클립보드에 복사되었습니다!
ROSA Classic 클러스터에서는 하나의 프라이빗 호스팅 영역에 대해 DNS 전달을 구성해야 합니다.
-
<domain-prefix>.<unique-ID>.p1.openshiftapps.com
이 Amazon Route 53 개인 호스팅 영역은 클러스터 생성 중에 생성됩니다. domain-prefix
는 customer-specified 값이지만, unique-ID
는 클러스터 생성 중에 임의로 생성되며 사전 선택할 수 없습니다. 따라서 p1.openshiftapps.com
개인 호스팅 영역에 대한 전달을 구성하기 전에 클러스터 생성 프로세스가 시작될 때까지 기다려야 합니다.
- 클러스터를 생성합니다.
클러스터가 생성 프로세스를 시작한 후 새로 생성된 개인 호스팅 영역을 찾습니다.
aws route53 list-hosted-zones-by-vpc \ --vpc-id ${VPC_ID} \ --vpc-region ${REGION} \ --query 'HostedZoneSummaries[*].Name' \ --output table
$ aws route53 list-hosted-zones-by-vpc \ --vpc-id ${VPC_ID} \ --vpc-region ${REGION} \ --query 'HostedZoneSummaries[*].Name' \ --output table
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
---------------------------------------------- | ListHostedZonesByVPC | +--------------------------------------------+ | domain-prefix.agls.p3.openshiftapps.com. | +--------------------------------------------+
---------------------------------------------- | ListHostedZonesByVPC | +--------------------------------------------+ | domain-prefix.agls.p3.openshiftapps.com. | +--------------------------------------------+
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고클러스터 생성 프로세스가 Route 53에서 개인 호스팅 영역을 생성하는 데 몇 분이 걸릴 수 있습니다.
p1.openshiftapps.com
도메인이 표시되지 않으면 몇 분 정도 기다린 후 명령을 다시 실행합니다.클러스터 도메인의 고유 ID를 알고 나면 <
domain-prefix>.<unique-ID>.p1.openshiftapps.com
에 대한 모든 DNS 요청을 Amazon Route 53 인바운드 Resolver 엔드포인트로 전달하도록 DNS 서버를 구성합니다. BIND DNS 서버의 경우 즐겨 찾는 텍스트 편집기에서/etc/named.conf
파일을 편집하고 다음 예제를 사용하여 새 영역을 추가합니다.예제
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6장. 튜토리얼: AWS WAF 및 Amazon CloudFront를 사용하여 ROSA 워크로드를 보호 링크 복사링크가 클립보드에 복사되었습니다!
AWS WAF는 보호된 웹 애플리케이션 리소스로 전달되는 HTTP 및 HTTPS 요청을 모니터링할 수 있는 웹 애플리케이션 방화벽입니다.
Amazon CloudFront를 사용하여 AWS(ROSA)의 Red Hat OpenShift Service에WAF(Web Application Firewall)를 추가할 수 있습니다. 외부 솔루션을 사용하면 ROSA 리소스가 WAF 처리로 인해 서비스 거부가 발생하지 않도록 보호합니다.
6.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- ROSA(HCP 또는 Classic) 클러스터입니다.
-
OpenShift CLI(
oc
)에 액세스할 수 있습니다. -
AWS CLI(
aws
)에 액세스할 수 있습니다.
6.1.1. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
IngressController
에 사용할 사용자 정의 도메인으로 바꿉니다.
참고이전 명령의 "클러스터" 출력은 클러스터의 이름, 클러스터의 내부 ID 또는 클러스터의 도메인 접두사가 될 수 있습니다. 다른 식별자를 사용하려는 경우 다음 명령을 실행하여 이 값을 수동으로 설정할 수 있습니다.
export CLUSTER=my-custom-value
$ export CLUSTER=my-custom-value
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. 보조 수신 컨트롤러 설정 링크 복사링크가 클립보드에 복사되었습니다!
외부 WAF로 보호된 트래픽을 표준(및 기본) 클러스터 인그레스 컨트롤러에서 분할하도록 보조 수신 컨트롤러를 구성해야 합니다.
사전 요구 사항
CN=*.apps.example.com
과 같이 사용자 지정 도메인에 대해 공개적으로 신뢰할 수 있는 SAN 또는 와일드카드 인증서중요Amazon CloudFront는 HTTPS를 사용하여 클러스터의 보조 수신 컨트롤러와 통신합니다. Amazon CloudFront 설명서에서 설명한 대로 CloudFront 와 클러스터 간의 HTTPS 통신에 자체 서명된 인증서를 사용할 수 없습니다. Amazon CloudFront는 인증서가 신뢰할 수 있는 인증 기관에서 발행했는지 확인합니다.
프로세스
개인 키와 공개 인증서에서 새 TLS 시크릿을 만듭니다. 여기서
fullchain.pem
은 전체 와일드카드 인증서 체인(개체 포함)이고privkey.pem
은 와일드카드 인증서의 개인 키입니다.예제
oc -n openshift-ingress create secret tls waf-tls --cert=fullchain.pem --key=privkey.pem
$ oc -n openshift-ingress create secret tls waf-tls --cert=fullchain.pem --key=privkey.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새
IngressController
리소스를 생성합니다.예:
waf-ingress-controller.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IngressController
를 적용합니다.예제
oc apply -f waf-ingress-controller.yaml
$ oc apply -f waf-ingress-controller.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IngressController가 외부 로드 밸런서를 성공적으로 생성했는지 확인합니다.
oc -n openshift-ingress get service/router-cloudfront-waf
$ oc -n openshift-ingress get service/router-cloudfront-waf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-cloudfront-waf LoadBalancer 172.30.16.141 a68a838a7f26440bf8647809b61c4bc8-4225395f488830bd.elb.us-east-1.amazonaws.com 80:30606/TCP,443:31065/TCP 2m19s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-cloudfront-waf LoadBalancer 172.30.16.141 a68a838a7f26440bf8647809b61c4bc8-4225395f488830bd.elb.us-east-1.amazonaws.com 80:30606/TCP,443:31065/TCP 2m19s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2.1. AWS WAF 구성 링크 복사링크가 클립보드에 복사되었습니다!
AWS WAF 서비스는 ROSA와 같이 보호된 웹 애플리케이션 리소스로 전달되는 HTTP 및 HTTPS 요청을 모니터링, 보호 및 제어할 수 있는 웹 애플리케이션 방화벽입니다.
웹 ACL에 적용할 AWS WAF 규칙 파일을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그러면 코어(Common) 및 SQL AWS 관리 규칙 세트가 활성화됩니다.
위에서 지정한 규칙을 사용하여 AWS WAF 웹 ACL을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. Amazon CloudFront 구성 링크 복사링크가 클립보드에 복사되었습니다!
새로 생성된 사용자 정의 수신 컨트롤러의 NLB 호스트 이름을 검색합니다.
NLB=$(oc -n openshift-ingress get service router-cloudfront-waf \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
$ NLB=$(oc -n openshift-ingress get service router-cloudfront-waf \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인증서를 Amazon Certificate Manager로 가져옵니다. 여기서
cert.pem
은 와일드카드 인증서인fullchain.pem
은 와일드카드 인증서의 체인이고privkey.pem
은 와일드카드 인증서의 개인 키입니다.참고클러스터가 배포된 리전에 관계없이 Amazon CloudFront가 글로벌 AWS 서비스이므로 이 인증서를
us-east-1
로 가져와야 합니다.예제
aws acm import-certificate --certificate file://cert.pem \ --certificate-chain file://fullchain.pem \ --private-key file://privkey.pem \ --region us-east-1
$ aws acm import-certificate --certificate file://cert.pem \ --certificate-chain file://fullchain.pem \ --private-key file://privkey.pem \ --region us-east-1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - AWS 콘솔에 로그인하여 CloudFront 배포를 생성합니다.
다음 정보를 사용하여 CloudFront 배포를 구성합니다.
참고아래 표에 옵션을 지정하지 않으면 기본값(빈일 수 있음)을 그대로 둡니다.
Expand 옵션 현재의 원본 도메인
이전 명령의 출력 [1]
이름
rosa-waf-ingress [2]
뷰어 프로토콜 정책
HTTP를 HTTPS로 리디렉션
허용되는 HTTP 메서드
GET, HEAD, OPTIONS, PUT, POST, PATCH, DELETE
캐시 정책
CachingDisabled
원본 요청 정책
AllViewer
웹 애플리케이션 방화벽(WAF)
보안 보호 활성화
기존 WAF 구성 사용
true
웹 ACL 선택
cloudfront-waf
대체 도메인 이름(CNAME)
*.apps.example.com [3]
사용자 정의 SSL 인증서
위 단계에서 가져온 인증서를 선택합니다 [4]
-
echo ${NLB}
를 실행하여 원본 도메인을 가져옵니다. - 클러스터가 여러 개인 경우 원본 이름이 고유해야 합니다.
- 사용자 정의 수신 컨트롤러를 생성하는 데 사용한 와일드카드 도메인과 일치해야 합니다.
- 이는 위에서 입력한 대체 도메인 이름과 일치해야 합니다.
-
Amazon CloudFront 배포 끝점을 검색합니다.
aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[?DomainName=='${NLB}']].DomainName" --output text
$ aws cloudfront list-distributions --query "DistributionList.Items[?Origins.Items[?DomainName=='${NLB}']].DomainName" --output text
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 위의 단계에서 CNAME을 사용하여 사용자 지정 와일드카드 도메인의 DNS를 Amazon CloudFront 배포 엔드포인트로 업데이트합니다.
예제
*.apps.example.com CNAME d1b2c3d4e5f6g7.cloudfront.net
*.apps.example.com CNAME d1b2c3d4e5f6g7.cloudfront.net
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4. 샘플 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 샘플 애플리케이션에 대한 새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hello world 애플리케이션을 배포합니다.
oc -n hello-world new-app --image=docker.io/openshift/hello-openshift
$ oc -n hello-world new-app --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 정의 도메인 이름을 지정하는 애플리케이션의 경로를 생성합니다.
예제
oc -n hello-world create route edge --service=hello-openshift hello-openshift-tls \ --hostname hello-openshift.${DOMAIN}
$ oc -n hello-world create route edge --service=hello-openshift hello-openshift-tls \ --hostname hello-openshift.${DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이를 사용자 정의 Ingress 컨트롤러에 승인하도록 경로에 레이블을 지정합니다.
oc -n hello-world label route.route.openshift.io/hello-openshift-tls route=waf
$ oc -n hello-world label route.route.openshift.io/hello-openshift-tls route=waf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.5. WAF 테스트 링크 복사링크가 클립보드에 복사되었습니다!
Amazon CloudFront에서 앱에 액세스할 수 있는지 테스트합니다.
예제
curl "https://hello-openshift.${DOMAIN}"
$ curl "https://hello-openshift.${DOMAIN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow WAF가 잘못된 요청을 거부했는지 테스트합니다.
예제
curl -X POST "https://hello-openshift.${DOMAIN}" \ -F "user='<script><alert>Hello></alert></script>'"
$ curl -X POST "https://hello-openshift.${DOMAIN}" \ -F "user='<script><alert>Hello></alert></script>'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 결과적으로
403 ERROR
가 됩니다. 즉, AWS WAF가 애플리케이션을 보호하고 있습니다.
7장. 튜토리얼: AWS WAF 및 AWS ALB를 사용하여 ROSA 워크로드를 보호 링크 복사링크가 클립보드에 복사되었습니다!
AWS WAF는 보호된 웹 애플리케이션 리소스로 전달되는 HTTP 및 HTTPS 요청을 모니터링할 수 있는 웹 애플리케이션 방화벽입니다.
AWS Application Load Balancer(ALB)를 사용하여 AWS(ROSA) 워크로드의 Red Hat OpenShift Service에WAF(Web Application Firewall)를 추가할 수 있습니다. 외부 솔루션을 사용하면 ROSA 리소스가 WAF 처리로 인해 서비스 거부가 발생하지 않도록 보호합니다.
ALB 기반 솔루션을 사용해야 하는 경우를 제외하고 더 유연한 CloudFront 방법을 사용하는 것이 좋습니다.
7.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
AZ(여러 가용성 영역) ROSA(HCP 또는 Classic) 클러스터.
참고AWS ALB에는 AWS 문서에 따라 AZ에 두 개 이상의 퍼블릭 서브넷이 필요합니다. 이러한 이유로 ALB와 함께 여러 AZ ROSA 클러스터만 사용할 수 있습니다.
-
OpenShift CLI(
oc
)에 액세스할 수 있습니다. -
AWS CLI(
aws
)에 액세스할 수 있습니다.
7.1.1. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.1.2. AWS VPC 및 서브넷 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션은 기존 VPC에 배포된 클러스터에만 적용됩니다. 클러스터를 기존 VPC에 배포하지 않은 경우 이 섹션을 건너뛰고 아래의 설치 섹션을 진행합니다.
다음 변수를 ROSA 배포의 적절한 값으로 설정합니다.
export VPC_ID=<vpc-id> export PUBLIC_SUBNET_IDS=(<space-separated-list-of-ids>) export PRIVATE_SUBNET_IDS=(<space-separated-list-of-ids>)
$ export VPC_ID=<vpc-id>
1 $ export PUBLIC_SUBNET_IDS=(<space-separated-list-of-ids>)
2 $ export PRIVATE_SUBNET_IDS=(<space-separated-list-of-ids>)
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 클러스터의 VPC ID로 바꿉니다(예:
export VPC_ID=vpc-04c429b7dbc4680ba
). - 2
- 을 클러스터의 프라이빗 서브넷 ID로 공백으로 구분된 목록으로 교체하여
()
를 유지해야 합니다. 예:PUBLIC_SUBNET_IDS=(subnet-056fd6861ad332ba2 subnet-08ce3b4ec753fe74c subnet-071a28228664972f)
. - 3
- 을 클러스터의 프라이빗 서브넷 ID로 공백으로 구분된 목록으로 교체하여
()
를 유지해야 합니다. 예:PRIVATE_SUBNET_IDS=(subnet-0b933d72a8d72c36a subnet-0817eb72070f1d3c2 subnet-0806e64159b66665a)
.
클러스터 ID가 있는 클러스터의 VPC에 태그를 추가합니다.
aws ec2 create-tags --resources ${VPC_ID} \ --tags Key=kubernetes.io/cluster/${CLUSTER},Value=shared --region ${REGION}
$ aws ec2 create-tags --resources ${VPC_ID} \ --tags Key=kubernetes.io/cluster/${CLUSTER},Value=shared --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 퍼블릭 서브넷에 태그를 추가합니다.
aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
$ aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프라이빗 서브넷에 태그를 추가합니다.
aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
$ aws ec2 create-tags \ --resources ${PRIVATE_SUBNET_IDS} \ --tags Key=kubernetes.io/role/internal-elb,Value='1' \ Key=kubernetes.io/cluster/${CLUSTER},Value=shared \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2. AWS Load Balancer Operator 배포 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator 는 ROSA 클러스터에서 aws-load-balancer-controller
인스턴스를 설치, 관리 및 구성하는 데 사용됩니다. ROSA에 ALB를 배포하려면 먼저 AWS Load Balancer Operator를 배포해야 합니다.
다음 명령을 실행하여 AWS Load Balancer Operator를 배포할 새 프로젝트를 생성합니다.
oc new-project aws-load-balancer-operator
$ oc new-project aws-load-balancer-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 AWS Load Balancer Controller에 대한 AWS IAM 정책을 생성합니다.
참고정책은 업스트림 AWS Load Balancer 컨트롤러 정책에서 가져옵니다. 이 작업은 Operator가 작동해야 합니다.
POLICY_ARN=$(aws iam list-policies --query \ "Policies[?PolicyName=='aws-load-balancer-operator-policy'].{ARN:Arn}" \ --output text)
$ POLICY_ARN=$(aws iam list-policies --query \ "Policies[?PolicyName=='aws-load-balancer-operator-policy'].{ARN:Arn}" \ --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator에 대한 AWS IAM 신뢰 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator에 대한 AWS IAM 역할을 생성합니다.
ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER}-alb-operator" \ --assume-role-policy-document "file://${SCRATCH}/trust-policy.json" \ --query Role.Arn --output text)
$ ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER}-alb-operator" \ --assume-role-policy-document "file://${SCRATCH}/trust-policy.json" \ --query Role.Arn --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 AWS Load Balancer Operator 정책을 이전에 생성한 IAM 역할에 연결합니다.
aws iam attach-role-policy --role-name "${CLUSTER}-alb-operator" \ --policy-arn ${POLICY_ARN}
$ aws iam attach-role-policy --role-name "${CLUSTER}-alb-operator" \ --policy-arn ${POLICY_ARN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator가 새로 생성된 AWS IAM 역할을 가정할 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator를 설치합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator를 사용하여 AWS Load Balancer 컨트롤러 인스턴스를 배포합니다.
참고여기에서 오류가 발생하면 1분 정도 기다린 후 다시 시도하면 Operator가 아직 설치를 완료하지 않은 것입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator 및 컨트롤러 Pod가 둘 다 실행 중인지 확인합니다.
oc -n aws-load-balancer-operator get pods
$ oc -n aws-load-balancer-operator get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 잠시 대기하지 않고 다시 시도하면 다음이 표시됩니다.
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3. 샘플 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
샘플 애플리케이션을 위한 새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hello world 애플리케이션을 배포합니다.
oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사전 생성된 서비스 리소스를 NodePort 서비스 유형으로 변환합니다.
oc -n hello-world patch service hello-openshift -p '{"spec":{"type":"NodePort"}}'
$ oc -n hello-world patch service hello-openshift -p '{"spec":{"type":"NodePort"}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator를 사용하여 AWS ALB를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS ALB Ingress 끝점을 curl하여 hello world 애플리케이션에 액세스할 수 있는지 확인합니다.
참고AWS ALB 프로비저닝에는 몇 분이 걸립니다.
curl: (6) 호스트를 해결할 수 없는
오류가 발생하면 기다렸다가 다시 시도하십시오.INGRESS=$(oc -n hello-world get ingress hello-openshift-alb -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${INGRESS}"
$ INGRESS=$(oc -n hello-world get ingress hello-openshift-alb -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${INGRESS}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3.1. AWS WAF 구성 링크 복사링크가 클립보드에 복사되었습니다!
AWS WAF 서비스는 ROSA와 같이 보호된 웹 애플리케이션 리소스로 전달되는 HTTP 및 HTTPS 요청을 모니터링, 보호 및 제어할 수 있는 웹 애플리케이션 방화벽입니다.
웹 ACL에 적용할 AWS WAF 규칙 파일을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그러면 코어(Common) 및 SQL AWS 관리 규칙 세트가 활성화됩니다.
위에서 지정한 규칙을 사용하여 AWS WAF 웹 ACL을 만듭니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS WAF Web ACL ARN으로 Ingress 리소스에 주석을 답니다.
oc annotate -n hello-world ingress.networking.k8s.io/hello-openshift-alb \ alb.ingress.kubernetes.io/wafv2-acl-arn=${WAF_ARN}
$ oc annotate -n hello-world ingress.networking.k8s.io/hello-openshift-alb \ alb.ingress.kubernetes.io/wafv2-acl-arn=${WAF_ARN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 규칙이 전파되고 앱이 여전히 작동하는지 테스트할 때까지 10초 동안 기다립니다.
curl "http://${INGRESS}"
$ curl "http://${INGRESS}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow WAF가 잘못된 요청을 거부했는지 테스트합니다.
curl -X POST "http://${INGRESS}" \ -F "user='<script><alert>Hello></alert></script>'"
$ curl -X POST "http://${INGRESS}" \ -F "user='<script><alert>Hello></alert></script>'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고AWS WAF 통합 활성화에는 몇 분이 걸릴 수 있습니다.
403 Forbidden
오류가 표시되지 않으면 몇 초 기다렸다가 다시 시도하십시오.예상되는 결과는
403 Forbidden
오류이며 이는 AWS WAF가 애플리케이션을 보호하고 있음을 의미합니다.
8장. 튜토리얼: ROSA 클러스터에 데이터 보호를 위한 OpenShift API 배포 링크 복사링크가 클립보드에 복사되었습니다!
이 콘텐츠는 Red Hat 전문가가 작성했지만 지원되는 모든 구성에서 테스트되지 않았습니다.
사전 요구 사항
환경
환경 변수를 준비합니다.
참고ROSA 클러스터와 일치하도록 클러스터 이름을 변경하고 관리자로 클러스터에 로그인했는지 확인합니다. 계속 진행하기 전에 모든 필드가 올바르게 출력되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.1. AWS 계정 준비 링크 복사링크가 클립보드에 복사되었습니다!
S3 액세스를 위해 허용할 IAM 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터에 대한 IAM 역할 신뢰 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow IAM 역할에 IAM 정책을 연결합니다.
aws iam attach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn ${POLICY_ARN}
$ aws iam attach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn ${POLICY_ARN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. 클러스터에 OADP 배포 링크 복사링크가 클립보드에 복사되었습니다!
OADP의 네임스페이스를 생성합니다.
oc create namespace openshift-adp
$ oc create namespace openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인증 정보 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- &
lt;aws_region
>을 STS(Security Token Service) 끝점에 사용할 AWS 리전으로 바꿉니다.
OADP Operator를 배포합니다.
참고현재
PartiallyFailed
상태인 백업에 대한 버전 1.1에 문제가 있습니다. 이는 백업 및 복원 프로세스에 영향을 미치지 않지만 문제가 있으므로 주의해야 합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator가 준비될 때까지 기다립니다.
watch oc -n openshift-adp get pods
$ watch oc -n openshift-adp get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE openshift-adp-controller-manager-546684844f-qqjhn 1/1 Running 0 22s
NAME READY STATUS RESTARTS AGE openshift-adp-controller-manager-546684844f-qqjhn 1/1 Running 0 22s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클라우드 스토리지를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션의 스토리지 기본 스토리지 클래스를 확인합니다.
oc get pvc -n <namespace>
$ oc get pvc -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 애플리케이션 네임스페이스를 입력합니다.
출력 예
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE applog Bound pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8 1Gi RWO gp3-csi 4d19h mysql Bound pvc-16b8e009-a20a-4379-accc-bc81fedd0621 1Gi RWO gp3-csi 4d19h
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE applog Bound pvc-351791ae-b6ab-4e8b-88a4-30f73caf5ef8 1Gi RWO gp3-csi 4d19h mysql Bound pvc-16b8e009-a20a-4379-accc-bc81fedd0621 1Gi RWO gp3-csi 4d19h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc get storageclass
$ oc get storageclass
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 4d21h gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3 ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE gp2 kubernetes.io/aws-ebs Delete WaitForFirstConsumer true 4d21h gp2-csi ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3 ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h gp3-csi (default) ebs.csi.aws.com Delete WaitForFirstConsumer true 4d21h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow gp3-csi, gp2-csi, gp3 또는 gp2 중 하나를 사용합니다. 백업 중인 애플리케이션이 모두 PV의 CSI를 사용하는 경우 OADP DPA 구성에 CSI 플러그인을 포함합니다.
CSI만 해당: 데이터 보호 애플리케이션을 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고CSI 볼륨에 대해 이 명령을 실행하는 경우 다음 단계를 건너뛸 수 있습니다.
CSI가 아닌 볼륨: 데이터 보호 애플리케이션을 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
OADP 1.1.x ROSA STS 환경에서는 컨테이너 이미지 백업 및 복원(
spec.backupImages
) 값을 지원되지 않으므로false
로 설정해야 합니다. -
Restic 기능(
restic.enable=false
)은 비활성화되어 ROSA STS 환경에서 지원되지 않습니다. -
DataMover 기능(
dataMover.enable=false
)은 비활성화되어 ROSA STS 환경에서 지원되지 않습니다.
8.3. 백업 수행 링크 복사링크가 클립보드에 복사되었습니다!
다음 샘플 hello-world 애플리케이션에는 연결된 영구 볼륨이 없습니다. DPA 구성이 작동합니다.
백업할 워크로드를 생성합니다.
oc create namespace hello-world oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc create namespace hello-world $ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 경로를 노출합니다.
oc expose service/hello-openshift -n hello-world
$ oc expose service/hello-openshift -n hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션이 작동하는지 확인합니다.
curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 워크로드를 백업합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백업이 완료될 때까지 기다립니다.
watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 데모 워크로드를 삭제합니다.
oc delete ns hello-world
$ oc delete ns hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 백업에서 복원:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 복원이 완료될 때까지 기다립니다.
watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
$ watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 워크로드가 복원되었는지 확인합니다.
oc -n hello-world get pods
$ oc -n hello-world get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90s
NAME READY STATUS RESTARTS AGE hello-openshift-9f885f7c6-kdjpj 1/1 Running 0 90s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
$ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 문제 해결 팁은 OADP 팀의 문제 해결 설명서를 참조하십시오.
- 추가 샘플 애플리케이션은 OADP 팀의 샘플 애플리케이션 디렉터리에서확인할 수 있습니다.
8.4. cleanup 링크 복사링크가 클립보드에 복사되었습니다!
워크로드를 삭제합니다.
oc delete ns hello-world
$ oc delete ns hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 더 이상 필요하지 않은 경우 클러스터에서 백업을 제거하고 리소스를 복원합니다.
oc delete backups.velero.io hello-world oc delete restores.velero.io hello-world
$ oc delete backups.velero.io hello-world $ oc delete restores.velero.io hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow s3에서 백업/복원 및 원격 개체를 삭제하려면 다음을 수행합니다.
velero backup delete hello-world velero restore delete hello-world
$ velero backup delete hello-world $ velero restore delete hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 데이터 보호 애플리케이션 삭제:
oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa
$ oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클라우드 스토리지를 삭제합니다.
oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp
$ oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주의이 명령이 중단되면 종료자를 삭제해야 할 수 있습니다.
oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge
$ oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 더 이상 필요하지 않은 경우 Operator를 제거합니다.
oc -n openshift-adp delete subscription oadp-operator
$ oc -n openshift-adp delete subscription oadp-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator의 네임스페이스를 제거합니다.
oc delete ns redhat-openshift-adp
$ oc delete ns redhat-openshift-adp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 더 이상 사용하지 않으려면 클러스터에서 사용자 정의 리소스 정의를 제거합니다.
for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done $ for CRD in `oc get crds | grep -i oadp | awk '{print $1}'`; do oc delete crd $CRD; done
$ for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done $ for CRD in `oc get crds | grep -i oadp | awk '{print $1}'`; do oc delete crd $CRD; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS S3 버킷을 삭제합니다.
aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp
$ aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive $ aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 역할에서 정책을 분리합니다.
aws iam detach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn "${POLICY_ARN}"
$ aws iam detach-role-policy --role-name "${ROLE_NAME}" \ --policy-arn "${POLICY_ARN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 역할을 삭제합니다.
aws iam delete-role --role-name "${ROLE_NAME}"
$ aws iam delete-role --role-name "${ROLE_NAME}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9장. 튜토리얼: AWS Load Balancer Operator on ROSA 링크 복사링크가 클립보드에 복사되었습니다!
이 콘텐츠는 Red Hat 전문가가 작성했지만 지원되는 모든 구성에서 테스트되지 않았습니다.
AWS Load Balancer Operator에서 생성한 로드 밸런서는 OpenShift 경로에 사용할 수 없으며 OpenShift 경로 의 전체 계층 7 기능이 필요하지 않은 개별 서비스 또는 인그레스 리소스에만 사용해야 합니다.
AWS Load Balancer 컨트롤러는 AWS(ROSA) 클러스터에서 Red Hat OpenShift Service의 AWS Elastic Load Balancer를 관리합니다. 컨트롤러는 LoadBalancer 유형의 Kubernetes 서비스 리소스를 구현할 때 Kubernetes Ingress 리소스 및 AWS NLB(Network Load Balancer)를 생성할 때 AWS Application Load Balancer( ALB )를 프로비저닝합니다.
기본 AWS in-tree 로드 밸런서 공급자와 비교하여 이 컨트롤러는 ALB 및 NLB 모두에 대한 고급 주석으로 개발됩니다. 일부 고급 사용 사례는 다음과 같습니다.
- ALB에서 네이티브 Kubernetes Ingress 오브젝트 사용
- ALB를 AWS Web Application Firewall(WAF) 서비스와 통합
- 사용자 정의 NLB 소스 IP 범위 지정
- 사용자 정의 NLB 내부 IP 주소 지정
AWS Load Balancer Operator 는 ROSA 클러스터에서 aws-load-balancer-controller
인스턴스를 설치, 관리 및 구성하는 데 사용됩니다.
9.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
AWS ALB에는 멀티 AZ 클러스터와 동일한 VPC의 동일한 VPC에서 3개의 퍼블릭 서브넷이 분할되어 있어야 합니다. 이로 인해 많은 PrivateLink 클러스터에 ALB가 적합하지 않습니다. AWS NLB에는 이러한 제한이 없습니다.
- 다중 AZ ROSA 클래식 클러스터
- BYO VPC 클러스터
- AWS CLI
- OC CLI
9.1.1. 환경 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.1.2. AWS VPC 및 서브넷 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션은 기존 VPC에 배포된 클러스터에만 적용됩니다. 클러스터를 기존 VPC에 배포하지 않은 경우 이 섹션을 건너뛰고 아래의 설치 섹션을 진행합니다.
다음 변수를 ROSA 배포의 적절한 값으로 설정합니다.
export VPC_ID=<vpc-id> export PUBLIC_SUBNET_IDS=<public-subnets> export PRIVATE_SUBNET_IDS=<private-subnets> export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}")
$ export VPC_ID=<vpc-id> $ export PUBLIC_SUBNET_IDS=<public-subnets> $ export PRIVATE_SUBNET_IDS=<private-subnets> $ export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터 이름을 사용하여 클러스터의 VPC에 태그를 추가합니다.
aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}
$ aws ec2 create-tags --resources ${VPC_ID} --tags Key=kubernetes.io/cluster/${CLUSTER_NAME},Value=owned --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 퍼블릭 서브넷에 태그를 추가합니다.
aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='' \ --region ${REGION}
$ aws ec2 create-tags \ --resources ${PUBLIC_SUBNET_IDS} \ --tags Key=kubernetes.io/role/elb,Value='' \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프라이빗 서브넷에 태그를 추가합니다.
aws ec2 create-tags \ --resources "${PRIVATE_SUBNET_IDS}" \ --tags Key=kubernetes.io/role/internal-elb,Value='' \ --region ${REGION}
$ aws ec2 create-tags \ --resources "${PRIVATE_SUBNET_IDS}" \ --tags Key=kubernetes.io/role/internal-elb,Value='' \ --region ${REGION}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.2. 설치 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Controller에 대한 AWS IAM 정책을 생성합니다.
참고이 정책은 업스트림 AWS Load Balancer 컨트롤러 정책과 서브넷에 태그를 생성할 수 있는 권한을 통해 제공됩니다. 이 작업은 Operator가 작동해야 합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator에 대한 AWS IAM 신뢰 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator에 대한 AWS IAM 역할을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator가 새로 생성된 AWS IAM 역할을 가정할 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator를 설치합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator를 사용하여 AWS Load Balancer 컨트롤러 인스턴스를 배포합니다.
참고여기에서 오류가 발생하면 1분 정도 기다린 후 다시 시도하면 Operator가 아직 설치를 완료하지 않은 것입니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator 및 컨트롤러 Pod가 둘 다 실행 중인지 확인합니다.
oc -n aws-load-balancer-operator get pods
$ oc -n aws-load-balancer-operator get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 잠시 대기하지 않고 다시 시도하면 다음이 표시됩니다.
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
NAME READY STATUS RESTARTS AGE aws-load-balancer-controller-cluster-6ddf658785-pdp5d 1/1 Running 0 99s aws-load-balancer-operator-controller-manager-577d9ffcb9-w6zqn 2/2 Running 0 2m4s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.3. 배포 검증 링크 복사링크가 클립보드에 복사되었습니다!
새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hello world 애플리케이션을 배포합니다.
oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS ALB에 연결하도록 NodePort 서비스를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator를 사용하여 AWS ALB를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS ALB Ingress 끝점을 curl하여 hello world 애플리케이션에 액세스할 수 있는지 확인합니다.
참고AWS ALB 프로비저닝에는 몇 분이 걸립니다.
curl: (6) 호스트를 해결할 수 없는
오류가 발생하면 기다렸다가 다시 시도하십시오.INGRESS=$(oc -n hello-world get ingress hello-openshift-alb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${INGRESS}"
$ INGRESS=$(oc -n hello-world get ingress hello-openshift-alb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${INGRESS}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hello world 애플리케이션에 사용할 AWS NLB를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS NLB 끝점을 테스트합니다.
참고NLB 프로비저닝에는 몇 분이 걸립니다.
curl: (6) 호스트를 해결할 수 없는
오류가 발생하면 기다렸다가 다시 시도하십시오.NLB=$(oc -n hello-world get service hello-openshift-nlb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') curl "http://${NLB}"
$ NLB=$(oc -n hello-world get service hello-openshift-nlb \ -o jsonpath='{.status.loadBalancer.ingress[0].hostname}') $ curl "http://${NLB}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
9.4. 정리 링크 복사링크가 클립보드에 복사되었습니다!
hello world 애플리케이션 네임스페이스(및 네임스페이스의 모든 리소스)를 삭제합니다.
oc delete project hello-world
$ oc delete project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS Load Balancer Operator 및 AWS IAM 역할을 삭제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS IAM 정책을 삭제합니다.
aws iam delete-policy --policy-arn $POLICY_ARN
$ aws iam delete-policy --policy-arn $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10장. 튜토리얼: Microsoft Entra ID (이전 Azure Active Directory)를 ID 공급자로 구성 링크 복사링크가 클립보드에 복사되었습니다!
AWS(ROSA)의 Red Hat OpenShift Service에서 Microsoft Entra ID (이전 Azure Active Directory)를 클러스터 ID 공급자로 구성할 수 있습니다.
이 튜토리얼에서는 다음 작업을 완료하도록 안내합니다.
- 인증을 위해 Entra ID에 새 애플리케이션을 등록합니다.
- 토큰에 선택적 및 그룹 클레임을 포함하도록 Entra ID에서 애플리케이션 등록을 구성합니다.
- ID 공급자로 Entra ID를 사용하도록 AWS 클러스터에서 Red Hat OpenShift Service를 구성합니다.
- 개별 그룹에 추가 권한을 부여합니다.
10.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
10.2. 인증을 위해 Entra ID에 새 애플리케이션 등록 링크 복사링크가 클립보드에 복사되었습니다!
Entra ID에 애플리케이션을 등록하려면 먼저 OAuth 콜백 URL을 생성한 다음 애플리케이션을 등록합니다.
프로세스
지정된 변수를 변경하고 다음 명령을 실행하여 클러스터의 OAuth 콜백 URL을 생성합니다.
참고이 콜백 URL을 저장해야 합니다. 나중에 프로세스에서 필요합니다.
domain=$(rosa describe cluster -c <cluster_name> | grep "DNS" | grep -oE '\S+.openshiftapps.com')
$ domain=$(rosa describe cluster -c <cluster_name> | grep "DNS" | grep -oE '\S+.openshiftapps.com') echo "OAuth callback URL: https://oauth.${domain}/oauth2callback/AAD"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OAuth 콜백 URL 끝에 있는 "AAD" 디렉터리는 이 프로세스의 뒷부분에서 설정할 OAuth ID 공급자 이름과 일치해야 합니다.
Azure 포털에 로그인하여 Entra ID 애플리케이션을 만들고 앱 등록 블레이드 를 선택합니다. 그런 다음 새 등록을 선택하여 새 애플리케이션을 생성합니다.
-
애플리케이션 이름을
openshift-auth
로 지정합니다. - 리디렉션 URI 드롭다운에서 Web 을 선택하고 이전 단계에서 검색한 OAuth 콜백 URL 값을 입력합니다.
필요한 정보를 제공한 후 등록을 클릭하여 애플리케이션을 생성합니다.
인증서 및 시크릿 하위 블록을 선택하고 새 클라이언트 시크릿을 선택합니다.
요청된 세부 정보를 작성하고 생성된 클라이언트 시크릿 값을 저장합니다. 이 시크릿은 이 프로세스의 뒷부분에서 필요합니다.
중요초기 설정 후에는 클라이언트 시크릿을 볼 수 없습니다. 클라이언트 시크릿을 기록하지 않은 경우 새 시크릿을 생성해야 합니다.
개요 하위 블록을 선택하고
애플리케이션(클라이언트) ID 및 디렉터리
를 기록해 둡니다. 향후 단계에서 이러한 값이 필요합니다.(테넌트) ID
10.3. 선택적 및 그룹 클레임을 포함하도록 Entra ID에서 애플리케이션 등록 구성 링크 복사링크가 클립보드에 복사되었습니다!
AWS의 Red Hat OpenShift Service에는 사용자 계정을 생성할 수 있는 충분한 정보가 있으므로 email
및 preferred_username
이라는 두 가지 선택적 클레임을 제공하도록 Entra ID를 구성해야 합니다. Entra ID의 선택적 클레임에 대한 자세한 내용은 Microsoft 설명서를 참조하십시오.
개별 사용자 인증 외에도 AWS의 Red Hat OpenShift Service는 그룹 클레임 기능을 제공합니다. 이 기능을 사용하면 Entra ID와 같은 OpenID Connect(OIDC) ID 공급자를 통해 AWS의 Red Hat OpenShift Service 내에서 사용할 사용자의 그룹 멤버십을 제공할 수 있습니다.
10.3.1. 선택적 클레임 구성 링크 복사링크가 클립보드에 복사되었습니다!
Entra ID에서 선택적 클레임을 구성할 수 있습니다.
Token configuration sub-blade를 클릭하고 Add optional claim 버튼을 선택합니다.
ID 라디오 버튼을 선택합니다.
이메일 클레임 확인란을 선택합니다.
preferred_username
클레임 확인란을 선택합니다. 그런 다음 추가 를 클릭하여 이메일 및 preferred_username 이 Entra ID 애플리케이션을 클레임합니다.페이지 상단에 대화 상자가 표시됩니다. 프롬프트에 따라 필요한 Microsoft Graph 권한을 활성화합니다.
10.3.2. 그룹 클레임 구성 (선택 사항) 링크 복사링크가 클립보드에 복사되었습니다!
그룹 클레임을 제공하도록 Entra ID를 구성합니다.
프로세스
토큰 구성 하위 블록에서 그룹 클레임 추가 를 클릭합니다.
Entra ID 애플리케이션에 대한 그룹 클레임을 구성하려면 보안 그룹을 선택한 다음 추가 를 클릭합니다.
참고이 예에서 그룹 클레임에는 사용자가 멤버인 모든 보안 그룹이 포함됩니다. 실제 프로덕션 환경에서는 그룹 클레임에 AWS의 Red Hat OpenShift Service에 적용되는 그룹만 포함되어 있는지 확인합니다.
10.4. Entra ID를 ID 공급자로 사용하도록 AWS 클러스터에서 Red Hat OpenShift Service 구성 링크 복사링크가 클립보드에 복사되었습니다!
Entra ID를 ID 공급자로 사용하도록 AWS에서 Red Hat OpenShift Service를 구성해야 합니다.
ROSA는 OpenShift Cluster Manager를 사용하여 ID 공급자를 구성하는 기능을 제공하지만 ROSA CLI를 사용하여 Entra ID를 ID 공급자로 사용하도록 클러스터의 OAuth 공급자를 구성합니다. ID 공급자를 구성하기 전에 ID 공급자 구성에 필요한 변수를 설정합니다.
프로세스
다음 명령을 실행하여 변수를 생성합니다.
CLUSTER_NAME=example-cluster IDP_NAME=AAD APP_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx TENANT_ID=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
$ CLUSTER_NAME=example-cluster
1 $ IDP_NAME=AAD
2 $ APP_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy
3 $ CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
4 $ TENANT_ID=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz
5 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터의 OAuth 공급자를 구성합니다. 그룹 클레임을 활성화한 경우
--group-claims groups
인수를 사용해야 합니다.그룹 클레임을 활성화한 경우 다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그룹 클레임을 활성화하지 않은 경우 다음 명령을 실행합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
몇 분 후 클러스터 인증 Operator가 변경 사항을 조정하고 Entra ID를 사용하여 클러스터에 로그인할 수 있습니다.
10.5. 개별 사용자 및 그룹에 추가 권한 부여 링크 복사링크가 클립보드에 복사되었습니다!
처음 로그인하면 매우 제한된 권한이 있음을 알 수 있습니다. 기본적으로 AWS의 Red Hat OpenShift Service는 클러스터에서 새 프로젝트 또는 네임스페이스를 생성할 수 있는 기능만 부여합니다. 다른 프로젝트는 볼 수 없습니다.
이러한 추가 기능을 개별 사용자 및 그룹에 부여해야 합니다.
10.5.1. 개별 사용자에게 추가 권한 부여 링크 복사링크가 클립보드에 복사되었습니다!
AWS의 Red Hat OpenShift Service에는 클러스터에 대한 전체 액세스 및 제어 권한을 부여하는 cluster-admin
역할을 포함하여 다양한 사전 구성된 역할이 포함되어 있습니다.
프로세스
다음 명령을 실행하여
cluster-admin
역할에 대한 액세스 권한을 사용자에게 부여합니다.rosa grant user cluster-admin \ --user=<USERNAME>
$ rosa grant user cluster-admin \ --user=<USERNAME>
1 --cluster=${CLUSTER_NAME}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 클러스터 관리자 권한이 필요한 Entra ID 사용자 이름을 제공합니다.
10.5.2. 개별 그룹에 추가 권한 부여 링크 복사링크가 클립보드에 복사되었습니다!
그룹 클레임을 활성화하도록 선택한 경우 클러스터 OAuth 공급자는 그룹 ID를 사용하여 사용자의 그룹 멤버십을 자동으로 생성하거나 업데이트합니다. 클러스터 OAuth 공급자는 생성된 그룹에 대해 RoleBindings
및 ClusterRoleBindings
를 자동으로 생성하지 않습니다. 자체 프로세스를 사용하여 해당 바인딩을 생성합니다.
cluster-admin
역할에 자동으로 생성된 그룹 액세스 권한을 부여하려면 그룹 ID에 대한 ClusterRoleBinding
을 생성해야 합니다.
프로세스
다음 명령을 실행하여
ClusterRoleBinding
을 생성합니다.oc create clusterrolebinding cluster-admin-group \ --clusterrole=cluster-admin \ --group=<GROUP_ID>
$ oc create clusterrolebinding cluster-admin-group \ --clusterrole=cluster-admin \ --group=<GROUP_ID>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 클러스터 관리자 권한이 필요한 Entra ID 그룹 ID를 제공합니다.
이제 지정된 그룹의 모든 사용자가
cluster-admin
액세스 권한을 자동으로 수신합니다.
11장. 튜토리얼: STS를 사용하여 ROSA에서 AWS Secrets Manager CSI 사용 링크 복사링크가 클립보드에 복사되었습니다!
AWS Secrets 및 Configuration Provider(ASCP)는 AWS 보안을 Kubernetes 스토리지 볼륨으로 노출하는 방법을 제공합니다. ASCP를 사용하면 시크릿 관리자에 시크릿을 저장하고 관리한 다음 AWS(ROSA)의 Red Hat OpenShift Service에서 실행되는 워크로드를 통해 검색할 수 있습니다.
11.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
이 프로세스를 시작하기 전에 다음 리소스 및 툴이 있는지 확인합니다.
- STS를 사용하여 배포된 ROSA 클러스터
- Helm 3
-
AWS
CLI -
oc
CLI -
jq
CLI
추가 환경 요구 사항
다음 명령을 실행하여 ROSA 클러스터에 로그인합니다.
oc login --token=<your-token> --server=<your-server-url>
$ oc login --token=<your-token> --server=<your-server-url>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat OpenShift Cluster Manager에서 풀 시크릿 으로 클러스터에 액세스하여 로그인 토큰을 찾을 수 있습니다.
다음 명령을 실행하여 클러스터에 STS가 있는지 확인합니다.
oc get authentication.config.openshift.io cluster -o json \ | jq .spec.serviceAccountIssuer
$ oc get authentication.config.openshift.io cluster -o json \ | jq .spec.serviceAccountIssuer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
"https://xxxxx.cloudfront.net/xxxxx"
"https://xxxxx.cloudfront.net/xxxxx"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력이 다르면 계속 진행하지 마십시오. 이 프로세스를 계속하기 전에 STS 클러스터 생성에 대한 Red Hat 설명서 를 참조하십시오.
다음 명령을 실행하여 CSI 드라이버를 실행할 수 있도록
SecurityContextConstraints
권한을 설정합니다.oc new-project csi-secrets-store oc adm policy add-scc-to-user privileged \ system:serviceaccount:csi-secrets-store:secrets-store-csi-driver oc adm policy add-scc-to-user privileged \ system:serviceaccount:csi-secrets-store:csi-secrets-store-provider-aws
$ oc new-project csi-secrets-store $ oc adm policy add-scc-to-user privileged \ system:serviceaccount:csi-secrets-store:secrets-store-csi-driver $ oc adm policy add-scc-to-user privileged \ system:serviceaccount:csi-secrets-store:csi-secrets-store-provider-aws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 이 프로세스의 뒷부분에 사용할 환경 변수를 생성합니다.
export REGION=$(oc get infrastructure cluster -o=jsonpath="{.status.platformStatus.aws.region}") export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster \ -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||') export AWS_ACCOUNT_ID=`aws sts get-caller-identity --query Account --output text` export AWS_PAGER=""
$ export REGION=$(oc get infrastructure cluster -o=jsonpath="{.status.platformStatus.aws.region}") $ export OIDC_ENDPOINT=$(oc get authentication.config.openshift.io cluster \ -o jsonpath='{.spec.serviceAccountIssuer}' | sed 's|^https://||') $ export AWS_ACCOUNT_ID=`aws sts get-caller-identity --query Account --output text` $ export AWS_PAGER=""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.2. AWS 시크릿 및 구성 공급자 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 보안 저장소 CSI 드라이버를 등록하려면 Helm을 사용합니다.
helm repo add secrets-store-csi-driver \ https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
$ helm repo add secrets-store-csi-driver \ https://kubernetes-sigs.github.io/secrets-store-csi-driver/charts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Helm 리포지터리를 업데이트합니다.
helm repo update
$ helm repo update
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 보안 저장소 CSI 드라이버를 설치합니다.
helm upgrade --install -n csi-secrets-store \ csi-secrets-store-driver secrets-store-csi-driver/secrets-store-csi-driver
$ helm upgrade --install -n csi-secrets-store \ csi-secrets-store-driver secrets-store-csi-driver/secrets-store-csi-driver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 AWS 공급자를 배포합니다.
oc -n csi-secrets-store apply -f \ https://raw.githubusercontent.com/rh-mobb/documentation/main/content/misc/secrets-store-csi/aws-provider-installer.yaml
$ oc -n csi-secrets-store apply -f \ https://raw.githubusercontent.com/rh-mobb/documentation/main/content/misc/secrets-store-csi/aws-provider-installer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 두 데몬 세트 모두 실행 중인지 확인합니다.
oc -n csi-secrets-store get ds \ csi-secrets-store-provider-aws \ csi-secrets-store-driver-secrets-store-csi-driver
$ oc -n csi-secrets-store get ds \ csi-secrets-store-provider-aws \ csi-secrets-store-driver-secrets-store-csi-driver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 제한된 Pod 보안 프로필과 함께 사용할 수 있도록 Secrets Store CSI 드라이버에 레이블을 지정합니다.
oc label csidriver.storage.k8s.io/secrets-store.csi.k8s.io security.openshift.io/csi-ephemeral-volume-profile=restricted
$ oc label csidriver.storage.k8s.io/secrets-store.csi.k8s.io security.openshift.io/csi-ephemeral-volume-profile=restricted
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.3. 시크릿 및 IAM 액세스 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 Secrets Manager에 보안을 생성합니다.
SECRET_ARN=$(aws --region "$REGION" secretsmanager create-secret \ --name MySecret --secret-string \ '{"username":"shadowman", "password":"hunter2"}' \ --query ARN --output text); echo $SECRET_ARN
$ SECRET_ARN=$(aws --region "$REGION" secretsmanager create-secret \ --name MySecret --secret-string \ '{"username":"shadowman", "password":"hunter2"}' \ --query ARN --output text); echo $SECRET_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 IAM 액세스 정책 문서를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 IAM 액세스 정책을 생성합니다.
POLICY_ARN=$(aws --region "$REGION" --query Policy.Arn \ --output text iam create-policy \ --policy-name openshift-access-to-mysecret-policy \ --policy-document file://policy.json); echo $POLICY_ARN
$ POLICY_ARN=$(aws --region "$REGION" --query Policy.Arn \ --output text iam create-policy \ --policy-name openshift-access-to-mysecret-policy \ --policy-document file://policy.json); echo $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 IAM 역할 신뢰 정책 문서를 생성합니다.
참고신뢰 정책은 이 프로세스에서 나중에 생성하는 네임스페이스의 기본 서비스 계정에 잠겨 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 IAM 역할을 생성합니다.
ROLE_ARN=$(aws iam create-role --role-name openshift-access-to-mysecret \ --assume-role-policy-document file://trust-policy.json \ --query Role.Arn --output text); echo $ROLE_ARN
$ ROLE_ARN=$(aws iam create-role --role-name openshift-access-to-mysecret \ --assume-role-policy-document file://trust-policy.json \ --query Role.Arn --output text); echo $ROLE_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 정책에 역할을 연결합니다.
aws iam attach-role-policy --role-name openshift-access-to-mysecret \ --policy-arn $POLICY_ARN
$ aws iam attach-role-policy --role-name openshift-access-to-mysecret \ --policy-arn $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. 이 시크릿을 사용할 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 OpenShift 프로젝트를 생성합니다.
oc new-project my-application
$ oc new-project my-application
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 STS 역할을 사용하도록 기본 서비스 계정에 주석을 답니다.
oc annotate -n my-application serviceaccount default \ eks.amazonaws.com/role-arn=$ROLE_ARN
$ oc annotate -n my-application serviceaccount default \ eks.amazonaws.com/role-arn=$ROLE_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 시크릿에 액세스할 시크릿 공급자 클래스를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령에서 시크릿을 사용하여 배포를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod에 보안이 마운트되었는지 확인합니다.
oc exec -it my-application -- cat /mnt/secrets-store/MySecret
$ oc exec -it my-application -- cat /mnt/secrets-store/MySecret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5. 정리 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 애플리케이션을 삭제합니다.
oc delete project my-application
$ oc delete project my-application
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 보안 저장소 csi 드라이버를 삭제합니다.
helm delete -n csi-secrets-store csi-secrets-store-driver
$ helm delete -n csi-secrets-store csi-secrets-store-driver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 보안 컨텍스트 제약 조건을 삭제합니다.
oc adm policy remove-scc-from-user privileged \ system:serviceaccount:csi-secrets-store:secrets-store-csi-driver; oc adm policy remove-scc-from-user privileged \ system:serviceaccount:csi-secrets-store:csi-secrets-store-provider-aws
$ oc adm policy remove-scc-from-user privileged \ system:serviceaccount:csi-secrets-store:secrets-store-csi-driver; oc adm policy remove-scc-from-user privileged \ system:serviceaccount:csi-secrets-store:csi-secrets-store-provider-aws
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 AWS 공급자를 삭제합니다.
oc -n csi-secrets-store delete -f \ https://raw.githubusercontent.com/rh-mobb/documentation/main/content/misc/secrets-store-csi/aws-provider-installer.yaml
$ oc -n csi-secrets-store delete -f \ https://raw.githubusercontent.com/rh-mobb/documentation/main/content/misc/secrets-store-csi/aws-provider-installer.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 AWS 역할 및 정책을 삭제합니다.
aws iam detach-role-policy --role-name openshift-access-to-mysecret \ --policy-arn $POLICY_ARN; aws iam delete-role --role-name openshift-access-to-mysecret; aws iam delete-policy --policy-arn $POLICY_ARN
$ aws iam detach-role-policy --role-name openshift-access-to-mysecret \ --policy-arn $POLICY_ARN; aws iam delete-role --role-name openshift-access-to-mysecret; aws iam delete-policy --policy-arn $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Secrets Manager 시크릿을 삭제합니다.
aws secretsmanager --region $REGION delete-secret --secret-id $SECRET_ARN
$ aws secretsmanager --region $REGION delete-secret --secret-id $SECRET_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12장. 튜토리얼: ROSA에서 AWS Controllers for Kubernetes 사용 링크 복사링크가 클립보드에 복사되었습니다!
AWS Controllers for Kubernetes (ACK)를 사용하면 AWS(ROSA)의 Red Hat OpenShift Service에서 직접 AWS 서비스 리소스를 정의하고 사용할 수 있습니다. ACK을 사용하면 클러스터 외부의 리소스를 정의하거나 클러스터 내에서 데이터베이스 또는 메시지 큐와 같은 지원 기능을 제공하는 서비스를 실행할 필요 없이 애플리케이션에 AWS 관리 서비스를 활용할 수 있습니다.
OperatorHub에서 다양한 ACK Operator를 직접 설치할 수 있습니다. 이렇게 하면 애플리케이션과 함께 Operator를 쉽게 시작하고 사용할 수 있습니다. 이 컨트롤러는 현재 개발자 프리뷰에 있는 Kubernetes 프로젝트용 AWS 컨트롤러의 구성 요소입니다.
이 튜토리얼을 사용하여 ACK S3 Operator를 배포합니다. 클러스터의 OperatorHub에서 다른 ACK Operator에 맞게 조정할 수도 있습니다.
12.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- ROSA 클러스터
-
cluster-admin
권한이 있는 사용자 계정 -
OpenShift CLI(
oc
) -
AWS(Amazon Web Services) CLI(
aws
)
12.2. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에 맞게 클러스터 이름을 변경하여 다음 환경 변수를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 섹션으로 이동하기 전에 모든 필드가 올바르게 출력되는지 확인합니다.
echo "Cluster: ${ROSA_CLUSTER_NAME}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
$ echo "Cluster: ${ROSA_CLUSTER_NAME}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. AWS 계정 준비 링크 복사링크가 클립보드에 복사되었습니다!
ACK Operator에 대한 AWS IAM(Identity Access Management) 신뢰 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK Operator가 연결된
AmazonS3FullAccess
정책을 사용하여 가정할 AWS IAM 역할을 생성합니다.참고각 프로젝트의 GitHub 리포지토리에서 권장 정책을 찾을 수 있습니다(예: https://github.com/aws-controllers-k8s/s3-controller/blob/main/config/iam/recommended-policy-arn ).
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.4. ACK S3 컨트롤러 설치 링크 복사링크가 클립보드에 복사되었습니다!
ACK S3 Operator를 설치할 프로젝트를 생성합니다.
oc new-project ack-system
$ oc new-project ack-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 Operator 구성으로 파일을 생성합니다.
참고컨트롤러에서 클러스터의 모든 네임스페이스를 올바르게 조사할 수 있도록
ACK_WATCH_NAMESPACE
는 의도적으로 비워 둡니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계의 파일을 사용하여 ConfigMap을 생성합니다.
oc -n ack-system create configmap \ --from-env-file=${SCRATCH}/config.txt ack-${ACK_SERVICE}-user-config
$ oc -n ack-system create configmap \ --from-env-file=${SCRATCH}/config.txt ack-${ACK_SERVICE}-user-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorHub에서 ACK S3 Operator를 설치합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 배포를 가정하고 다시 시작하려면 AWS IAM 역할로 ACK S3 Operator 서비스 계정에 주석을 답니다.
oc -n ack-system annotate serviceaccount ${ACK_SERVICE_ACCOUNT} \ eks.amazonaws.com/role-arn=${ROLE_ARN} && \ oc -n ack-system rollout restart deployment ack-${ACK_SERVICE}-controller
$ oc -n ack-system annotate serviceaccount ${ACK_SERVICE_ACCOUNT} \ eks.amazonaws.com/role-arn=${ROLE_ARN} && \ oc -n ack-system rollout restart deployment ack-${ACK_SERVICE}-controller
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 Operator가 실행 중인지 확인합니다.
oc -n ack-system get pods
$ oc -n ack-system get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE ack-s3-controller-585f6775db-s4lfz 1/1 Running 0 51s
NAME READY STATUS RESTARTS AGE ack-s3-controller-585f6775db-s4lfz 1/1 Running 0 51s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5. 배포 검증 링크 복사링크가 클립보드에 복사되었습니다!
S3 버킷 리소스를 배포합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow S3 버킷이 AWS에서 생성되었는지 확인합니다.
aws s3 ls | grep ${CLUSTER_NAME}-bucket
$ aws s3 ls | grep ${CLUSTER_NAME}-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
2023-10-04 14:51:45 mrmc-test-maz-bucket
2023-10-04 14:51:45 mrmc-test-maz-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6. 정리 링크 복사링크가 클립보드에 복사되었습니다!
S3 버킷 리소스를 삭제합니다.
oc -n ack-system delete bucket.s3.services.k8s.aws/${CLUSTER-NAME}-bucket
$ oc -n ack-system delete bucket.s3.services.k8s.aws/${CLUSTER-NAME}-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 Operator 및 AWS IAM 역할을 삭제합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ack-system
프로젝트를 삭제합니다.oc delete project ack-system
$ oc delete project ack-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13장. 튜토리얼: ROSA에 외부 DNS Operator 배포 링크 복사링크가 클립보드에 복사되었습니다!
외부 DNS Operator는 ExternalDNS
를 배포 및 관리하여 Amazon Route 53과 같은 외부 DNS 공급자의 서비스 및 경로의 이름 확인을 AWS(ROSA) 클러스터에서 Red Hat OpenShift Service로 제공합니다. 이 튜토리얼에서는 Amazon Route 53에서 DNS 레코드를 관리하도록 보조 수신 컨트롤러를 사용하여 외부 DNS Operator를 배포 및 구성합니다.
외부 DNS
Operator는 IRSA(Service Accounts)의 IAM 역할을 사용하는 STS를 지원하지 않으며 대신 장기적인 IAM(Identity Access Management) 인증 정보를 사용합니다. 이 튜토리얼은 Operator가 STS를 지원할 때 업데이트됩니다.
13.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
ROSA Classic 클러스터
참고현재 HCP를 사용하는 ROSA는 지원되지 않습니다.
-
cluster-admin
권한이 있는 사용자 계정 -
OpenShift CLI(
oc
) -
AWS(Amazon Web Services) CLI(
aws
) -
apps.example.com
과 같은 고유 도메인 - 위의 도메인의 Amazon Route 53 공용 호스팅 영역
13.2. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
다음 환경 변수를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
IngressController
에 사용할 사용자 정의 도메인으로 바꿉니다.
다음 섹션으로 이동하기 전에 모든 필드가 올바르게 출력되는지 확인합니다.
echo "Cluster: ${CLUSTER}, Region: ${REGION}, AWS Account ID: ${AWS_ACCOUNT_ID}"
$ echo "Cluster: ${CLUSTER}, Region: ${REGION}, AWS Account ID: ${AWS_ACCOUNT_ID}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이전 명령의 "클러스터" 출력은 클러스터의 이름, 클러스터의 내부 ID 또는 클러스터의 도메인 접두사일 수 있습니다. 다른 식별자를 사용하려는 경우 다음 명령을 실행하여 이 값을 수동으로 설정할 수 있습니다.
export CLUSTER=my-custom-value
$ export CLUSTER=my-custom-value
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3. 보조 수신 컨트롤러 설정 링크 복사링크가 클립보드에 복사되었습니다!
사용자 정의 도메인을 사용하여 보조 수신 컨트롤러를 배포하려면 다음 절차를 사용하십시오.
사전 요구 사항
-
apps.example.com
과 같은 고유 도메인 -
위에서 선택한 사용자 정의 도메인으로 구성된 와일드카드 또는 SAN TLS 인증서(
CN=*.apps.example.com
)
프로세스
개인 키와 공개 인증서에서 새 TLS 시크릿을 만듭니다. 여기서
fullchain.pem
은 전체 와일드카드 인증서 체인(개체 포함)이고privkey.pem
은 와일드카드 인증서의 개인 키입니다.oc -n openshift-ingress create secret tls external-dns-tls --cert=fullchain.pem --key=privkey.pem
$ oc -n openshift-ingress create secret tls external-dns-tls --cert=fullchain.pem --key=privkey.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새
IngressController
리소스를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주의이
IngressController
예제에서는 AWS 계정에서 인터넷에 액세스할 수 있는 NLB(Network Load Balancer)를 생성합니다. 대신 내부 NLB를 프로비저닝하려면IngressController
리소스를 생성하기 전에.spec.endpointPublishingStrategy.loadBalancer.scope
매개변수를Internal
로 설정합니다.사용자 정의 도메인 IngressController가 외부 로드 밸런서를 성공적으로 생성했는지 확인합니다.
oc -n openshift-ingress get service/router-external-dns-ingress
$ oc -n openshift-ingress get service/router-external-dns-ingress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-external-dns-ingress LoadBalancer 172.30.71.250 a4838bb991c6748439134ab89f132a43-aeae124077b50c01.elb.us-east-1.amazonaws.com 80:32227/TCP,443:30310/TCP 43s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-external-dns-ingress LoadBalancer 172.30.71.250 a4838bb991c6748439134ab89f132a43-aeae124077b50c01.elb.us-east-1.amazonaws.com 80:32227/TCP,443:30310/TCP 43s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.4. AWS 계정 준비 링크 복사링크가 클립보드에 복사되었습니다!
Amazon Route 53 공용 호스팅 영역 ID를 검색합니다.
export ZONE_ID=$(aws route53 list-hosted-zones-by-name --output json \ --dns-name "${DOMAIN}." --query 'HostedZones[0]'.Id --out text | sed 's/\/hostedzone\///')
$ export ZONE_ID=$(aws route53 list-hosted-zones-by-name --output json \ --dns-name "${DOMAIN}." --query 'HostedZones[0]'.Id --out text | sed 's/\/hostedzone\///')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ingress 컨트롤러의 정식 도메인에 대한 DNS 확인을 활성화하기 위해 필요한 DNS 변경 사항이 포함된 문서를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 외부 DNS Operator는 이 정식 도메인을 CNAME 레코드의 대상으로 사용합니다.
승인을 위해 Amazon Route 53에 변경 사항을 제출합니다.
aws route53 change-resource-record-sets \ --hosted-zone-id ${ZONE_ID} \ --change-batch file://${SCRATCH}/create-cname.json
aws route53 change-resource-record-sets \ --hosted-zone-id ${ZONE_ID} \ --change-batch file://${SCRATCH}/create-cname.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 외부 DNS
Operator가 사용자 정의 도메인 공용 호스팅 영역 만 업데이트할 수 있는 AWS IAM 정책 문서를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS IAM 사용자를 생성합니다.
aws iam create-user --user-name "${CLUSTER}-external-dns-operator"
$ aws iam create-user --user-name "${CLUSTER}-external-dns-operator"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 정책을 연결합니다.
aws iam attach-user-policy --user-name "${CLUSTER}-external-dns-operator" --policy-arn $POLICY_ARN
$ aws iam attach-user-policy --user-name "${CLUSTER}-external-dns-operator" --policy-arn $POLICY_ARN
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이는 향후 IRSA를 사용하여 STS로 변경됩니다.
IAM 사용자에 대한 AWS 키를 생성합니다.
SECRET_ACCESS_KEY=$(aws iam create-access-key --user-name "${CLUSTER}-external-dns-operator")
$ SECRET_ACCESS_KEY=$(aws iam create-access-key --user-name "${CLUSTER}-external-dns-operator")
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 정적 인증 정보를 생성합니다.
cat << EOF > "${SCRATCH}/credentials" [default] aws_access_key_id = $(echo $SECRET_ACCESS_KEY | jq -r '.AccessKey.AccessKeyId') aws_secret_access_key = $(echo $SECRET_ACCESS_KEY | jq -r '.AccessKey.SecretAccessKey') EOF
$ cat << EOF > "${SCRATCH}/credentials" [default] aws_access_key_id = $(echo $SECRET_ACCESS_KEY | jq -r '.AccessKey.AccessKeyId') aws_secret_access_key = $(echo $SECRET_ACCESS_KEY | jq -r '.AccessKey.SecretAccessKey') EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.5. 외부 DNS Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
새 프로젝트를 생성합니다.
oc new-project external-dns-operator
$ oc new-project external-dns-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OperatorHub에서
외부 DNS
Operator를 설치합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 외부 DNS
Operator가 실행될 때까지 기다립니다.oc rollout status deploy external-dns-operator --timeout=300s
$ oc rollout status deploy external-dns-operator --timeout=300s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow AWS IAM 사용자 인증 정보에서 시크릿을 생성합니다.
oc -n external-dns-operator create secret generic external-dns \ --from-file "${SCRATCH}/credentials"
$ oc -n external-dns-operator create secret generic external-dns \ --from-file "${SCRATCH}/credentials"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ExternalDNS
컨트롤러를 배포합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 컨트롤러가 실행될 때까지 기다립니다.
oc rollout status deploy external-dns-${DOMAIN} --timeout=300s
$ oc rollout status deploy external-dns-${DOMAIN} --timeout=300s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.6. 샘플 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
이제 ExternalDNS
컨트롤러가 실행 중이므로 샘플 애플리케이션을 배포하여 새 경로를 노출할 때 사용자 정의 도메인이 구성되고 신뢰할 수 있는지 확인할 수 있습니다.
샘플 애플리케이션에 대한 새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hello world 애플리케이션을 배포합니다.
oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
$ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 정의 도메인 이름을 지정하는 애플리케이션의 경로를 생성합니다.
oc -n hello-world create route edge --service=hello-openshift hello-openshift-tls \ --hostname hello-openshift.${DOMAIN}
$ oc -n hello-world create route edge --service=hello-openshift hello-openshift-tls \ --hostname hello-openshift.${DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ExternalDNS에서 DNS 레코드가 자동으로 생성되었는지 확인합니다.
참고Amazon Route 53에 레코드가 표시되는 데 몇 분이 걸릴 수 있습니다.
aws route53 list-resource-record-sets --hosted-zone-id ${ZONE_ID} \ --query "ResourceRecordSets[?Type == 'CNAME']" | grep hello-openshift
$ aws route53 list-resource-record-sets --hosted-zone-id ${ZONE_ID} \ --query "ResourceRecordSets[?Type == 'CNAME']" | grep hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: ExternalDNS에서 생성되었음을 나타내는 TXT 레코드를 볼 수도 있습니다.
aws route53 list-resource-record-sets --hosted-zone-id ${ZONE_ID} \ --query "ResourceRecordSets[?Type == 'TXT']" | grep ${DOMAIN}
$ aws route53 list-resource-record-sets --hosted-zone-id ${ZONE_ID} \ --query "ResourceRecordSets[?Type == 'TXT']" | grep ${DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새로 생성된 DNS 레코드를 샘플 애플리케이션에 curl하여 hello world 애플리케이션에 액세스할 수 있는지 확인합니다.
curl https://hello-openshift.${DOMAIN}
$ curl https://hello-openshift.${DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Hello OpenShift!
Hello OpenShift!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14장. 튜토리얼: ROSA에서 cert-manager Operator를 사용하여 동적 인증서 발행 링크 복사링크가 클립보드에 복사되었습니다!
와일드카드 인증서는 지정된 도메인의 모든 최상위 하위 도메인을 단일 인증서로 보호함으로써 단순성을 제공하지만 다른 사용 사례에서는 도메인당 개별 인증서를 사용해야 할 수 있습니다.
cert-manager Operator for Red Hat OpenShift 및 Let's Encrypt 를 사용하여 사용자 정의 도메인을 사용하여 생성된 경로의 인증서를 동적으로 발급하는 방법을 알아봅니다.
14.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- ROSA 클러스터(HCP 또는 Classic)
-
cluster-admin
권한이 있는 사용자 계정 -
OpenShift CLI(
oc
) -
AWS(Amazon Web Services) CLI(
aws
) -
*.apps.example.com
과 같은 고유 도메인 - 위의 도메인의 Amazon Route 53 공용 호스팅 영역
14.2. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
다음 환경 변수를 구성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 섹션으로 이동하기 전에 모든 필드가 올바르게 출력되는지 확인합니다.
echo "Cluster: ${CLUSTER}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
$ echo "Cluster: ${CLUSTER}, Region: ${REGION}, OIDC Endpoint: ${OIDC_ENDPOINT}, AWS Account ID: ${AWS_ACCOUNT_ID}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이전 명령의 "클러스터" 출력은 클러스터의 이름, 클러스터의 내부 ID 또는 클러스터의 도메인 접두사일 수 있습니다. 다른 식별자를 사용하려는 경우 다음 명령을 실행하여 이 값을 수동으로 설정할 수 있습니다.
export CLUSTER=my-custom-value
$ export CLUSTER=my-custom-value
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.3. AWS 계정 준비 링크 복사링크가 클립보드에 복사되었습니다!
cert-manager 가 Let's Encrypt (또는 다른 ACME 인증서 발급자)에서 인증서를 요청하는 경우, Let's Encrypt servers validate that you control the domain name in that certificate using challenges. 이 튜토리얼에서는 해당 도메인 이름에 TXT 레코드에 특정 값을 배치하여 도메인 이름의 DNS를 제어한다는 것을 증명하는 DNS -01 챌린지 를 사용하고 있습니다. 이 모든 작업은 cert-manager에 의해 자동으로 수행됩니다. cert-manager 권한이 도메인의 Amazon Route 53 공용 호스팅 영역을 수정할 수 있도록 하려면 특정 정책 권한 및 pod 액세스를 허용하는 신뢰 관계를 사용하여 IAM(Identity Access Management) 역할을 생성해야 합니다.
이 튜토리얼에서 사용되는 공개 호스팅 영역은 ROSA 클러스터와 동일한 AWS 계정에 있습니다. 공개 호스팅 영역이 다른 계정에 있는 경우 Cross Account Access 에 대한 몇 가지 추가 단계가 필요합니다.
Amazon Route 53 공용 호스팅 영역 ID를 검색합니다.
참고이 명령은 이전에
DOMAIN
환경 변수로 지정한 사용자 정의 도메인과 일치하는 공개 호스팅 영역을 찾습니다.내보내기 ZONE_ID=<zone_ID>를 실행하여 Amazon Route 53 공개 호스팅 영역을
수동으로 지정하여 <zone_ID
>를 특정 Amazon Route 53 공개 호스팅 영역 ID로 교체할 수 있습니다.export ZONE_ID=$(aws route53 list-hosted-zones-by-name --output json \ --dns-name "${DOMAIN}." --query 'HostedZones[0]'.Id --out text | sed 's/\/hostedzone\///')
$ export ZONE_ID=$(aws route53 list-hosted-zones-by-name --output json \ --dns-name "${DOMAIN}." --query 'HostedZones[0]'.Id --out text | sed 's/\/hostedzone\///')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 지정된 공개 호스팅 영역 만 업데이트하는 기능을 제공하는 cert-manager Operator에 대한 AWS IAM 정책 문서를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계에서 생성한 파일을 사용하여 IAM 정책을 생성합니다.
POLICY_ARN=$(aws iam create-policy --policy-name "${CLUSTER}-cert-manager-policy" \ --policy-document file://${SCRATCH}/cert-manager-policy.json \ --query 'Policy.Arn' --output text)
$ POLICY_ARN=$(aws iam create-policy --policy-name "${CLUSTER}-cert-manager-policy" \ --policy-document file://${SCRATCH}/cert-manager-policy.json \ --query 'Policy.Arn' --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cert-manager Operator에 대한 AWS IAM 신뢰 정책을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계에서 생성한 신뢰 정책을 사용하여 cert-manager Operator에 대한 IAM 역할을 생성합니다.
ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER}-cert-manager-operator" \ --assume-role-policy-document "file://${SCRATCH}/trust-policy.json" \ --query Role.Arn --output text)
$ ROLE_ARN=$(aws iam create-role --role-name "${CLUSTER}-cert-manager-operator" \ --assume-role-policy-document "file://${SCRATCH}/trust-policy.json" \ --query Role.Arn --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 권한 정책을 역할에 연결합니다.
aws iam attach-role-policy --role-name "${CLUSTER}-cert-manager-operator" \ --policy-arn ${POLICY_ARN}
$ aws iam attach-role-policy --role-name "${CLUSTER}-cert-manager-operator" \ --policy-arn ${POLICY_ARN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.4. cert-manager Operator 설치 링크 복사링크가 클립보드에 복사되었습니다!
cert-manager Operator를 설치할 프로젝트를 생성합니다.
oc new-project cert-manager-operator
$ oc new-project cert-manager-operator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요클러스터에서 두 개 이상의 cert-manager Operator를 사용하지 마십시오. 커뮤니티 cert-manager Operator가 클러스터에 설치되어 있는 경우 cert-manager Operator for Red Hat OpenShift를 설치하기 전에 이를 제거해야 합니다.
cert-manager Operator for Red Hat OpenShift를 설치합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 Operator를 설치하고 설정을 완료하는 데 몇 분이 걸립니다.
cert-manager Operator가 실행 중인지 확인합니다.
oc -n cert-manager-operator get pods
$ oc -n cert-manager-operator get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE cert-manager-operator-controller-manager-84b8799db5-gv8mx 2/2 Running 0 12s
NAME READY STATUS RESTARTS AGE cert-manager-operator-controller-manager-84b8799db5-gv8mx 2/2 Running 0 12s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전에 생성한 AWS IAM 역할을 사용하여 cert-manager Pod에서 사용하는 서비스 계정에 주석을 답니다.
oc -n cert-manager annotate serviceaccount cert-manager eks.amazonaws.com/role-arn=${ROLE_ARN}
$ oc -n cert-manager annotate serviceaccount cert-manager eks.amazonaws.com/role-arn=${ROLE_ARN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 기존 cert-manager 컨트롤러 Pod를 다시 시작합니다.
oc -n cert-manager delete pods -l app.kubernetes.io/name=cert-manager
$ oc -n cert-manager delete pods -l app.kubernetes.io/name=cert-manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator의 구성을 패치하여 외부 이름 서버를 사용하여 DNS-01 챌린지 확인 문제를 방지합니다.
oc patch certmanager.operator.openshift.io/cluster --type merge \ -p '{"spec":{"controllerConfig":{"overrideArgs":["--dns01-recursive-nameservers-only","--dns01-recursive-nameservers=1.1.1.1:53"]}}}'
$ oc patch certmanager.operator.openshift.io/cluster --type merge \ -p '{"spec":{"controllerConfig":{"overrideArgs":["--dns01-recursive-nameservers-only","--dns01-recursive-nameservers=1.1.1.1:53"]}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Let's Encrypt를 사용하도록
ClusterIssuer
리소스를 만듭니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow ClusterIssuer
리소스가 준비되었는지 확인합니다.oc get clusterissuer.cert-manager.io/letsencrypt-production
$ oc get clusterissuer.cert-manager.io/letsencrypt-production
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY AGE letsencrypt-production True 47s
NAME READY AGE letsencrypt-production True 47s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.5. 사용자 정의 도메인 Ingress 컨트롤러 생성 링크 복사링크가 클립보드에 복사되었습니다!
사용자 정의 도메인 Ingress 컨트롤러의 인증서를 프로비저닝하도록 인증서 리소스를 생성하고 구성합니다.
참고다음 예제에서는 단일 도메인 인증서를 사용합니다. SAN 및 와일드카드 인증서도 지원됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 인증서가 발행되었는지 확인합니다.
참고Let's Encrypt에서 이 인증서를 발급하는 데 몇 분이 걸립니다. 5분 이상 걸리는 경우
oc -n openshift-ingress describe certificate.cert-manager.io/custom-domain-ingress-cert
를 실행하여 cert-manager에서 보고한 모든 문제를 확인합니다.oc -n openshift-ingress get certificate.cert-manager.io/custom-domain-ingress-cert
$ oc -n openshift-ingress get certificate.cert-manager.io/custom-domain-ingress-cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY SECRET AGE custom-domain-ingress-cert True custom-domain-ingress-cert-tls 9m53s
NAME READY SECRET AGE custom-domain-ingress-cert True custom-domain-ingress-cert-tls 9m53s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새
IngressController
리소스를 생성합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주의이
IngressController
예제에서는 AWS 계정에서 인터넷에 액세스할 수 있는 NLB(Network Load Balancer)를 생성합니다. 대신 내부 NLB를 프로비저닝하려면IngressController
리소스를 생성하기 전에.spec.endpointPublishingStrategy.loadBalancer.scope
매개변수를Internal
로 설정합니다.사용자 정의 도메인 IngressController가 외부 로드 밸런서를 성공적으로 생성했는지 확인합니다.
oc -n openshift-ingress get service/router-custom-domain-ingress
$ oc -n openshift-ingress get service/router-custom-domain-ingress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-custom-domain-ingress LoadBalancer 172.30.174.34 a309962c3bd6e42c08cadb9202eca683-1f5bbb64a1f1ec65.elb.us-east-1.amazonaws.com 80:31342/TCP,443:31821/TCP 7m28s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-custom-domain-ingress LoadBalancer 172.30.174.34 a309962c3bd6e42c08cadb9202eca683-1f5bbb64a1f1ec65.elb.us-east-1.amazonaws.com 80:31342/TCP,443:31821/TCP 7m28s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자 정의 도메인 Ingress 컨트롤러에 대한 DNS 확인을 활성화하기 위해 필요한 DNS 변경 사항이 포함된 문서를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 승인을 위해 Amazon Route 53에 변경 사항을 제출합니다.
aws route53 change-resource-record-sets \ --hosted-zone-id ${ZONE_ID} \ --change-batch file://${SCRATCH}/create-cname.json
$ aws route53 change-resource-record-sets \ --hosted-zone-id ${ZONE_ID} \ --change-batch file://${SCRATCH}/create-cname.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고와일드카드 CNAME 레코드는 사용자 정의 도메인 Ingress 컨트롤러를 사용하여 배포하는 모든 새 애플리케이션에 대해 새 레코드를 생성할 필요가 없지만 이러한 각 애플리케이션에서 사용하는 인증서는 와일드카드 인증서가 아닙니다.
14.6. 사용자 정의 도메인 경로에 대한 동적 인증서 구성 링크 복사링크가 클립보드에 복사되었습니다!
이제 지정된 도메인의 첫 번째 하위 도메인에 클러스터 애플리케이션을 노출할 수 있지만 애플리케이션 도메인과 일치하는 TLS 인증서로 연결은 보호되지 않습니다. 이러한 클러스터 애플리케이션에 각 도메인 이름에 대한 유효한 인증서가 있는지 확인하려면 이 도메인에서 생성된 모든 새 경로에 인증서를 동적으로 발행하도록 cert-manager를 구성합니다.
OpenShift 경로에 대한 인증서를 관리하는 데 필요한 필수 OpenShift 리소스 cert-manager를 생성합니다.
이 단계에서는 클러스터의 주석이 달린 경로를 구체적으로 모니터링하는 새 배포(및 Pod)를 생성합니다. 새 경로에
issuer-kind
및issuer-name
주석이 있는 경우 이 경로에 고유한 새 인증서에 대해 Issuer(ClusterIssuer)를 요청하고 경로를 생성하는 동안 지정된 호스트 이름을 준수합니다.참고클러스터가 GitHub에 액세스할 수 없는 경우 원시 콘텐츠를 로컬로 저장하고
oc apply -f localfilename.yaml -n cert-manager
를 실행할 수 있습니다.oc -n cert-manager apply -f https://github.com/cert-manager/openshift-routes/releases/latest/download/cert-manager-openshift-routes.yaml
$ oc -n cert-manager apply -f https://github.com/cert-manager/openshift-routes/releases/latest/download/cert-manager-openshift-routes.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 추가 OpenShift 리소스도 이 단계에서 생성됩니다.
-
ClusterRole
- 클러스터 전체에서 경로를 감시하고 업데이트할 수 있는 권한을 부여합니다. -
ServiceAccount
- 새로 생성된 Pod를 실행하는 권한을 사용합니다. -
ClusterRoleBinding
- 이 두 리소스를 바인딩합니다.
-
새
cert-manager-openshift-routes
Pod가 성공적으로 실행 중인지 확인합니다.oc -n cert-manager get pods
$ oc -n cert-manager get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 결과 예
NAME READY STATUS RESTARTS AGE cert-manager-866d8f788c-9kspc 1/1 Running 0 4h21m cert-manager-cainjector-6885c585bd-znws8 1/1 Running 0 4h41m cert-manager-openshift-routes-75b6bb44cd-f8kd5 1/1 Running 0 6s cert-manager-webhook-8498785dd9-bvfdf 1/1 Running 0 4h41m
NAME READY STATUS RESTARTS AGE cert-manager-866d8f788c-9kspc 1/1 Running 0 4h21m cert-manager-cainjector-6885c585bd-znws8 1/1 Running 0 4h41m cert-manager-openshift-routes-75b6bb44cd-f8kd5 1/1 Running 0 6s cert-manager-webhook-8498785dd9-bvfdf 1/1 Running 0 4h41m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.7. 샘플 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
이제 동적 인증서가 구성되었으므로 샘플 애플리케이션을 배포하여 새 경로를 노출할 때 인증서가 프로비저닝되고 신뢰할 수 있는지 확인할 수 있습니다.
샘플 애플리케이션에 대한 새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-world
Copy to Clipboard Copied! Toggle word wrap Toggle overflow hello world 애플리케이션을 배포합니다.
oc -n hello-world new-app --image=docker.io/openshift/hello-openshift
$ oc -n hello-world new-app --image=docker.io/openshift/hello-openshift
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터 외부에서 애플리케이션을 노출할 경로를 생성합니다.
oc -n hello-world create route edge --service=hello-openshift hello-openshift-tls --hostname hello.${DOMAIN}
$ oc -n hello-world create route edge --service=hello-openshift hello-openshift-tls --hostname hello.${DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 경로의 인증서를 신뢰할 수 없는지 확인합니다.
curl -I https://hello.${DOMAIN}
$ curl -I https://hello.${DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cert-manager를 트리거하도록 경로에 주석을 달아 사용자 정의 도메인의 인증서를 프로비저닝합니다.
oc -n hello-world annotate route hello-openshift-tls cert-manager.io/issuer-kind=ClusterIssuer cert-manager.io/issuer-name=letsencrypt-production
$ oc -n hello-world annotate route hello-openshift-tls cert-manager.io/issuer-kind=ClusterIssuer cert-manager.io/issuer-name=letsencrypt-production
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고인증서를 생성하는 데 2~3분 정도 걸립니다. 인증서 갱신은 expiration에 따라 cert-manager Operator에 의해 자동으로 관리됩니다.
경로의 인증서가 이제 신뢰할 수 있는지 확인합니다.
curl -I https://hello.${DOMAIN}
$ curl -I https://hello.${DOMAIN}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
14.8. 동적 인증서 프로비저닝 문제 해결 링크 복사링크가 클립보드에 복사되었습니다!
검증 프로세스는 일반적으로 인증서를 생성하는 동안 2~3분 정도 걸립니다.
인증서 생성 단계에서 경로에 주석을 달지 않으면 각 인증서 ,
,certificate
requestorder
, 챌린지
리소스에 대해 oc describe
를 실행하여 이벤트 또는 문제의 원인을 확인하는 데 도움이 될 수 있습니다.
oc get certificate,certificaterequest,order,challenge
$ oc get certificate,certificaterequest,order,challenge
문제 해결을 위해 인증서 디버깅에서 이 유용한 가이드를 참조하십시오.
인증서 상태 확인 및 갱신 테스트와 같은 다양한 인증서 관리 활동에 cmctl CLI 툴을 사용할 수도 있습니다.
15장. 튜토리얼: 외부 트래픽에 일관된 송신 IP 할당 링크 복사링크가 클립보드에 복사되었습니다!
보안 표준을 충족하기 위해 IP 기반 구성이 필요한 보안 그룹과 같이 클러스터를 떠나는 트래픽에 일관된 IP 주소를 할당할 수 있습니다.
기본적으로 AWS(ROSA)의 Red Hat OpenShift Service는 OVN-Kubernetes CNI(Container Network Interface)를 사용하여 풀에서 임의의 IP 주소를 할당합니다. 이로 인해 보안 잠금을 예측할 수 없거나 열 수 없게 만들 수 있습니다.
자세한 내용은 송신 IP 주소 구성 을 참조하십시오.
목표
- 송신 클러스터 트래픽에 대해 예측 가능한 IP 주소 세트를 구성하는 방법을 알아봅니다.
사전 요구 사항
- OVN-Kubernetes로 배포된 ROSA 클러스터
-
OpenShift CLI (
oc
) -
ROSA CLI (
rosa
) -
jq
15.1. 환경 변수 설정 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 환경 변수를 설정합니다.
참고ROSA_MACHINE_POOL_NAME
변수의 값을 교체하여 다른 머신 풀을 대상으로 합니다.export ROSA_CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}" | sed 's/-[a-z0-9]\{5\}$//') export ROSA_MACHINE_POOL_NAME=worker
$ export ROSA_CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}" | sed 's/-[a-z0-9]\{5\}$//') $ export ROSA_MACHINE_POOL_NAME=worker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.2. 용량 확인 링크 복사링크가 클립보드에 복사되었습니다!
각 노드에 할당된 IP 주소 수는 각 퍼블릭 클라우드 공급자에 대해 제한됩니다.
다음 명령을 실행하여 충분한 용량을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.3. 송신 IP 규칙 생성 링크 복사링크가 클립보드에 복사되었습니다!
송신 IP 규칙을 생성하기 전에 사용할 송신 IP를 식별합니다.
참고선택한 송신 IP는 작업자 노드가 프로비저닝되는 서브넷의 일부로 존재해야 합니다.
선택 사항: AWS VPC(Virtual Private Cloud) DHCP(Dynamic Host Configuration Protocol) 서비스와의 충돌을 방지하기 위해 요청한 송신 IP를 예약합니다.
15.4. 네임스페이스에 송신 IP 할당 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 새 프로젝트를 생성합니다.
oc new-project demo-egress-ns
$ oc new-project demo-egress-ns
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 네임스페이스 내에서 모든 Pod에 대한 송신 규칙을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5. Pod에 송신 IP 할당 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 새 프로젝트를 생성합니다.
oc new-project demo-egress-pod
$ oc new-project demo-egress-pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod에 대한 송신 규칙을 생성합니다.
참고spec.namespaceSelector
는 필수 필드입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.1. 노드 레이블 지정 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 보류 중인 송신 IP 할당을 확보합니다.
oc get egressips
$ oc get egressips
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS demo-egress-ns 10.10.100.253 demo-egress-pod 10.10.100.254
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS demo-egress-ns 10.10.100.253 demo-egress-pod 10.10.100.254
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성한 송신 IP 규칙은
k8s.ovn.org/egress-assignable
레이블이 있는 노드에만 적용됩니다. 레이블이 특정 머신 풀에만 있는지 확인합니다.다음 명령을 사용하여 머신 풀에 레이블을 할당합니다.
주의머신 풀의 노드 레이블을 사용하는 경우 이 명령은 해당 라벨을 대체합니다. 노드 라벨이 남아 있도록 원하는 레이블을
--labels
필드에 입력해야 합니다.rosa update machinepool ${ROSA_MACHINE_POOL_NAME} \ --cluster="${ROSA_CLUSTER_NAME}" \ --labels "k8s.ovn.org/egress-assignable="
$ rosa update machinepool ${ROSA_MACHINE_POOL_NAME} \ --cluster="${ROSA_CLUSTER_NAME}" \ --labels "k8s.ovn.org/egress-assignable="
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.5.2. 송신 IP 검토 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 송신 IP 할당을 검토합니다.
oc get egressips
$ oc get egressips
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS demo-egress-ns 10.10.100.253 ip-10-10-156-122.ec2.internal 10.10.150.253 demo-egress-pod 10.10.100.254 ip-10-10-156-122.ec2.internal 10.10.150.254
NAME EGRESSIPS ASSIGNED NODE ASSIGNED EGRESSIPS demo-egress-ns 10.10.100.253 ip-10-10-156-122.ec2.internal 10.10.150.253 demo-egress-pod 10.10.100.254 ip-10-10-156-122.ec2.internal 10.10.150.254
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.6. 검증 링크 복사링크가 클립보드에 복사되었습니다!
15.6.1. 샘플 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
송신 IP 규칙을 테스트하려면 지정한 송신 IP 주소로 제한된 서비스를 생성합니다. 이렇게 하면 IP 주소의 작은 하위 집합을 예상하는 외부 서비스를 시뮬레이션합니다.
echoserver
명령을 실행하여 요청을 복제합니다.oc -n default run demo-service --image=gcr.io/google_containers/echoserver:1.4
$ oc -n default run demo-service --image=gcr.io/google_containers/echoserver:1.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Pod를 서비스로 노출하고 다음 명령을 실행하여 지정한 송신 IP 주소로 수신을 제한합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 로드 밸런서 호스트 이름을 검색하고 다음 명령을 실행하여 환경 변수로 저장합니다.
export LOAD_BALANCER_HOSTNAME=$(oc get svc -n default demo-service -o json | jq -r '.status.loadBalancer.ingress[].hostname')
$ export LOAD_BALANCER_HOSTNAME=$(oc get svc -n default demo-service -o json | jq -r '.status.loadBalancer.ingress[].hostname')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.6.2. 네임스페이스 송신 테스트 링크 복사링크가 클립보드에 복사되었습니다!
대화형 쉘을 시작하여 네임스페이스 송신 규칙을 테스트합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 요청을 로드 밸런서에 전송하고 성공적으로 연결할 수 있는지 확인합니다.
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공적인 연결에 대한 출력을 확인합니다.
참고client_address
는 송신 IP가 아닌 로드 밸런서의 내부 IP 주소입니다..spec.loadBalancerSourceRanges
로 제한된 서비스로 연결하여 클라이언트 주소를 올바르게 구성했는지 확인할 수 있습니다.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod를 종료합니다.
exit
$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.6.3. Pod 송신 테스트 링크 복사링크가 클립보드에 복사되었습니다!
대화형 쉘을 시작하여 Pod 송신 규칙을 테스트합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 로드 밸런서에 요청을 보냅니다.
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공적인 연결에 대한 출력을 확인합니다.
참고client_address
는 송신 IP가 아닌 로드 밸런서의 내부 IP 주소입니다..spec.loadBalancerSourceRanges
로 제한된 서비스로 연결하여 클라이언트 주소를 올바르게 구성했는지 확인할 수 있습니다.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod를 종료합니다.
exit
$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.6.4. 선택 사항: 테스트 차단 송신 링크 복사링크가 클립보드에 복사되었습니다!
선택 사항: 다음 명령을 실행하여 송신 규칙이 적용되지 않을 때 트래픽이 성공적으로 차단되었는지 테스트합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 로드 밸런서에 요청을 보냅니다.
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 명령이 실패하면 송신이 성공적으로 차단됩니다.
다음 명령을 실행하여 Pod를 종료합니다.
exit
$ exit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
15.7. 클러스터 정리 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 클러스터를 정리합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 할당된 노드 레이블을 정리합니다.
주의머신 풀의 노드 레이블을 사용하는 경우 이 명령은 해당 라벨을 대체합니다. 원하는 레이블을
--labels
필드에 입력하여 노드 라벨이 유지되도록 합니다.rosa update machinepool ${ROSA_MACHINE_POOL_NAME} \ --cluster="${ROSA_CLUSTER_NAME}" \ --labels ""
$ rosa update machinepool ${ROSA_MACHINE_POOL_NAME} \ --cluster="${ROSA_CLUSTER_NAME}" \ --labels ""
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16장. 튜토리얼: 사용자 정의 도메인 및 TLS 인증서를 사용하여 구성 요소 경로 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
이 가이드에서는 ROSA(Red Hat OpenShift Service on AWS) 버전 4.14 이상에서 웹 콘솔, OAuth 서버 및 다운로드 구성 요소 경로의 호스트 이름 및 TLS 인증서를 수정하는 방법을 보여줍니다.[1]
구성 요소 경로에 대한 변경 사항[2] 이 가이드에서는 내부 OAuth 서버 URL 사용자 정의,콘솔 경로 및 OpenShift Container Platform 설명서 다운로드에 자세히 설명되어 있습니다.
16.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
-
ROSA CLI (
rosa
) 버전 1.2.37 이상 -
AWS CLI (
aws
) ROSA Classic 클러스터 버전 4.14 이상
참고현재 HCP를 사용하는 ROSA는 지원되지 않습니다.
-
OpenShift CLI(
oc
) -
jq
CLI -
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - OpenSSL(데모 SSL/TLS 인증서를 생성하기 위해)
16.2. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
-
cluster-admin
권한이 있는 계정을 사용하여 클러스터에 로그인합니다. 클러스터 이름에 대한 환경 변수를 구성합니다.
export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}" | sed 's/-[a-z0-9]\{5\}$//')
$ export CLUSTER_NAME=$(oc get infrastructure cluster -o=jsonpath="{.status.infrastructureName}" | sed 's/-[a-z0-9]\{5\}$//')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 섹션으로 이동하기 전에 모든 필드가 올바르게 출력되는지 확인합니다.
echo "Cluster: ${CLUSTER_NAME}"
$ echo "Cluster: ${CLUSTER_NAME}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Cluster: my-rosa-cluster
Cluster: my-rosa-cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.3. 현재 경로 찾기 링크 복사링크가 클립보드에 복사되었습니다!
기본 호스트 이름에서 구성 요소 경로에 연결할 수 있는지 확인합니다.
openshift-console
및openshift-authentication
프로젝트의 경로 목록을 쿼리하여 호스트 이름을 찾을 수 있습니다.oc get routes -n openshift-console oc get routes -n openshift-authentication
$ oc get routes -n openshift-console $ oc get routes -n openshift-authentication
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD console console-openshift-console.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com ... 1 more console https reencrypt/Redirect None downloads downloads-openshift-console.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com ... 1 more downloads http edge/Redirect None NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD oauth-openshift oauth-openshift.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com ... 1 more oauth-openshift 6443 passthrough/Redirect None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD console console-openshift-console.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com ... 1 more console https reencrypt/Redirect None downloads downloads-openshift-console.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com ... 1 more downloads http edge/Redirect None NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD oauth-openshift oauth-openshift.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com ... 1 more oauth-openshift 6443 passthrough/Redirect None
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 출력에서 기본 호스트 이름은
z9a9.p1.openshiftapps.com
임을 확인할 수 있습니다.다음 명령을 실행하여 기본 수신의 ID를 가져옵니다.
export INGRESS_ID=$(rosa list ingress -c ${CLUSTER_NAME} -o json | jq -r '.[] | select(.default == true) | .id')
$ export INGRESS_ID=$(rosa list ingress -c ${CLUSTER_NAME} -o json | jq -r '.[] | select(.default == true) | .id')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 섹션으로 이동하기 전에 모든 필드가 올바르게 출력되는지 확인합니다.
echo "Ingress ID: ${INGRESS_ID}"
$ echo "Ingress ID: ${INGRESS_ID}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Ingress ID: r3l6
Ingress ID: r3l6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이러한 명령을 실행하면 클러스터의 기본 구성 요소 경로가 다음과 같습니다.
-
console-openshift-console.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com
-
Downloads-openshift-console.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com
-
oauth-openshift.apps.my-example-cluster-aws.z9a9.p1.openshiftapps.com
-
rosa edit ingress
명령을 사용하여 각 서비스의 호스트 이름을 변경하고 모든 구성 요소 경로에 대한 TLS 인증서를 추가할 수 있습니다. 관련 매개변수는 rosa edit ingress
명령에 대한 명령줄 도움말의 이 발췌에 표시됩니다.
rosa edit ingress -h
$ rosa edit ingress -h
Edit a cluster ingress for a cluster. Usage:
rosa edit ingress ID [flags]
[...]
--component-routes string Component routes settings. Available keys [oauth, console, downloads]. For each key a pair of hostname and tlsSecretRef is expected to be supplied. Format should be a comma separate list 'oauth: hostname=example-hostname;tlsSecretRef=example-secret-ref,downloads:...'
이 예제에서는 다음과 같은 사용자 지정 구성 요소 경로를 사용합니다.
-
console.my-new-domain.dev
-
Downloads.my-new-domain.dev
for Downloads -
OAuth.my-new-domain.dev
16.4. 각 구성 요소 경로에 유효한 TLS 인증서를 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션에서는 별도의 자체 서명된 인증서 키 쌍을 세 개 생성한 다음 이를 신뢰하여 실제 웹 브라우저를 사용하여 새 구성 요소 경로에 액세스할 수 있는지 확인합니다.
이는 설명용으로만 사용되며 프로덕션 워크로드를 위한 솔루션으로는 권장되지 않습니다. 프로덕션 워크로드에 대한 유사한 특성으로 인증서를 생성하는 방법을 알아보려면 인증 기관을 참조하십시오.
HTTP/2 연결 병합 문제를 방지하려면 각 끝점에 대해 별도의 개별 인증서를 사용해야 합니다. 와일드카드 또는 SAN 인증서 사용은 지원되지 않습니다.
각 구성 요소 경로에 대한 인증서를 생성하고 인증서의 제목(
-subj
)을 사용하려는 구성 요소 경로의 사용자 지정 도메인으로 설정합니다.예제
openssl req -newkey rsa:2048 -new -nodes -x509 -days 365 -keyout key-console.pem -out cert-console.pem -subj "/CN=console.my-new-domain.dev" openssl req -newkey rsa:2048 -new -nodes -x509 -days 365 -keyout key-downloads.pem -out cert-downloads.pem -subj "/CN=downloads.my-new-domain.dev" openssl req -newkey rsa:2048 -new -nodes -x509 -days 365 -keyout key-oauth.pem -out cert-oauth.pem -subj "/CN=oauth.my-new-domain.dev"
$ openssl req -newkey rsa:2048 -new -nodes -x509 -days 365 -keyout key-console.pem -out cert-console.pem -subj "/CN=console.my-new-domain.dev" $ openssl req -newkey rsa:2048 -new -nodes -x509 -days 365 -keyout key-downloads.pem -out cert-downloads.pem -subj "/CN=downloads.my-new-domain.dev" $ openssl req -newkey rsa:2048 -new -nodes -x509 -days 365 -keyout key-oauth.pem -out cert-oauth.pem -subj "/CN=oauth.my-new-domain.dev"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면
.pem
파일,key-<component>.pem 및
쌍의 세 쌍이 생성됩니다.cert-
<component>.pem
16.5. 클러스터에 인증서를 시크릿으로 추가 링크 복사링크가 클립보드에 복사되었습니다!
openshift-config
네임스페이스에 3개의 TLS 시크릿을 생성합니다.이는 이 가이드의 뒷부분에 있는 구성 요소 경로를 업데이트할 때 시크릿 참조가 됩니다.
oc create secret tls console-tls --cert=cert-console.pem --key=key-console.pem -n openshift-config oc create secret tls downloads-tls --cert=cert-downloads.pem --key=key-downloads.pem -n openshift-config oc create secret tls oauth-tls --cert=cert-oauth.pem --key=key-oauth.pem -n openshift-config
$ oc create secret tls console-tls --cert=cert-console.pem --key=key-console.pem -n openshift-config $ oc create secret tls downloads-tls --cert=cert-downloads.pem --key=key-downloads.pem -n openshift-config $ oc create secret tls oauth-tls --cert=cert-oauth.pem --key=key-oauth.pem -n openshift-config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.6. 클러스터에서 로드 밸런서의 호스트 이름 찾기 링크 복사링크가 클립보드에 복사되었습니다!
클러스터를 생성할 때 서비스는 로드 밸런서를 생성하고 해당 로드 밸런서의 호스트 이름을 생성합니다. 클러스터에 대한 DNS 레코드를 만들려면 로드 밸런서 호스트 이름을 알아야 합니다.
openshift-ingress
네임스페이스에 대해 oc get svc
명령을 실행하여 호스트 이름을 찾을 수 있습니다. 로드 밸런서의 호스트 이름은 openshift-ingress
네임스페이스의 router-default
서비스와 연결된 EXTERNAL-IP
입니다.
oc get svc -n openshift-ingress
$ oc get svc -n openshift-ingress
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
router-default LoadBalancer 172.30.237.88 a234gsr3242rsfsfs-1342r624.us-east-1.elb.amazonaws.com 80:31175/TCP,443:31554/TCP 76d
이 경우 호스트 이름은 a234gsr3242rsfsfs-1342r624.us-east-1.elb.amazonaws.com
입니다.
나중에 이 값을 저장하십시오. 새 구성 요소 경로 호스트 이름에 대한 DNS 레코드를 구성해야 하므로 나중에 이 값을 저장합니다.
16.7. 구성 요소 경로 DNS 레코드를 호스팅 공급자에 추가 링크 복사링크가 클립보드에 복사되었습니다!
호스팅 공급자에서 새 구성 요소 경로 호스트 이름의 CNAME
을 이전 단계에서 찾은 로드 밸런서 호스트 이름에 매핑하는 DNS 레코드를 추가합니다.
16.8. ROSA CLI를 사용하여 구성 요소 경로 및 TLS 시크릿 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
DNS 레코드가 업데이트되면 ROSA CLI를 사용하여 구성 요소 경로를 변경할 수 있습니다.
rosa edit ingress
명령을 사용하여 기본 ingress 경로를 새 기본 도메인 및 연결된 보안 참조로 업데이트하여 각 구성 요소 경로의 호스트 이름을 업데이트합니다.rosa edit ingress -c ${CLUSTER_NAME} ${INGRESS_ID} --component-routes 'console: hostname=console.my-new-domain.dev;tlsSecretRef=console-tls,downloads: hostname=downloads.my-new-domain.dev;tlsSecretRef=downloads-tls,oauth: hostname=oauth.my-new-domain.dev;tlsSecretRef=oauth-tls'
$ rosa edit ingress -c ${CLUSTER_NAME} ${INGRESS_ID} --component-routes 'console: hostname=console.my-new-domain.dev;tlsSecretRef=console-tls,downloads: hostname=downloads.my-new-domain.dev;tlsSecretRef=downloads-tls,oauth: hostname=oauth.my-new-domain.dev;tlsSecretRef=oauth-tls'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고구성 요소 경로를 빈 문자열로 설정하지 않으려는 상태로 두어 구성 요소 경로의 하위 집합만 편집할 수도 있습니다. 예를 들어 콘솔 및 OAuth 서버 호스트 이름 및 TLS 인증서만 변경하려면 다음 명령을 실행합니다.
rosa edit ingress -c ${CLUSTER_NAME} ${INGRESS_ID} --component-routes 'console: hostname=console.my-new-domain.dev;tlsSecretRef=console-tls,downloads: hostname="";tlsSecretRef="", oauth: hostname=oauth.my-new-domain.dev;tlsSecretRef=oauth-tls'
$ rosa edit ingress -c ${CLUSTER_NAME} ${INGRESS_ID} --component-routes 'console: hostname=console.my-new-domain.dev;tlsSecretRef=console-tls,downloads: hostname="";tlsSecretRef="", oauth: hostname=oauth.my-new-domain.dev;tlsSecretRef=oauth-tls'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rosa list ingress
명령을 실행하여 변경 사항이 성공적으로 수행되었는지 확인합니다.rosa list ingress -c ${CLUSTER_NAME} -ojson | jq ".[] | select(.id == \"${INGRESS_ID}\") | .component_routes"
$ rosa list ingress -c ${CLUSTER_NAME} -ojson | jq ".[] | select(.id == \"${INGRESS_ID}\") | .component_routes"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 로컬 시스템의 신뢰 저장소에 인증서를 추가한 다음 로컬 웹 브라우저를 사용하여 새 경로에서 구성 요소에 액세스할 수 있는지 확인합니다.
16.9. ROSA CLI를 사용하여 구성 요소 경로를 기본값으로 재설정 링크 복사링크가 클립보드에 복사되었습니다!
구성 요소 경로를 기본 구성으로 재설정하려면 다음 rosa edit ingress
명령을 실행합니다.
rosa edit ingress -c ${CLUSTER_NAME} ${INGRESS_ID} --component-routes 'console: hostname="";tlsSecretRef="",downloads: hostname="";tlsSecretRef="", oauth: hostname="";tlsSecretRef=""'
$ rosa edit ingress -c ${CLUSTER_NAME} ${INGRESS_ID} --component-routes 'console: hostname="";tlsSecretRef="",downloads: hostname="";tlsSecretRef="", oauth: hostname="";tlsSecretRef=""'
17장. ROSA 시작하기 링크 복사링크가 클립보드에 복사되었습니다!
17.1. 튜토리얼: ROSA란 무엇입니까? 링크 복사링크가 클립보드에 복사되었습니다!
ROSA(Red Hat OpenShift Service on AWS)는 애플리케이션을 구축하고 배포하여 가장 중요한 사항에 중점을 두고 고객에게 가치를 제공할 수 있는 완전 관리형 턴키 애플리케이션 플랫폼입니다. Red Hat 및 AWS SRE 전문가가 기본 플랫폼을 관리하므로 인프라 관리에 대해 우려할 필요가 없습니다. ROSA는 다양한 AWS 컴퓨팅, 데이터베이스, 분석, 머신 러닝, 네트워킹, 모바일 및 기타 서비스와 원활한 통합을 제공하여 고객에게 차별화된 경험을 보다 신속하게 구축하고 제공합니다.
ROSA는 AWS STS(Security Token Service)를 사용하여 AWS 계정의 인프라를 관리하기 위한 인증 정보를 얻습니다. AWS STS는 IAM 사용자 또는 페더레이션 사용자를 위한 임시 인증 정보를 생성하는 글로벌 웹 서비스입니다. ROSA는 이를 사용하여 단기적이고 제한된 권한, 보안 인증 정보를 할당합니다. 이러한 인증 정보는 AWS API 호출을 수행하는 각 구성 요소에 특정적인 IAM 역할과 연결됩니다. 이 방법은 클라우드 서비스 리소스 관리에서 최소한의 권한 및 보안 관행의 주체와 일치합니다. ROSA 명령줄 인터페이스(CLI) 툴은 고유한 작업에 할당된 STS 자격 증명을 관리하고 OpenShift 기능의 일부로 AWS 리소스에 대한 작업을 수행합니다.
17.1.1. ROSA의 주요 기능 링크 복사링크가 클립보드에 복사되었습니다!
- 네이티브 AWS 서비스: AWS 관리 콘솔을 통해 셀프 서비스 온보딩 환경을 통해 Red Hat OpenShift 온 디맨드에 액세스하고 사용합니다.
- 유연한 소비 기반 가격: 유연한 가격 및 연간 청구 모델에 따라 유연한 가격과 필요에 따라 비즈니스 요구 사항에 맞게 비용을 지불합니다.
- Red Hat OpenShift 및 AWS 사용량에 대한 단일 청구: 고객은 Red Hat OpenShift 및 AWS 사용량 모두에 대해 AWS에서 단일 청구를 받습니다.
- 완전 통합된 지원 경험: Red Hat 및 Amazon 지원과 함께 Red Hat 사이트 안정성 엔지니어(SRE)와 함께 설치, 관리, 유지 관리 및 업그레이드와 99.95% 서비스 수준 계약(SLA)을 수행합니다.
- AWS 서비스 통합: AWS에는 컴퓨팅, 스토리지, 네트워킹, 데이터베이스, 분석 및 머신 러닝과 같은 강력한 클라우드 서비스 포트폴리오가 있습니다. 이러한 모든 서비스는 ROSA를 통해 직접 액세스할 수 있습니다. 따라서 친숙한 관리 인터페이스를 통해 전역 및 온디맨드를 보다 쉽게 구축, 운영 및 확장할 수 있습니다.
- 최대 가용성: 지원되는 리전의 여러 가용성 영역에 클러스터를 배포하여 가장 까다로운 미션 크리티컬 애플리케이션 및 데이터의 가용성을 극대화하고 고가용성을 유지합니다.
- 클러스터 노드 확장: 리소스 수요에 맞게 컴퓨팅 노드를 추가하거나 제거합니다.
- 최적화된 클러스터: 요구 사항에 맞게 클러스터 크기가 지정된 메모리 최적화, 컴퓨팅 최적화 또는 일반 용도의 EC2 인스턴스 유형 중에서 선택합니다.
- 글로벌 가용성: 제품 지역 가용성 페이지를 참조하여 ROSA를 전 세계적으로 사용할 수 있는 위치를 확인하십시오.
17.1.2. ROSA 및 Kubernetes 링크 복사링크가 클립보드에 복사되었습니다!
ROSA에서 컨테이너를 배포하고 관리하는 데 필요한 모든 것이 컨테이너 관리, Operator, 네트워킹, 로드 밸런싱, 서비스 메시, CI/CD, 방화벽, 모니터링, 레지스트리, 인증 및 권한 부여 기능을 포함하여 번들로 제공됩니다. 이러한 구성 요소는 완전한 플랫폼으로 통합 작업을 위해 함께 테스트됩니다. 무선 플랫폼 업그레이드를 포함한 자동화된 클러스터 작업은 Kubernetes 환경을 더욱 향상시킵니다.
17.1.3. 기본 역할 링크 복사링크가 클립보드에 복사되었습니다!
일반적으로 클러스터 배포 및 유지 관리는 Red Hat 또는 AWS의 책임이고 애플리케이션, 사용자 및 데이터는 고객의 책임이 됩니다. 역할 분석에 대한 자세한 내용은 담당 매트릭스 를 참조하십시오.
17.1.4. 로드맵 및 기능 요청 링크 복사링크가 클립보드에 복사되었습니다!
ROSA 로드맵 을 방문하여 현재 개발 중인 기능의 상태를 최신 상태로 유지합니다. 제품 팀에 대한 제안 사항이 있는 경우 새 문제를 엽니다.
17.1.5. AWS 리전 가용성 링크 복사링크가 클립보드에 복사되었습니다!
ROSA를 사용할 수 있는 위치에 대한 최신 보기는 제품 지역 가용성 페이지를 참조하십시오.
17.1.6. 규정 준수 인증 링크 복사링크가 클립보드에 복사되었습니다!
ROSA는 현재 SOC-2 유형 2, SOC 3, ISO-27001, ISO Cryostat17, ISO Cryostat18, HIPAA, GDPR 및 PCI-DSS와 호환됩니다. 또한 현재 FedRAMP High를 위해 노력하고 있습니다.
17.1.7. 노드 링크 복사링크가 클립보드에 복사되었습니다!
17.1.7.1. 여러 AWS 리전의 작업자 노드 링크 복사링크가 클립보드에 복사되었습니다!
ROSA 클러스터의 모든 노드는 동일한 AWS 리전에 있어야 합니다. 여러 가용성 영역에 구성된 클러스터의 경우 컨트롤 플레인 노드 및 작업자 노드는 가용성 영역에 분산됩니다.
17.1.7.2. 최소 작업자 노드 수 링크 복사링크가 클립보드에 복사되었습니다!
ROSA 클러스터의 경우 최소 수는 단일 가용성 영역의 작업자 노드 2개와 여러 가용성 영역의 작업자 노드 3개입니다.
17.1.7.3. 기본 노드 운영 체제 링크 복사링크가 클립보드에 복사되었습니다!
모든 OpenShift v4.x 오퍼링과 마찬가지로 컨트롤 플레인, 인프라 및 작업자 노드는 RHCOS(Red Hat Enterprise Linux CoreOS)를 실행합니다.
17.1.7.4. 노드 중단 또는 종료 링크 복사링크가 클립보드에 복사되었습니다!
현재 ROSA에는 노드에 대한 하이버네이션 또는 종료 기능이 없습니다. shutdown 및 hibernation 기능은 광범위한 클라우드 서비스 사용을 위해 아직 충분히 완성되지 않은 OpenShift 플랫폼 기능입니다.
17.1.7.5. 작업자 노드에 지원되는 인스턴스 링크 복사링크가 클립보드에 복사되었습니다!
작업자 노드에 지원되는 인스턴스 전체 목록은 AWS 인스턴스 유형을 참조하십시오. Spot 인스턴스도 지원됩니다.
17.1.7.6. 노드 자동 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
자동 스케일링을 사용하면 현재 워크로드에 따라 클러스터 크기를 자동으로 조정할 수 있습니다. 자세한 내용은 클러스터에서 자동 스케일링 노드 정보를 참조하십시오.
17.1.7.7. 최대 작업자 노드 수 링크 복사링크가 클립보드에 복사되었습니다!
ROSA 클러스터 버전 4.14.14 이상의 최대 작업자 노드 수는 249입니다. 이전 버전의 경우 제한은 180개입니다.
계정 전체 및 클러스터별 역할 목록은 ROSA 설명서에 제공됩니다.
17.1.8. 관리자 링크 복사링크가 클립보드에 복사되었습니다!
ROSA 고객의 관리자는 사용자가 생성한 모든 프로젝트에 액세스하는 것 외에도 사용자와 할당량을 관리할 수 있습니다.
17.1.9. OpenShift 버전 및 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
ROSA는 OpenShift Container Platform을 기반으로 하는 관리형 서비스입니다. ROSA 문서에서 현재 버전 및 라이프 사이클 날짜를 볼 수 있습니다.
고객은 최신 OpenShift 버전으로 업그레이드하고 해당 OpenShift 버전의 기능을 사용할 수 있습니다. 자세한 내용은 라이프 사이클 날짜 를 참조하십시오. ROSA에서 일부 OpenShift 기능을 사용할 수 있는 것은 아닙니다. 자세한 내용은 서비스 정의를 검토하십시오.
17.1.10. 지원 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Cluster Manager 에서 직접 티켓을 열 수 있습니다. 지원 취득에 대한 자세한 내용은 ROSA 지원 설명서 를 참조하십시오.
Red Hat 고객 포털을 방문하여 Red Hat 제품과 관련된 기사 및 솔루션에 대한 Red Hat 지식 베이스를 검색하거나 검색하거나 Red Hat 지원에 지원 케이스를 제출할 수도 있습니다.
17.1.10.1. 제한된 지원 링크 복사링크가 클립보드에 복사되었습니다!
"수명 종료"일 이전에 ROSA 클러스터가 업그레이드되지 않으면 클러스터는 제한된 지원 상태로 계속 작동합니다. 해당 클러스터에 대한 SLA는 더 이상 적용되지 않지만 해당 클러스터에 대한 지원을 받을 수 있습니다. 자세한 내용은 제한된 지원 상태 설명서를 참조하십시오.
추가 지원 리소스
- Red Hat 지원
AWS 지원 고객은 유효한 AWS 지원 계약이 있어야 합니다.
17.1.11. SLA(서비스 수준 계약) 링크 복사링크가 클립보드에 복사되었습니다!
자세한 내용은 ROSA SLA 페이지를 참조하십시오.
17.1.12. 알림 및 통신 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat은 이메일 및 하이브리드 클라우드 콘솔 서비스 로그를 통해 새로운 Red Hat 및 AWS 기능, 업데이트 및 스케줄링된 유지 관리에 대한 알림을 제공합니다.
17.1.13. OBSA(Open Service Broker for AWS) 링크 복사링크가 클립보드에 복사되었습니다!
ROSA와 함께 OSBA를 사용할 수 있습니다. 그러나 권장되는 방법은 Kubernetes 용 최신 AWS 컨트롤러 입니다. OSBA에 대한 자세한 내용은 AWS의 Open Service Broker 를 참조하십시오.
17.1.14. 오프보딩 링크 복사링크가 클립보드에 복사되었습니다!
고객은 언제든지 ROSA 사용을 중지하고 애플리케이션을 온프레미스, 프라이빗 클라우드 또는 기타 클라우드 공급자로 이동할 수 있습니다. 표준 예약 인스턴스(RI) 정책은 사용되지 않는 RI에 적용됩니다.
17.1.15. 인증 링크 복사링크가 클립보드에 복사되었습니다!
ROSA는 OpenID Connect( OAuth2 프로필, Google OAuth, GitHub OAuth, GitLab 및 LDAP)와 같은 인증 메커니즘을 지원합니다.
17.1.16. SRE 클러스터 액세스 링크 복사링크가 클립보드에 복사되었습니다!
모든 SRE 클러스터 액세스는 MFA에 의해 보호됩니다. 자세한 내용은 SRE Access 를 참조하십시오.
17.1.17. Encryption 링크 복사링크가 클립보드에 복사되었습니다!
17.1.17.1. 암호화 키 링크 복사링크가 클립보드에 복사되었습니다!
ROSA는 KMS에 저장된 키를 사용하여 EBS 볼륨을 암호화합니다. 또한 고객은 클러스터 생성 시 자체 KMS 키를 제공할 수 있습니다.
17.1.17.2. KMS 키 링크 복사링크가 클립보드에 복사되었습니다!
KMS 키를 지정하면 컨트롤 플레인, 인프라 및 작업자 노드 루트 볼륨 및 영구 볼륨이 키로 암호화됩니다.
17.1.17.3. 데이터 암호화 링크 복사링크가 클립보드에 복사되었습니다!
기본적으로 미사용 암호화가 있습니다.By default, there is encryption at rest. AWS Storage 플랫폼은 데이터를 저장하기 전에 자동으로 데이터를 암호화하고 검색하기 전에 데이터를 해독합니다. 자세한 내용은 AWS EBS 암호화를 참조하십시오.
클러스터의 etcd를 암호화하여 AWS 스토리지 암호화와 결합할 수도 있습니다. 이로 인해 암호화를 두 배로 늘리면 성능이 20 %까지 증가합니다. 자세한 내용은 etcd 암호화 설명서를 참조하십시오.
17.1.17.4. etcd 암호화 링크 복사링크가 클립보드에 복사되었습니다!
etcd 암호화는 클러스터 생성 시에만 활성화할 수 있습니다.
etcd 암호화에는 잘못된 보안 위험 완화 기능이 포함된 추가 오버헤드가 발생합니다.
17.1.17.5. etcd 암호화 구성 링크 복사링크가 클립보드에 복사되었습니다!
etcd 암호화는 OpenShift Container Platform과 동일하게 구성됩니다. aescbc cypher가 사용되고 클러스터 배포 중에 설정이 패치됩니다. 자세한 내용은 Kubernetes 설명서 를 참조하십시오.
17.1.17.6. EBS 암호화를 위한 다중 리전 KMS 키 링크 복사링크가 클립보드에 복사되었습니다!
현재 ROSA CLI는 EBS 암호화를 위해 다중 리전 KMS 키를 허용하지 않습니다. 이 기능은 제품 업데이트를 위한 백로그에 있습니다. ROSA CLI는 클러스터 생성 시 정의된 경우 EBS 암호화를 위해 단일 리전 KMS 키를 허용합니다.
17.1.18. 인프라 링크 복사링크가 클립보드에 복사되었습니다!
ROSA는 가상 머신, 스토리지 및 로드 밸런서와 같은 다양한 클라우드 서비스를 사용합니다. AWS 사전 요구 사항 에서 정의된 목록을 볼 수 있습니다.
17.1.19. 인증 정보 방법 링크 복사링크가 클립보드에 복사되었습니다!
AWS 계정에서 필요한 작업을 수행하는 데 필요한 권한을 Red Hat에 부여하는 두 가지 인증 정보 방법이 있습니다. 즉 STS가 있는 AWS 또는 관리자 권한이 있는 IAM 사용자입니다. STS를 사용하는 AWS는 기본 방법이며 IAM 사용자 방법은 결국 더 이상 사용되지 않습니다. STS를 사용하는 AWS는 클라우드 서비스 리소스 관리에서 최소한의 권한 및 보안 관행의 원칙에 더 잘 부합합니다.
17.1.20. 사전 요구 사항 권한 또는 실패 오류 링크 복사링크가 클립보드에 복사되었습니다!
ROSA CLI의 최신 버전을 확인합니다. ROSA CLI의 모든 릴리스는 Github 와 Red Hat 서명된 바이너리 릴리스 의 두 위치에 있습니다.
17.1.21. 스토리지 링크 복사링크가 클립보드에 복사되었습니다!
서비스 정의의 스토리지 섹션을 참조하십시오.
OpenShift에는 AWS EFS용 CSI 드라이버가 포함되어 있습니다. 자세한 내용은 AWS 에서 Red Hat OpenShift Service의 AWS EFS 설정을 참조하십시오.
17.1.22. VPC 사용 링크 복사링크가 클립보드에 복사되었습니다!
설치 시 기존 VPC에 배포하거나 자체 VPC를 가져오도록 선택할 수 있습니다. 그런 다음 필요한 서브넷을 선택하고 해당 서브넷을 사용할 때 설치 프로그램의 서브넷을 포함하는 유효한 CIDR 범위를 제공할 수 있습니다.
ROSA를 사용하면 여러 클러스터가 동일한 VPC를 공유할 수 있습니다. 하나의 VPC의 클러스터 수는 나머지 AWS 리소스 할당량 및 중복될 수 없는 CIDR 범위에 따라 제한됩니다. 자세한 내용은 CIDR 범위 정의를 참조하십시오.
17.1.23. 네트워크 플러그인 링크 복사링크가 클립보드에 복사되었습니다!
ROSA는 OpenShift OVN-Kubernetes 기본 CNI 네트워크 공급자를 사용합니다.
17.1.24. 네임스페이스 간 네트워킹 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 관리자는 NetworkPolicy 오브젝트를 사용하여 프로젝트별로 네임스페이스를 사용자 지정하고 거부할 수 있습니다. 자세한 내용은 네트워크 정책을 사용하여 다중 테넌트 격리 구성 을 참조하십시오.
17.1.25. Prometheus 및 Grafana 사용 링크 복사링크가 클립보드에 복사되었습니다!
Prometheus 및 Grafana를 사용하여 OpenShift 사용자 워크로드 모니터링을 사용하여 컨테이너를 모니터링하고 용량을 관리할 수 있습니다. OpenShift Cluster Manager 의 확인란 옵션입니다.
17.1.26. 클러스터 control-plane의 감사 로그 출력 링크 복사링크가 클립보드에 복사되었습니다!
Cluster Logging Operator 애드온이 클러스터에 추가된 경우 CloudMonitor를 통해 감사 로그를 사용할 수 있습니다. 그렇지 않은 경우 지원 요청을 통해 일부 감사 로그를 요청할 수 있습니다. 소규모 대상 및 시간상 제공되는 로그는 내보내기를 요청하여 고객에게 보낼 수 있습니다. 사용 가능한 감사 로그의 선택은 플랫폼 보안 및 규정 준수 범주에서 SRE의 재량에 따라 제공됩니다. 클러스터 전체 로그 내보내기 요청은 거부됩니다.
17.1.27. AWS 권한 경계 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 정책에 대해 AWS Permissions Boundary를 사용할 수 있습니다.
17.1.28. AMI 링크 복사링크가 클립보드에 복사되었습니다!
ROSA 작업자 노드는 OSD 및 OpenShift Container Platform의 다른 AMI를 사용합니다. 컨트롤 플레인 및 Infra 노드 AMI는 동일한 버전의 제품에서 일반적입니다.
17.1.29. 클러스터 백업 링크 복사링크가 클립보드에 복사되었습니다!
ROSA STS 클러스터에 백업이 없습니다. 사용자는 애플리케이션 및 데이터에 대한 자체 백업 정책이 있어야 합니다. 자세한 내용은 백업 정책을 참조하십시오.
17.1.30. 사용자 정의 도메인 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션의 사용자 지정 도메인을 정의할 수 있습니다. 자세한 내용은 애플리케이션의 사용자 정의 도메인 구성 을 참조하십시오.
17.1.31. ROSA 도메인 인증서 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 인프라(Hive)는 기본 애플리케이션 인그레스의 인증서 교체를 관리합니다.
17.1.32. 연결이 끊긴 환경 링크 복사링크가 클립보드에 복사되었습니다!
ROSA는 Air-gapped, disconnected 환경을 지원하지 않습니다. ROSA 클러스터는 레지스트리, S3에 액세스하여 메트릭을 보내려면 인터넷으로 전송해야 합니다. 이 서비스에는 여러 송신 끝점이 필요합니다. Ingress는 Red Hat SRE의 PrivateLink와 고객 액세스를 위한 VPN으로 제한할 수 있습니다.
17.2. 튜토리얼: AWS STS를 사용하는 ROSA에 대해 설명합니다. 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 ROSA(Red Hat OpenShift Service on AWS)가 사용자의 AWS(Amazon Web Service) 계정의 리소스와 상호 작용할 수 있도록 하는 두 가지 옵션에 대해 간단히 설명합니다. SDS(Security Token Service)가 필요한 인증 정보를 얻기 위해 사용하는 구성 요소 및 프로세스에 대해 자세히 설명합니다. 또한 STS를 사용하는 ROSA가 더 안전하고 선호되는 방법인 이유를 검토합니다.
이 콘텐츠는 현재 AWS STS를 사용하여 ROSA Classic을 다룹니다. AWS STS를 사용하는 호스팅된 컨트롤 플레인(HCP)이 있는 ROSA의 경우 AWS STS 및 HCP를 사용하는 ROSA에 대해 설명합니다.
이 튜토리얼은 다음을 수행합니다.
배포 옵션 중 두 개를 열거합니다.
- ROSA( IAM 사용자 포함)
- STS를 사용하는 ROSA
- 두 옵션의 차이점 설명
- STS를 사용하는 ROSA가 왜 더 안전하고 선호되는 옵션에 대해 설명합니다.
- STS를 사용하는 ROSA의 작동 방식 설명
17.2.1. ROSA를 배포하는 다양한 인증 정보 방법 링크 복사링크가 클립보드에 복사되었습니다!
ROSA의 일환으로 Red Hat은 AWS 계정의 인프라 리소스를 관리하고 필요한 권한을 부여해야 합니다. 현재 이러한 권한을 부여하는 방법은 다음 두 가지가 있습니다.
AdministratorAccess
정책으로 정적 IAM 사용자 인증 정보 사용이 튜토리얼은 "OSA with IAM Users"라고 합니다. 기본 인증 정보 방법이 아닙니다.
수명이 짧은 동적 토큰과 함께 AWS STS 사용
이 튜토리얼은 이 튜토리얼에서 "ROSA with STS"라고 합니다. 기본 인증 정보 방법입니다.
17.2.1.1. IAM 사용자와 함께 Rosa 링크 복사링크가 클립보드에 복사되었습니다!
ROSA가 처음 릴리스되었을 때 유일한 인증 정보 방법은 IAM 사용자가 ROSA였습니다. 이 방법은 ROSA를 사용하는 AWS 계정에서 필요한 리소스를 생성하기 위해 AdministratorAccess
정책을 통해 IAM 사용자에게 전체 액세스 권한을 부여합니다. 그런 다음 클러스터는 필요에 따라 인증 정보를 생성하고 확장할 수 있습니다.
17.2.1.2. STS를 사용하는 ROSA 링크 복사링크가 클립보드에 복사되었습니다!
STS를 사용하는 ROSA는 사용자에게 AWS 계정의 리소스에 대한 단기 액세스를 제한합니다. STS 메서드는 사전 정의된 역할 및 정책을 사용하여 IAM 사용자 또는 인증된 페더레이션 사용자에게 임시 최소 권한 권한을 부여합니다. 인증 정보는 일반적으로 요청 후 1시간 후에 만료됩니다. 만료되면 AWS에서 더 이상 인식되지 않으며 해당 API 요청에서 더 이상 계정 액세스 권한이 없습니다. 자세한 내용은 AWS 설명서 를 참조하십시오. STS를 사용하는 IAM 사용자 및 ROSA를 사용하는 ROSA가 모두 활성화되어 있지만 STS를 사용하는 ROSA가 선호되고 권장되는 옵션입니다.
17.2.2. STS 보안이 포함된 ROSA 링크 복사링크가 클립보드에 복사되었습니다!
몇 가지 중요한 구성 요소가 STS를 사용하는 ROSA를 IAM 사용자의 ROSA보다 더 안전하게 만듭니다.
- 사용자가 미리 생성하는 명시적 및 제한된 역할 및 정책 집합입니다. 사용자는 요청된 모든 권한과 사용된 모든 역할을 알고 있습니다.
- 서비스는 해당 권한 외부에서는 아무 작업도 수행할 수 없습니다.
- 서비스가 작업을 수행해야 할 때마다 1시간 이내에 만료되는 인증 정보를 가져옵니다. 즉, 인증 정보를 교체하거나 취소할 필요가 없습니다. 또한 인증 정보 만료를 사용하면 인증 정보 누출 및 재사용 위험이 줄어듭니다.
17.2.3. AWS STS 설명 링크 복사링크가 클립보드에 복사되었습니다!
ROSA는 AWS STS를 사용하여 단기 보안 인증 정보가 있는 최소 권한 권한을 특정 및 분리된 IAM 역할에 부여합니다. 인증 정보는 AWS API 호출을 수행하는 각 구성 요소 및 클러스터와 관련된 IAM 역할과 연결됩니다. 이 방법은 클라우드 서비스 리소스 관리에서 최소 권한 및 보안 관행의 원칙에 맞게 조정됩니다. ROSA 명령줄 인터페이스(CLI) 툴은 고유한 작업에 할당된 STS 역할 및 정책을 관리하고 OpenShift 기능의 일부로 AWS 리소스에 대한 조치를 취합니다.
각 ROSA 클러스터에 대해 STS 역할 및 정책을 생성해야 합니다. 이를 더 쉽게하기 위해 설치 툴은 역할을 생성하는 데 필요한 모든 명령과 파일을 정책으로 제공하고 CLI가 역할 및 정책을 자동으로 생성할 수 있도록 하는 옵션을 제공합니다. 다른 --mode
옵션에 대한 자세한 내용은 사용자 지정을 사용하여 STS를 사용하여 ROSA 클러스터 생성 을 참조하십시오.
17.2.4. STS를 사용하여 ROSA와 관련된 구성 요소 링크 복사링크가 클립보드에 복사되었습니다!
- AWS 인프라 - 클러스터에 필요한 인프라를 제공합니다. 실제 EC2 인스턴스, 스토리지 및 네트워킹 구성 요소를 포함합니다. 컴퓨팅 노드에 대해 지원되는 인스턴스 유형 및 컨트롤 플레인 및 인프라 노드 구성에 대해 프로비저닝된 AWS 인프라 를 보려면 AWS 컴퓨팅 유형을 참조하십시오.
- AWS STS - 위의 인증 정보 방법 섹션을 참조하십시오.
- OpenID Connect(OIDC) - 클러스터 Operator가 AWS로 인증하는 메커니즘을 제공하고, 신뢰 정책을 통해 클러스터 역할을 가정하고, STS에서 임시 인증 정보를 가져와 필요한 API 호출을 수행할 수 있도록 합니다.
역할 및 정책 - 역할과 정책은 STS를 사용한 ROSA와 IAM 사용자와 ROSA의 주요 차이점 중 하나입니다. STS를 사용하는 ROSA의 경우 ROSA에서 사용하는 역할과 정책은 계정 전체 역할 및 정책 및 Operator 역할 및 정책으로 나뉩니다.
정책에 따라 각 역할에 허용되는 작업이 결정됩니다. 개별 역할 및 정책에 대한 자세한 내용은 IAM 리소스 정보를 참조하십시오.
다음 계정 전체 역할이 필요합니다.
- ManagedOpenShift-Installer-Role
- ManagedOpenShift-ControlPlane-Role
- ManagedOpenShift-Worker-Role
- ManagedOpenShift-Support-Role
다음 계정 전체 정책이 필요합니다.
- ManagedOpenShift-Installer-Role-Policy
- ManagedOpenShift-ControlPlane-Role-Policy
- ManagedOpenShift-Worker-Role-Policy
- ManagedOpenShift-Support-Role-Policy
- ManagedOpenShift-openshift-ingress-operator-cloud-credentials [1]
- ManagedOpenShift-openshift-cluster-csi-drivers-ebs-cloud-credent [1]
- ManagedOpenShift-openshift-cloud-network-config-controller-cloud [1]
- ManagedOpenShift-openshift-machine-api-aws-cloud-credentials [1]
- ManagedOpenShift-openshift-cloud-credential-operator-cloud-crede [1]
ManagedOpenShift-openshift-image-registry-installer-cloud-creden [1]
- 이 정책은 아래에 나열된 클러스터 Operator 역할에서 사용합니다. Operator 역할은 기존 클러스터 이름에 따라 달라지며 계정 전체 역할과 동시에 생성할 수 없기 때문에 두 번째 단계에서 생성됩니다.
Operator 역할은 다음과 같습니다.
- <cluster-name\>-xxxx-openshift-cluster-csi-drivers-ebs-cloud-credent
- <cluster-name\>-xxxx-openshift-cloud-network-config-controller-cloud
- <cluster-name\>-xxxx-openshift-machine-api-aws-cloud-credentials
- <cluster-name\>-xxxx-openshift-cloud-credential-operator-cloud-crede
- <cluster-name\>-xxxx-openshift-image-registry-installer-cloud-creden
- <cluster-name\>-xxxx-openshift-ingress-operator-cloud-credentials
- 계정 전체 및 Operator 역할에 대한 신뢰 정책이 생성됩니다.
17.2.5. ROSA STS 클러스터 배포 링크 복사링크가 클립보드에 복사되었습니다!
아래 단계에 나열된 리소스를 처음부터 생성하지 않아야 합니다. ROSA CLI는 필요한 JSON 파일을 생성하고 필요한 명령을 출력합니다. ROSA CLI는 이 작업을 한 단계 더 진행하여 원하는 경우 명령을 실행할 수도 있습니다.
STS 클러스터를 사용하여 ROSA를 배포하는 단계
- 계정 전체 역할 및 정책을 생성합니다.
- 해당 계정 전체 역할에 권한 정책을 할당합니다.
- 클러스터를 생성합니다.
- Operator 역할 및 정책을 생성합니다.
- 해당 Operator 역할에 권한 정책을 할당합니다.
- OIDC 공급자를 생성합니다.
ROSA CLI에서 역할 및 정책을 자동으로 생성하거나 ROSA CLI에서 --mode 수동 또는
플래그를 사용하여 수동으로 생성할 수 있습니다. 배포에 대한 자세한 내용은 사용자 지정으로 클러스터 생성 또는 클러스터 배포 튜토리얼을 참조하십시오.
--mode
자동
17.2.6. STS 워크플로우를 사용하는 ROSA 링크 복사링크가 클립보드에 복사되었습니다!
사용자는 필요한 계정 전체 역할 및 계정 전체 정책을 생성합니다. 자세한 내용은 이 튜토리얼의 구성 요소 섹션을 참조하십시오. 역할 생성 중에 교차 계정 신뢰 정책이라는 신뢰 정책이 생성되어 Red Hat 소유 역할이 역할을 수행할 수 있습니다. EC2 인스턴스의 워크로드가 역할을 가정하고 인증 정보를 얻을 수 있는 EC2 서비스에 대한 신뢰 정책도 생성됩니다. 그러면 사용자는 각 역할에 해당 권한 정책을 할당할 수 있습니다.
계정 전체 역할 및 정책이 생성되면 사용자가 클러스터를 생성할 수 있습니다. 클러스터 생성이 시작되면 Operator 역할이 생성되어 클러스터 Operator가 AWS API 호출을 수행할 수 있습니다. 그런 다음 이러한 역할은 이전에 생성된 해당 권한 정책과 OIDC 공급자를 사용하는 신뢰 정책에 할당됩니다. Operator 역할은 궁극적으로 AWS 리소스에 액세스해야 하는 Pod를 나타내는 계정 전체 역할과 다릅니다. 사용자는 IAM 역할을 Pod에 연결할 수 없으므로 Operator와 Pod가 필요한 역할에 액세스할 수 있도록 OIDC 공급자를 사용하여 신뢰 정책을 생성해야 합니다.
사용자가 해당 정책 권한에 역할을 할당하면 최종 단계는 OIDC 공급자를 생성합니다.
새 역할이 필요한 경우 현재 Red Hat 역할을 사용하는 워크로드는 AWS 계정에서 역할을 수행하고, AWS STS에서 임시 인증 정보를 가져오고, 가정된 역할의 권한 정책에서 허용하는 대로 고객의 AWS 계정 내에서 API 호출을 사용하여 작업을 수행하기 시작합니다. 인증 정보는 임시이며 최대 1시간 동안 지속됩니다.
전체 워크플로우는 다음 그래픽에 표시됩니다.
Operator는 다음 프로세스를 사용하여 작업을 수행하는 데 필요한 자격 증명을 가져옵니다. 각 Operator에는 Operator 역할, 권한 정책 및 OIDC 공급자가 있는 신뢰 정책이 할당됩니다. Operator는 역할이 포함된 JSON 웹 토큰과 토큰 파일(web_identity_token_file
)을 OIDC 공급자에 전달하여 역할을 가정하고 공개 키로 서명된 키를 인증합니다. 공개 키는 클러스터 생성 중에 생성되어 S3 버킷에 저장됩니다. 그런 다음 Operator는 서명된 토큰 파일의 주체가 역할 신뢰 정책의 역할과 일치하는지 확인하여 OIDC 공급자가 허용된 역할만 가져올 수 있도록 합니다. 그런 다음 OIDC 공급자는 Operator가 AWS API 호출을 수행할 수 있도록 임시 인증 정보를 Operator에 반환합니다. 시각적 표현의 경우 아래를 참조하십시오.
17.2.7. STS 사용 사례가 있는 ROSA 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 설치 시 노드 생성
Red Hat 설치 프로그램은 RH-Managed-OpenShift-Installer
역할 및 신뢰 정책을 사용하여 고객 계정에서 Managed-OpenShift-Installer-Role
역할을 가정합니다. 이 프로세스에서는 AWS STS에서 임시 인증 정보를 반환합니다. 설치 프로그램은 STS에서 방금 수신한 임시 인증 정보를 사용하여 필요한 API 호출을 시작합니다. 설치 프로그램은 AWS에 필요한 인프라를 생성합니다. 인증 정보는 1시간 이내에 만료되며 설치 프로그램은 더 이상 고객 계정에 액세스할 수 없습니다.
동일한 프로세스가 지원 케이스에도 적용됩니다. 지원 사례에서 Red Hat 사이트 안정성 엔지니어(SRE)는 설치 프로그램을 대체합니다.
클러스터 스케일링
machine-api-operator
는 AssumeRoleWithWebIdentity 를 사용하여 machine-api-aws-cloud-credentials
역할을 가정합니다. 그러면 클러스터 Operator의 순서에 따라 인증 정보가 수신됩니다. machine-api-operator
역할은 관련 API 호출을 통해 클러스터에 EC2 인스턴스를 추가할 수 있습니다.
17.3. 튜토리얼: OpenShift 개념 링크 복사링크가 클립보드에 복사되었습니다!
17.3.1. S2I(Source-to-Image) 링크 복사링크가 클립보드에 복사되었습니다!
S2I(Source-to-Image)는 소스 코드에서 재현 가능한 컨테이너 이미지를 빌드하는 툴킷 및 워크플로입니다. S2I는 컨테이너 이미지에 소스 코드를 삽입하고 컨테이너에서 소스 코드를 준비하여 바로 실행할 수 있는 이미지를 생성합니다. 자체 조립 빌더 이미지를 생성하면 컨테이너 이미지를 사용하여 런타임 환경을 버전처럼 빌드 환경을 정확히 버전화하고 제어할 수 있습니다.
17.3.1.1. 작동 방식 링크 복사링크가 클립보드에 복사되었습니다!
Ruby와 같은 동적 언어의 경우 빌드 시간 및 런타임 환경은 일반적으로 동일합니다. Ruby, Bundler, Rake, Apache, GCC 및 Ruby 애플리케이션을 설정하고 실행하는 데 필요한 기타 모든 패키지가 이미 설치되어 있다고 가정하면 빌더 이미지가 다음 단계를 수행합니다.
- 빌더 이미지는 알려진 디렉터리에 애플리케이션 소스가 삽입된 컨테이너를 시작합니다.
- 컨테이너 프로세스는 해당 소스 코드를 적절한 실행 가능한 설정으로 변환합니다. 예를 들어 Bundler를 사용하여 종속성을 설치하고 소스 코드를 Ruby 구성 파일을 찾기 위해 Apache가 사전 구성된 디렉터리로 이동합니다.
- 그런 다음 새 컨테이너를 커밋하고 이미지 진입점을 Ruby 애플리케이션을 호스팅하도록 Apache를 시작하는 스크립트로 설정합니다.
C, C++, Go 또는 Java와 같은 컴파일된 언어의 경우 컴파일에 필요한 종속성이 런타임 아티팩트의 크기를 초과할 수 있습니다. S2I는 런타임 이미지를 작게 유지하기 위해 다중 단계 빌드 프로세스를 활성화합니다. 여기서 첫 번째 빌더 이미지에서 실행 파일과 같은 바이너리 아티팩트가 추출되고 실행 프로그램을 올바른 위치에 배치하는 두 번째 런타임 이미지에 삽입됩니다.
예를 들어 Tomcat 및 Maven에 대한 재현 가능한 빌드 파이프라인을 생성하려면 다음을 수행합니다.
- WAR 파일이 삽입될 것으로 예상되는 OpenJDK 및 Tomcat이 포함된 빌더 이미지를 생성합니다.
- 첫 번째 이미지 Maven 및 기타 표준 종속 항목에 계층화된 두 번째 이미지를 생성하고 Maven 프로젝트가 삽입될 것으로 예상합니다.
- Java 애플리케이션 소스 및 Maven 이미지를 사용하여 S2I를 시작하여 원하는 애플리케이션 WAR를 생성합니다.
- 이전 단계의 WAR 파일과 초기 Tomcat 이미지를 사용하여 S2I를 두 번 시작하여 런타임 이미지를 생성합니다.
이미지 내부에 빌드 논리를 배치하고 이미지를 여러 단계로 결합함으로써 런타임 환경은 빌드 툴을 프로덕션에 배포하지 않고도 빌드 환경에 가깝습니다.
17.3.1.2. S2I 이점 링크 복사링크가 클립보드에 복사되었습니다!
- 재현 가능
- 컨테이너 이미지 내에서 캡슐화하고 호출자를 위해 삽입된 소스 코드의 간단한 인터페이스를 정의하여 빌드 환경을 엄격하게 버전 지정할 수 있습니다. 재현 가능한 빌드는 컨테이너화된 인프라에서 보안 업데이트 및 지속적인 통합을 가능하게 하는 핵심 요구 사항이며 빌더 이미지는 반복성 및 스왑 실행 시간을 보장합니다.
- 유연성
- Linux에서 실행할 수 있는 기존 빌드 시스템은 컨테이너 내에서 실행할 수 있으며 각 개별 빌더는 더 큰 파이프라인의 일부가 될 수도 있습니다. 애플리케이션 소스 코드를 처리하는 스크립트를 빌더 이미지에 삽입할 수 있으므로 작성자는 기존 이미지를 적용하여 소스 처리를 활성화할 수 있습니다.
- 속도
- 단일 Dockerfile에 여러 계층을 빌드하는 대신 작성자는 단일 이미지 계층에서 애플리케이션을 나타낼 것을 권장합니다. 이렇게 하면 생성 및 배포 중에 시간이 단축되고 최종 이미지의 출력을 보다 효과적으로 제어할 수 있습니다.
- 보안
- Dockerfile은 컨테이너의 일반적인 작동 제어 없이 실행됩니다. 일반적으로 root로 실행되며 컨테이너 네트워크에 액세스할 수 있습니다. S2I는 빌드가 단일 컨테이너에서 시작되므로 빌더 이미지에 사용할 수 있는 권한 및 권한을 제어할 수 있습니다. OpenShift와 같은 플랫폼에 어셈블하여 S2I를 사용하면 관리자가 빌드 시 개발자가 보유한 권한을 제어할 수 있습니다.
17.3.2. 라우트 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 경로는 서비스를 호스트 이름으로 공개하므로 외부 클라이언트가 이름으로 연결할 수 있습니다. OpenShift에서 Route
오브젝트가 생성되면 기본 제공 HAProxy 로드 밸런서에서 요청된 서비스를 노출하고 지정된 구성으로 외부에서 사용할 수 있도록 합니다.
Kubernetes Ingress
오브젝트와 유사하게 Red Hat은 요구 사항을 채우기 위해 경로 개념을 작성한 다음 커뮤니티 뒤에 있는 설계 원칙을 커뮤니티에 기여하여 Ingress
설계에 크게 영향을 미쳤습니다. 경로에는 다음 차트에서 볼 수 있는 몇 가지 추가 기능이 있습니다.
기능 | OpenShift에서 Ingress | OpenShift의 경로 |
---|---|---|
표준 Kubernetes 오브젝트 | X | |
서비스에 대한 외부 액세스 | X | X |
영구(sticky) 세션 | X | X |
로드 밸런싱 전략(예: 라운드 로빈) | X | X |
rate-limit 및 throttling | X | X |
IP 허용 목록 | X | X |
보안을 개선하기 위한 TLS 엣지 종료 | X | X |
보안 개선을 위한 TLS 재암호화 | X | |
보안을 개선하기 위한 TLS passhtrough | X | |
여러 가중치 백엔드(스플릿 트래픽) | X | |
패턴 기반 호스트 이름 생성 | X | |
와일드카드 도메인 | X |
호스트 이름의 DNS 확인은 라우팅과 별도로 처리됩니다. 관리자가 항상 라우터로 올바르게 확인하거나 라우터로 확인하도록 독립적으로 호스트 이름 DNS 레코드를 수정하는 클라우드 도메인을 구성했을 수 있습니다.
개별 경로는 주석에 특정 구성을 제공하여 일부 기본값을 덮어쓸 수 있습니다.
17.3.3. 이미지 스트림 링크 복사링크가 클립보드에 복사되었습니다!
이미지 스트림은 이미지에 대한 태그 매핑, 스트림에 이미지가 태그될 때 적용되는 메타데이터 덮어쓰기 및 레지스트리의 Docker 이미지 리포지토리에 대한 선택적 참조를 저장합니다.
17.3.3.1. 이미지 스트림 이점 링크 복사링크가 클립보드에 복사되었습니다!
이미지 스트림을 사용하면 컨테이너 이미지의 태그를 쉽게 변경할 수 있습니다. 그러지 않으면 태그를 수동으로 변경하려면 이미지를 다운로드하여 로컬로 변경한 다음 모두 푸시해야 합니다. 태그를 수동으로 변경한 다음 배포 오브젝트를 업데이트하여 애플리케이션을 승격하는 데는 여러 단계가 포함됩니다.
이미지 스트림을 사용하면 컨테이너 이미지를 한 번 업로드하고 OpenShift에서 해당 가상 태그를 내부적으로 관리합니다. 하나의 프로젝트에서는 developer 태그를 사용하고 내부적으로만 참조할 수 있지만 프로덕션에서는 production 태그를 사용하고 내부적으로도 관리할 수 있습니다. 레지스트리를 처리할 필요가 없습니다.
또한 배포 구성과 함께 이미지 스트림을 사용하여 새 이미지가 표시되거나 태그가 참조가 변경되면 배포를 시작하는 트리거를 설정할 수도 있습니다.
17.3.4. 빌드 링크 복사링크가 클립보드에 복사되었습니다!
빌드는 입력 매개변수를 결과 오브젝트로 변환하는 프로세스입니다. 대부분의 경우 프로세스는 입력 매개변수 또는 소스 코드를 실행 가능한 이미지로 변환하는 데 사용됩니다. BuildConfig
오브젝트는 전체 빌드 프로세스에 대한 정의입니다.
OpenShift Container Platform은 빌드 이미지에서 Docker 형식의 컨테이너를 생성하고 컨테이너 이미지 레지스트리로 푸시하여 Kubernetes를 활용합니다.
build 오브젝트는 일반적인 특성을 공유합니다.
- 빌드 입력
- 빌드 프로세스를 완료하기 위한 요구사항
- 빌드 프로세스 로깅
- 성공적인 빌드의 리소스 게시
- 빌드의 최종 상태 게시
빌드에서는 CPU 사용량, 메모리 사용량, 빌드 또는 Pod 실행 시간과 같은 리소스 제한 사항을 활용합니다.
추가 리소스
17.4. 클러스터 배포 링크 복사링크가 클립보드에 복사되었습니다!
17.4.1. 튜토리얼: 배포 방법 선택 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 클러스터를 배포하는 다양한 방법을 간략하게 설명합니다. 기본 설정 및 요구 사항에 가장 적합한 배포 방법을 선택합니다.
17.4.1.1. 배포 옵션 링크 복사링크가 클립보드에 복사되었습니다!
원하는 경우:
- 필요한 CLI 명령만 - 간단한 CLI 가이드
- 사용자 인터페이스 - 간단한 UI 가이드
- 세부 정보가 있는 CLI 명령 - 자세한 CLI 가이드
- 세부 정보가 있는 사용자 인터페이스 - 자세한 UI 가이드
위의 모든 배포 옵션은 이 튜토리얼에서 잘 작동합니다. 이 튜토리얼을 처음 수행하는 경우 Simple CLI 가이드가 가장 간단하고 권장되는 방법입니다.
17.4.2. 튜토리얼: 간단한 CLI 가이드 링크 복사링크가 클립보드에 복사되었습니다!
이 페이지에서는 CLI(명령줄 인터페이스)를 사용하여 AWS(ROSA) 클러스터에 Red Hat OpenShift Service를 배포하는 최소 명령 목록을 간략하게 설명합니다.
이 간단한 배포는 튜토리얼 설정에 적합하지만 프로덕션에 사용되는 클러스터는 보다 자세한 방법으로 배포해야 합니다.
17.4.2.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 설치 튜토리얼에서 사전 요구 사항을 완료했습니다.
17.4.2.2. 계정 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
각 AWS 계정 및 Y-stream OpenShift 버전에 대해 다음 명령을 한 번 실행합니다.
rosa create account-roles --mode auto --yes
rosa create account-roles --mode auto --yes
17.4.2.3. 클러스터 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 자체 클러스터 이름을 대체하여 기본 구성으로 클러스터를 생성합니다.
rosa create cluster --cluster-name <cluster-name> --sts --mode auto --yes
rosa create cluster --cluster-name <cluster-name> --sts --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터 상태를 확인합니다.
rosa list clusters
rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.3. 튜토리얼: 자세한 CLI 가이드 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 ROSA CLI를 사용하여 ROSA 클러스터를 배포하는 자세한 단계를 간략하게 설명합니다.
17.4.3.1. CLI 배포 모드 링크 복사링크가 클립보드에 복사되었습니다!
ROSA 클러스터를 배포하는 방법은 두 가지가 있습니다. 하나는 자동이며 더 빠르고 수동 작업을 수행합니다. 다른 하나는 수동이며 추가 명령을 실행해야 하며 생성되는 역할 및 정책을 검사할 수 있습니다. 이 튜토리얼은 두 가지 옵션을 모두 문서화합니다.
클러스터를 빠르게 생성하려면 자동 옵션을 사용합니다. 생성되는 역할 및 정책을 탐색하는 것을 선호하는 경우 수동 옵션을 사용합니다.
관련 명령에서 --mode
플래그를 사용하여 배포 모드를 선택합니다.
--mode
의 유효한 옵션은 다음과 같습니다.
-
수동
: 역할 및 정책이 생성되어 현재 디렉터리에 저장됩니다. 제공된 명령을 다음 단계로 수동으로 실행해야 합니다. 이 옵션을 사용하면 정책 및 역할을 생성하기 전에 검토할 수 있습니다. -
Auto
: 현재 AWS 계정을 사용하여 역할 및 정책이 자동으로 생성되고 적용됩니다.
이 튜토리얼에 두 가지 배포 방법을 사용할 수 있습니다. 자동
모드가 빨라지고 단계가 줄어듭니다.
17.4.3.2. 배포 워크플로 링크 복사링크가 클립보드에 복사되었습니다!
전체 배포 워크플로는 다음 단계를 따릅니다.
-
Rosa create account-roles
- 이는 각 계정에 대해 한 번만 실행됩니다. 생성된 계정 역할은 동일한 y-stream 버전의 더 많은 클러스터에 대해 다시 생성할 필요가 없습니다. -
Rosa create cluster
-
Rosa create operator-roles
- 수동 모드의 경우에만 사용됩니다. -
Rosa create oidc-provider
- 수동 모드의 경우에만 사용됩니다.
동일한 y-stream 버전의 동일한 계정에 있는 각 추가 클러스터에 대해 자동 모드의 경우 2단계만 필요합니다. 수동 모드에서는 2~4 단계가 필요합니다.
17.4.3.3. 자동 모드 링크 복사링크가 클립보드에 복사되었습니다!
ROSA CLI에서 클러스터를 신속하게 생성하기 위한 역할 및 정책 생성을 자동화하려면 이 방법을 사용합니다.
17.4.3.3.1. 계정 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 계정에 ROSA를 처음 배포하고 계정 역할을 아직 생성하지 않은 경우 Operator 정책을 포함하여 계정 전체 역할 및 정책을 생성합니다.
다음 명령을 실행하여 계정 전체 역할을 생성합니다.
rosa create account-roles --mode auto --yes
rosa create account-roles --mode auto --yes
출력 예
17.4.3.3.2. 클러스터 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 모든 기본 옵션이 있는 클러스터를 생성합니다.
rosa create cluster --cluster-name <cluster-name> --sts --mode auto --yes
rosa create cluster --cluster-name <cluster-name> --sts --mode auto --yes
또한 필요한 Operator 역할 및 OIDC 공급자가 생성됩니다. 클러스터에 사용 가능한 모든 옵션을 보려면 대화형 모드에서 --help
플래그 또는 --interactive
를 사용합니다.
입력 예
rosa create cluster --cluster-name my-rosa-cluster --sts --mode auto --yes
$ rosa create cluster --cluster-name my-rosa-cluster --sts --mode auto --yes
출력 예
17.4.3.3.2.1. 기본 구성 링크 복사링크가 클립보드에 복사되었습니다!
기본 설정은 다음과 같습니다.
노드:
- 컨트롤 플레인 노드 세 개
- 인프라 노드 2개
- 작업자 노드 2개
- 자동 스케일링 없음
- 자세한 내용은 ec2 인스턴스에 대한 설명서를 참조하십시오.
-
region:
aws
CLI에 대해 구성된 대로 네트워킹 IP 범위:
- 머신 CIDR: 10.0.0.0/16
- 서비스 CIDR: 172.30.0.0/16
- Pod CIDR: 10.128.0.0/14
- 새 VPC
- 암호화를 위한 기본 AWS KMS 키
-
rosa
에서 사용할 수 있는 OpenShift의 최신 버전 - 단일 가용성 영역
- 퍼블릭 클러스터
17.4.3.3.3. 설치 상태 확인 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령 중 하나를 실행하여 클러스터 상태를 확인합니다.
상태에 대한 자세한 보기를 보려면 다음을 실행합니다.
rosa describe cluster --cluster <cluster-name>
rosa describe cluster --cluster <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 상태의 abridged 뷰의 경우 다음을 실행합니다.
rosa list clusters
rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 클러스터 상태가 "대기 중"에서 "설치"로 변경됩니다. 이 작업은 약 40분 정도 걸립니다.
- 상태가 "준비"로 변경되면 클러스터가 설치됩니다.
17.4.3.4. 수동 모드 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에 적용하기 전에 역할 및 정책을 검토하려면 수동 방법을 사용합니다. 이 방법을 사용하려면 역할 및 정책을 생성하려면 몇 가지 추가 명령을 실행해야 합니다.
이 섹션에서는 --interactive
모드를 사용합니다. 이 섹션의 필드에 대한 설명은 대화형 모드에 대한 설명서를 참조하십시오.
17.4.3.4.1. 계정 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 계정에 ROSA를 처음 배포하고 계정 역할을 아직 생성하지 않은 경우 Operator 정책을 포함하여 계정 전체 역할 및 정책을 생성합니다. 명령은 현재 디렉터리의 계정에 필요한 역할 및 정책에 필요한 JSON 파일을 생성합니다. 이러한 오브젝트를 생성하기 위해 실행해야 하는
aws
CLI 명령도 출력합니다.다음 명령을 실행하여 필요한 파일을 생성하고 추가 명령을 출력합니다.
rosa create account-roles --mode manual
rosa create account-roles --mode manual
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 현재 디렉터리의 내용을 확인하여 새 파일을 확인합니다.
aws
CLI를 사용하여 이러한 각 오브젝트를 생성합니다.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 파일을 열어 생성할 항목을 검토합니다. 예를 들어
sts_installer_permission_policy.json
을 열면 다음이 표시됩니다.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ROSA 클러스터 설명서의 IAM 정보 리소스 의 내용을 볼 수도 있습니다.
-
1 단계에 나열된
aws
명령을 실행합니다. 생성한 JSON 파일과 동일한 디렉터리에 있는 경우 복사하여 붙여넣을 수 있습니다.
17.4.3.4.2. 클러스터 생성 링크 복사링크가 클립보드에 복사되었습니다!
aws
명령이 성공적으로 실행된 후 다음 명령을 실행하여 대화형 모드에서 ROSA 클러스터 생성을 시작합니다.rosa create cluster --interactive --sts
rosa create cluster --interactive --sts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 필드에 대한 설명은 ROSA 설명서 를 참조하십시오.
이 튜토리얼의 목적을 위해 다음 값을 복사한 다음 입력합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고다음 두 단계가 완료될 때까지 클러스터 상태는 "대기 중"으로 유지됩니다.
17.4.3.4.3. Operator 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
위 단계에서는 실행할 다음 명령을 출력합니다. 이러한 역할은 각 클러스터에 대해 한 번 생성해야 합니다. 역할을 생성하려면 다음 명령을 실행합니다.
rosa create operator-roles --mode manual --cluster <cluster-name>
rosa create operator-roles --mode manual --cluster <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
각
aws
명령을 실행합니다.
17.4.3.4.4. OIDC 공급자 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 OIDC 공급자를 생성합니다.
rosa create oidc-provider --mode manual --cluster <cluster-name>
rosa create oidc-provider --mode manual --cluster <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그러면 실행해야 하는
aws
명령이 표시됩니다.출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 이제 클러스터가 설치 프로세스를 계속합니다.
17.4.3.4.5. 설치 상태 확인 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령 중 하나를 실행하여 클러스터 상태를 확인합니다.
상태에 대한 자세한 보기를 보려면 다음을 실행합니다.
rosa describe cluster --cluster <cluster-name>
rosa describe cluster --cluster <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 상태의 abridged 뷰의 경우 다음을 실행합니다.
rosa list clusters
rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 클러스터 상태가 "대기 중"에서 "설치"로 변경됩니다. 이 작업은 약 40분 정도 걸립니다.
- 상태가 "준비"로 변경되면 클러스터가 설치됩니다.
17.4.3.5. Red Hat Hybrid Cloud Console URL 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
하이브리드 클라우드 콘솔 URL을 가져오려면 다음 명령을 실행합니다.
rosa describe cluster -c <cluster-name> | grep Console
rosa describe cluster -c <cluster-name> | grep Console
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
이제 클러스터가 성공적으로 배포되었습니다. 다음 튜토리얼에서는 클러스터를 즉시 사용할 수 있도록 관리자 사용자를 생성하는 방법을 보여줍니다.
17.4.4. 튜토리얼: 간단한 UI 가이드 링크 복사링크가 클립보드에 복사되었습니다!
이 페이지에서는 UI(사용자 인터페이스)를 사용하여 ROSA 클러스터를 배포하는 최소 명령 목록을 간략하게 설명합니다.
이 간단한 배포는 튜토리얼 설정에 적합하지만 프로덕션에 사용되는 클러스터는 보다 자세한 방법으로 배포해야 합니다.
17.4.4.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- 설치 튜토리얼에서 사전 요구 사항을 완료했습니다.
17.4.4.2. 계정 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
각 AWS 계정 및 Y-stream OpenShift 버전에 대해 다음 명령을 한 번 실행합니다.
rosa create account-roles --mode auto --yes
rosa create account-roles --mode auto --yes
17.4.4.3. Red Hat OpenShift Cluster Manager 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 각 AWS 계정에 대해 하나의 OpenShift Cluster Manager 역할을 생성합니다.
rosa create ocm-role --mode auto --admin --yes
rosa create ocm-role --mode auto --admin --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 각 AWS 계정에 대해 하나의 OpenShift Cluster Manager 사용자 역할을 생성합니다.
rosa create user-role --mode auto --yes
rosa create user-role --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OpenShift Cluster Manager 를 사용하여 AWS 계정, 클러스터 옵션을 선택하고 배포를 시작합니다.
OpenShift Cluster Manager UI는 클러스터 상태를 표시합니다.
17.4.5. 튜토리얼: 자세한 UI 가이드 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 Red Hat OpenShift Cluster Manager UI(사용자 인터페이스)를 사용하여 AWS(ROSA) 클러스터에 Red Hat OpenShift Service를 배포하는 자세한 단계를 간략하게 설명합니다.
17.4.5.1. 배포 워크플로 링크 복사링크가 클립보드에 복사되었습니다!
전체 배포 워크플로는 다음 단계를 따릅니다.
- 계정 전체 역할 및 정책을 생성합니다.
AWS 계정을 Red Hat 계정과 연결합니다.
- Red Hat OpenShift Cluster Manager 역할을 생성하고 연결합니다.
- 사용자 역할을 생성하고 연결합니다.
- 클러스터를 생성합니다.
1단계는 AWS 계정에 처음 배포하는 경우에만 수행해야 합니다. 2 단계는 UI를 처음 사용하는 경우에만 수행해야 합니다. 동일한 y-stream 버전의 연속 클러스터의 경우 클러스터를 생성하기만 하면 됩니다.
17.4.5.2. 계정 전체 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
이전 배포의 계정 역할이 이미 있는 경우 이 단계를 건너뜁니다. 연결된 AWS 계정을 선택한 후 UI가 기존 역할을 감지합니다.
이 계정에 ROSA를 처음 배포하고 계정 역할을 아직 생성하지 않은 경우 Operator 정책을 포함하여 계정 전체 역할 및 정책을 생성합니다.
터미널에서 다음 명령을 실행하여 계정 전체 역할을 생성합니다.
rosa create account-roles --mode auto --yes
$ rosa create account-roles --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.5.3. AWS 계정과 Red Hat 계정 연결 링크 복사링크가 클립보드에 복사되었습니다!
이 단계에서는 ROSA를 배포할 때 사용할 AWS 계정을 OpenShift Cluster Manager에 지시합니다.
이미 AWS 계정을 연결한 경우 이 단계를 건너뜁니다.
- OpenShift Cluster Manager 를 방문하여 Red Hat Hybrid Cloud Console을 열고 Red Hat 계정에 로그인합니다.
- 클러스터 생성을 클릭합니다.
AWS(ROSA)의 Red Hat OpenShift Service로 아래로 스크롤하고 Create Cluster 를 클릭합니다.
드롭다운 메뉴가 표시됩니다. 웹 인터페이스 를 클릭합니다.
"AWS 컨트롤 플레인 유형 선택"에서 Classic 을 선택합니다. 그런 다음 다음을 클릭합니다.
- 연결된 AWS 인프라 계정 에서 드롭 박스를 클릭합니다. AWS 계정을 아직 연결하지 않은 경우 dropbox가 비어 있을 수 있습니다.
새 AWS 계정을 연결하는 방법을 클릭합니다.
사이드바는 새 AWS 계정을 연결하는 데 필요한 지침과 함께 표시됩니다.
17.4.5.4. OpenShift Cluster Manager 역할 생성 및 연결 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 OpenShift Cluster Manager 역할이 있는지 확인합니다.
rosa list ocm-role
$ rosa list ocm-role
Copy to Clipboard Copied! Toggle word wrap Toggle overflow UI에는 두 가지 수준의 권한으로 OpenShift Cluster Manager 역할을 생성하는 명령이 표시됩니다.
- 기본 OpenShift Cluster Manager 역할: OpenShift Cluster Manager에서 계정에 대한 읽기 전용 액세스 권한을 부여하여 클러스터를 생성하기 전에 ROSA에 필요한 역할과 정책이 있는지 확인할 수 있습니다. CLI를 사용하여 필요한 역할, 정책 및 OIDC 공급자를 수동으로 생성해야 합니다.
admin OpenShift Cluster Manager 역할: OpenShift Cluster Manager 추가 권한을 부여하여 ROSA에 필요한 역할, 정책 및 OIDC 공급자를 생성합니다. 이를 사용하면 OpenShift Cluster Manager에서 필요한 리소스를 생성할 수 있으므로 ROSA 클러스터를 더 빠르게 배포할 수 있습니다.
이러한 역할에 대한 자세한 내용은 문서의 OpenShift Cluster Manager 역할 및 권한 섹션을 참조하십시오.
이 튜토리얼의 목적을 위해 가장 빠르고 간단한 접근 방식으로 Admin OpenShift Cluster Manager 역할을 사용합니다.
명령을 복사하여 사이드바에서 Admin OpenShift Cluster Manager 역할을 생성하거나 터미널로 전환하고 다음 명령을 입력합니다.
rosa create ocm-role --mode auto --admin --yes
$ rosa create ocm-role --mode auto --admin --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 OpenShift Cluster Manager 역할을 생성하여 Red Hat 계정과 연결합니다.
출력 예
I: Creating ocm role I: Creating role using 'arn:aws:iam::000000000000:user/rosa-user' I: Created role 'ManagedOpenShift-OCM-Role-12561000' with ARN 'arn:aws:iam::000000000000:role/ManagedOpenShift-OCM-Role-12561000' I: Linking OCM role I: Successfully linked role-arn 'arn:aws:iam::000000000000:role/ManagedOpenShift-OCM-Role-12561000' with organization account '1MpZfntsZeUdjWHg7XRgP000000'
I: Creating ocm role I: Creating role using 'arn:aws:iam::000000000000:user/rosa-user' I: Created role 'ManagedOpenShift-OCM-Role-12561000' with ARN 'arn:aws:iam::000000000000:role/ManagedOpenShift-OCM-Role-12561000' I: Linking OCM role I: Successfully linked role-arn 'arn:aws:iam::000000000000:role/ManagedOpenShift-OCM-Role-12561000' with organization account '1MpZfntsZeUdjWHg7XRgP000000'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 2단계: 사용자 역할을 클릭합니다.
17.4.5.4.1. 기타 OpenShift Cluster Manager 역할 생성 옵션 링크 복사링크가 클립보드에 복사되었습니다!
수동 모드: AWS CLI 명령을 직접 실행하려는 경우
auto
대신 모드를manual
로 정의할 수 있습니다. CLI는 AWS 명령을 출력하고 관련 JSON 파일은 현재 디렉터리에 생성됩니다.다음 명령을 사용하여 수동 모드에서 OpenShift Cluster Manager 역할을 생성합니다.
rosa create ocm-role --mode manual --admin --yes
$ rosa create ocm-role --mode manual --admin --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 OpenShift Cluster Manager 역할: OpenShift Cluster Manager에서 계정에 대한 읽기 전용 액세스 권한을 부여하려면 기본 OpenShift Cluster Manager 역할을 생성합니다. 그런 다음 CLI를 사용하여 필요한 역할, 정책 및 OIDC 공급자를 수동으로 생성해야 합니다.
다음 명령을 사용하여 기본 OpenShift Cluster Manager 역할을 생성합니다.
rosa create ocm-role --mode auto --yes
$ rosa create ocm-role --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.5.5. OpenShift Cluster Manager 사용자 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
사용자 역할 문서에 정의된 대로 ROSA가 AWS ID를 확인할 수 있도록 사용자 역할을 생성해야 합니다. 이 역할에는 권한이 없으며 설치 프로그램 계정과 OpenShift Cluster Manager 역할 리소스 간에 신뢰 관계를 생성하는 데만 사용됩니다.
다음 명령을 실행하여 사용자 역할이 이미 있는지 확인합니다.
rosa list user-role
$ rosa list user-role
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 사용자 역할을 생성하고 이를 Red Hat 계정에 연결합니다.
rosa create user-role --mode auto --yes
$ rosa create user-role --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
I: Creating User role I: Creating ocm user role using 'arn:aws:iam::000000000000:user/rosa-user' I: Created role 'ManagedOpenShift-User-rosa-user-Role' with ARN 'arn:aws:iam::000000000000:role/ManagedOpenShift-User-rosa-user-Role' I: Linking User role I: Successfully linked role ARN 'arn:aws:iam::000000000000:role/ManagedOpenShift-User-rosa-user-Role' with account '1rbOQez0z5j1YolInhcXY000000'
I: Creating User role I: Creating ocm user role using 'arn:aws:iam::000000000000:user/rosa-user' I: Created role 'ManagedOpenShift-User-rosa-user-Role' with ARN 'arn:aws:iam::000000000000:role/ManagedOpenShift-User-rosa-user-Role' I: Linking User role I: Successfully linked role ARN 'arn:aws:iam::000000000000:role/ManagedOpenShift-User-rosa-user-Role' with account '1rbOQez0z5j1YolInhcXY000000'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이전과 마찬가지로 AWS CLI 명령을 직접 실행하려는 경우
--mode 설명서
를 정의할 수 있습니다. CLI는 AWS 명령을 출력하고 관련 JSON 파일은 현재 디렉터리에 생성됩니다. 역할을 연결해야 합니다.- 3단계: 계정 역할을 클릭합니다.
17.4.5.6. 계정 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 계정 역할을 생성합니다.
rosa create account-roles --mode auto
$ rosa create account-roles --mode auto
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OK 를 클릭하여 사이드바를 닫습니다.
17.4.5.7. 성공적인 계정 연결 확인 링크 복사링크가 클립보드에 복사되었습니다!
- 이제 Associated AWS 인프라 계정 드롭다운 메뉴에서 AWS 계정이 표시됩니다. 계정이 표시되면 계정 연결에 성공했습니다.
- 계정을 선택합니다.
아래에 채워진 계정 역할 ARN이 표시됩니다.
- 다음을 클릭합니다.
17.4.5.8. 클러스터 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼의 목적을 위해 다음과 같이 선택합니다.
클러스터 설정
- 클러스터 이름: & lt;pick a name\>
- 버전: & lt;select latest version\>
- region: & lt;select region\>
- 가용성: 단일 영역
- 사용자 워크로드 모니터링 활성화: 체크 아웃
- 추가 etcd 암호화 활성화: 선택되지 않은 상태로 두십시오.
- 고객 키를 사용하여 영구 볼륨 암호화: 선택되지 않은 상태로 둡니다.
- 다음을 클릭합니다.
머신 풀의 기본 설정을 그대로 둡니다.
기본 머신 풀 설정
- 컴퓨팅 노드 인스턴스 유형: m5.xlarge - 4 vCPU 16GiB RAM
- 자동 스케일링 활성화: 선택되지 않음
- 컴퓨팅 노드 수: 2
- 노드 레이블을 비워 둡니다
- 다음을 클릭합니다.
17.4.5.8.1. 네트워킹 링크 복사링크가 클립보드에 복사되었습니다!
- 구성의 기본값을 모두 그대로 둡니다.
- 다음을 클릭합니다.
- CIDR 범위의 기본값을 모두 그대로 둡니다.
- 다음을 클릭합니다.
17.4.5.8.2. 클러스터 역할 및 정책 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼의 경우 Auto 를 선택된 상태로 둡니다. 클러스터 배포 프로세스를 더 쉽고 빠르게 수행할 수 있습니다.
이전에 기본 OpenShift Cluster Manager 역할을 선택한 경우 수동 모드만 사용할 수 있습니다. Operator 역할 및 OIDC 공급자를 수동으로 생성해야 합니다. "클러스터 업데이트" 섹션을 완료하고 클러스터 생성을 시작한 후 아래의 "기본 OpenShift Cluster Manager 역할" 섹션을 참조하십시오.
17.4.5.8.3. 클러스터 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
- 이 섹션의 모든 옵션을 기본값으로 둡니다.
17.4.5.8.4. 클러스터 검토 및 생성 링크 복사링크가 클립보드에 복사되었습니다!
- 클러스터 구성의 콘텐츠를 검토합니다.
- 클러스터 생성을 클릭합니다.
17.4.5.8.5. 설치 진행 상황 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
현재 페이지를 방문하여 설치 진행 상황을 모니터링합니다. 약 40분 정도 소요됩니다.
17.4.5.9. 기본 OpenShift Cluster Manager 역할 링크 복사링크가 클립보드에 복사되었습니다!
위에서 설명한 Admin OpenShift Cluster Manager 역할을 생성한 경우 전체 섹션을 무시합니다. OpenShift Cluster Manager가 리소스를 생성합니다.
이전에 기본 OpenShift Cluster Manager 역할을 생성한 경우 클러스터 설치를 계속하기 전에 두 개의 요소를 수동으로 생성해야 합니다.
- Operator 역할
- OIDC 공급자
17.4.5.9.1. Operator 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
팝업 창에 실행할 명령이 표시됩니다.
터미널의 창에서 명령을 실행하여 대화형 모드를 시작합니다. 또는 간단히 하려면 다음 명령을 실행하여 Operator 역할을 생성합니다.
rosa create operator-roles --mode auto --cluster <cluster-name> --yes
$ rosa create operator-roles --mode auto --cluster <cluster-name> --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.5.9.2. OIDC 공급자 생성 링크 복사링크가 클립보드에 복사되었습니다!
터미널에서 다음 명령을 실행하여 OIDC 공급자를 생성합니다.
rosa create oidc-provider --mode auto --cluster <cluster-name> --yes
$ rosa create oidc-provider --mode auto --cluster <cluster-name> --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
I: Creating OIDC provider using 'arn:aws:iam::000000000000:user/rosauser' I: Created OIDC provider with ARN 'arn:aws:iam::000000000000:oidc-provider/rh-oidc.s3.us-east-1.amazonaws.com/1tt4kvrr2kha2rgs8gjfvf0000000000'
I: Creating OIDC provider using 'arn:aws:iam::000000000000:user/rosauser' I: Created OIDC provider with ARN 'arn:aws:iam::000000000000:oidc-provider/rh-oidc.s3.us-east-1.amazonaws.com/1tt4kvrr2kha2rgs8gjfvf0000000000'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.6. 튜토리얼: 호스팅 컨트롤 플레인 (HCP) 가이드 링크 복사링크가 클립보드에 복사되었습니다!
이 워크샵에 따라 호스팅되는 컨트롤 플레인(HCP) 클러스터가 있는 AWS(ROSA)에 샘플 Red Hat OpenShift Service를 배포합니다. 그런 다음 다음 튜토리얼에서 클러스터를 사용할 수 있습니다.
튜토리얼 목표
클러스터 사전 요구 사항을 생성하는 방법을 알아봅니다.
- 샘플 VPC(가상 프라이빗 클라우드) 생성
- 샘플 OpenID Connect(OIDC) 리소스 생성
- 환경 변수 샘플 생성
- 샘플 ROSA 클러스터 배포
사전 요구 사항
- ROSA 버전 1.2.31 이상
- AWS(Amazon Web Service) 명령줄 인터페이스(CLI)
-
ROSA CLI (
rosa
)
17.4.6.1. 클러스터 사전 요구 사항 생성 링크 복사링크가 클립보드에 복사되었습니다!
HCP 클러스터를 사용하여 ROSA를 배포하기 전에 VPC 및 OIDC 리소스가 모두 있어야 합니다. 먼저 이러한 리소스를 만들 것입니다. ROSA는 BYO-VPC(Bring Your Own VPC) 모델을 사용합니다.
17.4.6.1.1. VPC 생성 링크 복사링크가 클립보드에 복사되었습니다!
ROSA를 사용할 수 있는 리전을 사용하도록 AWS CLI(
aws
)가 구성되어 있는지 확인합니다. 다음 명령을 실행하여 AWS CLI에서 지원하는 리전을 참조하십시오.rosa list regions --hosted-cp
$ rosa list regions --hosted-cp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow VPC를 생성합니다. 이 튜토리얼의 경우 다음 스크립트 는 VPC 및 필요한 구성 요소를 생성합니다.
aws
CLI에 구성된 리전을 사용합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 스크립트는 명령을 출력합니다. 나중에 사용할 서브넷 ID를 저장하려면 명령을 환경 변수로 설정합니다. 명령을 복사하고 실행합니다.
export PUBLIC_SUBNET_ID=$PUBLIC_SUBNET_ID export PRIVATE_SUBNET_ID=$PRIVATE_SUBNET_ID
$ export PUBLIC_SUBNET_ID=$PUBLIC_SUBNET_ID $ export PRIVATE_SUBNET_ID=$PRIVATE_SUBNET_ID
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 환경 변수를 확인합니다.
echo "Public Subnet: $PUBLIC_SUBNET_ID"; echo "Private Subnet: $PRIVATE_SUBNET_ID"
$ echo "Public Subnet: $PUBLIC_SUBNET_ID"; echo "Private Subnet: $PRIVATE_SUBNET_ID"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Public Subnet: subnet-0faeeeb0000000000 Private Subnet: subnet-011fe340000000000
Public Subnet: subnet-0faeeeb0000000000 Private Subnet: subnet-011fe340000000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.6.1.2. OIDC 구성 생성 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 OIDC 구성을 생성할 때 자동 모드를 사용합니다. 또한 나중에 사용할 수 있도록 OIDC ID를 환경 변수로 저장합니다. 명령은 ROSA CLI를 사용하여 클러스터의 고유한 OIDC 구성을 생성합니다.
다음 명령을 실행하여 OIDC 구성을 생성합니다.
export OIDC_ID=$(rosa create oidc-config --mode auto --managed --yes -o json | jq -r '.id')
$ export OIDC_ID=$(rosa create oidc-config --mode auto --managed --yes -o json | jq -r '.id')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.4.6.2. 추가 환경 변수 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 환경 변수를 설정합니다. 이러한 변수를 사용하면 명령을 실행하여 ROSA 클러스터를 더 쉽게 생성할 수 있습니다.
export CLUSTER_NAME=<cluster_name> export REGION=<VPC_region>
$ export CLUSTER_NAME=<cluster_name> $ export REGION=<VPC_region>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 작은 정보rosa whoami
를 실행하여 VPC 리전을 찾습니다.
17.4.6.3. 클러스터 생성 링크 복사링크가 클립보드에 복사되었습니다!
선택 사항: 다음 명령을 실행하여 Operator 정책 및 AWS IAM 역할 및 정책을 포함하여 계정 전체 역할 및 정책을 생성합니다.
중요이 계정에 ROSA를 처음 배포하고 아직 계정 역할 및 정책을 생성하지 않은 경우에만 이 단계를 완료합니다.
rosa create account-roles --mode auto --yes
$ rosa create account-roles --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터를 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
약 10분 후에 클러스터가 준비되었습니다. 클러스터에는 선택한 리전에서 세 개의 AWS 가용성 영역에 걸쳐 컨트롤 플레인이 있으며 AWS 계정에 두 개의 작업자 노드를 생성합니다.
17.4.6.4. 설치 상태 확인 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령 중 하나를 실행하여 클러스터 상태를 확인합니다.
클러스터 상태에 대한 자세한 보기를 보려면 다음을 실행합니다.
rosa describe cluster --cluster $CLUSTER_NAME
$ rosa describe cluster --cluster $CLUSTER_NAME
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터 상태에 대한 abridged 뷰의 경우 다음을 실행합니다.
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 로그가 진행 중인 것을 확인하려면 다음을 실행합니다.
rosa logs install --cluster $CLUSTER_NAME --watch
$ rosa logs install --cluster $CLUSTER_NAME --watch
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 상태가 "준비"로 변경되면 클러스터가 설치됩니다. 작업자 노드가 온라인 상태가 되는 데 몇 분이 더 걸릴 수 있습니다.
17.5. 튜토리얼: 관리자 생성 링크 복사링크가 클립보드에 복사되었습니다!
관리(admin) 사용자를 생성하면 클러스터에 빠르게 액세스할 수 있습니다. 다음 단계에 따라 admin 사용자를 생성합니다.
관리자는 이 튜토리얼 설정에서 잘 작동합니다. 실제 배포의 경우 공식 ID 공급자 를 사용하여 클러스터에 액세스하고 사용자에게 관리자 권한을 부여합니다.
다음 명령을 실행하여 admin 사용자를 생성합니다.
rosa create admin --cluster=<cluster-name>
rosa create admin --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이전 단계에서 반환된 로그인 명령을 복사하여 터미널에 붙여넣습니다. 그러면 클러스터 사용을 시작할 수 있도록 CLI를 사용하여 클러스터에 로그인합니다.
oc login https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443 \ --username cluster-admin \ --password FWGYL-2mkJI-00000-00000
$ oc login https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443 \ > --username cluster-admin \ > --password FWGYL-2mkJI-00000-00000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Login successful. You have access to 79 projects, the list has been suppressed. You can list all projects with ' projects' Using project "default".
Login successful. You have access to 79 projects, the list has been suppressed. You can list all projects with ' projects' Using project "default".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow admin 사용자로 로그인했는지 확인하려면 다음 명령 중 하나를 실행합니다.
옵션 1:
oc whoami
$ oc whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
cluster-admin
cluster-admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 옵션 2:
oc get all -n openshift-apiserver
oc get all -n openshift-apiserver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 관리자만 오류 없이 이 명령을 실행할 수 있습니다.
- 이제 이 튜토리얼에 충분한 관리자 사용자로 클러스터를 사용할 수 있습니다. 실제 배포의 경우 다음 튜토리얼에서 설명하는 ID 공급자를 설정하는 것이 좋습니다.
17.6. 튜토리얼: ID 공급자 설정 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에 로그인하려면 IDP(ID 공급자)를 설정합니다. 이 튜토리얼에서는 GitHub를 예제 IDP로 사용합니다. ROSA에서 지원하는 IDP의 전체 목록을 참조하십시오.
모든 IDP 옵션을 보려면 다음 명령을 실행합니다.
rosa create idp --help
rosa create idp --help
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.6.1. GitHub를 사용하여 IDP 설정 링크 복사링크가 클립보드에 복사되었습니다!
- GitHub 계정에 로그인합니다.
관리자인 새 GitHub 조직을 생성합니다.
작은 정보기존 조직의 관리자이고 해당 조직을 사용하려는 경우 9 단계로 건너뜁니다.
+ 아이콘을 클릭한 다음 새 조직을 클릭합니다.
- 상황에 가장 적합한 계획을 선택하거나 무료로 조인을 클릭합니다.
조직 계정 이름, 이메일, 개인 또는 비즈니스 계정인지를 입력합니다. 그런 다음 다음을 클릭합니다.
- 선택 사항: 다른 사용자의 GitHub ID를 추가하여 ROSA 클러스터에 대한 추가 액세스 권한을 부여합니다. 나중에 추가할 수도 있습니다.
- 설정 완료 를 클릭합니다.
- 선택 사항: 다음 페이지에서 요청된 정보를 입력합니다.
- Submit 을 클릭합니다.
터미널로 돌아가서 다음 명령을 입력하여 GitHub IDP를 설정합니다.
rosa create idp --cluster=<cluster name> --interactive
rosa create idp --cluster=<cluster name> --interactive
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 값을 입력합니다.
Type of identity provider: github Identity Provider Name: <IDP-name> Restrict to members of: organizations GitHub organizations: <organization-account-name>
Type of identity provider: github Identity Provider Name: <IDP-name> Restrict to members of: organizations GitHub organizations: <organization-account-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CLI에서 링크를 제공합니다. 링크를 복사하여 브라우저에 붙여넣고 Enter 키를 누릅니다. 그러면 OAuth에 이 애플리케이션을 등록하는 데 필요한 정보가 채워집니다. 정보를 수정할 필요가 없습니다.
Register application을 클릭합니다.
다음 페이지에는 클라이언트 ID 가 표시됩니다. ID를 복사하여 클라이언트 ID 를 요청하는 터미널에 붙여넣습니다.
참고탭을 닫지 마십시오.
CLI에서 클라이언트 시크릿 을 요청합니다. 브라우저로 돌아가서 새 클라이언트 시크릿 생성 을 클릭합니다.
- 사용자를 위해 보안이 생성됩니다. 시크릿은 다시 표시되지 않으므로 복사하십시오.
- 시크릿을 터미널에 붙여넣고 Enter 를 누릅니다.
- GitHub Enterprise 호스트 이름을 비워 둡니다.
- 클레임을 선택합니다.
IDP가 생성되고 구성이 클러스터에 배치될 때까지 약 1분 정도 기다립니다.
반환된 링크를 복사하여 브라우저에 붙여넣습니다. 새 IDP는 선택한 이름으로 사용할 수 있어야 합니다. IDP를 클릭하고 GitHub 인증 정보를 사용하여 클러스터에 액세스합니다.
17.6.2. 다른 사용자에게 클러스터에 대한 액세스 권한 부여 링크 복사링크가 클립보드에 복사되었습니다!
다른 클러스터 사용자에게 액세스 권한을 부여하려면 이 클러스터에 사용되는 GitHub 조직에 GitHub 사용자 ID를 추가해야 합니다.
- GitHub에서 조직 페이지로 이동합니다.
프로필 아이콘을 클릭한 다음 조직을 클릭합니다. 그런 다음 < ;your-organization-name>을 클릭합니다. 이 예에서는
my-rosa-cluster
입니다.담당자 초대를 클릭합니다.
- 새 사용자의 GitHub ID를 입력하고 올바른 사용자를 선택한 다음 Invite 를 클릭합니다.
- 새 사용자가 초대를 수락하면 하이브리드 클라우드 콘솔 링크와 GitHub 자격 증명을 사용하여 ROSA 클러스터에 로그인할 수 있습니다.
17.7. 튜토리얼: 관리자 권한 부여 링크 복사링크가 클립보드에 복사되었습니다!
관리(관리자) 권한은 클러스터에 추가한 사용자에게 자동으로 부여되지 않습니다. 특정 사용자에게 관리자 수준 권한을 부여하려면 각 사용자에게 수동으로 권한을 부여해야 합니다. ROSA CLI(명령줄 인터페이스) 또는 Red Hat OpenShift Cluster Manager 웹 UI(사용자 인터페이스)에서 관리자 권한을 부여할 수 있습니다.
Red Hat은 다음 두 가지 유형의 관리자 권한을 제공합니다.
-
cluster-admin
:cluster-admin
권한은 admin 사용자에게 클러스터 내에서 전체 권한을 부여합니다. -
dedicated-admin
:dedicated-admin
권한을 사용하면 관리자가 클러스터 손상을 방지하기 위해 특정 제한 사항을 사용하여 대부분의 관리 작업을 완료할 수 있습니다. 승격된 권한이 필요한 경우dedicated-admin
을 사용하는 것이 좋습니다.
관리자 권한에 대한 자세한 내용은 클러스터 관리 설명서를 참조하십시오.
17.7.1. ROSA CLI 사용 링크 복사링크가 클립보드에 복사되었습니다!
클러스터를 생성한 사용자라고 가정하면 다음 명령 중 하나를 실행하여 관리자 권한을 부여합니다.
cluster-admin
의 경우:rosa grant user cluster-admin --user <idp_user_name> --cluster=<cluster-name>
$ rosa grant user cluster-admin --user <idp_user_name> --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dedicated-admin
의 경우 :rosa grant user dedicated-admin --user <idp_user_name> --cluster=<cluster-name>
$ rosa grant user dedicated-admin --user <idp_user_name> --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 관리자 권한이 추가되었는지 확인합니다.
rosa list users --cluster=<cluster-name>
$ rosa list users --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
rosa list users --cluster=my-rosa-cluster
$ rosa list users --cluster=my-rosa-cluster ID GROUPS <idp_user_name> cluster-admins
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 현재 Red Hat Hybrid Cloud Console에 로그인한 경우 콘솔에서 로그아웃하고 클러스터에 다시 로그인하여 "관리자 패널"에 새로운 관점을 확인합니다. incognito 또는 private 창이 필요할 수 있습니다.
다음 명령을 실행하여 관리자 권한이 계정에 추가되었는지 테스트할 수도 있습니다.
cluster-admin
사용자만 오류 없이 이 명령을 실행할 수 있습니다.oc get all -n openshift-apiserver
$ oc get all -n openshift-apiserver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.7.2. Red Hat OpenShift Cluster Manager UI 사용 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift Cluster Manager 에 로그인합니다.
- 클러스터를 선택합니다.
- 액세스 제어 탭을 클릭합니다.
- 사이드바에서 클러스터 역할 및 액세스 탭을 클릭합니다.
사용자 추가를 클릭합니다.
- 팝업 화면에서 사용자 ID를 입력합니다.
cluster-admins
또는dedicated-admins
권한을 부여할지 여부를 선택합니다.
17.8. 튜토리얼: 클러스터에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
CLI(명령줄 인터페이스) 또는 Red Hat Hybrid Cloud Console 사용자 인터페이스(UI)를 사용하여 클러스터에 연결할 수 있습니다.
17.8.1. CLI를 사용하여 클러스터에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
CLI를 사용하여 클러스터에 액세스하려면 oc
CLI가 설치되어 있어야 합니다. 튜토리얼을 따르는 경우 oc
CLI를 이미 설치했습니다.
- OpenShift Cluster Manager 에 로그인합니다.
- 오른쪽 상단에 있는 사용자 이름을 클릭합니다.
로그인 명령 복사를 클릭합니다.
그러면 선택한 IDP(ID 공급자)가 포함된 새 탭이 열립니다. 사용할 IDP를 클릭합니다. 예를 들면 "rosa-github"입니다.
- 새 탭이 열립니다. 토큰 표시를 클릭합니다.
터미널에서 다음 명령을 실행합니다.
oc login --token=sha256~GBAfS4JQ0t1UTKYHbWAK6OUWGUkdMGz000000000000 --server=https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443
$ oc login --token=sha256~GBAfS4JQ0t1UTKYHbWAK6OUWGUkdMGz000000000000 --server=https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Logged into "https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You have access to 79 projects, the list has been suppressed. You can list all projects with ' projects' Using project "default".
Logged into "https://api.my-rosa-cluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You have access to 79 projects, the list has been suppressed. You can list all projects with ' projects' Using project "default".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 로그인했는지 확인합니다.
oc whoami
$ oc whoami
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
rosa-user
rosa-user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 이제 클러스터에 액세스할 수 있습니다.
17.8.2. 하이브리드 클라우드 콘솔을 통해 클러스터에 액세스 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Cluster Manager 에 로그인합니다.
하이브리드 클라우드 콘솔 URL을 검색하려면 다음을 실행합니다.
rosa describe cluster -c <cluster-name> | grep Console
rosa describe cluster -c <cluster-name> | grep Console
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
IDP를 클릭합니다. 예를 들면 "rosa-github"입니다.
- 사용자 자격 증명을 입력합니다.
로그인해야 합니다. 튜토리얼을 따르는 경우 cluster-admin이 되고 관리자 패널이 표시되는 Hybrid Cloud Console 웹 페이지가 표시되어야 합니다.
17.9. 튜토리얼: 작업자 노드 관리 링크 복사링크가 클립보드에 복사되었습니다!
ROSA(Red Hat OpenShift Service on AWS)에서는 머신 풀을 사용하여 작업자 노드의 측면을 변경합니다. 시스템 풀을 사용하면 여러 시스템을 단일 엔터티로 관리할 수 있습니다. 모든 ROSA 클러스터에는 클러스터를 생성할 때 생성되는 기본 머신 풀이 있습니다. 자세한 내용은 머신 풀 설명서를 참조하십시오.
17.9.1. 머신 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
CLI(명령줄 인터페이스) 또는 UI(사용자 인터페이스)를 사용하여 머신 풀을 생성할 수 있습니다.
17.9.1.1. CLI를 사용하여 머신 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행합니다.
rosa create machinepool --cluster=<cluster-name> --name=<machinepool-name> --replicas=<number-nodes>
rosa create machinepool --cluster=<cluster-name> --name=<machinepool-name> --replicas=<number-nodes>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 입력 예
rosa create machinepool --cluster=my-rosa-cluster --name=new-mp
$ rosa create machinepool --cluster=my-rosa-cluster --name=new-mp --replicas=2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
I: Machine pool 'new-mp' created successfully on cluster 'my-rosa-cluster' I: To view all machine pools, run 'rosa list machinepools -c my-rosa-cluster'
I: Machine pool 'new-mp' created successfully on cluster 'my-rosa-cluster' I: To view all machine pools, run 'rosa list machinepools -c my-rosa-cluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 다음 명령을 실행하여 새 머신 풀의 특정 노드에 노드 레이블 또는 테인트를 추가합니다.
rosa create machinepool --cluster=<cluster-name> --name=<machinepool-name> --replicas=<number-nodes> --labels=`<key=pair>`
rosa create machinepool --cluster=<cluster-name> --name=<machinepool-name> --replicas=<number-nodes> --labels=`<key=pair>`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 입력 예
rosa create machinepool --cluster=my-rosa-cluster --name=db-nodes-mp --replicas=2 --labels='app=db','tier=backend'
$ rosa create machinepool --cluster=my-rosa-cluster --name=db-nodes-mp --replicas=2 --labels='app=db','tier=backend'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
I: Machine pool 'db-nodes-mp' created successfully on cluster 'my-rosa-cluster'
I: Machine pool 'db-nodes-mp' created successfully on cluster 'my-rosa-cluster'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이렇게 하면 하나의 단위로 관리할 수 있는 추가 2개의 노드가 생성되고 표시된 레이블을 할당합니다.
다음 명령을 실행하여 머신 풀 생성 및 할당된 라벨을 확인합니다.
rosa list machinepools --cluster=<cluster-name>
rosa list machinepools --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default No 2 m5.xlarge us-east-1a
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default No 2 m5.xlarge us-east-1a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.9.1.2. UI를 사용하여 머신 풀 생성 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift Cluster Manager 에 로그인하고 클러스터를 클릭합니다.
머신 풀을 클릭합니다.
- 머신 풀 추가를 클릭합니다.
원하는 구성을 입력합니다.
작은 정보노드 레이블 및 테인트 섹션을 확장하여 머신 풀의 노드에 노드 레이블 및 테인트를 추가할 수도 있습니다.
생성한 새 머신 풀이 표시됩니다.
17.9.2. 작업자 노드 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
머신 풀을 편집하여 해당 특정 머신 풀의 작업자 노드 수를 확장합니다. CLI 또는 UI를 사용하여 작업자 노드를 확장할 수 있습니다.
17.9.2.1. CLI를 사용하여 작업자 노드 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 각 클러스터와 함께 생성된 기본 머신 풀을 확인합니다.
rosa list machinepools --cluster=<cluster-name>
rosa list machinepools --cluster=<cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default No 2 m5.xlarge us-east-1a
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default No 2 m5.xlarge us-east-1a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 기본 머신 풀을 다른 수의 노드로 확장하려면 다음 명령을 실행합니다.
rosa edit machinepool --cluster=<cluster-name> --replicas=<number-nodes> <machinepool-name>
rosa edit machinepool --cluster=<cluster-name> --replicas=<number-nodes> <machinepool-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 입력 예
rosa edit machinepool --cluster=my-rosa-cluster --replicas 3 Default
rosa edit machinepool --cluster=my-rosa-cluster --replicas 3 Default
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 시스템 풀이 확장되었는지 확인합니다.
rosa describe cluster --cluster=<cluster-name> | grep Compute
rosa describe cluster --cluster=<cluster-name> | grep Compute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 입력 예
rosa describe cluster --cluster=my-rosa-cluster | grep Compute
$ rosa describe cluster --cluster=my-rosa-cluster | grep Compute
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
- Compute: 3 (m5.xlarge)
- Compute: 3 (m5.xlarge)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.9.2.2. UI를 사용하여 작업자 노드 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
- 편집할 머신 풀 오른쪽에 있는 세 개의 점을 클릭합니다.
- 편집을 클릭합니다.
- 원하는 수의 노드를 입력하고 저장을 클릭합니다.
클러스터를 선택하고 개요 탭을 클릭하고 Compute 목록으로 스크롤하여 클러스터가 확장되었는지 확인합니다. 컴퓨팅 목록은 확장된 노드와 같아야 합니다. 예: 3/3입니다.
17.9.2.3. 노드 라벨 추가 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 사용하여 노드 레이블을 추가합니다.
rosa edit machinepool --cluster=<cluster-name> --replicas=<number-nodes> --labels='key=value' <machinepool-name>
rosa edit machinepool --cluster=<cluster-name> --replicas=<number-nodes> --labels='key=value' <machinepool-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 입력 예
rosa edit machinepool --cluster=my-rosa-cluster --replicas=2 --labels 'foo=bar','baz=one' new-mp
rosa edit machinepool --cluster=my-rosa-cluster --replicas=2 --labels 'foo=bar','baz=one' new-mp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 머신 풀에 레이블을 2개 추가합니다.
이 명령은 모든 시스템 풀 구성을 새로 정의된 구성으로 교체합니다. 다른 레이블을 추가하고 이전 레이블을 유지하려면 새 레이블과 기존 레이블을 모두 지정해야 합니다. 그렇지 않으면 명령은 기존의 모든 레이블을 추가하려는 레이블로 교체합니다. 마찬가지로 레이블을 삭제하려면 삭제하려는 명령을 제외하고 명령을 실행하고 원하는 상태를 표시합니다.
17.9.3. 노드 유형 혼합 링크 복사링크가 클립보드에 복사되었습니다!
새 머신 풀을 사용하여 동일한 클러스터에서 다른 작업자 노드 머신 유형을 혼합할 수도 있습니다. 생성된 후에는 머신 풀의 노드 유형을 변경할 수 없지만 --instance-type
플래그를 추가하여 다른 노드로 새 머신 풀을 생성할 수 있습니다.
예를 들어 데이터베이스 노드를 다른 노드 유형으로 변경하려면 다음 명령을 실행합니다.
rosa create machinepool --cluster=<cluster-name> --name=<mp-name> --replicas=<number-nodes> --labels='<key=pair>' --instance-type=<type>
rosa create machinepool --cluster=<cluster-name> --name=<mp-name> --replicas=<number-nodes> --labels='<key=pair>' --instance-type=<type>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 입력 예
rosa create machinepool --cluster=my-rosa-cluster --name=db-nodes-large-mp --replicas=2 --labels='app=db','tier=backend' --instance-type=m5.2xlarge
rosa create machinepool --cluster=my-rosa-cluster --name=db-nodes-large-mp --replicas=2 --labels='app=db','tier=backend' --instance-type=m5.2xlarge
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용 가능한 모든 인스턴스 유형을 보려면 다음 명령을 실행합니다.
rosa list instance-types
rosa list instance-types
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 단계별 변경을 수행하려면
--interactive
플래그를 사용합니다.rosa create machinepool -c <cluster-name> --interactive
rosa create machinepool -c <cluster-name> --interactive
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 머신 풀을 나열하고 새로운 대규모 인스턴스 유형을 확인합니다.
rosa list machinepools -c <cluster-name>
rosa list machinepools -c <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.10. 튜토리얼: 자동 확장 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 자동 스케일러 는 Pod 리소스를 기반으로 클러스터에서 작업자 노드를 추가하거나 제거합니다.
클러스터 자동 스케일러는 다음과 같은 경우 클러스터 크기를 늘립니다.
- 리소스가 부족하여 Pod가 현재 노드에서 예약되지 않습니다.
- 배포 요구 사항을 충족하기 위해 다른 노드가 필요합니다.
클러스터 자동 스케일러는 사용자가 지정한 제한을 초과하여 클러스터 리소스를 늘리지 않습니다.
클러스터 자동 스케일러는 다음과 같은 경우 클러스터 크기를 줄입니다.
- 일부 노드는 상당한 기간 동안 지속적으로 필요하지 않습니다. 예를 들어 노드에 리소스 사용량이 부족하고 중요한 모든 Pod가 다른 노드에 적합할 수 있는 경우입니다.
17.10.1. CLI를 사용하여 기존 머신 풀에 대한 자동 스케일링 활성화 링크 복사링크가 클립보드에 복사되었습니다!
클러스터 생성 시 및 --enable-autoscaling
옵션을 사용하여 새 머신 풀을 생성할 때 클러스터 자동 스케일링을 활성화할 수 있습니다.
자동 스케일링은 머신 풀 가용성에 따라 설정됩니다. 자동 스케일링에 사용할 수 있는 머신 풀을 확인하려면 다음 명령을 실행합니다.
rosa list machinepools -c <cluster-name>
$ rosa list machinepools -c <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default No 2 m5.xlarge us-east-1a
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default No 2 m5.xlarge us-east-1a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 사용 가능한 머신 풀에 자동 스케일링을 추가합니다.
rosa edit machinepool -c <cluster-name> --enable-autoscaling <machinepool-name> --min-replicas=<num> --max-replicas=<num>
$ rosa edit machinepool -c <cluster-name> --enable-autoscaling <machinepool-name> --min-replicas=<num> --max-replicas=<num>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 입력 예
rosa edit machinepool -c my-rosa-cluster --enable-autoscaling Default --min-replicas=2 --max-replicas=4
$ rosa edit machinepool -c my-rosa-cluster --enable-autoscaling Default --min-replicas=2 --max-replicas=4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 위의 명령은 리소스에 따라 2~4개의 노드 사이를 확장하는 작업자 노드에 대한 자동 스케일러를 생성합니다.
17.10.2. UI를 사용하여 기존 머신 풀에 대한 자동 스케일링 활성화 링크 복사링크가 클립보드에 복사되었습니다!
머신 풀을 생성할 때 자동 스케일링 활성화 확인란을 선택하여 클러스터 생성 시 클러스터 자동 스케일링을 활성화할 수 있습니다.
- 머신 풀 탭으로 이동하여 오른쪽에 있는 세 개의 점을 클릭합니다.
- 스케일링을 클릭한 다음 자동 스케일링을 활성화합니다.
다음 명령을 실행하여 자동 스케일링이 추가되었는지 확인합니다.
rosa list machinepools -c <cluster-name>
$ rosa list machinepools -c <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default Yes 2-4 m5.xlarge us-east-1a
ID AUTOSCALING REPLICAS INSTANCE TYPE LABELS TAINTS AVAILABILITY ZONES Default Yes 2-4 m5.xlarge us-east-1a
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.11. 튜토리얼: 클러스터 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
ROSA(Red Hat OpenShift Service on AWS)는 관리형 서비스의 일부로 모든 클러스터 업그레이드를 실행합니다. 명령을 실행하거나 클러스터를 변경할 필요가 없습니다. 편리한 시간에 업그레이드를 예약할 수 있습니다.
클러스터 업그레이드 예약 방법은 다음과 같습니다.
- 수동으로 CLI(명령줄 인터페이스) 사용: 한 번 즉시 업그레이드하거나 향후 날짜 및 시간에 대해 일회성 업그레이드를 예약합니다.
- Red Hat OpenShift Cluster Manager 사용자 인터페이스(UI)를 수동으로 사용: 즉시 업그레이드하거나 향후 날짜 및 시간에 대해 일회성 업그레이드를 예약합니다.
- 자동화된 업그레이드: 수동으로 예약하지 않고도 새 버전을 사용할 수 있을 때마다 반복적인 y-stream 업그레이드에 대한 업그레이드 창을 설정합니다. 마이너 버전은 수동으로 예약해야 합니다.
클러스터 업그레이드에 대한 자세한 내용은 다음 명령을 실행합니다.
rosa upgrade cluster --help
$ rosa upgrade cluster --help
17.11.1. CLI를 사용하여 클러스터 수동 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 업그레이드할 수 있는 업그레이드가 있는지 확인합니다.
rosa list upgrade -c <cluster-name>
$ rosa list upgrade -c <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
rosa list upgrade -c <cluster-name>
$ rosa list upgrade -c <cluster-name> VERSION NOTES 4.14.7 recommended 4.14.6 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 위의 예에서 4.14.7 및 4.14.6 버전을 모두 사용할 수 있습니다.
다음 명령을 실행하여 1시간 이내에 업그레이드할 클러스터를 예약합니다.
rosa upgrade cluster -c <cluster-name> --version <desired-version>
$ rosa upgrade cluster -c <cluster-name> --version <desired-version>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 다음 명령을 실행하여 나중에 업그레이드하도록 클러스터를 예약합니다.
rosa upgrade cluster -c <cluster-name> --version <desired-version> --schedule-date <future-date-for-update> --schedule-time <future-time-for-update>
$ rosa upgrade cluster -c <cluster-name> --version <desired-version> --schedule-date <future-date-for-update> --schedule-time <future-time-for-update>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.11.2. UI를 사용하여 클러스터 수동 업그레이드 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift Cluster Manager에 로그인하고 업그레이드할 클러스터를 선택합니다.
- 설정을 클릭합니다.
업그레이드할 수 있는 경우 업데이트를 클릭합니다.
- 새 창에서 업그레이드할 버전을 선택합니다.
- 업그레이드 시간을 예약하거나 즉시 시작합니다.
17.11.3. 자동 반복 업그레이드 설정 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift Cluster Manager에 로그인하고 업그레이드할 클러스터를 선택합니다.
설정을 클릭합니다.
- 업데이트 전략에서 업데이트 반복 을 클릭합니다.
- 업그레이드 날짜 및 시간을 설정합니다.
- 노드 드레이닝 에서 유예 기간을 선택하여 Pod를 제거하기 전에 노드를 드레이닝할 수 있습니다.
- 저장을 클릭합니다.
17.12. 튜토리얼: 클러스터 삭제 링크 복사링크가 클립보드에 복사되었습니다!
CLI(명령줄 인터페이스) 또는 UI(사용자 인터페이스)를 사용하여 AWS(ROSA)에서 Red Hat OpenShift Service를 삭제할 수 있습니다.
17.12.1. CLI를 사용하여 ROSA 클러스터 삭제 링크 복사링크가 클립보드에 복사되었습니다!
선택 사항: 다음 명령을 실행하여 올바른 클러스터를 삭제하도록 클러스터를 나열합니다.
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 클러스터를 삭제합니다.
rosa delete cluster --cluster <cluster-name>
$ rosa delete cluster --cluster <cluster-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 주의이 명령은 복구할 수 없습니다.
CLI에서 클러스터를 삭제할지 묻는 메시지를 표시합니다. y 를 누른 다음 Enter 를 누릅니다. 클러스터 및 관련 인프라가 모두 삭제됩니다.
참고모든 AWS STS 및 IAM 역할 및 정책은 다음 단계에 따라 클러스터 삭제가 완료되면 수동으로 삭제해야 합니다.
CLI는 생성된 OpenID Connect(OIDC) 공급자 및 Operator IAM 역할 리소스를 삭제하는 명령을 출력합니다. 이러한 리소스를 삭제하기 전에 클러스터가 삭제를 완료할 때까지 기다립니다. 다음 명령을 실행하여 빠른 상태 점검을 수행합니다.
rosa list clusters
$ rosa list clusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 클러스터가 삭제되면 다음 명령을 실행하여 OIDC 공급자를 삭제합니다.
rosa delete oidc-provider -c <clusterID> --mode auto --yes
$ rosa delete oidc-provider -c <clusterID> --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Operator IAM 역할을 삭제합니다.
rosa delete operator-roles -c <clusterID> --mode auto --yes
$ rosa delete operator-roles -c <clusterID> --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이 명령에는 클러스터 이름이 아닌 클러스터 ID가 필요합니다.
동일한 계정의 다른 클러스터에 더 이상 필요하지 않은 경우에만 나머지 계정 역할을 제거합니다. 이 계정에 다른 ROSA 클러스터를 만들려면 이 단계를 수행하지 마십시오.
계정 역할을 삭제하려면 해당 역할을 생성할 때 사용되는 접두사를 알아야 합니다. 달리 지정하지 않는 한 기본값은 "ManagedOpenShift"입니다.
다음 명령을 실행하여 계정 역할을 삭제합니다.
rosa delete account-roles --prefix <prefix> --mode auto --yes
$ rosa delete account-roles --prefix <prefix> --mode auto --yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.12.2. UI를 사용하여 ROSA 클러스터 삭제 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift Cluster Manager 에 로그인하고 삭제할 클러스터를 찾습니다.
클러스터 오른쪽에 있는 점 세 개를 클릭합니다.
드롭다운 메뉴에서 클러스터 삭제 를 클릭합니다.
- 삭제를 확인할 클러스터 이름을 입력하고 삭제를 클릭합니다.
17.13. 튜토리얼: 지원 받기 링크 복사링크가 클립보드에 복사되었습니다!
필요한 경우 올바른 도움말을 찾는 것이 중요합니다. 이는 도움이 필요할 때 필요한 리소스 중 일부입니다.
17.13.1. 지원 연락처 추가 링크 복사링크가 클립보드에 복사되었습니다!
클러스터에 대한 통신을 위해 추가 이메일 주소를 추가할 수 있습니다.
- Red Hat OpenShift Cluster Manager UI(사용자 인터페이스)에서 클러스터 선택을 클릭합니다.
- 지원 탭을 클릭합니다.
- 알림 연락처 추가 를 클릭하고 추가 이메일 주소를 입력합니다.
17.13.2. UI를 사용한 지원을 위해 Red Hat에 문의 링크 복사링크가 클립보드에 복사되었습니다!
- OpenShift Cluster Manager UI에서 지원 탭을 클릭합니다.
- 지원 케이스 열기를 클릭합니다.
17.13.3. 지원 페이지를 사용하여 Red Hat에 문의하십시오. 링크 복사링크가 클립보드에 복사되었습니다!
- Red Hat 지원 페이지로 이동합니다.
새 케이스 열기를 클릭합니다.
- Red Hat 계정에 로그인합니다.
지원에 문의하는 이유를 선택합니다.
- AWS의 Red Hat OpenShift Service를 선택합니다.
- 계속 을 클릭합니다.
문제에 대한 요약과 요청 세부 정보를 입력합니다. 파일, 로그 및 스크린샷을 업로드합니다. 자세한 내용은 Red Hat 지원이 도움이 될 수 있습니다.
참고문제에 도움이 될 수 있는 관련 제안 사항이 이 페이지 하단에 표시됩니다.
- Continue 를 클릭합니다.
- 새 필드의 질문에 대답합니다.
- Continue 를 클릭합니다.
케이스에 대한 다음 정보를 입력합니다.
- 지원 수준: 프리미엄
- 심각도: Red Hat 지원 심각도 수준 정의를 검토하여 올바른 버전을 선택합니다.
- 그룹: 다른 몇 가지 케이스와 관련된 경우 해당 그룹을 선택할 수 있습니다.
- 언어
- 알림 보내기: 추가 이메일 주소를 추가하여 활동에 대한 알림을 유지합니다.
- Red Hat 동료: Red Hat의 모든 사용자와 협력하여 이를 루프에 유지하려면 여기에서 이메일 주소를 입력할 수 있습니다.
- 대체 케이스 ID: 고유한 ID를 첨부하려면 여기에서 입력할 수 있습니다.
- Continue 를 클릭합니다.
검토 화면에서 지원에 문의할 올바른 클러스터 ID를 선택해야 합니다.
- Submit 을 클릭합니다.
- 표시된 심각도 수준에 대해 커밋된 응답 시간을 기반으로 연락을 취할 것입니다.
18장. 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
18.1. 튜토리얼: 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
18.1.1. 소개 링크 복사링크가 클립보드에 복사되었습니다!
클러스터를 성공적으로 프로비저닝한 후 애플리케이션을 배포할 수 있습니다. 이 애플리케이션을 사용하면 AWS(ROSA) 및 Kubernetes에서 Red Hat OpenShift Service의 일부 기능을 보다 잘 이해할 수 있습니다.
18.1.1.1. 랩 개요 링크 복사링크가 클립보드에 복사되었습니다!
이 실습에서는 컨테이너 기반 애플리케이션 배포 및 운영 개념을 이해하는 데 도움이 되도록 설계된 다음 작업 세트를 완료합니다.
- S2I 및 Kubernetes Deployment 오브젝트를 사용하여 Node.js 기반 애플리케이션을 배포합니다.
- 소스 코드 변경 사항을 자동으로 푸시하도록 CD(지속 제공) 파이프라인을 설정합니다.
- 로깅 살펴보기.
- 애플리케이션에 대한 자체 복구 경험.
- 구성 맵, 시크릿 및 환경 변수를 통해 구성 관리를 살펴봅니다.
- 영구 스토리지를 사용하여 Pod를 다시 시작할 때마다 데이터를 공유합니다.
- Kubernetes 및 애플리케이션 내에서 네트워킹을 살펴봅니다.
- ROSA 및 Kubernetes 기능에 대해 숙지합니다.
- Horizontal Pod Autoscaler에서 부하를 기반으로 Pod를 자동으로 스케일링합니다.
- S3 버킷을 배포하고 사용하려면 AWS Controllers for Kubernetes(ACK)를 사용합니다.
이 랩에서는 ROSA CLI 또는 ROSA 웹 사용자 인터페이스(UI)를 사용합니다.
18.2. 튜토리얼: 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
18.2.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
프로비저닝된 ROSA 클러스터
이 랩은 ROSA 클러스터를 성공적으로 프로비저닝한 것으로 가정합니다. ROSA 클러스터를 아직 생성하지 않은 경우 ROSA 퀵 스타트 가이드를 참조하십시오.
OpenShift CLI(명령줄 인터페이스)
자세한 내용은 OpenShift CLI 시작하기를 참조하십시오.
GitHub 계정
기존 GitHub 계정을 사용하거나 https://github.com/signup 에 등록합니다.
18.2.1.1. AWS 계정 연결 이해 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat Hybrid Cloud Console 에서 Red Hat OpenShift Cluster Manager를 사용하여 AWS(STS)에서 Red Hat OpenShift Service를 생성하려면 먼저 AWS 계정을 Red Hat 조직과 연결해야 합니다. 다음 IAM 역할을 생성하고 연결하여 계정을 연결할 수 있습니다.
- OpenShift Cluster Manager 역할
OpenShift Cluster Manager IAM 역할을 생성하여 Red Hat 조직에 연결합니다.
OpenShift Cluster Manager 역할에 기본 또는 관리 권한을 적용할 수 있습니다. 기본 권한을 사용하면 OpenShift Cluster Manager를 사용하여 클러스터 유지 관리를 수행할 수 있습니다. 관리 권한을 사용하면 OpenShift Cluster Manager를 사용하여 클러스터별 Operator 역할 및 OpenID Connect(OIDC) 공급자를 자동으로 배포할 수 있습니다.
- 사용자 역할
사용자 IAM 역할을 생성하여 Red Hat 사용자 계정에 연결합니다. Red Hat 사용자 계정은 OpenShift Cluster Manager 역할에 연결된 Red Hat 조직에 있어야 합니다.
OpenShift Cluster Manager Hybrid Cloud Console을 사용하여 클러스터 및 필요한 STS 리소스를 설치할 때 Red Hat에서 사용자 역할을 사용하여 AWS ID를 확인합니다.
AWS 계정과 Red Hat 조직 연결
Red Hat Hybrid Cloud Console 에서 Red Hat OpenShift Cluster Manager를 사용하여 AWS(STS)에서 Red Hat OpenShift Service를 생성하고, OpenShift Cluster Manager IAM 역할을 생성하여 Red Hat 조직에 연결하기 전에 그런 다음 사용자 IAM 역할을 생성하여 동일한 Red Hat 조직의 Red Hat 사용자 계정에 연결합니다.
프로세스
OpenShift Cluster Manager 역할을 생성하여 Red Hat 조직에 연결합니다.
참고OpenShift Cluster Manager Hybrid Cloud Console을 사용하는 클러스터별 Operator 역할 및 OpenID Connect(OIDC) 공급자를 자동으로 배포하려면 ROSA 클러스터를 생성하는 Accounts 및 역할 단계에서 Admin OCM 역할 명령을 선택하여 역할에 관리 권한을 적용해야 합니다. OpenShift Cluster Manager 역할의 기본 및 관리 권한에 대한 자세한 내용은 AWS 계정 연결 이해 를 참조하십시오.
참고OpenShift Cluster Manager Hybrid Cloud Console에서 ROSA 클러스터를 생성하는 계정 및 역할 단계에서 기본 OCM 역할 명령을 선택하는 경우 수동 모드를 사용하여 ROSA 클러스터를 배포해야 합니다. 이후 단계에서 클러스터별 Operator 역할 및 OpenID Connect(OIDC) 공급자를 구성하라는 메시지가 표시됩니다.
rosa create ocm-role
$ rosa create ocm-role
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프롬프트에 있는 기본값을 선택하여 역할을 신속하게 생성하고 연결합니다.
사용자 역할을 생성하여 Red Hat 사용자 계정에 연결합니다.
rosa create user-role
$ rosa create user-role
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프롬프트에 있는 기본값을 선택하여 역할을 신속하게 생성하고 연결합니다.
참고Red Hat 사용자 계정은 OpenShift Cluster Manager 역할에 연결된 Red Hat 조직에 있어야 합니다.
18.3. 튜토리얼: 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
18.3.1. 랩 개요 링크 복사링크가 클립보드에 복사되었습니다!
18.3.1.1. 랩 리소스 링크 복사링크가 클립보드에 복사되었습니다!
- OSToy 애플리케이션의 소스 코드
- OSToy 프론트 엔드 컨테이너 이미지
- OSToy 마이크로 서비스 컨테이너 이미지
배포 정의 YAML 파일:
ostoy-frontend-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ostoy-microservice-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3용 S3 버킷 매니페스트
s3-bucket.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
OSToy 애플리케이션의 배포를 단순화하기 위해 위의 배포 매니페스트에 필요한 모든 오브젝트가 함께 그룹화됩니다. 일반적인 엔터프라이즈 배포에는 각 Kubernetes 오브젝트에 대한 별도의 매니페스트 파일이 권장됩니다.
18.3.1.2. OSToy 애플리케이션 정보 링크 복사링크가 클립보드에 복사되었습니다!
OSToy는 Kubernetes의 기능을 탐색하는 데 도움이 되도록 ROSA 클러스터에 배포할 간단한 Node.js 애플리케이션입니다. 이 애플리케이션에는 다음을 수행할 수 있는 사용자 인터페이스가 있습니다.
- 로그에 메시지를 작성합니다(stdout / stderr).
- 자동 복구 보기를 위해 의도적으로 애플리케이션을 충돌합니다.
- 활성 상태 프로브를 전환하고 OpenShift 동작을 모니터링합니다.
- 구성 맵, 시크릿 및 env 변수를 읽습니다.
- 공유 스토리지에 연결된 경우 파일을 읽고 씁니다.
- 포함된 마이크로 서비스를 사용하여 네트워크 연결, 클러스터 내 DNS 및 intra-communication을 확인합니다.
- Horizontal Pod Autoscaler를 사용하여 부하를 처리하도록 Pod의 자동 스케일링을 보려면 부하를 늘립니다.
- 선택 사항: AWS S3 버킷에 연결하여 오브젝트를 읽고 씁니다.
18.3.1.3. OSToy Application Diagram 링크 복사링크가 클립보드에 복사되었습니다!
18.3.1.4. OSToy UI 이해 링크 복사링크가 클립보드에 복사되었습니다!
- 브라우저에서 페이지를 제공한 포드 이름을 표시합니다.
- 홈: 당사가 탐색할 기능 중 일부를 수행할 수 있는 애플리케이션의 기본 페이지입니다.
- 영구 스토리지: 이 애플리케이션에 바인딩된 영구 볼륨에 데이터를 쓸 수 있습니다.
- 구성 맵: 애플리케이션에서 사용할 수 있는 configmaps 내용과 key:value 쌍을 표시합니다.
- 보안: 애플리케이션에서 사용할 수 있는 보안 내용과 키:값 쌍을 표시합니다.
- ENV 변수: 애플리케이션에서 사용할 수 있는 환경 변수를 표시합니다.
- 네트워킹: 애플리케이션 내에서 네트워킹을 설명하는 툴입니다.
- Pod 자동 확장: Pod의 부하를 늘리고 HPA를 테스트하는 툴입니다.
ACK S3: 선택 사항: AWS S3와 통합하여 오브젝트를 읽고 버킷에 씁니다.
참고OSToy의 "ACK S3" 섹션을 보려면 이 워크샵의 ACK 섹션을 완료해야 합니다. 해당 섹션을 완료하지 않으려면 OSToy 애플리케이션이 계속 작동합니다.
- 정보: 애플리케이션에 대한 자세한 정보를 표시합니다.
18.4. 튜토리얼: 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
18.4.1. Kubernetes를 사용하여 OSToy 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
이미지 리포지토리에 프런트 엔드 및 백엔드 마이크로 서비스 컨테이너의 이미지를 생성하고 저장하여 OSToy 애플리케이션을 배포할 수 있습니다. 그런 다음 Kubernetes 배포를 생성하여 애플리케이션을 배포할 수 있습니다.
18.4.1.1. 로그인 명령 검색 링크 복사링크가 클립보드에 복사되었습니다!
- CLI에 로그인하지 않은 경우 웹 콘솔을 사용하여 클러스터에 액세스합니다.
오른쪽 상단에 있는 로그인 이름 옆에 있는 드롭다운 화살표를 클릭하고 로그인 명령 복사를 선택합니다.
새 탭이 열립니다.
- 인증 방법을 선택합니다.
- 토큰 표시를 클릭합니다.
- 이 토큰을 사용하여 로그인 아래에 명령을 복사합니다.
터미널에서 복사된 명령을 붙여넣고 실행합니다. 로그인에 성공하면 다음 확인 메시지가 표시됩니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4.1.2. 새 프로젝트 생성 링크 복사링크가 클립보드에 복사되었습니다!
18.4.1.2.1. CLI 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 클러스터에서
ostoy
라는 새 프로젝트를 생성합니다.oc new-project ostoy
$ oc new-project ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Now using project "ostoy" on server "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443".
Now using project "ostoy" on server "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443".
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 또는 다음 명령을 실행하여 고유한 프로젝트 이름을 생성합니다.
oc new-project ostoy-$(uuidgen | cut -d - -f 2 | tr '[:upper:]' '[:lower:]')
$ oc new-project ostoy-$(uuidgen | cut -d - -f 2 | tr '[:upper:]' '[:lower:]')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4.1.2.2. 웹 콘솔 사용 링크 복사링크가 클립보드에 복사되었습니다!
- 웹 콘솔에서 홈 → 프로젝트를 클릭합니다.
프로젝트 페이지에서 프로젝트 생성 을 클릭합니다.
18.4.1.3. 백엔드 마이크로 서비스 배포 링크 복사링크가 클립보드에 복사되었습니다!
마이크로 서비스는 내부 웹 요청을 제공하고 현재 호스트 이름과 무작위로 생성된 색상 문자열이 포함된 JSON 오브젝트를 반환합니다.
터미널에서 다음 명령을 실행하여 마이크로 서비스를 배포합니다.
oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml deployment.apps/ostoy-microservice created service/ostoy-microservice-svc created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4.1.4. 프런트 엔드 서비스 배포 링크 복사링크가 클립보드에 복사되었습니다!
프런트 엔드 배포에서는 애플리케이션 및 추가 Kubernetes 오브젝트에 Node.js 프런트 엔드를 사용합니다.
ostoy-frontend-deployment.yaml
파일은 프런트 엔드 배포에서 다음 기능을 정의하는 것을 보여줍니다.
- 영구 볼륨 클레임
- Deployment 오브젝트
- Service
- 경로
- ConfigMaps
보안
애플리케이션 프런트 엔드를 배포하고 다음 명령을 입력하여 모든 오브젝트를 생성합니다.
oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-frontend-deployment.yaml
$ oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-frontend-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 생성된 모든 오브젝트가 표시됩니다.
18.4.1.5. 경로 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
애플리케이션에 액세스하려면 경로를 가져와야 합니다.
다음 명령을 실행하여 애플리케이션의 경로를 가져옵니다.
oc get route
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD ostoy-route ostoy-route-ostoy.apps.<your-rosa-cluster>.abcd.p1.openshiftapps.com ostoy-frontend-svc <all> None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD ostoy-route ostoy-route-ostoy.apps.<your-rosa-cluster>.abcd.p1.openshiftapps.com ostoy-frontend-svc <all> None
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4.1.6. 애플리케이션 보기 링크 복사링크가 클립보드에 복사되었습니다!
-
이전 단계에서
ostoy-route-ostoy.apps.<your-rosa-cluster>.abcd.p1.openshiftapps.com
URL 출력을 복사합니다. 복사한 URL을 웹 브라우저에 붙여넣고 Enter 키를 누릅니다. 애플리케이션 홈페이지가 표시됩니다. 페이지가 로드되지 않는 경우
https
가 아닌http
를 사용해야 합니다.
18.5. 튜토리얼: 상태 점검 링크 복사링크가 클립보드에 복사되었습니다!
Pod를 의도적으로 충돌하고 Kubernetes 활성 프로브에 응답하지 않도록 하여 Kubernetes가 Pod 오류에 응답하는 방법을 확인할 수 있습니다.
18.5.1. 데스크탑 준비 링크 복사링크가 클립보드에 복사되었습니다!
작업 결과를 즉시 확인할 수 있도록 OpenShift 웹 콘솔과 OSToy 애플리케이션 웹 콘솔 간에 데스크탑 화면을 분할합니다.
화면을 분할할 수 없는 경우 OSToy 애플리케이션 웹 콘솔을 다른 탭에서 열어 애플리케이션의 기능을 활성화한 후 OpenShift 웹 콘솔로 빠르게 전환할 수 있습니다.
OpenShift 웹 콘솔에서 워크로드 > 배포 > ostoy-frontend 를 선택하여 OSToy 배포를 확인합니다.
18.5.2. Pod 충돌 링크 복사링크가 클립보드에 복사되었습니다!
-
OSToy 애플리케이션 웹 콘솔의 왼쪽 메뉴에서 Home 을 클릭하고 Crash Pod 상자에 메시지를 입력합니다(예:
이 값은 goodbye!
). Crash Pod 를 클릭합니다.
Pod 충돌 및 Kubernetes는 Pod를 다시 시작해야 합니다.
18.5.3. revived Pod 보기 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 웹 콘솔에서 신속하게 배포 화면으로 전환합니다. pod가 노란색으로 설정되어 있음을 알 수 있습니다. 즉, 다운된 것입니다. 신속하게 재부팅하고 파란색으로 전환해야 합니다. 재생 프로세스가 빠르게 수행되므로 누락될 수 있습니다.
검증
웹 콘솔에서 포드 > ostoy-frontend-xxxxxxx-xxxx 를 클릭하여 Pod 화면으로 변경합니다.
Events 하위 탭을 클릭하고 컨테이너가 충돌하여 다시 시작되었는지 확인합니다.
18.5.4. 애플리케이션 오작동으로 만들기 링크 복사링크가 클립보드에 복사되었습니다!
Pod 이벤트 페이지를 이전 절차에서 열린 상태로 유지합니다.
OSToy 애플리케이션에서 토글 상태 타일에서 상태 토글 을 클릭합니다. 현재 상태 전환을 볼 수 있습니다. 이 모든 것이 좋지 않습니다.
검증
이전 단계 후에 애플리케이션은 200 HTTP 코드로
응답하지 않습니다. 연속 장애가 3번 실패한 후 Kubernetes는 Pod를 중지하고 다시 시작합니다. 웹 콘솔에서 Pod 이벤트 페이지로 다시 전환하면 활성 프로브가 실패하고 Pod가 재시작된 것을 확인할 수 있습니다.
다음 이미지는 Pod 이벤트 페이지에 표시되는 내용의 예를 보여줍니다.
A. Pod에는 3개의 연속 오류가 있습니다.
B. Kubernetes는 Pod를 중지합니다.
C. Kubernetes는 Pod를 다시 시작합니다.
18.6. 튜토리얼: 클러스터 스토리지를 위한 영구 볼륨 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat OpenShift Service on AWS(ROSA)(classic architecture) 및 Red Hat OpenShift Service on AWS(ROSA)는 AWS( Amazon Web Services) EBS(Elastic Block Store) 또는 AWS EBS(Elastic File System ) 를 사용하여 영구 볼륨 저장을 지원합니다.
18.6.1. 영구 볼륨 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 파일을 생성하고 클러스터의 영구 볼륨에 저장한 후 Pod가 실패하고 다시 생성되는지 확인합니다.
18.6.1.1. 영구 볼륨 클레임 보기 링크 복사링크가 클립보드에 복사되었습니다!
- 클러스터의 OpenShift 웹 콘솔로 이동합니다.
- 왼쪽 메뉴에서 Storage 를 클릭한 다음 PersistentVolumeClaims 를 클릭하여 모든 영구 볼륨 클레임 목록을 확인합니다.
지속성 볼륨 클레임을 클릭하여 크기, 액세스 모드, 스토리지 클래스 및 기타 추가 클레임 세부 정보를 확인합니다.
참고액세스 모드는 RWO(
ReadWriteOnce
)입니다. 즉, 볼륨은 하나의 노드에만 마운트할 수 있으며 Pod 또는 Pod는 볼륨을 읽고 쓸 수 있습니다.
18.6.1.2. 파일 저장 링크 복사링크가 클립보드에 복사되었습니다!
- OSToy 앱 콘솔의 왼쪽 메뉴에서 영구 스토리지를 클릭합니다.
-
파일 이름 상자에
.txt
확장자가 있는 파일 이름을 입력합니다(예:test-pv.txt
). -
파일 콘텐츠 상자에 텍스트 문장을 입력합니다. 예를 들어
OpenShift는 슬라이스된 bread! 이므로 가장 큰 것입니다
. 파일 생성을 클릭합니다.
- OSToy 앱 콘솔의 기존 파일로 스크롤합니다.
생성한 파일을 클릭하여 파일 이름과 내용을 확인합니다.
18.6.1.3. Pod 충돌 링크 복사링크가 클립보드에 복사되었습니다!
- OSToy 앱 콘솔의 왼쪽 메뉴에서 홈을 클릭합니다.
- Crash Pod를 클릭합니다.
18.6.1.4. 영구 스토리지 확인 링크 복사링크가 클립보드에 복사되었습니다!
- 포드가 다시 생성될 때까지 기다립니다.
- OSToy 앱 콘솔의 왼쪽 메뉴에서 영구 스토리지를 클릭합니다.
만든 파일을 찾아서 열어 내용을 보고 확인합니다.
검증
배포 YAML 파일은 /var/demo_files
디렉토리를 영구 볼륨 클레임에 마운트했음을 보여줍니다.
다음 명령을 실행하여 프런트 엔드 Pod의 이름을 검색합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 컨테이너에서 SSH(Secure Shell) 세션을 시작합니다.
oc rsh <pod_name>
$ oc rsh <pod_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 디렉터리로 이동합니다.
cd /var/demo_files
$ cd /var/demo_files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 선택 사항: 다음 명령을 실행하여 생성한 모든 파일을 확인합니다.
ls
$ ls
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 내용을 보려면 파일을 엽니다.
cat test-pv.txt
$ cat test-pv.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력이 OSToy 앱 콘솔에 입력한 텍스트인지 확인합니다.
터미널 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.6.1.5. 세션 종료 링크 복사링크가 클립보드에 복사되었습니다!
-
터미널에
exit
를 입력하여 세션을 종료하고 CLI로 돌아갑니다.
18.7. 튜토리얼: ConfigMaps, secrets, environment variables 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 구성 맵,시크릿 및 환경 변수 를 사용하여 OSToy 애플리케이션을 구성하는 방법을 보여줍니다. 자세한 내용은 이러한 연결된 항목을 참조하십시오.
18.7.1. ConfigMap을 사용한 구성 링크 복사링크가 클립보드에 복사되었습니다!
구성 맵을 사용하면 컨테이너 이미지 콘텐츠에서 구성 아티팩트를 분리하여 컨테이너화된 애플리케이션을 이식할 수 있습니다.
프로세스
OSToy 앱의 왼쪽 메뉴에서 Config Maps 을 클릭하여 OSToy 애플리케이션에서 사용할 수 있는 구성 맵의 내용을 표시합니다. 코드 스니펫은 구성 맵 구성의 예를 보여줍니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.7.2. 보안을 사용한 구성 링크 복사링크가 클립보드에 복사되었습니다!
Kubernetes Secret
오브젝트를 사용하면 암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장하고 관리할 수 있습니다. 이 정보를 시크릿에 배치하는 것은 포드 정의 또는 컨테이너 이미지에 일반 텍스트에 배치하는 것보다 더 안전하고 유연합니다.
프로세스
OSToy 앱의 왼쪽 메뉴에서 시크릿을 클릭하여 OSToy 애플리케이션에서 사용할 수 있는 시크릿 내용을 표시합니다. 코드 스니펫은 보안 구성의 예를 보여줍니다.
출력 예
USERNAME=my_user PASSWORD=VVNFUk5BTUU9bXlfdXNlcgpQQVNTV09SRD1AT3RCbCVYQXAhIzYzMlk1RndDQE1UUWsKU01UUD1sb2NhbGhvc3QKU01UUF9QT1JUPTI1 SMTP=localhost SMTP_PORT=25
USERNAME=my_user PASSWORD=VVNFUk5BTUU9bXlfdXNlcgpQQVNTV09SRD1AT3RCbCVYQXAhIzYzMlk1RndDQE1UUWsKU01UUD1sb2NhbGhvc3QKU01UUF9QT1JUPTI1 SMTP=localhost SMTP_PORT=25
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.7.3. 환경 변수를 사용한 구성 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 사용하면 코드를 변경할 필요 없이 애플리케이션 동작을 쉽게 변경할 수 있습니다. 동일한 애플리케이션의 다양한 배포가 환경 변수에 따라 다르게 작동할 수 있습니다. Red Hat OpenShift Service on AWS를 사용하면 Pod 또는 배포의 환경 변수를 쉽게 설정, 보기 및 업데이트할 수 있습니다.
프로세스
OSToy 앱의 왼쪽 메뉴에서 ENV 변수 를 클릭하여 OSToy 애플리케이션에서 사용할 수 있는 환경 변수를 표시합니다. 코드 스니펫은 환경 변수 구성의 예를 보여줍니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.8. 튜토리얼: 네트워킹 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 OSToy 앱에서 클러스터 내부 네트워킹을 사용하여 마이크로서비스를 사용하고 Pod 스케일링을 시각화하여 기능을 분리하는 방법을 보여줍니다.
다이어그램에서는 두 개 이상의 개별 Pod가 있으며 각각 자체 서비스가 있음을 보여줍니다.
하나의 pod는 서비스와 공개적으로 액세스 가능한 경로를 사용하여 프런트 엔드 웹 애플리케이션으로 작동합니다. 다른 pod는 서비스 오브젝트를 사용하여 backend 마이크로 서비스로 작동하므로 프런트 엔드 포드에서 마이크로 서비스와 통신할 수 있습니다. 이 통신은 Pod에서 둘 이상의 경우 발생합니다. 이러한 통신 제한으로 인해 이 마이크로 서비스는 구성된 경우 이 클러스터 외부에서 또는 다른 네임스페이스 또는 프로젝트에서 액세스할 수 없습니다. 이 마이크로 서비스의 유일한 용도는 내부 웹 요청을 제공하고 포드 이름인 현재 호스트 이름 및 무작위로 생성된 색상 문자열이 포함된 JSON 오브젝트를 반환하는 것입니다. 이 색상 문자열은 "Intra-cluster communication"이라는 제목의 타일에 표시되는 해당 색상이 있는 상자를 표시하는 데 사용됩니다.
네트워킹 제한에 대한 자세한 내용은 네트워크 정책 정보를 참조하십시오.
18.8.1. 클러스터 내 네트워킹 링크 복사링크가 클립보드에 복사되었습니다!
OSToy 애플리케이션에서 네트워킹 구성을 볼 수 있습니다.
프로세스
- OSToy 애플리케이션의 왼쪽 메뉴에서 네트워킹 을 클릭합니다.
네트워킹 구성을 검토합니다. "Hostname Lookup"이라는 제목의 올바른 타일은 Pod에 대해 생성된 서비스 이름을 사용하여 내부 ClusterIP 주소로 변환하는 방법을 보여줍니다.
<
service_name>.<namespace>.svc.cluster.local의 형식에 따라 오른쪽 타일에 생성된 마이크로 서비스의 이름을
입력합니다. 다음 명령을 실행하여ostoy-microservice.yaml
의 서비스 정의에서 이 서비스 이름을 찾을 수 있습니다.oc get service <name_of_service> -o yaml
$ oc get service <name_of_service> -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 예에서 전체 호스트 이름은
ostoy-microservice-svc.ostoy.svc.cluster.local
입니다.IP 주소가 반환됩니다. 이 예에서는
172.30.165.246
입니다. 클러스터 내 IP 주소이며 클러스터 내에서만 액세스할 수 있습니다.
18.9. 튜토리얼: 애플리케이션 확장 링크 복사링크가 클립보드에 복사되었습니다!
18.9.1. 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
HPA(horizontal Pod Autoscaler)를 사용하여 Pod를 수동으로 또는 자동으로 스케일링할 수 있습니다. 클러스터 노드를 확장할 수도 있습니다.
18.9.1.1. 수동 Pod 스케일링 링크 복사링크가 클립보드에 복사되었습니다!
다음 방법 중 하나를 사용하여 애플리케이션 Pod를 수동으로 스케일링할 수 있습니다.
- ReplicaSet 또는 배포 정의 변경
- 명령줄 사용
- 웹 콘솔 사용
이 워크샵은 마이크로 서비스에 하나의 Pod만 사용하여 시작됩니다. 배포 정의에서 1
개의 복제본을 정의하면 Kubernetes Replication Controller에서 하나의 Pod를 활성 상태로 유지합니다. 그런 다음 부하가 많은 경우 로드를 기반으로 하고 초기 정의 이상으로 더 많은 Pod를 확장하는 HPA(수평 Pod Autoscaler)를 사용하여 Pod 자동 스케일링을 정의하는 방법을 알아봅니다.
사전 요구 사항
- 활성 ROSA 클러스터
- OSToy 애플리케이션이 해제됨
프로세스
- OSToy 앱의 탐색 메뉴에서 네트워킹 탭을 클릭합니다.
"Intra-cluster communication" 섹션에서 무작위로 색상을 변경하는 "원격 Pod" 아래에 있는 상자를 찾습니다. 박스 내에는 마이크로 서비스의 포드 이름이 표시됩니다. 마이크로 서비스 pod가 하나뿐이므로 이 예제에는 하나의 박스만 있습니다.
다음 명령을 실행하여 마이크로 서비스에 대해 실행 중인 포드가 하나뿐인지 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE ostoy-frontend-679cb85695-5cn7x 1/1 Running 0 1h ostoy-microservice-86b4c6f559-p594d 1/1 Running 0 1h
NAME READY STATUS RESTARTS AGE ostoy-frontend-679cb85695-5cn7x 1/1 Running 0 1h ostoy-microservice-86b4c6f559-p594d 1/1 Running 0 1h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ostoy-microservice-deployment.yaml 을 다운로드하여 로컬 머신에 저장합니다.
다음 예제를 사용하여 배포 정의를 1개 대신 3개의 Pod로 변경합니다.
spec: selector: matchLabels: app: ostoy-microservice replicas: 3
spec: selector: matchLabels: app: ostoy-microservice replicas: 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 복제본 변경 사항을 적용합니다.
oc apply -f ostoy-microservice-deployment.yaml
$ oc apply -f ostoy-microservice-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고워크로드 > Deployments > ostoy-microservice > YAML 탭으로 이동하여 OpenShift 웹 콘솔에서
ostoy-microservice-
deployment.yaml 파일을 편집할 수도 있습니다.다음 명령을 실행하여 Pod 3개가 있는지 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력에서는 이제 마이크로 서비스에 대한 포드가 하나만 아니라 3개의 포드가 있음을 보여줍니다.
출력 예
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 26m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 81s ostoy-microservice-6666dcf455-5z56w 1/1 Running 0 81s ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 26m
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 26m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 81s ostoy-microservice-6666dcf455-5z56w 1/1 Running 0 81s ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 26m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CLI를 사용하거나 웹 UI를 사용하여 애플리케이션을 확장합니다.
CLI에서 다음 명령을 실행하여 Pod 수를
3
에서2
로 줄입니다.oc scale deployment ostoy-microservice --replicas=2
$ oc scale deployment ostoy-microservice --replicas=2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - OpenShift 웹 콘솔 UI의 탐색 메뉴에서 워크로드 > 배포 > ostoy-microservice 를 클릭합니다.
- 페이지 왼쪽에서 중간에 "3 Pod" 라벨이 있는 파란색 원을 찾습니다.
원 옆에 있는 화살표를 선택하면 Pod 수가 스케일링됩니다.
2
의 아래쪽 화살표를 선택합니다.
검증
CLI, 웹 UI 또는 OSToy 앱을 사용하여 Pod 수를 확인합니다.
CLI에서 다음 명령을 실행하여 마이크로 서비스에 두 개의 포드를 사용하고 있는지 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 75m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 50m ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 75m
NAME READY STATUS RESTARTS AGE ostoy-frontend-5fbcc7d9-rzlgz 1/1 Running 0 75m ostoy-microservice-6666dcf455-2lcv4 1/1 Running 0 50m ostoy-microservice-6666dcf455-tqzmn 1/1 Running 0 75m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 웹 UI에서 워크로드 > 배포 > ostoy-microservice 를 선택합니다.
OSToy 앱의 탐색 메뉴에서 네트워킹 을 선택하여 사용 중인 두 개의 포드가 있는지 확인할 수도 있습니다. 두 Pod에는 두 개의 색상이 지정된 박스가 있어야 합니다.
18.9.1.2. Pod 자동 확장 링크 복사링크가 클립보드에 복사되었습니다!
AWS의 Red Hat OpenShift Service는 Horizontal Pod Autoscaler (HPA)를 제공합니다. HPA는 필요한 경우 메트릭을 사용하여 Pod 수를 늘리거나 줄입니다.
프로세스
웹 UI의 탐색 메뉴에서 Pod 자동 스케일링을 선택합니다.
다음 명령을 실행하여 HPA를 생성합니다.
oc autoscale deployment/ostoy-microservice --cpu-percent=80 --min=1 --max=10
$ oc autoscale deployment/ostoy-microservice --cpu-percent=80 --min=1 --max=10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령은 ostoy-microservice 배포에서 제어하는 Pod의 복제본 1~10개 사이를 유지 관리하는 HPA를 생성합니다. 배포가 충분하지만 HPA는 모든 Pod의 평균 CPU 사용을 80% 및 40밀리코어로 유지하기 위해 복제본 수를 늘리고 줄입니다.
Pod 자동 확장 > Horizontal Pod 자동 확장 페이지에서 로드 증가를 선택합니다.
중요부하를 늘리면 CPU 집약적 계산이 생성되므로 페이지가 응답하지 않을 수 있습니다. 이는 예상된 응답입니다. Increase the Load only once을 클릭합니다. 프로세스에 대한 자세한 내용은 마이크로 서비스의 GitHub 리포지토리 를 참조하십시오.
몇 분 후에 새 Pod가 색상이 지정된 박스로 표시되는 페이지에 표시됩니다.
참고이 페이지는 지연이 발생할 수 있습니다.
검증
다음 방법 중 하나를 사용하여 Pod 수를 확인합니다.
OSToy 애플리케이션의 웹 UI에서 원격 pod 상자를 참조하십시오.
Pod가 하나뿐이므로 워크로드를 늘리면 Pod 증가가 트리거됩니다.
CLI에서 다음 명령을 실행합니다.
oc get pods --field-selector=status.phase=Running | grep microservice
oc get pods --field-selector=status.phase=Running | grep microservice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
ostoy-microservice-79894f6945-cdmbd 1/1 Running 0 3m14s ostoy-microservice-79894f6945-mgwk7 1/1 Running 0 4h24m ostoy-microservice-79894f6945-q925d 1/1 Running 0 3m14s
ostoy-microservice-79894f6945-cdmbd 1/1 Running 0 3m14s ostoy-microservice-79894f6945-mgwk7 1/1 Running 0 4h24m ostoy-microservice-79894f6945-q925d 1/1 Running 0 3m14s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift Cluster Manager에서 자동 스케일링을 확인할 수도 있습니다.
- OpenShift 웹 콘솔 탐색 메뉴에서 모니터링 > 대시보드를 클릭합니다.
대시보드에서 Kubernetes / Compute Resources / Namespace (Pods) 및 네임스페이스 ostoy 를 선택합니다.
CPU 및 메모리 전반에 걸쳐 리소스 사용량이 표시되는 그래프가 표시됩니다. 상단 그래프는 Pod당 최근 CPU 사용량이 표시되고 더 낮은 그래프는 메모리 사용량을 나타냅니다. 다음은 그래프의 호출을 나열합니다.
- 부하 증가(A).
- 두 개의 새 Pod(B 및 C)가 생성되었습니다.
- 각 그래프의 간격은 CPU 소비를 나타내며 더 많은 로드를 처리하는 Pod를 나타냅니다.
로드가 감소하고 Pod가 삭제되었습니다.
18.9.1.3. 노드 자동 확장 링크 복사링크가 클립보드에 복사되었습니다!
AWS의 Red Hat OpenShift Service를 사용하면 노드 자동 스케일링을 사용할 수 있습니다. 이 시나리오에서는 클러스터가 처리할 수 없는 대규모 워크로드가 있는 작업으로 새 프로젝트를 생성합니다. 자동 스케일링이 활성화되면 로드가 현재 용량보다 크면 클러스터에서 자동으로 로드를 처리할 새 노드를 생성합니다.
사전 요구 사항
- 머신 풀에서 자동 스케일링이 활성화됩니다.
프로세스
다음 명령을 실행하여
autoscale-ex
라는 새 프로젝트를 생성합니다.oc new-project autoscale-ex
$ oc new-project autoscale-ex
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 작업을 생성합니다.
oc create -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/job-work-queue.yaml
$ oc create -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/job-work-queue.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 몇 가지 minuts 후 다음 명령을 실행하여 Pod를 확인합니다.
oc get pods
$ oc get pods
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
Pending
상태에 Pod가 많이 있으므로 이 상태는 자동 스케일러를 트리거하여 머신 풀에 더 많은 노드를 생성해야 합니다. 이러한 작업자 노드를 생성하는 시간을 허용합니다. 몇 분 후에 다음 명령을 사용하여 현재 보유하고 있는 작업자 노드 수를 확인합니다.
oc get nodes
$ oc get nodes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 워크로드를 처리하기 위해 작업자 노드가 자동으로 생성되었는지 확인할 수 있습니다.
다음 명령을 입력하여 OSToy 앱으로 돌아갑니다.
oc project ostoy
$ oc project ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.10. 튜토리얼: 로깅 링크 복사링크가 클립보드에 복사되었습니다!
AWS(ROSA)의 Red Hat OpenShift Service에서 로그를 확인하는 방법은 여러 가지가 있습니다. 다음 절차에 따라 로그를 AWS CloudMonitor로 전달하고 oc logs
를 사용하여 Pod를 통해 로그를 직접 확인합니다.
ROSA는 로깅 솔루션으로 사전 구성되지 않았습니다.
18.10.1. CloudMonitor로 로그 전달 링크 복사링크가 클립보드에 복사되었습니다!
로깅 애드온 서비스를 설치하여 로그를 AWS CloudMonitor로 전달합니다.
다음 스크립트를 실행하여 로그를 CloudMonitor로 전달하도록 ROSA 클러스터를 구성합니다.
curl https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/resources/configure-cloudwatch.sh | bash
$ curl https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/resources/configure-cloudwatch.sh | bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고CloudMonitor에 로그를 보내도록 ROSA를 구성하는 것은 이 튜토리얼의 범위를 벗어납니다. AWS와 통합 및 CloudWatch 로깅 활성화는 ROSA의 중요한 측면이므로 구성 프로세스를 단순화하기 위해 스크립트가 포함됩니다. 이 스크립트는 AWS CloudMonitor를 자동으로 설정합니다. 스크립트를 검사하여 관련 단계를 이해할 수 있습니다.
출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 몇 분 후에 AWS CloudMonitor 내부에 로그 그룹을 볼 수 있습니다. 다음 명령을 실행하여 로그 그룹을 확인합니다.
aws logs describe-log-groups --log-group-name-prefix rosa-mycluster
$ aws logs describe-log-groups --log-group-name-prefix rosa-mycluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.10.2. 스트림 및 로그에 데이터 출력 링크 복사링크가 클립보드에 복사되었습니다!
메시지를
stdout
에 출력합니다.- OSToy 애플리케이션에서 홈을 클릭한 다음 로그 메시지(stdout)에 대한 메시지 상자를 클릭합니다.
-
stdout
스트림에 출력할 메시지를 작성합니다(예: "All is well!"). 메시지 전송을 클릭합니다.
stderr
에 메시지를 출력합니다.- 로그 메시지(stderr)의 메시지 상자를 클릭합니다.
-
stderr
스트림(예: "Oh no!)으로 출력할 메시지를 작성합니다. 오류!". 메시지 전송을 클릭합니다.
18.10.3. oc 명령을 사용하여 애플리케이션 로그 보기 링크 복사링크가 클립보드에 복사되었습니다!
CLI(명령줄 인터페이스)에 다음 명령을 입력하여 프런트 엔드 Pod의 이름을 검색합니다.
oc get pods -o name
$ oc get pods -o name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
pod/ostoy-frontend-679cb85695-5cn7x pod/ostoy-microservice-86b4c6f559-p594d
pod/ostoy-frontend-679cb85695-5cn7x
1 pod/ostoy-microservice-86b4c6f559-p594d
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 포드 이름은
ostoy-frontend-679cb85695-5cn7x
입니다.
다음 명령을 실행하여
stdout
및stderr
메시지를 모두 확인합니다.oc logs <pod-name>
$ oc logs <pod-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.10.4. CloudMonitor를 사용하여 로그 보기 링크 복사링크가 클립보드에 복사되었습니다!
- AWS 웹 콘솔에서 CloudWatch 로 이동합니다.
왼쪽 메뉴에서 로그 및 로그 를 클릭하여 다른 로그 그룹을 확인합니다. 세 개의 그룹이 표시됩니다.
-
rosa-<cluster-name>.application
-
rosa-<cluster-name>.audit
rosa-<cluster-name>.infrastructure
-
-
rosa-<cluster-name>.application
을 클릭합니다. 프런트 엔드 포드의 로그 스트림을 클릭합니다.
-
stdout
및stderr
에 대해 필터링합니다. 행을 확장하여 이전에 입력한 메시지 및 기타 관련 정보를 표시합니다.
- 로그 스트림으로 돌아가서 마이크로 서비스를 선택합니다.
- 검색 창에 "microservice"를 입력하여 로그에 다른 메시지를 확인합니다.
항목 중 하나를 확장하여 마이크로 서비스에서 수신한 프런트 엔드 포드의 색상과 해당 색상을 frontend 포드에 보낸 포드를 확인합니다.
18.11. 튜토리얼: S2I 배포 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift에 애플리케이션을 배포하는 방법은 여러 가지가 있습니다. 이 튜토리얼에서는 통합된 S2I(Source-to-Image) 빌더를 사용하는 방법을 설명합니다. OpenShift 개념 섹션에서 언급했듯이 S2I는 재현 가능한 Docker 형식의 컨테이너 이미지를 빌드하는 툴입니다.
18.11.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼을 사용하려면 먼저 다음 요구 사항을 완료해야 합니다.
- ROSA 클러스터를 생성했습니다.
로그인 명령 검색
CLI를 통해 로그인하지 않은 경우 OpenShift Cluster Manager 에서 오른쪽 상단에 있는 이름 옆에 있는 드롭다운 화살표를 클릭하고 로그인 명령 복사를 선택합니다.
- 새 탭이 열립니다. 사용자 이름과 암호를 입력하고 인증 방법을 선택합니다.
- 토큰 표시를클릭합니다.
- "이 토큰을 사용하여 로그인"에서 명령을 복사합니다.
터미널에서 복사한 명령을 실행하여 CLI(명령줄 인터페이스)에 로그인합니다. 다음과 유사한 내용이 표시되어야 합니다.
oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
$ oc login --token=RYhFlXXXXXXXXXXXX --server=https://api.osd4-demo.abc1.p1.openshiftapps.com:6443
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Logged into "https://api.myrosacluster.abcd.p1.openshiftapps.com:6443" as "rosa-user" using the token provided. You don't have any projects. You can try to create a new project, by running oc new-project <project name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음 명령을 실행하여 CLI에서 새 프로젝트를 생성합니다.
oc new-project ostoy-s2i
$ oc new-project ostoy-s2i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.11.2. OSToy 리포지토리 분기 링크 복사링크가 클립보드에 복사되었습니다!
다음 섹션에서는 소스 코드 변경 사항을 기반으로 자동화된 빌드를 트리거하는 데 중점을 둡니다. GitHub 리포지터리로 코드를 내보낼 때 S2I 빌드를 트리거하려면 GitHub Webhook를 설정해야 합니다. Webhook를 설정하려면 먼저 리포지터리를 분기 해야 합니다.
이 가이드에서 < UserName
>을 다음 URL의 고유한 GitHub 사용자 이름으로 바꿉니다.
18.11.3. S2i를 사용하여 클러스터에 OSToy 배포 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift에 시크릿 추가
이 예제에서는
.env
파일을 에뮬레이션하고 이를 OpenShift 환경으로 직접 이동하는 것이 얼마나 쉬운지 보여줍니다. 시크릿에서 파일의 이름을 변경할 수도 있습니다. CLI에서 다음 명령을 입력하고 <UserName>을
GitHub 사용자 이름으로 바꿉니다.oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/secret.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenShift에 ConfigMap 추가
이 예제에서는 HAProxy 구성 파일을 에뮬레이션하며 일반적으로 OpenShift 애플리케이션의 기본 구성을 재정의하는 데 사용됩니다. ConfigMap에서 파일의 이름을 변경할 수도 있습니다.
CLI에서 다음 명령을 입력하고 <
UserName>을
GitHub 사용자 이름으로 바꿉니다.oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
$ oc create -f https://raw.githubusercontent.com/<UserName>/ostoy/master/deployment/yaml/configmap.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마이크로 서비스 배포
UI 애플리케이션에서 SERVICE 환경 변수를 사용할 수 있도록 먼저 마이크로 서비스를 배포해야 합니다.
--context-dir
은 git 리포지토리의마이크로 서비스
디렉터리에 정의된 애플리케이션만 빌드하는 데 사용됩니다.app
레이블을 사용하면 UI 애플리케이션과 마이크로 서비스가 모두 OpenShift UI로 그룹화되었는지 확인할 수 있습니다. CLI에서 다음 명령을 실행하여 마이크로 서비스를 생성하고 <UserName
>을 GitHub 사용자 이름으로 교체합니다.oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
$ oc new-app https://github.com/<UserName>/ostoy \ --context-dir=microservice \ --name=ostoy-microservice \ --labels=app=ostoy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 마이크로 서비스의 상태 확인
다음 단계로 이동하기 전에 다음 명령을 실행하여 마이크로 서비스가 생성되었고 올바르게 실행되고 있는지 확인해야 합니다.
oc status
$ oc status
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 성공적으로 배포될 때까지 기다립니다. 웹 UI를 통해 이를 확인할 수도 있습니다.
프런트 엔드 UI 배포
애플리케이션은 여러 환경 변수를 사용하여 외부 설정을 정의하도록 설계되었습니다. 이전에 생성된 Secret 및 ConfigMap을 나중에 PersistentVolume 생성과 함께 연결합니다. CLI에 다음을 입력합니다.
oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
$ oc new-app https://github.com/<UserName>/ostoy \ --env=MICROSERVICE_NAME=OSTOY_MICROSERVICE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 배포 업데이트
영구 볼륨과의 일관된 배포를 위해 "Recreate" 배포 전략(기본값
RollingUpdate
)을 사용하도록 배포를 업데이트합니다. 여기에서 추론하는 것은 PV가 EBS에 의해 지원되기 때문에RWO
방법만 지원되기 때문입니다. 기존 Pod가 모두 종료되지 않고 배포를 업데이트하는 경우 기존 Pod에 바인딩되어도 PV에 대한 PVC를 생성하고 새 Pod를 예약할 수 없을 수 있습니다. EFS를 사용하는 경우 이를 변경할 필요가 없습니다.oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
$ oc patch deployment ostoy --type=json -p \ '[{"op": "replace", "path": "/spec/strategy/type", "value": "Recreate"}, {"op": "remove", "path": "/spec/strategy/rollingUpdate"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 활성 상태 프로브 설정
배포 시 활성 상태 프로브를 생성하여 애플리케이션 내에서 정상이 아닌 경우 Pod가 다시 시작되었는지 확인합니다. CLI에 다음을 입력합니다.
oc set probe deployment ostoy --liveness --get-url=http://:8080/health
$ oc set probe deployment ostoy --liveness --get-url=http://:8080/health
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 배포에 Secret, ConfigMap, PersistentVolume 연결
다음 명령을 실행하여 보안, ConfigMap 및 PersistentVolume을 연결합니다.
시크릿 연결
oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
$ oc set volume deployment ostoy --add \ --secret-name=ostoy-secret \ --mount-path=/var/secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 연결 ConfigMap
oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
$ oc set volume deployment ostoy --add \ --configmap-name=ostoy-config \ -m /var/config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PersistentVolume 생성 및 연결
oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
$ oc set volume deployment ostoy --add \ --type=pvc \ --claim-size=1G \ -m /var/demo_files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
UI 애플리케이션을 OpenShift 경로로 노출
다음 명령을 실행하여 포함된 TLS 와일드카드 인증서를 사용하는 HTTPS 애플리케이션으로 배포합니다.
oc create route edge --service=ostoy --insecure-policy=Redirect
$ oc create route edge --service=ostoy --insecure-policy=Redirect
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 방법을 사용하여 애플리케이션을 찾습니다.
다음 명령을 실행하면 OSToy 애플리케이션이 있는 웹 브라우저가 열립니다.
python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
$ python -m webbrowser "$(oc get route ostoy -o template --template='https://{{.spec.host}}')"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 애플리케이션의 경로를 가져오고 브라우저에 경로를 복사하여 붙여넣을 수 있습니다.
oc get route
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.12. 튜토리얼: 자동화된 배포를 위해 S2I(Source-to-Image) Webhook 사용 링크 복사링크가 클립보드에 복사되었습니다!
Webhook를 사용하여 소스 코드를 변경할 때마다 빌드를 자동으로 트리거하고 배포합니다. 이 프로세스에 대한 자세한 내용은 빌드 트리거를 참조하십시오.
프로세스
터미널에서 GitHub Webhook 트리거 보안을 가져오려면 다음 명령을 실행합니다.
oc get bc/ostoy-microservice -o=jsonpath='{.spec.triggers..github.secret}'
$ oc get bc/ostoy-microservice -o=jsonpath='{.spec.triggers..github.secret}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
`o_3x9M1qoI2Wj_cz1WiK`
`o_3x9M1qoI2Wj_cz1WiK`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요이 프로세스의 이후 단계에서 이 시크릿을 사용해야 합니다.
OSToy의 buildconfig에서 GitHub Webhook 트리거 URL을 가져오려면 다음 명령을 실행합니다.
oc describe bc/ostoy-microservice
$ oc describe bc/ostoy-microservice
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
[...] Webhook GitHub: URL: https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy/webhooks/<secret>/github [...]
[...] Webhook GitHub: URL: https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy/webhooks/<secret>/github [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitHub Webhook URL에서 <
secret>
텍스트를 검색한 시크릿으로 바꿉니다. URL은 다음 예제 출력과 유사합니다.출력 예
https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy-microservice/webhooks/o_3x9M1qoI2Wj_czR1WiK/github
https://api.demo1234.openshift.com:443/apis/build.openshift.io/v1/namespaces/ostoy-s2i/buildconfigs/ostoy-microservice/webhooks/o_3x9M1qoI2Wj_czR1WiK/github
Copy to Clipboard Copied! Toggle word wrap Toggle overflow GitHub 리포지토리에 Webhook URL을 설정합니다.
리포지토리에서 설정 > Webhook > Webhook 추가 를 클릭합니다.
-
"Payload URL" 필드에 포함된
Secret
을 사용하여 GitHub Webhook URL을 붙여넣습니다. -
"Content type"을
application/json
으로 변경합니다. Webhook 추가 버튼을 클릭합니다.
GitHub에서 Webhook가 성공적으로 구성되었음을 알리는 메시지가 표시됩니다. 이제 GitHub 리포지토리에 변경 사항을 푸시할 때마다 새 빌드가 자동으로 시작되고 빌드가 성공하면 새 배포가 시작됩니다.
이제 소스 코드를 변경합니다. 모든 변경 사항은 빌드 및 배포를 자동으로 트리거합니다. 이 예에서는 OSToy 앱의 상태를 나타내는 색상이 임의로 선택됩니다. 구성을 테스트하려면 상자를 회색 스케일링만 표시하도록 변경합니다.
- 리포지토리의 소스 코드로 이동합니다 https://github.com/<username>/ostoy/blob/master/microservice/app.js.
- 파일을 편집합니다.
-
8행을 주석으로 주석 처리(로우를
허용하면 random color = getRandom Cryostat();
). Uncomment line 9 (containing
let randomColor = getRandomGrayScaleColor();
).7 app.get('/', function(request, response) { 8 //let randomColor = getRandomColor(); // <-- comment this 9 let randomColor = getRandomGrayScaleColor(); // <-- uncomment this 10 11 response.writeHead(200, {'Content-Type': 'application/json'});
7 app.get('/', function(request, response) { 8 //let randomColor = getRandomColor(); // <-- comment this 9 let randomColor = getRandomGrayScaleColor(); // <-- uncomment this 10 11 response.writeHead(200, {'Content-Type': 'application/json'});
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - "Graphscale 색상으로 변경됨"과 같은 업데이트 메시지를 입력합니다.
- 하단에서 커밋 을 클릭하여 기본 분기에 대한 변경 사항을 커밋합니다.
클러스터의 웹 UI에서 빌드 > 빌드 를 클릭하여 빌드 상태를 확인합니다. 이 빌드가 완료되면 배포가 시작됩니다. 터미널에서
oc 상태를 실행하여 상태를
확인할 수도 있습니다.배포가 완료되면 브라우저의 OSToy 애플리케이션으로 돌아갑니다. 왼쪽의 Networking 메뉴 항목에 액세스합니다. 이제 상자 색상은 회색 영역 색상으로만 제한됩니다.
18.13. 튜토리얼: AWS 서비스와 통합 링크 복사링크가 클립보드에 복사되었습니다!
OSToy 애플리케이션이 독립적으로 작동하지만 많은 실제 애플리케이션에는 데이터베이스, 개체 저장소 또는 메시징 서비스와 같은 외부 서비스가 필요합니다.
목표
- OSToy 애플리케이션을 다른 AWS(Amazon Web Services) 서비스, 특히 AWS S3 Storage와 통합하는 방법을 알아보십시오. 이 섹션이 끝나면 애플리케이션은 AWS S3 Storage에서 오브젝트를 안전하게 생성하고 읽습니다.
- Kubernetes(ACK)용 Amazon Controller를 사용하여 Kubernetes에서 직접 애플리케이션에 필요한 서비스를 생성합니다.
- 서비스 계정에서 액세스 및 인증을 관리하려면 IAM(Identity and Access Management) 역할을 사용합니다.
- OSToy를 사용하여 기본 텍스트 파일을 생성하여 S3 버킷에 저장합니다.
- 파일이 성공적으로 추가되었으며 버킷에서 읽을 수 있는지 확인합니다.
18.13.1. Amazon Controller for Kubernetes (ACK) 링크 복사링크가 클립보드에 복사되었습니다!
ACK 를 사용하여 Kubernetes에서 직접 AWS 서비스를 생성하고 사용합니다. 친숙한 구조를 사용하여 S3 버킷 또는 RDS(Database Service) 데이터베이스와 같은 AWS 서비스를 선언적으로 정의하고 생성하는 방식으로 Kubernetes 프레임워크에 애플리케이션을 직접 배포할 수 있습니다.
ACK를 사용하면 S3 버킷을 만들고 OSToy 애플리케이션과 통합하고 파일을 업로드한 후 애플리케이션에서 파일을 볼 수 있습니다.
18.13.2. 서비스 계정의 IAM 역할 링크 복사링크가 클립보드에 복사되었습니다!
서비스 계정에 IAM 역할을 사용하여 Kubernetes 서비스 계정에 직접 IAM 역할을 할당할 수 있습니다. 이를 사용하여 AWS 계정에 서비스를 배포하기 위해 ACK 컨트롤러 자격 증명을 부여할 수 있습니다. 서비스 계정에 IAM 역할을 사용하여 임시 인증 정보의 관리 및 순환을 자동화합니다.
Pod는 유효한 OpenID Connect(OIDC) JSON 웹 토큰(JWT)을 수신하고 이를 AWS STS AssumeRoleWithWebIdentity
API 작업에 전달하여 IAM 임시 역할 인증 정보를 수신합니다. 이 프로세스는 AWS IAM 액세스가 필요한 Pod를 수정하는 EKS Pod ID 변경 Webhook를 사용합니다.
서비스 계정의 IAM 역할은 다음과 같은 모범 사례를 따릅니다.
- 최소 권한 원칙: 제한된 액세스만 허용하는 AWS 역할에 대한 IAM 권한을 생성할 수 있습니다. 이러한 권한은 역할과 연결된 서비스 계정으로 제한되며 해당 서비스 계정을 사용하는 Pod만 액세스할 수 있습니다.
- 인증 정보 격리: Pod는 Pod가 사용 중인 서비스 계정과 연결된 IAM 역할에 대한 인증 정보만 검색할 수 있습니다.
- 감사: 모든 AWS 리소스 액세스는 CloudTrail에서 볼 수 있습니다.
18.13.3. ACK 컨트롤러 설치 링크 복사링크가 클립보드에 복사되었습니다!
버킷에 Kubernetes 사용자 지정 리소스를 사용하여 S3 서비스에서 버킷을 생성하고 삭제하려면 ACK 컨트롤러를 설치합니다. 컨트롤러를 설치하면 필요한 네임스페이스 및 서비스 계정도 생성됩니다.
Operator를 사용하여 쉽게 수행할 수 있습니다. Operator 설치에서는 ack-system
네임스페이스와 서비스 계정 ack-s3-controller
도 생성합니다.
- 클러스터 콘솔에 로그인합니다.
- 왼쪽 메뉴에서 Operator를 클릭한 다음 OperatorHub 를 클릭합니다.
필터 상자에 "S3"를 입력하고 AWS Controller for Kubernetes - Amazon S3 를 선택합니다.
- 커뮤니티 운영자에 대한 팝업이 표시되면 Continue 를 클릭합니다.
- 설치를 클릭합니다.
- "설치 모드" 에서 클러스터의 모든 네임스페이스를 선택합니다.
- "설치된 네임스페이스"에서 ack-system 을 선택합니다.
"업데이트 승인"에서 수동 을 선택합니다.
중요수동 모드가 선택되어 있는지 확인하므로 서비스 계정에 대한 변경 사항이 자동 운영자 업데이트로 덮어쓰지 않습니다.
설치를 클릭합니다.
설정은 아래 이미지와 같아야 합니다.
- 승인 을 클릭합니다.
- ACK 컨트롤러에 대한 IAM 역할 및 정책을 생성할 때까지 설치가 시작되지만 완료되지 않습니다.
18.13.4. ACK 컨트롤러에 대한 IAM 역할 및 정책 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 스크립트 중 하나를 실행하여 ACK 컨트롤러에 대한 AWS IAM 역할을 생성하고 S3 정책을 할당합니다.
- 자동으로 setup-s3-ack-controller.sh 스크립트를 다운로드하여 사용자를 위한 프로세스를 자동화합니다.
CLI(명령줄 인터페이스)에서 다음 스크립트를 실행합니다.
curl https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/resources/setup-s3-ack-controller.sh | bash
$ curl https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/resources/setup-s3-ack-controller.sh | bash
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
- 스크립트가 완료되면 서비스 계정 환경 변수에 대한 IAM 역할로 서비스 컨트롤러 Pod를 업데이트하는 배포를 재시작합니다.
다음 명령을 실행하여 환경 변수가 설정되었는지 확인합니다.
oc describe pod ack-s3-controller -n ack-system | grep "^\s*AWS_"
$ oc describe pod ack-s3-controller -n ack-system | grep "^\s*AWS_"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
AWS_ROLE_ARN: arn:aws:iam::000000000000:role/ack-s3-controller AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
AWS_ROLE_ARN: arn:aws:iam::000000000000:role/ack-s3-controller AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Operator 및 설치된 Operator를 클릭하여 웹 콘솔에서 ACK 컨트롤러의 설치를 성공적으로 확인합니다.
Operator 설치 및 환경 변수가 표시되지 않는 경우 다음 명령을 실행하여 배포를 수동으로 다시 시작합니다.
oc rollout restart deployment ack-s3-controller -n ack-system
$ oc rollout restart deployment ack-s3-controller -n ack-system
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13.5. 애플리케이션에 대한 액세스 설정 링크 복사링크가 클립보드에 복사되었습니다!
OSToy가 S3 버킷에 오브젝트를 읽고 쓸 수 있도록 AWS IAM 역할 및 서비스 계정을 생성할 수 있습니다.
다음 명령을 실행하여 OSToy에 대한 새 고유 프로젝트를 생성합니다.
oc new-project ostoy-$(uuidgen | cut -d - -f 2 | tr '[:upper:]' '[:lower:]')
$ oc new-project ostoy-$(uuidgen | cut -d - -f 2 | tr '[:upper:]' '[:lower:]')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 네임스페이스 및 프로젝트의 이름을 환경 변수에 저장합니다.
export OSTOY_NAMESPACE=$(oc config view --minify -o 'jsonpath={..namespace}')
$ export OSTOY_NAMESPACE=$(oc config view --minify -o 'jsonpath={..namespace}')
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13.6. AWS IAM 역할 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 AWS 계정 ID를 가져옵니다.
export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
$ export AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 OIDC 공급자를 가져와서 <
cluster-name
>을 클러스터 이름으로 교체합니다.export OIDC_PROVIDER=$(rosa describe cluster -c <cluster-name> -o yaml | awk '/oidc_endpoint_url/ {print $2}' | cut -d '/' -f 3,4)
$ export OIDC_PROVIDER=$(rosa describe cluster -c <cluster-name> -o yaml | awk '/oidc_endpoint_url/ {print $2}' | cut -d '/' -f 3,4)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 신뢰 정책 파일을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 서비스 계정과 함께 사용할 AWS IAM 역할을 생성합니다.
aws iam create-role --role-name "ostoy-sa-role" --assume-role-policy-document file://ostoy-sa-trust.json
$ aws iam create-role --role-name "ostoy-sa-role" --assume-role-policy-document file://ostoy-sa-trust.json
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13.7. IAM 역할에 S3 정책 연결 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 S3 전체 액세스 정책 ARN을 가져옵니다.
export POLICY_ARN=$(aws iam list-policies --query 'Policies[?PolicyName==`AmazonS3FullAccess`].Arn' --output text)
$ export POLICY_ARN=$(aws iam list-policies --query 'Policies[?PolicyName==`AmazonS3FullAccess`].Arn' --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 AWS IAM 역할에 정책을 연결합니다.
aws iam attach-role-policy --role-name "ostoy-sa-role" --policy-arn "${POLICY_ARN}"
$ aws iam attach-role-policy --role-name "ostoy-sa-role" --policy-arn "${POLICY_ARN}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13.8. Pod의 서비스 계정 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 서비스 계정을 생성할 때 주석으로 포함되도록 생성한 AWS IAM 역할에 대한 ARN을 가져옵니다.
export APP_IAM_ROLE_ARN=$(aws iam get-role --role-name=ostoy-sa-role --query Role.Arn --output text)
$ export APP_IAM_ROLE_ARN=$(aws iam get-role --role-name=ostoy-sa-role --query Role.Arn --output text)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 서비스 계정을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요서비스 계정의 이름을 "ostoy-sa"에서 변경하지 마십시오. 그렇지 않으면 AWS IAM 역할에 대한 신뢰 관계를 변경해야 합니다.
다음 명령을 실행하여 서비스 계정에
restricted
역할을 부여합니다.oc adm policy add-scc-to-user restricted system:serviceaccount:${OSTOY_NAMESPACE}:ostoy-sa
$ oc adm policy add-scc-to-user restricted system:serviceaccount:${OSTOY_NAMESPACE}:ostoy-sa
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 주석이 성공했는지 확인합니다.
oc describe serviceaccount ostoy-sa -n ${OSTOY_NAMESPACE}
$ oc describe serviceaccount ostoy-sa -n ${OSTOY_NAMESPACE}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13.9. S3 버킷 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 매니페스트 파일을 사용하여 S3 버킷을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 중요OSToy 애플리케이션은 <
namespace>-bucket이라는 버킷을
찾을 것으로 예상합니다. OSToy 프로젝트의 네임스페이스 이외의 항목을 사용하는 경우 이 기능이 작동하지 않습니다. 예를 들어, 프로젝트가 "ostoy"인 경우name
값은ostoy-bucket
이어야 합니다.다음 명령을 실행하여 버킷이 생성되었는지 확인합니다.
aws s3 ls | grep ${OSTOY_NAMESPACE}-bucket
$ aws s3 ls | grep ${OSTOY_NAMESPACE}-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13.10. 새 서비스 계정으로 OSToy 앱 재배포 링크 복사링크가 클립보드에 복사되었습니다!
- 생성한 서비스 계정으로 Pod를 실행합니다.
다음 명령을 실행하여 마이크로 서비스를 배포합니다.
- oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
$ - oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-microservice-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ostoy-frontend
를 배포합니다.- oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-frontend-deployment.yaml
$ - oc apply -f https://raw.githubusercontent.com/openshift-cs/rosaworkshop/master/rosa-workshop/ostoy/yaml/ostoy-frontend-deployment.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여
ostoy-frontend
배포를 패치합니다.oc patch deploy ostoy-frontend -n ${OSTOY_NAMESPACE} --type=merge --patch '{"spec": {"template": {"spec":{"serviceAccount":"ostoy-sa"}}}}'
$ oc patch deploy ostoy-frontend -n ${OSTOY_NAMESPACE} --type=merge --patch '{"spec": {"template": {"spec":{"serviceAccount":"ostoy-sa"}}}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - Pod가 업데이트될 때까지 기다립니다.
18.13.11. 환경 변수 확인 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 사용하여 Pod를 설명하고 애플리케이션에 대한
AWS_LOAD_IDENTITY_TOKEN_FILE
및AWS_ROLE_ARN
환경 변수가 있는지 확인합니다.oc describe pod ostoy-frontend -n ${OSTOY_NAMESPACE} | grep "^\s*AWS_"
$ oc describe pod ostoy-frontend -n ${OSTOY_NAMESPACE} | grep "^\s*AWS_"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
AWS_ROLE_ARN: arn:aws:iam::000000000000:role/ostoy-sa AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
AWS_ROLE_ARN: arn:aws:iam::000000000000:role/ostoy-sa AWS_WEB_IDENTITY_TOKEN_FILE: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13.12. OSToy를 통해 버킷 콘텐츠 보기 링크 복사링크가 클립보드에 복사되었습니다!
앱을 사용하여 S3 버킷의 콘텐츠를 봅니다.
다음 명령을 실행하여 새로 배포된 애플리케이션의 경로를 가져옵니다.
oc get route ostoy-route -n ${OSTOY_NAMESPACE} -o jsonpath='{.spec.host}{"\n"}'
$ oc get route ostoy-route -n ${OSTOY_NAMESPACE} -o jsonpath='{.spec.host}{"\n"}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 새 브라우저 탭을 열고 이전 단계에서 가져온 경로를 입력합니다.
중요https://
가 아닌http://
를 사용해야 합니다.- OSToy의 왼쪽 메뉴에서 ACK S3 을 클릭합니다.
새 버킷이므로 버킷이 비어 있어야 합니다.
18.13.13. S3 버킷에 파일 생성 링크 복사링크가 클립보드에 복사되었습니다!
OStoy를 사용하여 파일을 생성하고 S3 버킷에 업로드합니다. S3는 모든 종류의 파일을 허용할 수 있지만 이 튜토리얼에서는 브라우저에서 내용을 쉽게 렌더링할 수 있도록 텍스트 파일을 사용합니다.
- OSToy의 왼쪽 메뉴에서 ACK S3 을 클릭합니다.
- 아래로 스크롤하여 텍스트 파일을 S3에 업로드 합니다.
- 파일의 파일 이름을 입력합니다.
- 파일에 대한 콘텐츠를 입력합니다.
파일 생성을 클릭합니다.
- 기존 파일의 맨 위 섹션으로 스크롤하여 방금 만든 파일이 있는지 확인합니다.
파일 이름을 클릭하여 파일을 확인합니다.
다음 명령을 실행하여 버킷의 콘텐츠를 나열하여 AWS CLI로 확인합니다.
aws s3 ls s3://${OSTOY_NAMESPACE}-bucket
$ aws s3 ls s3://${OSTOY_NAMESPACE}-bucket
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
aws s3 ls s3://ostoy-bucket
$ aws s3 ls s3://ostoy-bucket 2023-05-04 22:20:51 51 OSToy.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Legal Notice
링크 복사링크가 클립보드에 복사되었습니다!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.