建立使用的ROSA傳統叢集 AWS PrivateLink - Red Hat OpenShift Service on AWS

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

建立使用的ROSA傳統叢集 AWS PrivateLink

ROSA傳統叢集可以透過幾種不同的方式部署:公用、私有或私有 AWS PrivateLink。 如需有關ROSA傳統的更多資訊,請參閱建築模型。對於公共和私人 叢集 組態, OpenShift 叢集 可存取網際網路,並且在應用程式層的應用程式工作負載上設定隱私權。

如果您同時需要 叢集 並且應用程序工作負載是私有的,您可以配置 AWS PrivateLink 與ROSA經典。 AWS PrivateLink 是一種高可用性、可擴充的技術, ROSA 用於創建之間的私人連接 ROSA 中的服務和叢集資源 AWS 客戶帳戶。同 AWS PrivateLink,Red Hat 站台可靠性工程 (SRE) 團隊可以使用連線至叢集的私有子網路,存取叢集以取得支援和補救目的 AWS PrivateLink 端點。

如需關於 AWS PrivateLink,請參閱什麼是 AWS PrivateLink?

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

建立 Amazon VPC 架構

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

重要

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

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區塊]。

    注意

    ROSA 客戶要求每個用於建立叢集的可用區域至少設定一個私有子網路。

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

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

  12. 保持選取預設DNS選項。 ROSA DNS需要VPC.

  13. 選擇 [建立] 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,並指定應在其中建立資源的可用區域。

    重要

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

    注意

    一些 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. 為輸出流量建立網際網路閘道和路由表。為私人流量建立路由表和彈性 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
  8. 儲存IDs在環境變數中。

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

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

    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
  11. 建立NAT閘道並將其與彈性 IP 位址建立關聯,以啟用通往私有子網路的流量。

    aws ec2 create-nat-gateway \ --subnet-id $PUBLIC_SUB \ --allocation-id $EIP \ --query NatGateway.NatGatewayId \ --output text
  12. 將私人路由表與私人子網路產生關聯,並設定要路由到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
  13. (選擇性) 對於異地同步備份部署,請重複上述步驟,以使用公有和私有子網路設定另外兩個可用區域。

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

下列程序使用rosa create cluster指令建立ROSA傳統 叢集。 若要建立異地同步備份 叢集,在命令--multi-az中指定,然後選取您要在出現提示時使用的私人子網路IDs。

注意

如果您使用防火牆,則必須對其進行配置,以便 ROSA 可以訪問它需要發揮作用的網站。

如需詳細資訊,請參閱 AWS Red Hat OpenShift 文件中的防火牆必要條件。

  1. 創建所需的 IAM 使用或的帳號角色和策--mode auto--mode manual

    • rosa create account-roles --classic --mode auto
    • rosa create account-roles --classic --mode manual
      注意

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

  2. 創建一個 叢集 執行下列其中一個指令。

    • 單一可用區

      rosa create cluster --private-link --cluster-name=<CLUSTER_NAME> --machine-cidr=10.0.0.0/16 --subnet-ids=<PRIVATE_SUBNET_ID>
    • Multi-AZ

      rosa create cluster --private-link --multi-az --cluster-name=<CLUSTER_NAME> --machine-cidr=10.0.0.0/16
      注意

      若要建立使用的叢集 AWS PrivateLink 取代為 AWS Security Token Service (AWS STS) 短暫的認證,附--sts --mode manual--sts --mode autorosa create cluster命令的結尾。

  3. 創建 叢集 operator IAM 按照交互式提示進行角色。

    rosa create operator-roles --interactive -c <CLUSTER_NAME>
  4. 創建 OpenID Connect(OIDC)提供程序 叢集 操作員用於驗證。

    rosa create oidc-provider --interactive -c <CLUSTER_NAME>
  5. 檢查您的狀態 叢集.

    rosa describe cluster -c <CLUSTER_NAME>
    注意

    最多可能需要 40 分鐘 叢集 State顯示ready狀態的欄位。如果佈建失敗或ready在 40 分鐘後未顯示,請參閱故障診斷。要聯繫 AWS Support 或 Red Hat 支援以尋求協助,請參閱獲得 ROSA 支持

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

    rosa logs install -c <CLUSTER_NAME> --watch

使用的叢集 AWS PrivateLink 在中創建一個公共託管區域和私有託管區域 Route 53。 內的記錄 Route 53 私有託管區域只能從其分配到VPC的內部解析。

Let's Encrypt DNS -01 驗證需要一個公共區域,以便為域發行有效和公開信任的證書。驗證記錄會在「讓我們加密」驗證完成後刪除。發行和續訂這些憑證仍需要該區域,通常每 60 天需要一次。雖然這些區域通常顯示為空白,但公用區域在驗證程序中扮演重要角色。

如需關於 AWS 私人託管區域,請參閱使用私有區域。如需有關公用託管區域的詳細資訊,請參閱使用公有託管區域

  1. 若要允許以外的記錄 (例*.apps.<cluster_domain>api.<cluster_domain>和解析)VPC,請設定 Route 53 Resolver 入站端點

    注意

    設定輸入端點時,您必須至少指定兩個 IP 位址以進行備援。建議您至少在兩個可用區域中指定 IP 地址。您可以在那些或其他可用區域選擇性指定其他 IP 地址。

  2. 設定輸入端點時,請選取建立叢集時使用的VPC和私人子網路。

之後 Route 53 Resolver 內部端點已關聯且正常運作,請設定DNS轉送,以便您網路上的指定伺服器可以處理DNS查詢。

  1. 將您的公司網路設定為將DNS查詢轉寄至頂層網域的 IP 位址,例如drow-pl-01.htno.p1.openshiftapps.com

  2. 如果您要將DNS查詢從一個轉寄VPC到另一個VPC,請依照管理轉寄規則中的指示操作。

  3. 如果您要設定遠端網路DNS伺服器,請參閱特定DNS伺服器說明文件,為已安裝的叢集網域設定選擇性DNS轉送。

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

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

重要

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

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

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

  2. 如果您沒有 GitHub 組織可用於您的身分佈建 ROSA 叢集,建立一個。如需詳細資訊,請參閱 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 OAuth應<GITHUB_CLIENT_SECRET>用程式中的認證。

    ... ? 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 文件中的邀請使用者加入您的組織

  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>
  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 混合式雲端主控台。

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

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

    • 如果您已建立使用cluster-admin者,請使用提供的認證登入。

    • 如果您已為您設定身分識別提供者 叢集,在 [使用... 登入] 對話方塊中選擇身分識別提供者名稱,並完成您的提供者提出的任何授權要求。

您可以從 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. 開啟專案的動作功能表,然後選擇 [刪除專案]。

  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>
  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 文件中的從組織移除成員

您可以使用 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 叢集.