注:

创建 OCI DevOps 项目,为微服务设置权限和代码资料档案库

简介

这是六个部分教程系列的三个部分,其中展示了如何使用 Golang 微服务在 OKE 集群上部署一组临时资源,这些服务表示 OCI SDK、OCI-CLI、资源管理器、OCI DevOps 和 Helm 部署和销毁 Apache Airflow 的用法。

目标

在本教程中,您将了解如何创建 OCI DevOps 项目、微服务的设置权限和代码存储库。

先决条件

任务 1:创建动态组和策略

  1. 创建 DevOps 服务所需的动态组。有关详细信息,请参阅动态组

    • 使用以下匹配规则创建以下动态组:

      动态组 匹配规则
      DevOpsDynamicGroup 任何 {resource.type = 'devopsdeploypipeline',resource.type = 'devopsbuildpipeline',resource.type = 'devopsrepository',resource.type = 'devopsconnection'}
      DeployDynamicGroup 所有 {resource.type = ‘ devopsdeploypipeline ’}
      BuildPipelineDynamicGroup ALL {resource.type = 'devopsbuildpipeline'}
      ConnectionDynamicGroup ALL {resource.type = ‘ devopsconnection ’}
  2. 为您的 DevOps 用户创建一个用户组。有关更多信息,请参见用户组

    • 创建名为 oci-devops-users 的组。

    • 添加用于设置 OCI CLI 的用户,此用户将用于从微服务“go-microservice”与 OCI 进行交互。微服务将调用 OCI 资源来触发构建管道和 kubeconfig 创建。

    • 在本教程中,我们使用添加到“oci-devops-users”组的“devmaster”。

      T1_2

  3. 为 DevOps 服务创建策略。有关更多信息,请参见 IAM 策略

    • 创建名为 OCILabDeployPolicy 的策略。

      Allow dynamic-group DeployDynamicGroup to manage all-resources in oci-resource-manager-lab
      Allow dynamic-group BuildPipelineDynamicGroup to use devops-family in oci-resource-manager-lab
      Allow dynamic-group BuildPipelineDynamicGroup to manage repos in oci-resource-manager-lab
      Allow dynamic-group BuildPipelineDynamicGroup to manage all-artifacts in oci-resource-manager-lab
      
    • 创建名为 OCILabBuildPolicy 的策略。

      Allow dynamic-group BuildPipelineDynamicGroup to manage repos in compartment oci-resource-manager-lab  
      Allow dynamic-group BuildPipelineDynamicGroup to read secret-family in tenancy
      Allow dynamic-group BuildPipelineDynamicGroup to manage devops-family in compartment oci-resource-manager-lab
      Allow dynamic-group BuildPipelineDynamicGroup to manage all-artifacts in tenancy
      Allow dynamic-group BuildPipelineDynamicGroup to use ons-topics in compartment oci-resource-manager-lab
      Allow dynamic-group BuildPipelineDynamicGroup to read cluster-node-pools in compartment oci-resource-manager-lab
      Allow dynamic-group BuildPipelineDynamicGroup to use clusters in compartment oci-resource-manager-lab
      Allow dynamic-group BuildPipelineDynamicGroup to manage virtual-network-family in tenancy
      Allow group oci-devops-users to manage devops-family in compartment oci-resource-manager-lab
      Allow group oci-devops-users to manage repos in compartment oci-resource-manager-lab
      
    • 创建名为 ConnectionsPolicy 的策略。

      Allow dynamic-group ConnectionDynamicGroup to read secret-family in oci-resource-manager-lab
      

任务 2:设置 Vault 和注册表

  1. 为 Docker 映像和 Helm 图表创建以下 OCI 注册表。有关详细信息,请参阅 OCI 注册表

    资料档案库名称
    go-login(专用)
    go-microservice(专用)
    气流 - 机架/气流(专用)
    helm-go-login/chart-go-login(专用)
    helm-go-microservices/chart-go-microservice(专用)

    T1_2

    • 记下您的注册表 namespace ,以后需要这样做。

      T1_2

  2. 在用户上创建 AUTH TOKEN ,以便能够在 OCI 注册表上拉取/推送 Helm 图表。

    :我们已为组 oci-devops-users 提供 IAM 策略,用于管理区间 oci-resource-manager-lab 中的资料档案库。确保获得属于组 oci-devops-user 的用户。

    • 在 Oracle Cloud 控制台上转到您的用户页面。

      T2_2

    • 创建 AUTH 令牌并记下笔记。令牌仅显示一次。我们将此令牌安全地存储在 Vault 中,以供将来在 DevOps 构建管道上使用。

      T2_2

  3. 创建 Vault 并存储验证令牌和其他密钥。有关详细信息,请参阅 OCI Vault

    T2_3

    • 创建完成后,在 Vault 上单击并创建主加密密钥。

      T2_3

    • 单击密钥并添加以下密钥。

      密钥名称
      OCIRUser 注册名称空间/用户名
      OCIRToken auth_token_you_just_created

    提示:您需要从 OCI 注册表资料档案库获取名称空间。

    T2_3

