注:

使用服务网关

简介

如果您是典型的 Oracle Cloud Infrastructure 客户,则您的虚拟云网络 (VCN) 中可能有需要访问 Oracle Cloud Infrastructure Object Storage 服务的资源,该服务具有可公开寻址的端点。到目前为止,您可以使用公共子网或 NAT 实例,在 VCN 中使用互联网网关访问服务。但是,由于隐私、安全或操作方面的考虑,您可能不希望使用这些选项。

通过启用以下功能,服务网关可缓解上述顾虑:

要点

建议使用 Chrome 或 Edge 作为中介。同时将浏览器缩放设置为 80%。

注意:屏幕快照可能与实际 UI 不同。

先决条件

  1. Oracle Cloud Infrastructure 账户身份证明(用户、密码、租户和区间)。

  2. OCI 培训

  3. 熟悉 OCI 控制台

  4. 网络概览

  5. 熟悉区间

  6. 连接到计算实例

登录到 OCI 控制台以创建对象存储桶和 VCN

  1. 使用您的云租户名称、用户名和密码登录到 Oracle Cloud Infrastructure 控制台。

  2. 从 OCI 服务菜单中,单击对象存储

    对象存储

  3. 在左侧导航窗格中的列表范围下方选择区间。

  4. 单击创建存储桶并填写对话框:

    • 存储桶名称:提供名称
    • 存储层:标准
    • 加密:使用 ORACLE-MANAGED KEYS 压缩
  5. 单击创建存储桶

  6. 单击工具栏中的“Apps(应用程序)”图标,然后选择 Git-Bash。

    Git-Bash

    或者,打开终端窗口以运行 Git 命令。

  7. 将目录更改为 "Downloads"(下载)文件夹。输入命令:

    $ cd /c/Users/PhotonUser/Downloads/
    

    更改目录命令

  8. 创建示例文件。输入命令:

    touch samplefile
    

    这应在 Downloads 文件夹中创建名为“samplefile”的文件。

  9. 切换到 OCI 控制台窗口,然后单击存储桶名称。

    提示:可以通过单击切换窗口在 OCI 控制台窗口和任何其他应用程序(例如 git-bash)之间进行交换。

    切换窗口图标

  10. 时段详细信息窗口应可见。单击上载对象

    “上载对象”按钮

  11. 单击上载对象。填写对话框:

    • OBJECT NAME PREFIX:提供前缀(可选)
    • 计算机中的自动文件:单击 Select File(选择文件),然后浏览到创建了“Sample File(示例文件)”的位置
  12. 选择该文件,然后单击对话框中的上载对象

    该文件应在对象下可见。

  13. 从 OCI 服务菜单中,单击网络下的虚拟云网络

    网络下的屏幕左侧的下拉菜单中选择区间,然后单击启动 VCN 向导

    注意:确保在“组件”列表中选择了正确的区间。

  14. 单击 VCN 与 Internet 连接,然后单击启动工作流

  15. 填写对话框,然后单击 Next

    • VCN 名称:提供名称
    • COMPARTMENT:确保已选择区间
    • VCN CIDR 块:提供 CIDR 块 (10.0.0.0/16)
    • PUBLIC SUBNET CIDR BLOCK:提供 CIDR 块 (10.0.1.0/24)
    • PRIVATE SUBNET CIDR BLOCK:提供 CIDR 块 (10.0.2.0/24)
  16. 验证所有信息并单击创建

    这将创建具有以下组件的 VCN:VCN、公共子网、专用子网、Internet 网关 (IG)、NAT 网关 (NAT) 和服务网关 (SG)。

  17. 单击查看虚拟云网络可显示您的 VCN 详细信息。

  18. 单击创建子网。填写对话框:

    • 名称:输入名称
    • 子网类型:区域
    • CIDR 块:输入 10.0.5.0/24
    • 路由表:选择默认路由表

    注意:对于生产部署,强烈建议创建单独的路由表。

    • 子网访问:选择 "Private Subnet"(专用子网)
    • DHCP 选项:选择默认设置
    • 安全列表:选择默认安全列表

    注意:对于生产部署,强烈建议创建单独的安全列表。

  19. 将其他所有选项保留为默认设置,然后单击 Create Subnet

    创建子网

