要配置服务帐户并安装 Edge-LB 包,请遵照以下指令。
先决条件:
- 已安装 DC/OS CLI
- 您以超级用户身份登录。
- 已安装 DC/OS Enterprise CLI。
- 您有权限访问 远程 Edge-LB 软件库。
限制
- 目前,在 DC/OS 1.11 中,Edge-LB 仅适用于宽容模式的 DC/OS Enterprise,而在 DC/OS 1.11 安全模式中,适用于宽容或严格模式的 DC/OS Enterprise。它不适用于禁用模式。
添加 Edge-LB 包软件库
Edge-LB 包括两个组件:
- Edge-LB API 服务器
- Edge-LB 池
要安装 Edge-LB,您必须安装 Edge-LB API 服务器和 Edge-LB 池的 universe 软件库。Edge-LB API 服务器是管理一个或多个 Edge-LB 池的 RESTful API。每个 Edge-LB 池都是负载均衡器的集合。Edge-LB 池可用于启动负载均衡器的一个或多个实例,以创建单个高可用性负载均衡器。目前,Edge-LB 池仅支持 HAProxy 作为负载均衡器。
- 从 Mesosphere 服务支持页面下载每个软件库的工件。
- 当您拥有 Edge-LB API 服务器和 Edge-LB 池软件库的工件链接时,请使用以下命令将其添加到 universe 包软件库:
dcos package repo add --index=0 edgelb https://<insert download link>/stub-universe-edgelb.json
dcos package repo add --index=0 edgelb-pool https://<insert download link>/stub-universe-edgelb-pool.json
[企业]
部署包含 Edge-LB 的本地 Universe
[/企业]
如果您需要部署包含您自己软件包组合的本地 Universe,您必须构建一个自定义的本地 Universe Docker 镜像。以下指令基于 DC/OS universe 部署指令。
先决条件: Git。在 Unix/Linux 中,参阅这些 入门指令。
-
克隆 Universe 软件库:
git clone https://github.com/mesosphere/universe.git --branch version-3.x
-
构建
universe-base
镜像:cd universe/docker/local-universe/ sudo make base
-
从支持下载的站点获取 Edge-LB stub universe JSON 文件。请注意,需要有两个文件:
stub-universe-edgelb.json
stub-universe-edgelb-pool.json
- 要将 JSON 定义添加到 universe,请使用
add-stub-universe.sh
脚本。每次运行add-stub-universe.sh
脚本都将处理 JSON 文件,生成必要的 JSON 和 Mustache 文件,并将其添加到stub-repo/packages/<X>/<packagename>
.
bash add-stub-universe.sh -j stub-universe-edgelb.json
bash add-stub-universe.sh -j stub-universe-edgelb-pool.json
- 之后,可以将它们合并到主要
universe/repo/packages
目录:
cp -rpv stub-repo/packages/* ../../repo/packages
-
然后,您可以构建
mesosphere/universe
Docker 镜像并将其压缩至local-universe.tar.gz
文件。使用DCOS_PACKAGE_INCLUDE
变量指定包名称和版本的逗号分隔列表。要最大程度地减少容器尺寸和下载时间,您可以仅选择所需的内容。如果您不使用DCOS_PACKAGE_INCLUDE
变量,所有已认证的 Universe 包都会包含在内。要查看已认证的包,请单击 DC/OS Web 界面中的 目录 选项卡。sudo make DCOS_VERSION=1.11 DCOS_PACKAGE_INCLUDE=“edgelb:v1.1.3,edgelb-pool:stub-universe,<other-package>:<version>” local-universe
-
执行 部署包含已认证 Universe 包的本地 Universe 中所述的所有步骤。
创建服务帐户
Edge-LB API 服务器必须与服务帐户关联,以便它可以根据用户请求在公用节点和专用节点上启动 Edge-LB 池。
服务账户 与公私密钥对、密码、权限和身份认证令牌结合使用,为 DC/OS 服务提供访问 DC/OS 的权限。服务帐户控制服务被允许进行的通信和 DC/OS API 操作。
按照以下步骤创建服务帐户、与服务帐户相关联的主体,为该主体分配权限,并将密钥存储库与该服务帐户关联。Edge-LB 使用密钥存储库在 Edge-LB 池上检索和安装 TLS 证书,以便为客户端和服务后端之间的所有 HTTP 流量启用 TLS。
创建密钥对
在此步骤中,通过使用 DC/OS 企业 CLI,创建 2048 位 的 RSA 公私密钥对。
创建公私密钥对并将每个值保存到当前目录中的单独文件中。
dcos security org service-accounts keypair edge-lb-private-key.pem edge-lb-public-key.pem
创建主体
从终端提示创建包含包含公钥 (edge-lb-public-key.pem
) 的新服务帐户 (edge-lb-principal
)。
dcos security org service-accounts create -p edge-lb-public-key.pem -d "Edge-LB service account" edge-lb-principal
dcos security org service-accounts show edge-lb-principal
创建密码
使用您的服务帐户 (edge-lb-principal
) 和指定的私钥 (edge-lb-private-key.pem
) 创建密码 (dcos-edgelb/edge-lb-secret
)。
dcos security secrets create-sa-secret --strict edge-lb-private-key.pem edge-lb-principal dcos-edgelb/edge-lb-secret
dcos security secrets list /
创建和分配权限
使用以下 CLI 命令,为 Edge-LB 服务帐户配置所需权限。所有 CLI 命令也可通过 IAM API 执行。
可以使用两种方法中的一种为 Edge-LB 服务帐户安全地配置所需权限:
- 添加
edge-lb-principal
到superusers
组 - 允许限于 Edge-LB 相关任务的操作
向超级用户添加服务帐户
添加 edge-lb-principal
到 superusers
组,可确保在创建池时充分配置服务帐户。随着未来版本的 Edge-LB 中添加新的功能,拥有高级权限也将使升级更加简单。
dcos security org groups add_user superusers edge-lb-principal
允许服务账户进行有限操作
这些更加有限的权限包括 DC/OS 包、Marathon 任务、Edge-LB 池与任务的管理。它们还使得 Edge-LB 池框架调度器能够通过 Mesos 管理节点进行注册并启动负载均衡器任务。
dcos security org users grant edge-lb-principal dcos:adminrouter:service:marathon full
dcos security org users grant edge-lb-principal dcos:adminrouter:package full
dcos security org users grant edge-lb-principal dcos:adminrouter:service:edgelb full
dcos security org users grant edge-lb-principal dcos:service:marathon:marathon:services:/dcos-edgelb full
dcos security org users grant edge-lb-principal dcos:mesos:master:endpoint:path:/api/v1 full
dcos security org users grant edge-lb-principal dcos:mesos:master:endpoint:path:/api/v1/scheduler full
dcos security org users grant edge-lb-principal dcos:mesos:master:framework:principal:edge-lb-principal full
dcos security org users grant edge-lb-principal dcos:mesos:master:framework:role full
dcos security org users grant edge-lb-principal dcos:mesos:master:reservation:principal:edge-lb-principal full
dcos security org users grant edge-lb-principal dcos:mesos:master:reservation:role full
dcos security org users grant edge-lb-principal dcos:mesos:master:volume:principal:edge-lb-principal full
dcos security org users grant edge-lb-principal dcos:mesos:master:volume:role full
dcos security org users grant edge-lb-principal dcos:mesos:master:task:user:root full
dcos security org users grant edge-lb-principal dcos:mesos:master:task:app_id full
另外,对于创建的每个 Edge-LB 池,都需要授予此权限:
dcos security org users grant edge-lb-principal dcos:adminrouter:service:dcos-edgelb/pools/<POOL-NAME> full
有关所需权限的详细信息,请参阅 Edge-LB 权限
为服务身份认证创建配置文件
配置服务身份认证后,您必须使用凭据创建 JSON 选项文件。安装 Edge-LB 时,此文件将传递到 DC/OS。
在文件中指定之前创建的服务帐户密码 (dcos-edgelb/edge-lb-secret
)。
{
"service": {
"secretName": "dcos-edgelb/edge-lb-secret",
"principal": "edge-lb-principal",
"mesosProtocol": "https"
}
}
EdgelB 还需要指定以下选项。它们的值取决于其正在运行的集群的安全模式:
service.mesosProtocol
:"https"
针对宽容和严格安全模式,"http"
(默认)针对禁用安全模式service.mesosAuthNZ
:true
(默认)针对宽容和严格安全模式,false
针对禁用安全模式 参数从 v1.1 版本开始可用。
其他有用的可配置服务参数包括:
service.name
:"dcos-edgelb/api"
. 当 配置池,apiserver
.dcos-edgelb
的服务路径对应于pool.namespace
。service.logLevel
:"info"
. 可以是debug
、info
、warn
或error
中的一个。service.cpus
:1.1
service.mem
:1024
以有意义的名称保存文件,如 edge-lb-options.json
。将此文件保存在源控件中,以便您可以稍后快速更新配置。
安装 Edge-LB
使用此命令安装 Edge-LB。
dcos package install --options=edge-lb-options.json edgelb
运行此命令,等待 Edge-LB 服务准备就绪。
until dcos edgelb ping; do sleep 1; done
准备就绪时,您应收到此消息:
pong
- 有关配置 Edge-LB 的详细信息,请参阅 Edge-LB 配置 部分。
- 有关可用 Edge-LB 命令的详细信息,请参阅 Edge-LB 命令参考。