ROSAHCP使用 ROSA CLI - Red Hat OpenShift Service on AWS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

ROSAHCP使用 ROSA CLI

以下各節說明如何開始使ROSA用主體控制平面 (使ROSA用HCP) AWS STS 和 ROSA CLI。如需使用 Terraform 建立ROSA含HCP叢集的步驟,請參閱 Red Hat 文件。若要深入瞭解用於建立的 Terraform 提供者 ROSA 集群,請參閱地形文檔。

所以此 ROSA CLI使用auto模式或manual模式來建立 IAM 創建一個所需的資源和 OpenID Connect(OIDC)配置 ROSA 叢集。 auto模式會自動創建所需的 IAM 角色和策略和OIDC提供者。 manual模式輸出 AWS CLI 建立 IAM 手動資源。通過使用manual模式,您可以查看生成的 AWS CLI 指令,然後再手動執行它們。使用manual模式,您也可以將命令傳遞給組織中的其他管理員或群組,以便他們可以建立資源。

本文件中的程序使用 auto ROSA CLI創建所需的 IAM ROSA使用的資源和OIDC組態HCP。如需開始使用的更多選項,請參閱開始使用 ROSA

必要條件

完成中列出的先決條件動作設定使用 ROSA

建立 Amazon VPC 架構

下列程序會建立 Amazon VPC 可用於主控叢集的架構。全部 叢集 資源託管在私有子網路中。公用子網路會透過NAT閘道將來自私人子網路的輸出流量路由至公用網際網路。此範例使10.0.0.0/16用CIDR區塊 Amazon VPC。 但是,您可以選擇不同的CIDR塊。如需詳細資訊,請參閱VPC調整大小

重要

If Amazon VPC 不符合需求,叢集建立失敗。

Terraform
  1. 安裝地形CLI。如需詳細資訊,請參閱 Terraform 文件中的安裝指示

  2. 打開一個終端會話並克隆 Terraform VPC 存儲庫。

    git clone https://github.com/openshift-cs/terraform-vpc-example
  3. 導航到創建的目錄。

    cd terraform-vpc-example
  4. 啟動地形文件。

    terraform init

    完成後,CLI返回一條消息,表示 Terraform 已成功初始化。

  5. 若要根據現有範本建立 Terraform 計劃,請執行下列命令。所以此 AWS 區域 必須指定。或者,您可以選擇指定叢集名稱。

    terraform plan -out rosa.tfplan -var region=<region>

    一旦命令運行,一個rosa.tfplan文件被添加到目hypershift-tf錄中。有關更多詳細選項,請參閱 Terraform VPC 存儲庫的README文件

  6. 套用計劃檔案以建置VPC.

    terraform apply rosa.tfplan

    完成後,會CLI傳回驗證新增資源的成功訊息。

    1. (選擇性) 為 Terraform 佈建的私有、公用和機器池子網路建立環境變數,IDs以便在建立您的使用叢集時使用。ROSA HCP

      export SUBNET_IDS=$(terraform output -raw cluster-subnets-string)
    2. (選擇性) 確認已正確設定環境變數。

      echo $SUBNET_IDS