创建 SSH 密钥,使用预安装的 OCI CLI 创建两个计算实例

  1. 单击工具栏中的“Apps(应用程序)”图标,然后选择 Git-Bash。

    应用程序图标

    或者,打开终端窗口以运行 Git 命令。

  2. 输入命令:

    ssh-keygen
    

    提示:可以通过单击“切换窗口”图标在 OCI 控制台窗口、git-bash 会话和任何其他应用程序(记事本等)之间进行交换。

    交换机图标窗口

  3. 在要求“输入要保存密钥的文件”、“已创建的目录”、“输入密码短语”和“再次输入密码短语”时,按 Enter 键。

    密码短语

  4. 现在,您应当具有公钥和私钥:

    /C/Users/ PhotonUser/.ssh/id_rsa(私钥)

    /C/Users/PhotonUser/.ssh/id_rsa.pub(公钥)

    注意:id_rsa.pub 用于创建计算实例,id_rsa 用于通过 SSH 连接到计算实例。

    提示:输入命令:

    cd /C/Users/PhotonUser/.ssh (No Spaces)
    

    然后:

    ls 
    
    

    验证这两个文件是否存在。

  5. 在 git-bash 中,输入命令:

    cat /C/Users/PhotonUser/.ssh/id_rsa.pub
    

    突出显示密钥并复制。

    密钥

  6. 单击“Apps(应用程序)”图标,启动记事本,然后将密钥粘贴到记事本中(作为备份)。

    记事本

  7. 切换到 OCI 控制台。从 OCI 服务菜单中,单击计算下的实例

  8. 单击创建实例。填写对话框:

    • 为实例命名:输入名称

    • 选择操作系统或映像源:单击更改映像源。在新窗口中,单击 Oracle Images 并选择 Oracle Cloud Developer Image。向下滚动,接受协议,然后单击选择图像

      Oracle 映像

    • 可用性域:选择可用性域

    • 实例类型:选择虚拟机

    • 实例配置:选择 VM 配置

    在“配置网络”下

    • 虚拟云网络区间:选择您的区间

    • 虚拟云网络:选择 VCN

    • 子网区间:选择区间

    • 子网:选择公共子网下的公共子网

    • 使用网络安全组控制流量:保留未选中状态

    • 分配公共 IP 地址:选中此选项

      分配公共 IP 地址

    • 引导卷:保留默认值

    • 添加 SSH 密钥:选择“粘贴 SSH 密钥”并粘贴之前保存的公钥。

  9. 单击创建

  10. 记下计算实例的公共 IP 地址。

  11. 预先列出的步骤后,创建第二个计算实例。单击计算下的实例

  12. 单击创建实例。填写对话框:

    • 名称:输入名称

    • 映像操作系统:单击更改映像源。在新窗口中,单击 Oracle 映像,然后选择 Oracle Cloud Developer Image。向下滚动,接受协议,然后单击选择图像

      选择图像

    • 可用性域:选择可用性域

    • 实例类型:选择虚拟机

    • 实例配置:选择 VM 配置

    在“配置网络”下

    • 虚拟云网络区间:选择您的区间
    • 虚拟云网络:选择 VCN
    • 子网区间:选择区间
    • 子网:选择专用子网下的专用子网
    • 使用网络安全组控制流量:保留未选中状态
    • 引导卷:保留默认值
    • 添加 SSH 密钥:选择“粘贴 SSH 密钥”并粘贴先前保存的公钥
  13. 单击创建

    注意:如果显示“服务限制”错误,请选择其他配置,例如 VM.Standard.E2.2 或 VM.Standard2.2。

  14. 实例处于运行状态后,单击实例名称并记下其专用 IP 地址

    专用 IP 地址

  15. 要通过 SSH 连接到专用实例,我们将使用 SSH 代理命令。此命令允许我们通过堡垒主机“隧道”连接到专用实例。

    建议不要在公共服务器上存储私有 SSH 密钥,例如堡垒主机(第一个计算实例)。

  16. 确保第二个计算具有第一个计算的公共 IP 和专用 IP。在 git-bash 窗口中,确保位于 /C/Users/PhotonUser/.ssh 目录中。输入命令:

    bash 
    ssh -t -o ProxyCommand='ssh -i <SSH_Private_Key_Name> opc@<FIRST_COMPUTE_PUBLIC_IP> -W %h:%p %r' -i <SSH_Private_Key_Name> opc@<SECOND_COMPUTE_PRIVATE_IP>   
    

    SSH 命令

  17. 在安全提示符处输入“Yes(是)”。

  18. 检查 oci CLI 安装的版本。输入命令:

    oci -v
    

    注意:版本应至少为 2.4.2X。

    OCI CLI 版本

  19. 接下来,我们将配置 OCI CLI。输入命令:

    oci setup config
    
  20. 接受默认目录位置。

    对于用户 OCI,请切换到 OCI 控制台窗口。依次单击“Human(人)”图标和用户名。在用户详细信息页面中,单击复制以复制 OCID。另请记下您的区域名称,如 OCI 控制台窗口中所示。将 OCID 粘贴到 SSH 会话中。

    用户详细信息页

  21. 重复此步骤以查找租户 OCID(单击“Human(人)”图标,然后单击租户名称)。将 SSH 会话中的租户 OCID 粘贴到计算实例,然后提供您的区域名称(例如 us-ashburn-1, us-phoneix-1)。

  22. 当询问是否要生成新的 RSA 密钥对?,请回答 Y。对于问题的其余部分,按 Enter 键接受默认值。

    RSA 密钥对提示

