GCP 上使用通用安装工具的 DC/OS

使用 Universal 安装工具在 GCP 上的 DC/OS 指南

您可以使用 Universal 安装工具在 Google Cloud Platform (GCP) 上创建 DC/OS 群集,进行评估或生产部署。GCP 上的 Universal 安装工具 安装方法受到 Mesosphere 官方支持。使用此安装方法也支持升级。

如果您不熟悉 Terraform,并想以最少的配置或自定义在 GCP 上部署 DC/OS,以下任务概括了基本安装过程:

  1. 在 GCP 上创建开源 DC/OS 群集。
  2. 扩展群集以增加部署的节点数。
  3. 升级群集以使用更新版本的 DC/OS。
  4. 销毁群集和所有与其相关的 GCP 资源。

先决条件

  • Terraform
  • 云凭据
  • SSH 密钥

使用 Terraform 安装

访问 Terraform 下载页,获得适用于 Linux、macOS 和 Windows 的捆绑安装和支持。

如果您在安装了 Homebrew 的 Mac 环境中,只需运行以下命令:

  1. brew install terraform

已安装 Chocolatey 的 Windows 用户,请运行:

  1. choco install terraform -y

获取用于认证的应用程序默认凭据

您必须有 应用程序默认凭据 以便 GCP 提供程序对 GCP 进行认证。

要接收应用程序默认凭据:

  1. 运行以下命令:

    1. gcloud auth application-default login
  2. 通过运行以下命令验证您是否有应用程序默认凭据:

    1. gcloud auth application-default print-access-token
    2. EXMAPLE.EXAMPLE-1llO--ZEvh6gQ-qhpL0I3gHcCeDKG_EXAMPLE7WtAepmpp47c0RCv9e0Oq6QnpQ79RZlHKzOw69XMxI87M2Q

设置 GCP 默认区域和项目

GCP 提供程序要求您将区域 (desired-gcp-region) 和项目 (desired-gcp-project) 标识符导出到环境变量中,即使这些值在 gcloud-cli 中设置。例如:

  1. export GOOGLE_REGION="us-west1"
  2. export GOOGLE_PROJECT="production-123"

您可以通过运行以下命令验证区域和项目设置:

  1. > echo $GOOGLE_REGION
  2. us-west1
  3. > echo $GOOGLE_PROJECT
  4. production-123

验证您有企业版的许可证密钥

DC/OS 企业版还需要由 Mesosphere 提供的有效许可证密钥,该密钥将作为 dcos_license_key_contents 传递到 main.tf 配置文件中。使用默认超级用户和密码登录:

用户名:bootstrapuser
密码:deleteme

重要信息:您不应在生产环境中使用默认凭据。当您创建或确定用于生产环境的管理帐户时,还需要为该帐户生成密码哈希值。