Amazon VPC console
  1. 開啟 Amazon VPC 控制台

  2. 在VPC儀表板上,選擇 [建立] VPC。

  3. 對於資源創建,選擇VPC和更多

  4. 保持選取 [自動產生名稱] 標籤以建立VPC資源的 [名稱] 標籤,或清除它以提供您自己的VPC資源名稱標籤。

  5. 對於IPv4CIDR區塊,請輸入的IPv4位址範圍VPC。VPC必須有一個IPv4地址範圍。

  6. (可選)要支持IPv6流量,請選擇IPv6CIDR阻止,亞馬遜提供IPv6CIDR的塊。

  7. 租賃離開為Default

  8. 針對可用區域數目 (AZs),請選擇您需要的數目。對於異地同步備份部署, ROSA 需要三個可用區域。若要AZs為您的子網路選擇,請展開 [自訂 AZs]。

    注意

    一些 ROSA 執行個體類型僅適用於特定可用區域。您可以使用 ROSA CLI命令rosa list instance-types命令列出所有 ROSA 可用的例證類型。若要檢查指定的可用區域是否有執行個體類型可用,請使用 AWS CLI 指令aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=location,Values=<availability_zone> --region <region> --output text | egrep "<instance_type>"

  9. 若要設定您的子網路,請選擇公有子網路數目私有子網路數目的值。若要選擇子網路的 IP 位址範圍,請展開 [自訂子網路CIDR區塊]。

    注意

    ROSAand HCP 需要客戶為每個用於建立叢集的可用區域設定至少一個公用和私有子網路。

  10. 若要授與私有子網路中的資源存取公用NAT網IPv4際網路,請選擇要AZs在其中建立NAT閘道的數目。在生產環境中,建議您在每個 AZ 中部署NAT閘道,其中包含需要存取公用網際網路的資源。

  11. (可選)如果您需要訪問 Amazon S3 直接從您的VPCVPC端點選擇 S3 閘道

  12. 保持選取預設DNS選項。 ROSA 需要的DNS主機名稱支援VPC.

  13. 展開 [其他標籤],選擇 [新增標籤],然後新增下列標籤鍵。 ROSA 使用自動預檢檢查來驗證是否已使用這些標籤。

    • 索引鍵kubernetes.io/role/elb

    • 索引鍵kubernetes.io/role/internal-elb

  14. 選擇 [建立] VPC。

AWS CLI
  1. VPC使用10.0.0.0/16CIDR圖塊建立。

    aws ec2 create-vpc \ --cidr-block 10.0.0.0/16 \ --query Vpc.VpcId \ --output text

    前面的命令返回 VPC ID。以下為範例輸出。

    vpc-1234567890abcdef0
  2. 將 VPC ID 儲存在環境變數中。

    export VPC_ID=vpc-1234567890abcdef0
  3. 使用VPC_ID環境變數建立的Name標籤。VPC

    aws ec2 create-tags --resources $VPC_ID --tags Key=Name,Value=MyVPC
  4. 在上啟用DNS主機名稱支援VPC。

    aws ec2 modify-vpc-attribute \ --vpc-id $VPC_ID \ --enable-dns-hostnames
  5. 在中建立公用和私有子網路VPC,並指定應在其中建立資源的可用區域。

    重要

    ROSAand HCP 需要客戶為每個用於建立叢集的可用區域設定至少一個公用和私有子網路。對於異地同步備份部署,需要三個可用區域。如果不符合這些需求,叢集建立會失敗。

    注意

    一些 ROSA 執行個體類型僅適用於特定可用區域。您可以使用 ROSA CLI命令rosa list instance-types命令列出所有 ROSA 可用的例證類型。若要檢查指定的可用區域是否有執行個體類型可用,請使用 AWS CLI 指令aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=location,Values=<availability_zone> --region <region> --output text | egrep "<instance_type>"

    aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.1.0/24 \ --availability-zone us-east-1a \ --query Subnet.SubnetId \ --output text aws ec2 create-subnet \ --vpc-id $VPC_ID \ --cidr-block 10.0.0.0/24 \ --availability-zone us-east-1a \ --query Subnet.SubnetId \ --output text
  6. 將公共和私有子網路儲存IDs在環境變數中。

    export PUBLIC_SUB=subnet-1234567890abcdef0 export PRIVATE_SUB=subnet-0987654321fedcba0
  7. 為您的VPC子網路建立下列標籤。 ROSA 使用自動預檢檢查來驗證是否已使用這些標籤。

    注意

    您必須標記至少一個私有子網路,以及一個公用子網路 (如果適用)。

    aws ec2 create-tags --resources $PUBLIC_SUB --tags Key=kubernetes.io/role/elb,Value=1 aws ec2 create-tags --resources $PRIVATE_SUB --tags Key=kubernetes.io/role/internal-elb,Value=1
  8. 為輸出流量建立網際網路閘道和路由表。為私人流量建立路由表和彈性 IP 位址。

    aws ec2 create-internet-gateway \ --query InternetGateway.InternetGatewayId \ --output text aws ec2 create-route-table \ --vpc-id $VPC_ID \ --query RouteTable.RouteTableId \ --output text aws ec2 allocate-address \ --domain vpc \ --query AllocationId \ --output text aws ec2 create-route-table \ --vpc-id $VPC_ID \ --query RouteTable.RouteTableId \ --output text
  9. 儲存IDs在環境變數中。

    export IGW=igw-1234567890abcdef0 export PUBLIC_RT=rtb-0987654321fedcba0 export EIP=eipalloc-0be6ecac95EXAMPLE export PRIVATE_RT=rtb-1234567890abcdef0
  10. 將網際網路閘道連接至VPC.

    aws ec2 attach-internet-gateway \ --vpc-id $VPC_ID \ --internet-gateway-id $IGW
  11. 將公用路由表與公用子網路產生關聯,並設定要路由到網際網路閘道的流量。

    aws ec2 associate-route-table \ --subnet-id $PUBLIC_SUB \ --route-table-id $PUBLIC_RT aws ec2 create-route \ --route-table-id $PUBLIC_RT \ --destination-cidr-block 0.0.0.0/0 \ --gateway-id $IGW
  12. 建立NAT閘道並將其與彈性 IP 位址建立關聯,以啟用通往私有子網路的流量。

    aws ec2 create-nat-gateway \ --subnet-id $PUBLIC_SUB \ --allocation-id $EIP \ --query NatGateway.NatGatewayId \ --output text
  13. 將私人路由表與私人子網路產生關聯,並設定要路由到NAT閘道的流量。

    aws ec2 associate-route-table \ --subnet-id $PRIVATE_SUB \ --route-table-id $PRIVATE_RT aws ec2 create-route \ --route-table-id $PRIVATE_RT \ --destination-cidr-block 0.0.0.0/0 \ --gateway-id $NATGW
  14. (選擇性) 對於異地同步備份部署,請重複上述步驟,以使用公有和私有子網路設定另外兩個可用區域。