上载 API 密钥并验证功能

  1. oci setup config 还生成了一个 API 密钥。我们需要将此 API 密钥上载到我们的 OCI 账户以验证 API 调用。切换到 SSH 会话以计算实例以显示 API 密钥的内容。输入命令:

    cat ~/.oci/oci_api_key_public.pem
    
  2. 突出显示并复制 SSH 会话中的内容。切换到 OCI 控制台,单击“Human(人)”图标,后跟您的用户名。在用户详细信息页面中,单击添加公共密钥。在拨号框中,粘贴公共密钥内容,然后单击添加

    公共密钥

    “添加公共密钥”按钮

  3. 将生成新的指纹。切换到 git-bash 窗口并输入命令:

    cat /home/opc/.oci/config 
    

    将配置文件输出中的指纹与 OCI 控制台窗口中的指纹进行比较,并确保它们匹配。

    我们现在将对象上载到对象存储,然后从第二个计算实例访问对象存储。此下载内容将使用计算实例的公共 IP。

  4. 切换回 OCI 控制台窗口并导航到您的对象存储桶详细信息页面。请记下名称空间和对象存储名称。

    名称空间

  5. 切换到 git-bash 窗口(Sh 会话到第二个计算实例)并下载示例文件。输入命令:

    `bash oci os object get --namespace <NAME_SPACE> --bucket-name <BUCKET_NAME> --name samplefile --file ./
    

    提示:在此示例中,命令将为:oci os object get --namespace us_training --bucket-name Service-Gateway-Bucket --name samplefile --file ./samplefile

    OCI OS 对象获取命令

  6. 不会显示任何输出,也不会下载任何文件。输入 Ctrl+C 以终止命令。输入命令:

    ls
    

    并验证未下载样例文件。

    由于第二个计算实例上没有公共 IP,因此不能访问对象存储。接下来,我们将初始化路由表并重新下载文件。

  7. 切换到 OCI 控制台。从 OCI 服务菜单中,单击网络下的虚拟云网络。找到您的 VCN 并单击 VCN 名称以显示 VCN 详细信息。

  8. 单击路由表,然后单击 Default Route Table for <VCN_NAME>

    路由表

  9. 单击添加路由规则。填写对话框:

    • TARGET TYPE:服务网关
    • 测试服务:OCI IAD-ObjectStorage
    • COMPARTMENT:选择区间
    • TARGET SERVICE GATEWAY:选择之前创建的服务网关
  10. 单击添加路由规则。应创建新的路由条目。

    添加路由规则

  11. 在您的 VCN 中,单击安全列表,然后单击默认 <VCN_NAME> 安全列表。单击添加出站规则

  12. 添加以下出站规则;确保不选中 STATELESS 标志。

    • 终止类型:服务
    • 终止服务:OCI IAD 对象存储
    • 来源端口范围:所有
    • DESTINATION PORT RANGE:所有

    目标设置

  13. 单击添加出站规则

  14. 切换到 git-bash 窗口(通过 SSH 连接到第二个计算实例)。

  15. 重新输入下载命令:

    bash oci os object get --namespace <NAME_SPACE> --bucket-name <BUCKET_NAME> --name samplefile --file ./
    

    OCI OS 对象获取命令

使用服务网关,计算实例能够访问对象存储中存储的对象。这是使用 OCI 的专用主干网络而不是公共互联网完成的。

删除资源

作为练习,您需要弄清删除资源期间遇到的任何错误。

  1. 切换到 OCI 控制台窗口。

  2. 如果未显示计算实例,请在 OCI 服务菜单中单击计算下的实例

  3. 找到计算实例,单击“操作”图标,然后单击终止

    终止设置

  4. 确保选中永久删除附加的引导卷并单击终止实例。等待实例完全终止。

    “终止实例”按钮

  5. 重复这些步骤以删除第二个计算实例。

  6. 从 OCI 服务菜单中,单击网络下的虚拟云网络

    将显示所有 VCN 的列表。

  7. 找到您的 VCN,单击“操作”图标,然后单击终止。在确认窗口中单击全部删除。删除 VCN 后,单击关闭

    终止 VCN

  8. 从 OCI 服务菜单中,导航到 OBject Storage。单击存储桶名称。在对象下,您的文件应可见。单击“操作”图标(3 个垂直点)并单击删除以删除对象。

  9. 删除对象后,单击删除以删除存储桶。

致谢

更多学习资源

docs.oracle.com/learn 上浏览其他实验室,或者在 Oracle Learning YouTube 渠道上访问更多免费学习内容。此外,访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心