使用 Universal 安装工具在 GCP 上部署 DC/OS
使用 Universal 安装工具在 GCP 上的 DC/OS 指南
您可以使用 Universal 安装工具在 Google Cloud Platform (GCP) 上创建 DC/OS 群集,进行评估或生产部署。GCP 上的 Universal 安装工具 安装方法受到 Mesosphere 官方支持。使用此安装方法还支持升级。
如果您不熟悉 Terraform,并想以最少的配置或自定义在 GCP 上部署 DC/OS,以下任务概括了基本安装过程:
- 在 GCP 上创建开源 DC/OS 群集。
- 扩展群集以增加部署的节点数。
- 升级群集以使用更新版本的 DC/OS。
- 销毁群集和所有与其相关的 GCP 资源。
先决条件
- Terraform
- 云凭据
- SSH 密钥
安装 Terraform
- 访问 Terraform 下载页,获得适用于 Linux、macOS 和 Windows 的捆绑安装和支持。
如果您在安装了 Homebrew 的 Mac 环境中,只需运行以下命令:
```bash
brew install terraform
```
已安装 Chocolatey 的 Windows 用户,请运行:
```bash
choco install terraform -y
```
获取用于认证的应用程序默认凭据
您必须有 应用程序默认凭据 以便 GCP 提供程序对 GCP 进行认证。
要接收应用程序默认凭据:
- 运行以下命令:
$ gcloud auth application-default login
- 通过运行以下命令验证您是否有应用程序默认凭据:
$ gcloud auth application-default print-access-token
EXMAPLE.EXAMPLE-1llO--ZEvh6gQ-qhpL0I3gHcCeDKG_EXAMPLE7WtAepmpp47c0RCv9e0Oq6QnpQ79RZlHKzOw69XMxI87M2Q
设置 GCP 默认区域和项目
GCP 提供程序要求您将区域 (desired-gcp-region
) 和项目 (desired-gcp-project
) 标识符导出到环境变量中,即使这些值在 gcloud-cli
中设置。例如:
export GOOGLE_REGION="us-west1"
export GOOGLE_PROJECT="production-123"
您可以通过运行以下命令验证区域和项目设置:
> echo $GOOGLE_REGION
us-west1
> echo $GOOGLE_PROJECT
production-123
验证您有企业版的许可证密钥
DC/OS 企业版还需要由 Mesosphere 提供的有效许可证密钥,该密钥将作为 dcos_license_key_contents
传递到 main.tf
配置文件中。使用默认超级用户和密码登录:
用户名:bootstrapuser
密码:deleteme
重要信息:您不应在生产环境中使用默认凭据。当您创建或确定用于生产环境的管理帐户时,还需要为该帐户生成密码哈希值。
创建群集
创建本地文件夹。
mkdir dcos-tf-gcp-demo && cd dcos-tf-gcp-demo
将以下示例代码复制并粘贴到新文件中,并将其保存为本地文件夹中的
main.tf
。下面的示例代码在 GCP 上创建一个 DC/OS OSS 1.11.7 群集,其中包括:
- 1 个管理节点
- 2 个专用代理
- 1 个公共代理
该示例还指定在群集创建完成后,应打印以下输出:
masters-ips
- 列出 DC/OS 管理节点。cluster-address
- 指定在设置群集后用来访问 DC/OS UI 的 URL。public-agent-loadbalancer
- 指定您的公共可路由服务的 URL。
variable "dcos_install_mode" {
description = "specifies which type of command to execute. Options: install or upgrade"
default = "install"
}
module "dcos" {
source = "dcos-terraform/dcos/gcp"
cluster_name = "my-open-dcos"
ssh_public_key_file = "~/.ssh/id_rsa.pub"
num_masters = "1"
num_private_agents = "2"
num_public_agents = "1"
dcos_version = "1.11.7"
# dcos_variant = "ee"
# dcos_license_key_contents = "${file("./license.txt")}"
dcos_variant = "open"
dcos_install_mode = "${var.dcos_install_mode}"
}
output "masters-ips" {
value = "${module.dcos.masters-ips}"
}
output "cluster-address" {
value = "${module.dcos.masters-loadbalancer}"
}
output "public-agents-loadbalancer" {
value = "${module.dcos.public-agents-loadbalancer}"
}
在本示例中,为了简化操作,配置值为硬编码。如果您有所需的群集名称或管理/代理节点数,则可以直接在
main.tf
配置文件中调节这些值。您可以 在此 查找其他输入变量及其描述。
如果需要,更改到您刚才创建
main.tf
文件所在的dcos-tf-gcp-demo
文件夹。cd dcos-tf-gcp-demo
初始化 Terraform 模块。
terraform init
您应该看到类似以下内容的确认消息:
运行该执行计划并将其保存到静态文件中。例如,将输出保存在
plan.out
文件中。terraform plan -out=plan.out
将执行计划写入文件让您将执行计划传递给
apply
命令,并保证计划的准确性。每次运行terraform plan
命令,其输出都提供关于该计划将会添加、更改或销毁的资源的详细信息。由于本示例安装创建第一个 DC/OS 群集,输出表明执行该计划添加了 38 件基础架构/资源。在
dcos-tf-gcp-demo
文件夹中的main.tf
文件旁边创建了计划输出文件。但是,此文件 只能 由 Terraform 读取。与以下类似的消息确认您已成功将执行计划保存到
plan.out
文件。运行以下命令来部署构建群集的计划:
terraform apply plan.out
在 Terraform 完成应用计划后,您应该看到类似于下面的输出:
祝贺您!
您以最少的配置或自定义在 GCP 上成功安装了 DC/OS 群集。从这里,您可以登录以开始使用新群集。
登录后,将会显示 DC/OS 仪表板。
有关使用更多高级配置选项在 GCP 上创建群集的更多信息,请参阅 高级 GCP 群集配置选项。
扩展群集
在创建初始群集后,TerraForm 很容易扩展您的群集以添加更多代理(公共或专用)。使用以下操作说明。
增加您的
main.tf
文件中的num_private_agents
和/或num_public_agents
的值。在此示例中,您将群集从two
个专用代理扩展到three
个专用代理。variable "dcos_install_mode" {
description = "specifies which type of command to execute. Options: install or upgrade"
default = "install"
}
module "dcos" {
source = "dcos-terraform/dcos/gcp"
cluster_name = "my-open-dcos"
ssh_public_key_file = "~/.ssh/id_rsa.pub"
num_masters = "1"
num_private_agents = "3"
num_public_agents = "1"
dcos_version = "1.11.7"
# dcos_variant = "ee"
# dcos_license_key_contents = "${file("./license.txt")}"
dcos_variant = "open"
dcos_install_mode = "${var.dcos_install_mode}"
}
output "masters-ips" {
value = "${module.dcos.masters-ips}"
}
output "cluster-address" {
value = "${module.dcos.masters-loadbalancer}"
}
output "public-agents-loadbalancer" {
value = "${module.dcos.public-agents-loadbalancer}"
}
通过您对
main.tf
配置文件做出的更改,重新运行新执行计划。terraform plan -out=plan.out
此步骤确保状态稳定,并确认您可以创建必要的资源,将专用代理扩展到所需的数量。执行该计划,会因扩展群集的专用代理,而添加以下资源:
一个实例资源
两个空资源,在后台处理 DC/OS 安装和先决条件。
您应该看到类似以下内容的消息:
运行以下命令,使 Terraform 部署新的资源集:
terraform apply plan.out
您应该看到类似以下内容的输出:
使用 DC/OS UI 检查您的 DC/OS 群集,确认添加了其他代理。
您应该看到总共连接了
four
个节点。例如:
升级群集
Terraform 还可以轻松地将 DC/OS 群集升级到更新版本的 DC/OS。
在官方 DC/OS 升级 文档中了解有关 Terraform 执行的升级程序的更多信息。
要执行升级:
- 打开
main.tf
配置文件。 - 将当前 DC/OS 版本 (
dcos_version
) 修改为1.11.8
并将dcos_install_mode
参数设置为upgrade
。
默认情况下,dcos_install_mode
参数值为 install
,使您能够创建初始 DC/OS 群集并进行扩展,而无需明确地设置其值。但是,要升级现有群集,您必须明确将参数值设置为 upgrade
。
重要信息:在执行升级时,不要更改管理节点、代理或公共节点的数量。
variable "dcos_install_mode" {
description = "specifies which type of command to execute. Options: install or upgrade"
default = "install"
}
data "http" "whatismyip" {
url = "http://whatismyip.akamai.com/"
}
module "dcos" {
source = "dcos-terraform/dcos/gcp"
cluster_name = "my-open-dcos"
ssh_public_key_file = "~/.ssh/id_rsa.pub"
admin_ips = ["${data.http.whatismyip.body}/32"]
num_masters = "1"
num_private_agents = "3"
num_public_agents = "1"
dcos_version = "1.11.8"
# dcos_variant = "ee"
# dcos_license_key_contents = "${file("./license.txt")}"
dcos_variant = "open"
dcos_install_mode = "${var.dcos_install_mode}"
}
output "masters-ips" {
value = "${module.dcos.masters-ips}"
}
output "cluster-address" {
value = "${module.dcos.masters-loadbalancer}"
}
output "public-agents-loadbalancer" {
value = "${module.dcos.public-agents-loadbalancer}"
}
- 重新运行新执行计划。
terraform plan -out=plan.out -var dcos_install_mode=upgrade
您应该看到类似以下内容的输出:
- 运行以下命令以应用计划。
terraform apply plan.out
- 使用 DC/OS UI 验证群集是否已升级。
维护群集
有关如何维护群集的说明,请遵循 维护 文档。
删除群集
如果想要销毁您的群集,请运行以下命令并等待其完成:
terraform destroy
注意:此命令将删除整个群集和所有其关联的资源。只有当您绝对确定不再需要访问您的群集时,才执行此命令。
如果您想要销毁群集,请输入 yes
。
GCP 上的高级 DC/OS
使用 Mesosphere Universal 安装工具在 GCP 上配置您的 DC/OS 安装…