建立必要的 IAM 角色和 OpenID Connect 配置

在建立ROSA含HCP叢集之前,您必須先建立必要的 IAM 角色和策略以及 OpenID Connect(OIDC)配置。如需關於 IAM 與的角色和策略 ROSAHCP,請參閱AWS 受管理的政策 ROSA

此程序使用的auto模式 ROSA CLI以自動建立使ROSA用HCP叢集建立所需的OIDC組態。

  1. 建立必要的 IAM 帳號角色和策略。此--force-policy-creation參數會更新任何現有的角色和原則。如果沒有角色和策略存在,則命令會改為建立這些資源。

    rosa create account-roles --force-policy-creation
    注意

    如果您的離線訪問令牌已過期, ROSA CLI輸出錯誤消息,指出您的授權令牌需要更新。如需疑難排解的步驟,請參閱解決 ROSA CLI過期的離線訪問令牌

  2. 建立 OpenID Connect (OIDC) 配置,以啟用叢集的使用者驗證。此配置已註冊以與 OpenShift 叢集管理員 (OCM) 搭配使用。

    rosa create oidc-config --mode=auto
  3. 複製中提供的OIDC配置 ID ROSA CLI輸出。稍後需要提供OIDC配置 ID 以創建ROSA帶HCP集群。

  4. 若要確認與使用者組織相關聯之叢集的可用組OIDC態,請執行下列命令。

    rosa list oidc-config
  5. 建立必要的 IAM 操作員角色,<OIDC_CONFIG_ID>替換為先前複製的OIDC配置 ID。

    重要

    建立「操作員」角色<PREFIX_NAME>時,您必須在中提供前置詞。如果不這樣做會產生錯誤。

    rosa create operator-roles --prefix <PREFIX_NAME> --oidc-config-id <OIDC_CONFIG_ID> --hosted-cp
  6. 若要驗證 IAM 操作員角色被創建,運行以下命令:

    rosa list operator-roles

ROSAHCP使用 ROSA CLI和 AWS STS

您可以使ROSA用 HCP 叢集 使用 AWS Security Token Service (AWS STS) 以及在中提供的auto模式 ROSA CLI。您可以選擇使用公用API和 Ingress 或私人API和入口來建立叢集。

您可以建立 叢集 具有單一可用區域 (單一可用區域) 或多個可用區域 (異地同步備份)。在任何一種情況下,您的機器的CIDR值都必須符合您VPC的CIDR價值。

