Azure Service Fabric CLI

Azure Service Fabric 命令行接口 (CLI) 是一个命令行实用程序,用于与 Service Fabric 实体交互并对其进行管理。 Service Fabric CLI 可以与 Windows 或 Linux 群集配合使用。 Service Fabric CLI 可以在任何支持 Python 的平台上运行。

Important

可以使用两个 CLI 实用工具来与 Service Fabric 交互。 Azure CLI 用于管理 Azure 资源,例如 Azure 托管的 Service Fabric 群集。 Service Fabric CLI 用于直接连接到 Service Fabric 群集(不管托管在哪个位置)和管理群集、应用程序与服务。

先决条件

在安装之前,请确保环境中已安装 Python 和 pip。 有关详细信息,请参阅 pip 快速入门文档和官方的 Python 安装文档

CLI 支持 Python 2.7、3.5、3.6 和 3.7 版。 建议使用 Python 3.x 版,因为很快会终止对 Python 2.7 的支持。

Service Fabric 目标运行时

Service Fabric CLI 旨在支持 Service Fabric SDK 的最新运行时版本。 使用下表确定应安装哪个版本的 CLI:

CLI 版本 支持的运行时版本
最新 (~=6) 最新 (~=6.3)
5.0.0 6.2
4.0.0 6.1
3.0.0 6.0
1.1.0 5.6, 5.7

pip install 命令添加 ==<version> 后缀即可选择性地指定要安装的 CLI 的目标版本。 例如,版本 1.1.0 的语法为:

pip install -I sfctl==1.1.0

视需要将以下 pip install 命令替换为此前提到过的命令。

有关 Service Fabric CLI 版本的详细信息,请参阅 GitHub 文档

安装 pip、Python 和 Service Fabric CLI

可以通过多种方式在平台上安装 pip 和 Python。 按照以下步骤可在主流操作系统上快速安装 Python 3 和 pip。

Windows

对于 Windows 10、Windows Server 2016 和 Windows Server 2012 R2,使用标准官方安装说明进行操作。 默认情况下,Python 安装程序也安装 pip。

  1. 转到官方的 Python 下载页,下载最新版本的 Python 3.7。

  2. 启动安装程序。

  3. 在提示的底部,选择“将 Python 3.7 添加到路径”。

  4. 选择“立即安装”,并完成安装。

现在可以打开新的命令窗口,获取 Python 和 pip 的版本。

python --version
pip --version

然后运行以下命令来安装 Azure Service Fabric CLI (sfctl) 并查看 CLI 帮助页:

pip install sfctl
sfctl -h

适用于 Linux 的 Ubuntu 和 Windows 子系统

若要安装 Service Fabric CLI,请运行以下命令:

sudo apt-get install python3
sudo apt-get install python3-pip
pip3 install sfctl

然后即可通过以下方式测试安装情况:

sfctl -h

如果收到“找不到命令”错误,例如:

sfctl: command not found

请确保可从 $PATH 访问 ~/.local/bin

export PATH=$PATH:~/.local/bin
echo "export PATH=$PATH:~/.local/bin" >> .bashrc

如果因文件夹权限不正确而导致适用于 Linux 的 Windows 子系统上的安装失败,则可能需要使用提升的权限再试:

sudo pip3 install sfctl

MacOS

对于 MacOS,建议使用 HomeBrew 包管理器。 如果尚未安装 HomeBrew,请通过运行以下命令安装它:

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后从终端通过运行以下命令,安装 Python 3.7、pip 和 Service Fabric CLI:

brew install python3
pip3 install sfctl
sfctl -h

CLI 语法

命令始终以 sfctl 为前缀。 有关可以使用的所有命令的一般信息,请使用 sfctl -h。 有关单个命令的帮助,请使用 sfctl <command> -h

命令遵循可重复结构,将命令目标置于谓词或操作的前面。

sfctl <object> <action>

在此示例中,<object><action> 的目标。

选择群集

在执行任何操作之前,必须选择要连接到的群集。 例如,若要选择名为 testcluster.com 的群集并与之进行连接,请运行以下命令:

Warning

请勿将不安全的 Service Fabric 群集用在生产环境中。

sfctl cluster select --endpoint http://testcluster.com:19080

群集终结点必须以 httphttps 为前缀。 它必须包括 HTTP 网关的端口。 此端口和地址与 Service Fabric Explorer URL 相同。

对于使用证书进行保护的群集,可以指定一个进行 PEM 编码的证书。 可以将证书指定为单个文件,或者指定为证书和密钥对。 如果它是并非 CA 签名的自签名证书,可以传递 --no-verify 选项以跳过 CA 验证。

sfctl cluster select --endpoint https://testsecurecluster.com:19080 --pem ./client.pem --no-verify

有关详细信息,请参阅连接到安全的 Azure Service Fabric 群集

基本操作

系统会在多个 Service Fabric CLI 会话中保留群集连接信息。 选择 Service Fabric 群集以后,即可在群集上运行任何 Service Fabric 命令。

例如,若要获取 Service Fabric 群集运行状况,请使用以下命令:

sfctl cluster health

此命令生成以下输出:

{
  "aggregatedHealthState": "Ok",
  "applicationHealthStates": [
    {
      "aggregatedHealthState": "Ok",
      "name": "fabric:/System"
    }
  ],
  "healthEvents": [],
  "nodeHealthStates": [
    {
      "aggregatedHealthState": "Ok",
      "id": {
        "id": "66aa824a642124089ee474b398d06a57"
      },
      "name": "_Test_0"
    }
  ],
  "unhealthyEvaluations": []
}

提示和故障排除

下面是一些有助于解决常见问题的建议和提示。

将证书从 PFX 转换为 PEM 格式

Service Fabric CLI 支持 PEM(.pem 扩展名)文件形式的客户端证书。 如果使用 Windows 的 PFX 文件,则必须将这些证书转换为 PEM 格式。 若要将 PFX 文件转换为 PEM 文件,请使用以下命令:

openssl pkcs12 -in certificate.pfx -out mycert.pem -nodes

同样,若要从 PEM 文件将转换为 PFX 文件,可以使用以下命令(此处未提供密码):

openssl  pkcs12 -export -out Certificates.pfx -inkey Certificates.pem -in Certificates.pem -passout pass:'' 

有关详细信息,请参阅 OpenSSL 文档

连接问题

某些操作可能会生成以下消息:

Failed to establish a new connection

验证指定的群集终结点是否可用且正进行侦听。 另请验证是否可以在该主机和端口上使用 Service Fabric Explorer UI。 若要更新终结点,请使用 sfctl cluster select

详细日志

调试或报告某个问题时,详细日志通常很有用。 --debug 标志可提高输出的详细程度。

命令帮助和语法

如需某个特定命令或一组命令的帮助,请使用 -h 标志。

sfctl application -h

以下是另一个示例:

sfctl application create -h

更新 Service Fabric CLI

若要更新 Service Fabric CLI,请运行以下命令(根据在原始安装期间所选的内容将 pip 替换为 pip3):

pip uninstall sfctl
pip install sfctl

后续步骤