创建群集

  1. 创建本地文件夹。

    1. mkdir dcos-tf-gcp-demo && cd dcos-tf-gcp-demo
  2. 将以下示例代码复制并粘贴到新文件中,并将其保存为本地文件夹中的 main.tf

    下面的示例代码在 GCP 上创建一个 DC/OS OSS 1.12.0 群集,其中包括:

    • 1 个管理节点
    • 2 个专用代理
    • 1 个公共代理

    该示例还指定在群集创建完成后,应打印以下输出:

    • masters-ips - 列出 DC/OS 管理节点。

    • cluster-address - 指定在设置群集后用来访问 DC/OS UI 的 URL。

    • public-agent-loadbalancer - 指定您的公共可路由服务的 URL。

      1. provider "google" {
      2. version = "~> 1.18.0"
      3. }
      4. # Used to determine your public IP for forwarding rules
      5. data "http" "whatismyip" {
      6. url = "http://whatismyip.akamai.com/"
      7. }
      8. variable "dcos_install_mode" {
      9. description = "specifies which type of command to execute. Options: install or upgrade"
      10. default = "install"
      11. }
      12. module "dcos" {
      13. source = "dcos-terraform/dcos/gcp"
      14. version = "~> 0.1.0"
      15. cluster_name = "my-open-dcos"
      16. ssh_public_key_file = "~/.ssh/id_rsa.pub"
      17. admin_ips = ["${data.http.whatismyip.body}/32"]
      18. num_masters = "1"
      19. num_private_agents = "2"
      20. num_public_agents = "1"
      21. dcos_version = "1.12.0"
      22. providers = {
      23. google = "google"
      24. }
      25. # dcos_variant = "ee"
      26. # dcos_license_key_contents = "${file("./license.txt")}"
      27. dcos_variant = "open"
      28. dcos_install_mode = "${var.dcos_install_mode}"
      29. }
      30. output "masters-ips" {
      31. value = "${module.dcos.masters-ips}"
      32. }
      33. output "cluster-address" {
      34. value = "${module.dcos.masters-loadbalancer}"
      35. }
      36. output "public-agents-loadbalancer" {
      37. value = "${module.dcos.public-agents-loadbalancer}"
      38. }
  1. 在本示例中,为了简化操作,配置值为硬编码。如果您有所需的群集名称或管理/代理节点数,则可以直接在 `main.tf` 配置文件中调节这些值。
  2. 您可以 [在此]($de6efe83a62b39ee.md) 查找其他输入变量及其描述。
  1. 如果需要,更改到您刚才创建的 main.tf 文件所在的 dcos-tf-gcp-demo 文件夹。

    1. cd dcos-tf-gcp-demo
  2. 初始化 Terraform 模块。

    1. terraform init

    您应该看到类似以下内容的确认消息:

    GCP - 图1

  3. 运行该执行计划并将其保存到静态文件中。例如,将输出保存在 plan.out 文件中。

    1. terraform plan -out=plan.out

    将执行计划写入文件让您将执行计划传递给 apply 命令,并保证计划的准确性。每次运行 terraform plan 命令,其输出都提供关于该计划将会添加、更改或销毁的资源的详细信息。由于本示例安装创建第一个 DC/OS 群集,输出表明执行该计划添加了 38 件基础架构/资源。

    dcos-tf-gcp-demo 文件夹中的 main.tf 文件旁边创建了计划输出文件。但是,此文件 只能 由 Terraform 读取。

    与以下类似的消息确认您已成功将执行计划保存到 plan.out 文件。

    GCP - 图2

  4. 运行以下命令来部署构建群集的计划:

    1. terraform apply plan.out

    在 Terraform 完成应用计划后,您应该看到类似于下面的输出:

    GCP - 图3

祝贺您!

您以最少的配置或自定义在 GCP 上成功安装了 DC/OS 群集。从这里,您可以登录以开始使用新群集。

GCP - 图4

登录后,将会显示 DC/OS 仪表板。

GCP - 图5

有关使用更多高级配置选项在 GCP 上创建群集的更多信息,请参阅 高级 GCP 群集配置选项

扩展群集

在创建初始群集后,TerraForm 很容易扩展您的群集以添加更多代理(公共或专用)。使用以下操作说明。

  1. 增加您的 main.tf 文件中的 num_private_agents 和/或 num_public_agents 的值。在此示例中,您将群集从 two 个专用代理扩展到 three 个专用代理。

    1. provider "google" {
    2. version = "~> 1.18.0"
    3. }
    4. variable "dcos_install_mode" {
    5. description = "specifies which type of command to execute. Options: install or upgrade"
    6. default = "install"
    7. }
    8. data "http" "whatismyip" {
    9. url = "http://whatismyip.akamai.com/"
    10. }
    11. module "dcos" {
    12. source = "dcos-terraform/dcos/gcp"
    13. cluster_name = "my-open-dcos"
    14. ssh_public_key_file = "~/.ssh/id_rsa.pub"
    15. admin_ips = ["${data.http.whatismyip.body}/32"]
    16. num_masters = "1"
    17. num_private_agents = "3"
    18. num_public_agents = "1"
    19. dcos_version = "1.12.0"
    20. providers = {
    21. google = "google"
    22. }
    23. # dcos_variant = "ee"
    24. # dcos_license_key_contents = "${file("./license.txt")}"
    25. dcos_variant = "open"
    26. dcos_install_mode = "${var.dcos_install_mode}"
    27. }
    28. output "masters-ips" {
    29. value = "${module.dcos.masters-ips}"
    30. }
    31. output "cluster-address" {
    32. value = "${module.dcos.masters-loadbalancer}"
    33. }
    34. output "public-agents-loadbalancer" {
    35. value = "${module.dcos.public-agents-loadbalancer}"
    36. }
  2. 通过您对 main.tf 配置文件做出的更改,重新运行新执行计划。

    1. terraform plan -out=plan.out

    此步骤确保状态稳定,并确认您可以创建必要的资源,将专用代理扩展到所需的数量。执行该计划,会因扩展群集的专用代理,而添加以下资源:

    • 一个实例资源
    • 两个空资源,在后台处理 DC/OS 安装和先决条件。

    您应该看到类似以下内容的消息:

    GCP - 图6

  3. 运行以下命令,使 Terraform 部署新的资源集:

    1. terraform apply plan.out

    您应该看到类似以下内容的输出:

    GCP - 图7

  4. 使用 DC/OS UI 检查您的 DC/OS 群集,确认添加了其他代理。

    您应该看到总共连接了 four 个节点。例如:

    GCP - 图8