下列程序使用指rosa create cluster --hosted-cp令建立單一可用區 ROSA HCP 叢集。 若要建立異地同步備份 叢集,multi-az在命令和您要部署的每個私有子網路中指定私有子網路。IDs

  1. ROSA使用下列命令之一建立含HCP叢集。

    • 建立ROSA具有公用API和 Ingress 的HCP叢集,並指定叢集名稱、操作員角色前置詞、OIDC組態 ID 以及公用和私有子網路IDs。

      rosa create cluster --cluster-name=<CLUSTER_NAME> --sts --mode=auto --hosted-cp --operator-roles-prefix <OPERATOR_ROLE_PREFIX> --oidc-config-id <OIDC_CONFIG_ID> --subnet-ids=<PUBLIC_SUBNET_ID>,<PRIVATE_SUBNET_ID>
    • 使用私ROSA有API和 Ingress 建立具有HCP叢集,並指定叢集名稱、操作員角色前置詞、OIDC組態 ID 和私有子網路IDs。

      rosa create cluster --private --cluster-name=<CLUSTER_NAME> --sts --mode=auto --hosted-cp --subnet-ids=<PRIVATE_SUBNET_ID>
  2. 檢查您的狀態 叢集.

    rosa describe cluster -c <CLUSTER_NAME>
    注意

    如果建立程序失敗或State欄位在 10 分鐘後未變更為就緒狀態,請參閱故障診斷

    要聯繫 AWS Support 或 Red Hat 支援以尋求協助,請參閱獲得 ROSA 支持

  3. 跟踪的進度 叢集 通過觀看 OpenShift 安裝程序日誌創建。

    rosa logs install -c <CLUSTER_NAME> --watch

設定身分識別提供者並授予 叢集 存取

ROSA 包括一個內置OAuth服務器。之後你 叢集 已建立,您必須設定OAuth為使用身分識別提供者。然後,您可以將使用者新增至設定的身分識別提供者,以授予他們存取您的 叢集。 您可以視需要授與這些使用者cluster-admindedicated-admin權限。

您可以設定不同的身分識別提供者類型 ROSA 叢集。 支持的類型包括 GitHub 企業 GitHub GitLab,谷歌,LDAP,OpenID Connect 和HTPasswd身份提供商。

重要

僅包含HTPasswd身分識別提供者,以便建立單一靜態系統管理員使用者。HTPasswd不支援做為下列項目的一般使用身分識別提供者 ROSA.

下列程序會將 GitHub 身分識別提供者設定為範例。如需有關如何設定每個支援的身分識別提供者類型的指示,請參閱設定身分識別提供者 AWS STS.

  1. 導航到網站並登錄到您的帳戶。 GitHub

  2. 如果您沒有 GitHub 組織可用於您的身分佈建 叢集,建立一個。如需詳細資訊,請參閱 GitHub 文件中的步驟

  3. 使用 ROSA CLI的互動模式,為您的叢集配置身分識別提供者。

    rosa create idp --cluster=<CLUSTER_NAME> --interactive
  4. 按照輸出中的配置提示進行限制 叢集 存取您 GitHub 組織成員的權限。

    I: Interactive mode enabled. Any optional fields can be left empty and a default will be selected. ? Type of identity provider: github ? Identity provider name: github-1 ? Restrict to members of: organizations ? GitHub organizations: <GITHUB_ORG_NAME> ? To use GitHub as an identity provider, you must first register the application: - Open the following URL: https://github.com/organizations/<GITHUB_ORG_NAME>/settings/applications/new?oauth_application%5Bcallback_url%5D=https%3A%2F%2Foauth-openshift.apps.<CLUSTER_NAME>/<RANDOM_STRING>.p1.openshiftapps.com%2Foauth2callback%2Fgithub-1&oauth_application%5Bname%5D=<CLUSTER_NAME>&oauth_application%5Burl%5D=https%3A%2F%2Fconsole-openshift-console.apps.<CLUSTER_NAME>/<RANDOM_STRING>.p1.openshiftapps.com - Click on 'Register application' ...
  5. 在輸出URL中開啟,以您 GitHub 組織<GITHUB_ORG_NAME>的名稱取代。

  6. 在 GitHub 網頁上,選擇 [註冊應用程式] 以在 GitHub 組織中註冊新的OAuth應用程式。

  7. 執行下列命令,使用 GitHub OAuth頁面中的資訊來填入剩餘的rosa create idp互動式提示。取代<GITHUB_CLIENT_ID><GITHUB_CLIENT_SECRET>使用 GitHub OAuth應用程式中的認證。

    ... ? Client ID: <GITHUB_CLIENT_ID> ? Client Secret: [? for help] <GITHUB_CLIENT_SECRET> ? GitHub Enterprise Hostname (optional): ? Mapping method: claim I: Configuring IDP for cluster '<CLUSTER_NAME>' I: Identity Provider 'github-1' has been created. It will take up to 1 minute for this configuration to be enabled. To add cluster administrators, see 'rosa grant user --help'. To login into the console, open https://console-openshift-console.apps.<CLUSTER_NAME>.<RANDOM_STRING>.p1.openshiftapps.com and click on github-1.
    注意

    身分識別提供者組態可能需要大約兩分鐘的時間才會變成作用中狀態。如果您設定了cluster-admin使用者,則可以執行oc get pods -n openshift-authentication --watch以觀看使用更新的組態重新部署OAuth網繭。

  8. 確認身分識別提供者已正確設定。

    rosa list idps --cluster=<CLUSTER_NAME>

