튜토리얼
Red Hat OpenShift Service on AWS 튜토리얼
초록
1장. 튜토리얼 개요 링크 복사링크가 클립보드에 복사되었습니다!
Red Hat 전문가의 단계별 튜토리얼을 사용하여 관리형 OpenShift 클러스터를 최대한 활용할 수 있습니다.
이 콘텐츠는 Red Hat 전문가가 작성했지만 지원되는 모든 구성에서 테스트되지 않았습니다.
2장. 튜토리얼: Red Hat OpenShift Service on AWS 활성화 및 계정 연결 링크 복사링크가 클립보드에 복사되었습니다!
이 튜토리얼에서는 첫 번째 클러스터를 배포하기 전에 AWS에서 Red Hat OpenShift Service를 활성화하고 AWS 계정에 연결하는 프로세스를 설명합니다.
제품에 대한 비공개 제안을 받은 경우 이 튜토리얼을 따르기 전에 개인 제안과 함께 제공된 지침에 따라 진행하십시오. 개인 오퍼링은 활성 서브스크립션을 대체하는 제품이 이미 활성화된 경우 또는 처음 활성화되는 경우를 위해 설계되었습니다.
2.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- AWS 제품 서브스크립션에서 Red Hat OpenShift Service를 활성화할 AWS 계정과 연결할 Red Hat 계정에 로그인합니다.
- 서비스 청구에 사용되는 AWS 계정은 단일 Red Hat 계정에만 연결할 수 있습니다. 일반적으로 AWS 유료 계정은 AWS의 Red Hat OpenShift Service에 가입하고 계정 연결 및 청구에 사용되는 계정입니다.
- 동일한 Red Hat 조직에 속한 모든 팀 구성원은 AWS 클러스터에서 Red Hat OpenShift Service를 생성하는 동안 연결된 AWS 계정을 서비스 청구에 사용할 수 있습니다.
2.2. 서브스크립션 사용 및 AWS 계정 설정 링크 복사링크가 클립보드에 복사되었습니다!
시작하기 버튼을 클릭하여 AWS 콘솔 페이지에서 Red Hat OpenShift Service on AWS 제품을 활성화합니다.
그림 2.1. 시작하기
AWS에서 Red Hat OpenShift Service를 이전에 활성화했지만 프로세스를 완료하지 않은 경우 버튼을 클릭하고 다음 단계에 설명된 대로 계정 연결을 완료할 수 있습니다.
연락처 정보를 Red Hat과 공유하도록 확인하고 서비스를 활성화합니다.
그림 2.2. AWS에서 Red Hat OpenShift Service 활성화
- 이 단계에서 서비스를 활성화하면 부과되지 않습니다. 첫 번째 클러스터를 배포한 후에만 발생하는 청구 및 미터링에 대한 연결이 수행됩니다. 이 작업은 몇 분 정도 걸릴 수 있습니다.
프로세스가 완료되면 확인이 표시됩니다.
그림 2.3. Red Hat OpenShift Service on AWS 지원 확인
이 확인 페이지의 다른 섹션에는 추가 사전 요구 사항의 상태가 표시됩니다. 이러한 사전 요구 사항 중 하나라도 충족되지 않으면 해당 메시지가 표시됩니다. 다음은 선택한 리전에서 할당량 부족의 예입니다.
그림 2.4. 서비스 할당량
- Increase 서비스 할당량 버튼을 클릭하거나 자세히 알아보기 링크를 사용하여 서비스 할당량 관리 방법에 대한 자세한 정보를 가져옵니다. 할당량이 충분하지 않은 경우 할당량은 지역에 따라 다릅니다. 웹 콘솔의 오른쪽 상단에 있는 지역 전환기를 사용하여 관심 있는 모든 지역에 대한 할당량 검사를 다시 실행한 다음 필요에 따라 서비스 할당량 증가 요청을 제출할 수 있습니다.
사전 요구 사항이 모두 충족되면 페이지가 다음과 같이 표시됩니다.
그림 2.5. AWS 사전 요구 사항에서 Red Hat OpenShift Service 확인
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 계정에 등록하거나 이 페이지에서 비밀번호를 재설정할 수도 있습니다.
- AWS 제품 서브스크립션에서 Red Hat OpenShift Service를 활성화한 AWS 계정과 연결할 Red Hat 계정에 로그인합니다.
- 서비스 청구에 사용되는 AWS 계정은 단일 Red Hat 계정에만 연결할 수 있습니다. 일반적으로 AWS 유료 계정은 AWS의 Red Hat OpenShift Service에 가입하고 계정 연결 및 청구에 사용되는 계정입니다.
- 동일한 Red Hat 조직에 속한 모든 팀 구성원은 AWS 클러스터에서 Red Hat OpenShift Service를 생성하는 동안 연결된 AWS 계정을 서비스 청구에 사용할 수 있습니다.
사용 약관을 검토한 후 Red Hat 계정 연결을 완료합니다.
참고이 단계는 AWS 계정이 이전에 Red Hat 계정에 연결되지 않은 경우에만 사용할 수 있습니다.
AWS 계정이 이미 사용자의 로그인된 Red Hat 계정에 연결되어 있는 경우 이 단계를 건너뜁니다.
AWS 계정이 다른 Red Hat 계정에 연결되어 있으면 오류가 표시됩니다. 문제 해결을 위해 HCP 클러스터의 고객 계정 수정 정보를 참조하십시오.
그림 2.8. 계정 연결 완료
이 화면에 Red Hat 및 AWS 계정 번호가 모두 표시됩니다.
서비스 약관에 동의한 경우 계정 연결 버튼을 클릭합니다.
Red Hat Hybrid Cloud Console을 처음 사용하는 경우 첫 번째 클러스터를 생성하기 전에 일반 관리 서비스 사용 약관에 동의해야 합니다.
그림 2.9. 이용 약관
약관 보기 버튼을 클릭하면 검토 및 수락이 필요한 추가 조건이 표시됩니다.
그림 2.10. Red Hat 이용 약관
현재 메시지가 표시되면 추가 약관을 검토한 후 계약을 제출하십시오.
Hybrid Cloud Console은 AWS 계정 설정이 완료되었음을 확인하고 클러스터 배포를 위한 사전 요구 사항을 나열합니다.
그림 2.11. AWS 사전 요구 사항에 대한 전체 Red Hat OpenShift Service
이 페이지의 마지막 섹션에는
rosaCLI를 사용하거나 웹 콘솔을 통해 클러스터 배포 옵션이 표시됩니다.그림 2.12. 클러스터 배포 및 액세스 설정
2.4. CLI를 사용하여 클러스터 배포 중에 AWS의 AWS 청구 계정 선택 링크 복사링크가 클립보드에 복사되었습니다!
최신 ROSA CLI(명령줄 인터페이스) 및 AWS CLI가 설치되어 있고 이전 섹션에서 설명하는 AWS 사전 요구 사항에서 Red Hat OpenShift Service를 완료했는지 확인합니다. 자세한 내용은 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 AWS 클러스터에 Red Hat OpenShift Service를 배포할 때 청구 AWS 계정을 지정해야 합니다.
그림 2.14. billing 계정을 지정합니다.
- Red Hat 계정에 로그인한 사용자 계정에 연결된 AWS 계정만 표시됩니다.
- 지정된 AWS 계정은 AWS 서비스에서 Red Hat OpenShift Service를 사용합니다.
표시된 지표는 지정된 AWS 청구 계정에 대해 AWS 계약의 Red Hat OpenShift Service가 활성화되었는지 또는 활성화되지 않는지를 나타냅니다.
- Contract가 활성화된 레이블을 표시하는 AWS 청구 계정을 선택하는 경우 사전 결제 계약 용량을 사용한 후에만 온디맨드 사용 요금이 부과됩니다.
- 계약 활성화 라벨이 없는 AWS 계정에는 해당 온디맨드 사용 요금이 부과됩니다.
추가 리소스
- 자세한 클러스터 배포 단계는 이 튜토리얼의 범위를 벗어납니다. CLI 를 사용하여 AWS 클러스터 배포에서 Red Hat OpenShift Service를 완료하는 방법에 대한 자세한 내용은 기본 옵션을 사용하여 AWS 클러스터에서 Red Hat OpenShift Service 생성 을 참조하십시오.
2.5. 웹 콘솔을 사용하여 클러스터 배포 중에 AWS의 AWS 청구 계정 선택 링크 복사링크가 클립보드에 복사되었습니다!
AWS에서 Red Hat OpenShift Service 시작 페이지의 하단 섹션에서 두 번째 옵션을 선택하여 웹 콘솔을 사용하여 클러스터를 생성할 수 있습니다.
그림 2.15. 웹 인터페이스로 배포
참고웹 콘솔 배포 프로세스를 시작하기 전에 사전 요구 사항을 완료합니다.
계정 역할 생성과 같은 특정 작업에는
rosaCLI가 필요합니다. AWS에 Red Hat OpenShift Service를 처음 배포하는 경우 웹 콘솔 배포 단계를 시작하기 전에rosa whoami명령을 실행할 때까지 CLI 단계를 따르십시오.웹 콘솔을 사용하여 AWS 클러스터에서 Red Hat OpenShift Service를 생성할 때의 첫 번째 단계는 컨트롤 플레인 선택입니다. Next 버튼을 클릭하기 전에 Hosted 옵션이 선택되어 있는지 확인합니다.
그림 2.16. 호스팅 옵션 선택
다음 단계 의 계정 및 역할을 사용하면 AWS 클러스터의 Red Hat OpenShift Service가 배포되고 리소스가 소비 및 관리되는 인프라 AWS 계정을 지정할 수 있습니다.
그림 2.17. AWS 인프라 계정
- 이 연결을 위해 계정 역할을 생성하거나 연결하는 방법에 대한 자세한 내용은 AWS 클러스터에 Red Hat OpenShift Service를 배포하려는 계정이 표시되지 않는 경우 새 AWS 계정을 연결하는 방법을 클릭합니다.
-
rosaCLI는 이를 위해 사용됩니다. -
여러 AWS 계정을 사용하고 AWS CLI에 대한 해당 프로필이 구성된 경우
--profile선택기를 사용하여rosaCLI 명령으로 작업할 때 AWS 프로필을 지정할 수 있습니다.
다음 섹션에서 청구 AWS 계정이 선택됩니다.
그림 2.18. AWS 청구 계정
- Red Hat 계정에 로그인한 사용자 계정에 연결된 AWS 계정만 표시됩니다.
- 지정된 AWS 계정은 AWS 서비스에서 Red Hat OpenShift Service를 사용합니다.
표시된 지표는 지정된 AWS 청구 계정에 대해 AWS 계약의 Red Hat OpenShift Service가 활성화되었는지 또는 활성화되지 않는지를 나타냅니다.
- Contract가 활성화된 레이블을 표시하는 AWS 청구 계정을 선택하는 경우 사전 결제 계약 용량을 사용한 후에만 온디맨드 사용 요금이 부과됩니다.
- 계약 활성화 라벨이 없는 AWS 계정에는 해당 온디맨드 사용 요금이 부과됩니다.
AWS 계정 선택 이후의 다음 단계는 이 튜토리얼의 범위를 벗어납니다.
추가 리소스
- CLI를 사용하여 클러스터를 생성하는 방법에 대한 자세한 내용은 CLI를 사용하여 AWS 클러스터에서 Red Hat OpenShift Service 생성을 참조하십시오.
- 웹 콘솔을 사용하여 클러스터 배포를 완료하는 방법에 대한 자세한 내용은 이 학습 경로를 참조하십시오.
3장. 튜토리얼: Red Hat OpenShift Service on AWS 비공개로 수락 및 공유 제공 링크 복사링크가 클립보드에 복사되었습니다!
이 가이드에서는 AWS에서 Red Hat OpenShift Service에 대한 비공개 제안을 수락하는 방법과 모든 팀 멤버가 프로비저닝하는 클러스터에 대해 비공개 제안을 사용할 수 있도록 하는 방법을 설명합니다.
AWS의 Red Hat OpenShift Service 비용은 AWS 인프라 비용과 AWS 서비스 비용으로 구성됩니다. 필요한 워크로드를 실행하는 EC2 인스턴스와 같은 AWS 인프라 비용은 인프라가 배포된 AWS 계정으로 청구됩니다. Red Hat OpenShift Service on AWS 서비스 비용은 클러스터를 배포할 때 "AWS 청구 계정"으로 지정된 AWS 계정에 부과됩니다.
비용 구성 요소는 다른 AWS 계정으로 청구할 수 있습니다. AWS 서비스 비용 및 AWS 인프라 비용을 계산하는 방법에 대한 자세한 설명은 AWS 가격 책정 페이지의 Red Hat OpenShift Service에서 확인할 수 있습니다.
3.1. 비공개 제안 수락 링크 복사링크가 클립보드에 복사되었습니다!
AWS에서 Red Hat OpenShift Service에 대한 비공개 제안을 받을 때 판매자가 지정한 특정 AWS 계정 ID에서만 액세스할 수 있는 고유한 URL이 제공됩니다.
참고구매자로 지정된 AWS 계정을 사용하여 로그인했는지 확인합니다. 다른 AWS 계정을 사용하여 제안에 액세스하려고 하면 아래의 문제 해결 섹션에서 "페이지를 찾을 수 없음" 오류 메시지가 표시됩니다.
그림 1에서 미리 선택된 일반 개인 오퍼링을 사용하여 제안 선택 드롭다운 메뉴를 볼 수 있습니다. 이러한 유형의 제공은 공개 제안 또는 다른 개인 제안을 사용하기 전에 AWS의 Red Hat OpenShift Service가 활성화되지 않은 경우에만 허용됩니다.
그림 3.1. 정기적인 개인 제공
그림 2의 AWS에서 현재 실행 중인 Red Hat OpenShift Service를 대체하는 제품 이름 및 "Upgrade"라는 이름의 제품 이름 및 선택된 개인 제안을 표시하는 AWS에서 이전에 활성화된 AWS 계정에 대해 생성된 비공개 제안을 확인할 수 있습니다.
그림 3.2. 개인 제안 선택 화면
드롭다운 메뉴에서는 사용 가능한 경우 여러 제안 중에서 선택할 수 있습니다. 이전에 활성화된 공개 제안은 그림 3에서 "업그레이드"로 표시된 새로 제공된 계약 기반 제안과 함께 표시됩니다.
그림 3.3. 개인 제안 선택 드롭다운
제안 구성이 선택되었는지 확인합니다. 그림 4는 제안 페이지의 하단과 함께 제안 세부 정보를 보여줍니다.
참고계약 종료일, 제안에 포함된 단위 수 및 결제 일정입니다. 이 예에서는 4개의 vCPU를 사용하는 클러스터 1개와 최대 3개의 노드가 포함됩니다.
그림 3.4. 개인 제공 세부 정보
선택 사항: 구매 중인 서브스크립션에 자체 구매 주문(PO) 번호를 추가할 수 있으므로 후속 AWS 송장에 포함됩니다. 또한 "New offer configuration details"의 범위 위에 있는 모든 사용에 대해 부과되는 "추가 사용 요금"을 확인하십시오.
참고개인 제공에는 몇 가지 사용 가능한 구성이 있습니다.
- 귀하가 수락하고 있는 개인 오퍼링은 고정된 향후 시작 날짜로 설정될 수 있습니다.
- 개인 제안을 수락할 때 AWS에 다른 활성 Red Hat OpenShift Service가 없는 경우, 공개 제안 또는 이전 개인 제안 인타이틀먼트를 수락하고 개인 제안을 수락하고 지정된 서비스 시작일 이후 계정 연결 및 클러스터 배포 단계를 계속합니다.
다음 단계를 완료하려면 AWS에 활성 Red Hat OpenShift Service가 있어야 합니다. 서비스 시작 날짜는 항상 UTC 시간대에 보고됩니다.
계약을 생성하거나 업그레이드합니다.
AWS에서 Red Hat OpenShift Service가 아직 활성화되지 않았으며 이 서비스에 대한 첫 번째 계약을 생성하고 있는 AWS 계정에서 수락한 개인 제공의 경우 계약 생성 버튼을 클릭합니다.
그림 3.5. 계약 버튼 생성
계약 기반 제공의 경우 그림 4 및 6에 표시된 현재 계약 업그레이드 버튼을 클릭합니다.
그림 3.6. 업그레이드 계약 버튼
확인을 클릭합니다.
그림 3.7. 개인 제안 승인 확인 창
승인된 비공개 서비스 시작 날짜가 제안 수락 직후로 설정된 경우 확인 모달 창에서 계정 설정 버튼을 클릭합니다.
그림 3.8. 서브스크립션 확인
승인된 개인 제안에 향후 시작 날짜가 지정된 경우 서비스 시작일 이후 비공개 제안 페이지로 돌아가 계정 설정 버튼을 클릭하여 Red Hat 및 AWS 계정 연결을 진행합니다.
참고유효한 계약이 없으면 아래에 설명된 계정 링크가 트리거되지 않으며 "계정 설정" 프로세스는 "서비스 시작 날짜" 이후에만 수행할 수 있습니다.
항상 UTC 시간대입니다.
3.2. 개인 제안 공유 링크 복사링크가 클립보드에 복사되었습니다!
이전 단계에서 계정 설정 버튼을 클릭하면 AWS 및 Red Hat 계정 연결 단계로 이동합니다. 현재 해당 제안을 수락한 AWS 계정으로 이미 로그인되어 있습니다. Red Hat 계정으로 로그인하지 않은 경우 그렇게하라는 메시지가 표시됩니다.
AWS 인타이틀먼트의 Red Hat OpenShift Service는 Red Hat 조직 계정을 통해 다른 팀 멤버와 공유됩니다. 동일한 Red Hat 조직의 기존 사용자는 위에 설명된 단계에 따라 개인 제안을 수락한 청구 AWS 계정을 선택할 수 있습니다. Red Hat 조직의 사용자를 관리하고 Red Hat 조직 관리자로 로그인하면 새 사용자를 초대하거나 생성할 수 있습니다.
참고AWS 개인 제공의 Red Hat OpenShift Service는 AWS License Manager를 통해 AWS 연결 계정과 공유할 수 없습니다.
- AWS 클러스터에 Red Hat OpenShift Service를 배포하려는 사용자를 추가합니다. Red Hat 계정 사용자 관리 작업에 대한 자세한 내용은 이 사용자 관리 FAQ 를 확인하십시오.
- Red Hat 계정에 이미 로그인한 모든 사용자가 AWS 클러스터 배포자에서 Red Hat OpenShift Service로 제공되는 개인 제안을 통해 제공되는 사용자를 모두 포함하고 있는지 확인합니다.
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 청구 계정 선택 링크 복사링크가 클립보드에 복사되었습니다!
- AWS 클러스터에 Red Hat OpenShift Service를 배포할 때 최종 사용자가 비공개 제안을 수락한 AWS 청구 계정을 선택했는지 확인합니다.
AWS에 Red Hat OpenShift Service를 배포하기 위해 웹 인터페이스를 사용하는 경우 Associated AWS 인프라 계정은 일반적으로 생성되는 클러스터의 관리자가 사용하는 AWS 계정 ID로 설정됩니다.
- 이는 AWS 청구 계정과 동일한 AWS 계정일 수 있습니다.
AWS 리소스는 이 계정에 배포되며 해당 리소스와 연결된 모든 청구는 적절하게 처리됩니다.
그림 3.10. AWS 클러스터 배포 시 Red Hat OpenShift Service 동안 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. 활성 서브스크립션으로 인해 비공개 제안을 수락할 수 없습니다 링크 복사링크가 클립보드에 복사되었습니다!
AWS에서 Red Hat OpenShift Service on AWS 활성화 시 처음 생성된 비공개 제안에 액세스하려고 하면 다른 공용 또는 개인 서비스를 사용하여 AWS에서 Red Hat OpenShift Service를 활성화한 상태에서 다음 공지를 확인한 다음 해당 제안을 제공한 판매자에게 문의하십시오.
판매자는 이전 서브스크립션을 취소하지 않고도 현재 계약을 원활하게 대체할 새로운 제안을 제공할 수 있습니다.
그림 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 사용자로 로그인할 수 있습니다. 동일한 Red Hat 조직에 속한 다른 Red Hat 사용자는 그림 10에 표시된 대로 클러스터를 생성할 때 AWS에서 Red Hat OpenShift Service로 연결된 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장. 튜토리얼: 사용자 정의 DNS Resolver를 사용하여 AWS에 Red Hat OpenShift Service 배포 링크 복사링크가 클립보드에 복사되었습니다!
사용자 지정 DHCP 옵션 세트를 사용하면 자체 DNS 서버, 도메인 이름 등을 사용하여 VPC를 사용자 지정할 수 있습니다. AWS 클러스터의 Red Hat OpenShift Service는 사용자 정의 DHCP 옵션 세트 사용을 지원합니다. 기본적으로 AWS 클러스터의 Red Hat OpenShift Service는 클러스터 생성 및 작동을 위해 "도메인 이름 서버" 옵션을 AmazonProvidedDNS 로 설정해야 합니다. DNS 확인을 위해 사용자 지정 DNS 서버를 사용하려는 고객은 AWS 클러스터 생성 및 작업에서 Red Hat OpenShift Service를 성공적으로 수행하기 위해 추가 구성을 수행해야 합니다.
이 튜토리얼에서는 특정 DNS 영역에 대한 DNS 조회를 Amazon Route 53 인바운드 Resolver 에 전달하도록 DNS 서버를 구성합니다.
이 튜토리얼에서는 오픈 소스 BIND DNS 서버(named)를 사용하여 AWS 클러스터에 Red Hat OpenShift Service를 배포하려는 VPC에 있는 Amazon Route 53 Inbound Resolver에 DNS 조회를 전달하는 데 필요한 구성을 보여줍니다. 영역 전달을 구성하는 방법은 기본 DNS 서버에 대한 설명서를 참조하십시오.
4.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
-
ROSA CLI (
rosa) -
AWS CLI (
aws) - 수동으로 생성된 AWS VPC
- 사용자 지정 DNS 서버를 가리키도록 구성하고 VPC의 기본값으로 설정하도록 구성된 DHCP 옵션
4.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
4.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
4.4. DNS 서버 구성 링크 복사링크가 클립보드에 복사되었습니다!
다음 절차에 따라 필요한 프라이빗 호스팅 영역을 Amazon Route 53 Inbound Resolver로 전달하도록 DNS 서버를 구성합니다.
4.4.1. Red Hat Openshift Service on AWS 링크 복사링크가 클립보드에 복사되었습니다!
AWS 클러스터의 Red Hat OpenShift Service를 사용하려면 두 개의 프라이빗 호스팅 영역에 대해 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 tableCopy 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장. 튜토리얼: AWS WAF 및 Amazon CloudFront를 사용하여 AWS 워크로드에서 Red Hat OpenShift Service 보호 링크 복사링크가 클립보드에 복사되었습니다!
AWS WAF는 보호된 웹 애플리케이션 리소스로 전달되는 HTTP 및 HTTPS 요청을 모니터링할 수 있는 웹 애플리케이션 방화벽입니다.
Amazon CloudFront를 사용하여 AWS 워크로드의 Red Hat OpenShift Service에WAF(Web Application Firewall)를 추가할 수 있습니다. 외부 솔루션을 사용하면 WAF 처리로 인해 AWS 리소스의 Red Hat OpenShift Service가 서비스 거부를 발생하지 않도록 보호합니다.
WAFv1, WAF 클래식은 더 이상 지원되지 않습니다. WAFv2를 사용합니다.
5.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- AWS 클러스터의 Red Hat OpenShift Service.
-
OpenShift CLI(
oc)에 액세스할 수 있습니다. -
AWS CLI(
aws)에 액세스할 수 있습니다.
5.1.1. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
IngressController에 사용할 사용자 정의 도메인으로 바꿉니다.
참고이전 명령의 "클러스터" 출력은 클러스터의 이름, 클러스터의 내부 ID 또는 클러스터의 도메인 접두사가 될 수 있습니다. 다른 식별자를 사용하려는 경우 다음 명령을 실행하여 이 값을 수동으로 설정할 수 있습니다.
export CLUSTER=my-custom-value
$ export CLUSTER=my-custom-valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.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.pemCopy to Clipboard Copied! Toggle word wrap Toggle overflow 새
IngressController리소스를 생성합니다.예:
waf-ingress-controller.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow IngressController를 적용합니다.예
oc apply -f waf-ingress-controller.yaml
$ oc apply -f waf-ingress-controller.yamlCopy 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-wafCopy 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 2m19sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.2.1. AWS WAF 구성 링크 복사링크가 클립보드에 복사되었습니다!
AWS WAF 서비스는 AWS의 Red Hat OpenShift Service와 같이 보호된 웹 애플리케이션 리소스로 전달되는 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
5.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-1Copy 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
캐시 정책
캐싱Disabled
원본 요청 정책
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 textCopy 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.netCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. 샘플 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 샘플 애플리케이션에 대한 새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-worldCopy 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-openshiftCopy 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=wafCopy to Clipboard Copied! Toggle word wrap Toggle overflow
5.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가 애플리케이션을 보호하고 있습니다.
6장. 튜토리얼: AWS WAF 및 AWS ALB를 사용하여 AWS 워크로드에서 Red Hat OpenShift Service를 보호 링크 복사링크가 클립보드에 복사되었습니다!
AWS WAF는 보호된 웹 애플리케이션 리소스로 전달되는 HTTP 및 HTTPS 요청을 모니터링할 수 있는 웹 애플리케이션 방화벽입니다.
AWS Application Load Balancer(ALB)를 사용하여 AWS 워크로드의 Red Hat OpenShift Service에WAF(Web Application Firewall)를 추가할 수 있습니다. 외부 솔루션을 사용하면 WAF 처리로 인해 AWS 리소스의 Red Hat OpenShift Service가 서비스 거부를 발생하지 않도록 보호합니다.
ALB 기반 솔루션을 사용해야 하는 경우를 제외하고 더 유연한 CloudFront 방법을 사용하는 것이 좋습니다.
6.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
AWS 클러스터의 여러 가용성 영역(AZ) Red Hat OpenShift Service.
참고AWS ALB에는 AWS 문서에 따라 AZ에 두 개 이상의 퍼블릭 서브넷이 필요합니다. 이러한 이유로 AWS 클러스터의 여러 AZ Red Hat OpenShift Service만 ALB와 함께 사용할 수 있습니다.
-
OpenShift CLI(
oc)에 액세스할 수 있습니다. -
AWS CLI(
aws)에 액세스할 수 있습니다.
6.1.1. 환경 설정 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.1.2. AWS VPC 및 서브넷 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션은 기존 VPC에 배포된 클러스터에만 적용됩니다. 클러스터를 기존 VPC에 배포하지 않은 경우 이 섹션을 건너뛰고 아래의 설치 섹션을 진행합니다.
다음 변수를 AWS 배포에서 Red Hat OpenShift Service의 적절한 값으로 설정합니다.
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
6.2. AWS Load Balancer Operator 배포 링크 복사링크가 클립보드에 복사되었습니다!
AWS Load Balancer Operator 는 AWS 클러스터의 Red Hat OpenShift Service에서 aws-load-balancer-controller 인스턴스를 설치, 관리 및 구성하는 데 사용됩니다. AWS의 Red Hat OpenShift Service에 ALB를 배포하려면 먼저 AWS Load Balancer Operator를 배포해야 합니다.
다음 명령을 실행하여 AWS Load Balancer Operator를 배포할 새 프로젝트를 생성합니다.
oc new-project aws-load-balancer-operator
$ oc new-project aws-load-balancer-operatorCopy 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 podsCopy 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 2m4sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
6.3. 샘플 애플리케이션 배포 링크 복사링크가 클립보드에 복사되었습니다!
샘플 애플리케이션을 위한 새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-worldCopy 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-openshiftCopy 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
6.3.1. AWS WAF 구성 링크 복사링크가 클립보드에 복사되었습니다!
AWS WAF 서비스는 AWS의 Red Hat OpenShift Service와 같이 보호된 웹 애플리케이션 리소스로 전달되는 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가 애플리케이션을 보호하고 있음을 의미합니다.
7장. 튜토리얼: AWS 클러스터의 Red Hat OpenShift Service에 데이터 보호를 위한 OpenShift API 배포 링크 복사링크가 클립보드에 복사되었습니다!
이 콘텐츠는 Red Hat 전문가가 작성했지만 지원되는 모든 구성에서 테스트되지 않았습니다.
사전 요구 사항
환경
환경 변수를 준비합니다.
참고AWS 클러스터의 Red Hat OpenShift Service와 일치하도록 클러스터 이름을 변경하고 관리자로 클러스터에 로그인했는지 확인합니다. 계속 진행하기 전에 모든 필드가 올바르게 출력되었는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.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
7.2. 클러스터에 OADP 배포 링크 복사링크가 클립보드에 복사되었습니다!
OADP의 네임스페이스를 생성합니다.
oc create namespace openshift-adp
$ oc create namespace openshift-adpCopy 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 podsCopy 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 22sCopy 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 4d19hCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc get storageclass
$ oc get storageclassCopy 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 4d21hCopy 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
-
AWS STS 환경의 OADP 1.1.x Red Hat OpenShift Service에서 컨테이너 이미지 백업 및 복원(
spec.backupImages) 값을 지원되지 않으므로false로 설정해야 합니다. -
Restic 기능(
restic.enable=false)은 비활성화되어 AWS STS 환경의 Red Hat OpenShift Service에서 지원되지 않습니다. -
DataMover 기능(
dataMover.enable=false)은 비활성화되어 AWS STS 환경의 Red Hat OpenShift Service에서 지원되지 않습니다.
7.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-openshiftCopy to Clipboard Copied! Toggle word wrap Toggle overflow 경로를 노출합니다.
oc expose service/hello-openshift -n hello-world
$ oc expose service/hello-openshift -n hello-worldCopy 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-worldCopy 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 podsCopy 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 90sCopy 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 팀의 샘플 애플리케이션 디렉터리에서확인할 수 있습니다.
7.4. cleanup 링크 복사링크가 클립보드에 복사되었습니다!
워크로드를 삭제합니다.
oc delete ns hello-world
$ oc delete ns hello-worldCopy 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-worldCopy 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-worldCopy 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}-dpaCopy 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}-oadpCopy 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=mergeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 더 이상 필요하지 않은 경우 Operator를 제거합니다.
oc -n openshift-adp delete subscription oadp-operator
$ oc -n openshift-adp delete subscription oadp-operatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow Operator의 네임스페이스를 제거합니다.
oc delete ns redhat-openshift-adp
$ oc delete ns redhat-openshift-adpCopy 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; doneCopy 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}-oadpCopy 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
8장. 튜토리얼: AWS의 Red Hat OpenShift Service에 AWS Load Balancer Operator 링크 복사링크가 클립보드에 복사되었습니다!
이 콘텐츠는 Red Hat 전문가가 작성했지만 지원되는 모든 구성에서 테스트되지 않았습니다.
AWS Load Balancer Operator에서 생성한 로드 밸런서는 OpenShift 경로에 사용할 수 없으며 OpenShift 경로 의 전체 계층 7 기능이 필요하지 않은 개별 서비스 또는 인그레스 리소스에만 사용해야 합니다.
AWS Load Balancer 컨트롤러는 AWS 클러스터에서 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) 서비스와 통합
참고WAFv1, WAF 클래식은 더 이상 지원되지 않습니다. WAFv2를 사용합니다.
- 사용자 정의 NLB 소스 IP 범위 지정
- 사용자 정의 NLB 내부 IP 주소 지정
AWS Load Balancer Operator 는 AWS 클러스터의 Red Hat OpenShift Service에서 aws-load-balancer-controller 인스턴스를 설치, 관리 및 구성하는 데 사용됩니다.
8.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
AWS ALB에는 멀티 AZ 클러스터와 동일한 VPC의 동일한 VPC에서 3개의 퍼블릭 서브넷이 분할되어 있어야 합니다. 이로 인해 많은 PrivateLink 클러스터에 ALB가 적합하지 않습니다. AWS NLB에는 이러한 제한이 없습니다.
- AWS 클러스터의 멀티 AZ Red Hat OpenShift Service
- BYO VPC 클러스터
- AWS CLI
- OC CLI
8.1.1. 환경 링크 복사링크가 클립보드에 복사되었습니다!
환경 변수를 준비합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
8.1.2. AWS VPC 및 서브넷 링크 복사링크가 클립보드에 복사되었습니다!
이 섹션은 기존 VPC에 배포된 클러스터에만 적용됩니다. 클러스터를 기존 VPC에 배포하지 않은 경우 이 섹션을 건너뛰고 아래의 설치 섹션을 진행합니다.
다음 변수를 클러스터 배포의 적절한 값으로 설정합니다.
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
8.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 podsCopy 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 2m4sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. 배포 검증 링크 복사링크가 클립보드에 복사되었습니다!
새 프로젝트를 생성합니다.
oc new-project hello-world
$ oc new-project hello-worldCopy 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-openshiftCopy 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
8.4. 정리 링크 복사링크가 클립보드에 복사되었습니다!
hello world 애플리케이션 네임스페이스(및 네임스페이스의 모든 리소스)를 삭제합니다.
oc delete project hello-world
$ oc delete project hello-worldCopy 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_ARNCopy to Clipboard Copied! Toggle word wrap Toggle overflow
9장. 튜토리얼: Microsoft Entra ID (이전 Azure Active Directory)를 ID 공급자로 구성 링크 복사링크가 클립보드에 복사되었습니다!
Microsoft Entra ID (이전 Azure Active Directory)를 AWS의 Red Hat OpenShift Service에서 클러스터 ID 공급자로 구성할 수 있습니다.
이 튜토리얼에서는 다음 작업을 완료하도록 안내합니다.
- 인증을 위해 Entra ID에 새 애플리케이션을 등록합니다.
- 토큰에 선택적 및 그룹 클레임을 포함하도록 Entra ID에서 애플리케이션 등록을 구성합니다.
- ID 공급자로 Entra ID를 사용하도록 AWS 클러스터에서 Red Hat OpenShift Service를 구성합니다.
- 개별 그룹에 추가 권한을 부여합니다.
9.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
9.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
9.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 내에서 사용할 사용자의 그룹 멤버십을 제공할 수 있습니다.
9.3.1. 선택적 클레임 구성 링크 복사링크가 클립보드에 복사되었습니다!
Entra ID에서 선택적 클레임을 구성할 수 있습니다.
Token configuration sub-blade를 클릭하고 Add optional claim 버튼을 선택합니다.
ID 라디오 버튼을 선택합니다.
이메일 클레임 확인란을 선택합니다.
preferred_username클레임 확인란을 선택합니다. 그런 다음 추가 를 클릭하여 이메일 및 preferred_username 이 Entra ID 애플리케이션을 클레임합니다.
페이지 상단에 대화 상자가 표시됩니다. 프롬프트에 따라 필요한 Microsoft Graph 권한을 활성화합니다.
9.3.2. 그룹 클레임 구성 (선택 사항) 링크 복사링크가 클립보드에 복사되었습니다!
그룹 클레임을 제공하도록 Entra ID를 구성합니다.
프로세스
토큰 구성 하위 블록에서 그룹 클레임 추가 를 클릭합니다.
Entra ID 애플리케이션에 대한 그룹 클레임을 구성하려면 보안 그룹을 선택한 다음 추가 를 클릭합니다.
참고이 예에서 그룹 클레임에는 사용자가 멤버인 모든 보안 그룹이 포함됩니다. 실제 프로덕션 환경에서는 그룹 클레임에 AWS의 Red Hat OpenShift Service에 적용되는 그룹만 포함되어 있는지 확인합니다.
9.4. Entra ID를 ID 공급자로 사용하도록 AWS 클러스터에서 Red Hat OpenShift Service 구성 링크 복사링크가 클립보드에 복사되었습니다!
Entra ID를 ID 공급자로 사용하도록 AWS에서 Red Hat OpenShift Service를 구성해야 합니다.
AWS의 Red Hat OpenShift Service는 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-cluster1 $ IDP_NAME=AAD2 $ APP_ID=yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy3 $ CLIENT_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx4 $ TENANT_ID=zzzzzzzz-zzzz-zzzz-zzzz-zzzzzzzzzzzz5 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를 사용하여 클러스터에 로그인할 수 있습니다.
9.5. 개별 사용자 및 그룹에 추가 권한 부여 링크 복사링크가 클립보드에 복사되었습니다!
처음 로그인하면 매우 제한된 권한이 있음을 알 수 있습니다. 기본적으로 AWS의 Red Hat OpenShift Service는 클러스터에서 새 프로젝트 또는 네임스페이스를 생성할 수 있는 기능만 부여합니다. 다른 프로젝트는 볼 수 없습니다.
이러한 추가 기능을 개별 사용자 및 그룹에 부여해야 합니다.
9.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 사용자 이름을 제공합니다.
9.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액세스 권한을 자동으로 수신합니다.
10장. 튜토리얼: STS를 사용하여 AWS의 Red Hat OpenShift Service에서 AWS Secrets Manager CSI 사용 링크 복사링크가 클립보드에 복사되었습니다!
AWS Secrets 및 Configuration Provider(ASCP)는 AWS 보안을 Kubernetes 스토리지 볼륨으로 노출하는 방법을 제공합니다. ASCP를 사용하면 시크릿 관리자에 시크릿을 저장하고 관리한 다음 AWS의 Red Hat OpenShift Service에서 실행되는 워크로드를 통해 검색할 수 있습니다.
10.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
이 프로세스를 시작하기 전에 다음 리소스 및 툴이 있는지 확인합니다.
- STS로 배포된 AWS 클러스터의 Red Hat OpenShift Service
- Helm 3
-
AWSCLI -
ocCLI -
jqCLI
10.1.1. 추가 환경 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 AWS 클러스터의 Red Hat OpenShift Service에 로그인합니다.
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.serviceAccountIssuerCopy 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-awsCopy 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
10.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/chartsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Helm 리포지터리를 업데이트합니다.
helm repo update
$ helm repo updateCopy 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-driverCopy 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.yamlCopy 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-driverCopy 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=restrictedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.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_ARNCopy 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_ARNCopy 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_ARNCopy 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_ARNCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.4. 이 시크릿을 사용할 애플리케이션 생성 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 OpenShift 프로젝트를 생성합니다.
oc new-project my-application
$ oc new-project my-applicationCopy 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_ARNCopy 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/MySecretCopy to Clipboard Copied! Toggle word wrap Toggle overflow
10.5. 정리 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 애플리케이션을 삭제합니다.
oc delete project my-application
$ oc delete project my-applicationCopy 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-driverCopy 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-awsCopy 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.yamlCopy 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_ARNCopy 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_ARNCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11장. 튜토리얼: AWS의 Red Hat OpenShift Service에서 AWS Controllers for Kubernetes 사용 링크 복사링크가 클립보드에 복사되었습니다!
AWS Controllers for Kubernetes (ACK)를 사용하면 AWS의 Red Hat OpenShift Service에서 직접 AWS 서비스 리소스를 정의하고 사용할 수 있습니다. ACK을 사용하면 클러스터 외부의 리소스를 정의하거나 클러스터 내에서 데이터베이스 또는 메시지 큐와 같은 지원 기능을 제공하는 서비스를 실행할 필요 없이 애플리케이션에 AWS 관리 서비스를 활용할 수 있습니다.
소프트웨어 카탈로그에서 다양한 ACK Operator를 직접 설치할 수 있습니다. 이렇게 하면 애플리케이션과 함께 Operator를 쉽게 시작하고 사용할 수 있습니다. 이 컨트롤러는 현재 개발자 프리뷰에 있는 Kubernetes 프로젝트용 AWS 컨트롤러의 구성 요소입니다.
이 튜토리얼을 사용하여 ACK S3 Operator를 배포합니다. 클러스터의 소프트웨어 카탈로그에서 다른 ACK Operator에 맞게 조정할 수도 있습니다.
11.1. 사전 요구 사항 링크 복사링크가 클립보드에 복사되었습니다!
- AWS 클러스터의 Red Hat OpenShift Service
-
cluster-admin권한이 있는 사용자 계정 -
OpenShift CLI(
oc) -
AWS(Amazon Web Services) CLI(
aws)
11.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
11.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
11.4. ACK S3 컨트롤러 설치 링크 복사링크가 클립보드에 복사되었습니다!
ACK S3 Operator를 설치할 프로젝트를 생성합니다.
oc new-project ack-system
$ oc new-project ack-systemCopy 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-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 소프트웨어 카탈로그에서 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}-controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow ACK S3 Operator가 실행 중인지 확인합니다.
oc -n ack-system get pods
$ oc -n ack-system get podsCopy 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 51sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.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}-bucketCopy 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-bucketCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.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}-bucketCopy 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-systemCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12장. 튜토리얼: 외부 트래픽에 일관된 송신 IP 할당 링크 복사링크가 클립보드에 복사되었습니다!
보안 표준을 충족하기 위해 IP 기반 구성이 필요한 보안 그룹과 같이 클러스터를 떠나는 트래픽에 일관된 IP 주소를 할당할 수 있습니다.
기본적으로 AWS의 Red Hat OpenShift Service는 OVN-Kubernetes CNI(컨테이너 네트워크 인터페이스)를 사용하여 풀에서 임의의 IP 주소를 할당합니다. 이로 인해 보안 잠금을 예측할 수 없거나 열 수 없게 만들 수 있습니다.
자세한 내용은 송신 IP 주소 구성 을 참조하십시오.
목표
- 송신 클러스터 트래픽에 대해 예측 가능한 IP 주소 세트를 구성하는 방법을 알아봅니다.
사전 요구 사항
- OVN-Kubernetes로 배포된 AWS 클러스터의 Red Hat OpenShift Service
-
OpenShift CLI (
oc) -
ROSA CLI (
rosa) -
jq
12.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=workerCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.2. 용량 확인 링크 복사링크가 클립보드에 복사되었습니다!
각 노드에 할당된 IP 주소 수는 각 퍼블릭 클라우드 공급자에 대해 제한됩니다.
다음 명령을 실행하여 충분한 용량을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. 송신 IP 규칙 생성 링크 복사링크가 클립보드에 복사되었습니다!
송신 IP 규칙을 생성하기 전에 사용할 송신 IP를 식별합니다.
참고선택한 송신 IP는 작업자 노드가 프로비저닝되는 서브넷의 일부로 존재해야 합니다.
선택 사항: AWS VPC(Virtual Private Cloud) DHCP(Dynamic Host Configuration Protocol) 서비스와의 충돌을 방지하기 위해 요청한 송신 IP를 예약합니다.
12.4. 네임스페이스에 송신 IP 할당 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 새 프로젝트를 생성합니다.
oc new-project demo-egress-ns
$ oc new-project demo-egress-nsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 네임스페이스 내에서 모든 Pod에 대한 송신 규칙을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5. Pod에 송신 IP 할당 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 새 프로젝트를 생성합니다.
oc new-project demo-egress-pod
$ oc new-project demo-egress-podCopy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 Pod에 대한 송신 규칙을 생성합니다.
참고spec.namespaceSelector는 필수 필드입니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5.1. 노드 레이블 지정 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 보류 중인 송신 IP 할당을 확보합니다.
oc get egressips
$ oc get egressipsCopy 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.254Copy 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
12.5.2. 송신 IP 검토 링크 복사링크가 클립보드에 복사되었습니다!
다음 명령을 실행하여 송신 IP 할당을 검토합니다.
oc get egressips
$ oc get egressipsCopy 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.254Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6. 검증 링크 복사링크가 클립보드에 복사되었습니다!
12.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.4Copy 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
12.6.2. 네임스페이스 송신 테스트 링크 복사링크가 클립보드에 복사되었습니다!
대화형 쉘을 시작하여 네임스페이스 송신 규칙을 테스트합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 요청을 로드 밸런서에 전송하고 성공적으로 연결할 수 있는지 확인합니다.
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAMECopy 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
$ exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6.3. Pod 송신 테스트 링크 복사링크가 클립보드에 복사되었습니다!
대화형 쉘을 시작하여 Pod 송신 규칙을 테스트합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 로드 밸런서에 요청을 보냅니다.
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAMECopy 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
$ exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.6.4. 선택 사항: 테스트 차단 송신 링크 복사링크가 클립보드에 복사되었습니다!
선택 사항: 다음 명령을 실행하여 송신 규칙이 적용되지 않을 때 트래픽이 성공적으로 차단되었는지 테스트합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 명령을 실행하여 로드 밸런서에 요청을 보냅니다.
curl -s http://$LOAD_BALANCER_HOSTNAME
$ curl -s http://$LOAD_BALANCER_HOSTNAMECopy to Clipboard Copied! Toggle word wrap Toggle overflow - 명령이 실패하면 송신이 성공적으로 차단됩니다.
다음 명령을 실행하여 Pod를 종료합니다.
exit
$ exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
12.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
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.