升级群集

Terraform 还可以轻松地将 DC/OS 群集升级到更新版本的 DC/OS。

在官方 DC/OS 升级 文档中了解有关 Terraform 执行的升级程序的更多信息。

要执行升级:

  1. 打开 main.tf 配置文件。

  2. 将当前 DC/OS 版本 (dcos_version) 修改为 1.12.1 并将 dcos_install_mode 参数设置为 upgrade

    默认情况下,dcos_install_mode 参数值为 install,使您能够创建初始 DC/OS 群集并进行扩展,而无需明确地设置其值。但是,要升级现有群集,您必须明确将参数值设置为 upgrade

    重要信息:在执行升级时,不要更改管理节点、代理或公共节点的数量。

    1. provider "google" {
    2. version = "~> 1.18.0"
    3. }
    4. variable "dcos_install_mode" {
    5. description = "specifies which type of command to execute. Options: install or upgrade"
    6. default = "install"
    7. }
    8. data "http" "whatismyip" {
    9. url = "http://whatismyip.akamai.com/"
    10. }
    11. module "dcos" {
    12. source = "dcos-terraform/dcos/gcp"
    13. cluster_name = "my-open-dcos"
    14. ssh_public_key_file = "~/.ssh/id_rsa.pub"
    15. admin_ips = ["${data.http.whatismyip.body}/32"]
    16. num_masters = "1"
    17. num_private_agents = "3"
    18. num_public_agents = "1"
    19. dcos_version = "1.12.1"
    20. providers = {
    21. google = "google"
    22. }
    23. # dcos_variant = "ee"
    24. # dcos_license_key_contents = "${file("./license.txt")}"
    25. dcos_variant = "open"
    26. dcos_install_mode = "${var.dcos_install_mode}"
    27. }
    28. output "masters-ips" {
    29. value = "${module.dcos.masters-ips}"
    30. }
    31. output "cluster-address" {
    32. value = "${module.dcos.masters-loadbalancer}"
    33. }
    34. output "public-agents-loadbalancer" {
    35. value = "${module.dcos.public-agents-loadbalancer}"
    36. }
  3. 重新运行新执行计划。

    1. terraform plan -out=plan.out -var dcos_install_mode=upgrade

    您应该看到类似以下内容的输出:

    GCP - 图9

  4. 运行以下命令以应用计划。

    1. terraform apply plan.out
  5. 使用 DC/OS UI 验证群集是否已升级。

GCP - 图10

维护群集

有关如何维护群集的说明,请遵循 维护 文档。

删除群集

如果想要销毁您的群集,请运行以下命令并等待其完成:

  1. terraform destroy

注意:此命令将删除整个群集和所有其关联的资源。只有当您绝对确定不再需要访问您的群集时,才执行此命令。

如果您想要销毁群集,请输入 yes

GCP - 图11

配置参考 - GCP

使用 Mesosphere Universal 安装工具在 GCP 上配置您的 DC/OS 安装…