授與使用者存取 叢集

您可以授予使用者存取 叢集 將它們新增至已設定的身分識別提供者。

下列程序會將使用者新增至已設定為識別佈建的 GitHub 組織至叢集。

  1. 導航到網站並登錄到您的帳戶。 GitHub

  2. 邀請有需要的使用者 叢集 存取您的 GitHub 組織。如需詳細資訊,請參閱 GitHub 文件中的邀請使用者加入您的組織

設定cluster-admin權限

  1. 執行下列命令以授與cluster-admin權限。將<IDP_USER_NAME>和取代為您<CLUSTER_NAME>的使用者和叢集名稱。

    rosa grant user cluster-admin --user=<IDP_USER_NAME> --cluster=<CLUSTER_NAME>
  2. 確認使用者是否列為cluster-admins群組的成員。

    rosa list users --cluster=<CLUSTER_NAME>

設定dedicated-admin權限

  1. 使用以下命令授予dedicated-admin權限。替換<IDP_USER_NAME><CLUSTER_NAME>的用戶和 叢集 通過運行以下命令來命名。

    rosa grant user dedicated-admin --user=<IDP_USER_NAME> --cluster=<CLUSTER_NAME>
  2. 確認使用者是否列為cluster-admins群組的成員。

    rosa list users --cluster=<CLUSTER_NAME>

訪問一個 叢集 透過 Red Hat 混合式雲端主控台

登錄到您的 叢集 透過 Red Hat 混合式雲端主控台。

  1. 取得您的主控台 URL 叢集 使用下面的命令。替<CLUSTER_NAME>換為您的名稱 叢集.

    rosa describe cluster -c <CLUSTER_NAME> | grep Console
  2. 導航到輸出URL中的控制台並登錄。

    在 [使用... 登入] 對話方塊中,選擇身分識別提供者名稱,並完成提供者提出的任何授權要求。

從開發人員目錄部署應用程式

您可以從 Red Hat 混合式雲端主控台部署開發人員目錄測試應用程式,並以路由公開。

  1. 瀏覽至 Red Hat 混合式雲端主控台,然後選擇您要部署應用程式的叢集。

  2. 在叢集頁面上,選擇 [開啟主控台]。

  3. 在「管理員」觀點中,選擇「首頁 > 案 > 建立專案」。

  4. 輸入專案的名稱,並選擇性地新增「顯示名稱」與「摘要」。

  5. 選擇 [建立] 以建立專案。

  6. 切換到開發人員視角,然後選擇 + 添加。請確定選取的專案是剛建立的專案。

  7. 開發人員目錄對話框中,選擇所有服務

  8. 在「開發人員目錄」頁面中,JavaScript從選單中選擇語言 >。

  9. 選擇 Node.js,然後選擇建立應用程式,開啟「建立來源到影像的應用程式」頁面。

    注意

    您可能需要選擇「清除所有篩選器」才能顯示 Node.js 選項。

  10. 在「Git」區段中,選擇「試用範例」。

  11. 在「名」欄位中,新增唯一名稱。

  12. 選擇 Create (建立)。

    注意

    新的應用程式需要幾分鐘的時間來部署。

  13. 部署完成時,請選擇應用程式URL的路由。

    瀏覽器中會開啟一個新標籤,其中包含類似下列內容的訊息。

    Welcome to your Node.js application on OpenShift
  14. (選擇性) 刪除應用程式並清理資源:

    1. 在「管理員」觀點中,選擇「首頁 > 專案」。

    2. 開啟專案的動作功能表,然後選擇 [刪除專案]。