任务 3:准备 OCI DevOps 项目

  1. 任何 OCI DevOps 项目都需要通知主题,因此必须先创建通知主题。要创建通知主题,请单击此处

    T3_1

  2. 创建新 DevOps 项目。要创建 DevOps 项目,请单击此处

    T3_2

    :切记单击启用日志以运行构建管道。

    T3_2

  3. 创建和设置微服务的代码资料档案库。本教程使用两种微服务。

    资料档案库名称 信息
    登录 用于生成 JWT 标记的 Golang 项目
    上微服务 使用 SDK 在 OCI 上调用资源的 Golang 代码
    • 代码已准备就绪,可在下面的后续步骤中下载。

    • 转到 DevOps 服务主页,选择开发人员服务,然后选择项目

      T3_3

    • 选择之前创建的 DevOps 项目,然后单击代码资料档案库

      T3_3

    • 单击创建资料档案库并创建用于登录的资料档案库。

      T3_3

    :重复步骤 3 并创建移动服务系统信息库。

  4. 在堡垒跳转箱上设置 GIT 凭证。您需要在堡垒虚拟机上设置 SSH 配置文件,以便能够克隆 git 系统信息库。转到堡垒跳箱 shell 并继续执行下面的说明。

    • 检查密钥是否存在(在 OCI CLI 设置期间创建了密钥)。

      ls -lrt ~/.oci
      

      T3_4

      注意:如果您已完成本教程系列上的前几步,如果没有,请按照说明设置 OCI CLI

    • 创建文件 ~/.ssh/config 并通过设置用户名和密钥位置包括内容。

      Host devops.scmservice.*.oci.oraclecloud.com
      User your_devops_user@your_tenant_name
      IdentityFile ~/.oci/oci_api_key.pem
      PubkeyAcceptedKeyTypes=+ssh-rsa
      
    • 修复 ~/.ssh/config 的权限。

      chmod 600 ~/.ssh/config
      

      T3_4

  5. 使用实验室 go-login 代码填充 OCI 资料档案库。

    • 通过单击“克隆”选项从您创建的资料档案库获取 URL。

      T3_4

    • 获取 go-login-package.zip 文件并将其解压缩到 OCI go-login 克隆的系统信息库位置。
      必须将字符串 YOUR_SSH_CLONE_URL 替换为上一步中从克隆选项获取的 URL。

      cd $HOME
      git clone <YOUR_SSH_CLONE_URL>
      cd go-login  
      wget https://docs.us.oracle.com/en/learn/resource-manager-airflow-oke-part3/files/go-login-package.zip
      unzip go-login-package.zip
      rm go-login-package.zip
      git add .
      git commit -m "initial load" 
      git push 
      

      T3_4
      T3_5

      这会将 go-login 代码上载到 OCI 中您自己的资料档案库。

  6. 使用实验室的移动微服务代码填充 OCI 资料档案库。

    • 通过单击“克隆”选项从您创建的资料档案库获取 URL。

      T3_6

    • 获取 go-microservice-package.zip 文件并将其解压缩到 OCI go-microservice 克隆的系统信息库位置。
      必须将字符串 YOUR_SSH_CLONE_URL 替换为上一步中从克隆选项获取的 URL。

      cd $HOME
      git clone <YOUR_SSH_CLONE_URL>
      cd go-microservice  
      wget https://docs.us.oracle.com/en/learn/resource-manager-airflow-oke-part3/files/go-microservice-package.zip
      unzip go-microservice-package.zip
      rm go-microservice-package.zip
      git add .
      git commit -m "initial load" 
      git push 
      

      T3_6
      T3_6
      T3_6

      这会将 go-microservice 代码上载到您自己的 OCI 资料档案库。

      T3_6

后续步骤

要继续执行此学习路径中的下一个教程,请单击此处

确认

更多学习资源

探索 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 频道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

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