撤銷使用者的cluster-admin權限

  1. 使用下列命令撤銷cluster-admin權限。替換<IDP_USER_NAME><CLUSTER_NAME>的用戶和 叢集 名稱。

    rosa revoke user cluster-admin --user=<IDP_USER_NAME> --cluster=<CLUSTER_NAME>
  2. 確認使用者未列為cluster-admins群組成員。

    rosa list users --cluster=<CLUSTER_NAME>

撤銷使用者的dedicated-admin權限

  1. 使用下列命令撤銷dedicated-admin權限。替換<IDP_USER_NAME><CLUSTER_NAME>的用戶和 叢集 名稱。

    rosa revoke user dedicated-admin --user=<IDP_USER_NAME> --cluster=<CLUSTER_NAME>
  2. 確認使用者未列為dedicated-admins群組成員。

    rosa list users --cluster=<CLUSTER_NAME>

撤銷使用者存取 叢集

您可以撤銷 叢集 透過將身分識別提供者使用者從設定的身分識別提供者中移除,以存取

您可以設定不同類型的身分識別提供者 叢集。 撤銷以下程序 叢集 組織成員的存取 GitHub 權。

  1. 導航到網站並登錄到您的帳戶。 GitHub

  2. 從您的 GitHub 組織中移除使用者。如需詳細資訊,請參閱 GitHub 文件中的從組織移除成員

刪除叢集和 AWS STS resources

您可以使用 ROSA CLI若要刪除 叢集 使用 AWS Security Token Service (AWS STS). 您也可以使用 ROSA CLI若要刪除 IAM 建立OIDC者的角色和提供者 ROSA。 若要刪除 IAM 策略建立者 ROSA,您可以使用 IAM 控制台。

注意

IAM 由建立的角色和策略 ROSA 可能被其他人使用 ROSA 同一帳戶中的叢集。

  1. 刪除 叢集 並觀看日誌。替<CLUSTER_NAME>換為您的姓名或 ID 叢集.

    rosa delete cluster --cluster=<CLUSTER_NAME> --watch
    重要

    您必須等待 叢集 在刪除之前完全刪除 IAM 角色、策略和OIDC提供者。需要帳號IAM角色才能刪除安裝程式建立的資源。操作員IAM角色需要清理 OpenShift 操作員創建的資源。運營商使用OIDC提供程序進行身份驗證。

  2. 刪除OIDC提供者 叢集 運營商用於通過運行以下命令進行身份驗證。

    rosa delete oidc-provider -c <CLUSTER_ID> --mode auto
  3. 刪除叢集特定的運算子 IAM 角色。

    rosa delete operator-roles -c <CLUSTER_ID> --mode auto
  4. 使用下列命令刪除帳號IAM角色。以要刪除之帳號IAM角色的前置詞取<PREFIX>代。如果您在建立帳號IAM角色時指定了自訂前置詞,請指定預設ManagedOpenShift前置詞。

    rosa delete account-roles --prefix <PREFIX> --mode auto
  5. 刪除 IAM 策略建立者 ROSA.

    1. 登入 IAM 控制台

    2. 在 [存取管理] 下的左側功能表中,選擇 [原則]。

    3. 選取您要刪除的策略,然後選擇 [動作] > [刪除]。

    4. 輸入策略名稱,然後選擇「刪除」。

    5. 重複此步驟,以刪除 IAM 叢集.