您可以通过创建应用来指定服务中使用的 secrets。您可以为服务赋权使用一个或多个 secrets。
前提条件
您已经创建了 secrets。有关如何创建 secrets,参见
创建密钥。
使用限制
secrets 必须和使用它的应用位于同一集群内。
通过镜像创建应用
有关如何创建应用,参见
创建应用。
本示例创建名为 [backcolor=transparent]mysql 的 MySQL 应用。在应用配置的 [backcolor=transparent]密钥 部分设置 secrets 信息。本示例赋权应用使用两个 secrets:[backcolor=transparent]my_mysql_password_v1 和 [backcolor=transparent]my_secret_v1。
其中:
- [backcolor=transparent]密钥名称:您在容器服务中所创建的密钥的名称。
- [backcolor=transparent]目标名称:将要挂载到容器的 /run/secrets/ 目录下的文件的名称。默认情况下,与 [backcolor=transparent]source 值相同,即容器在/run/secrets/<secret_name> 目录下访问密钥。
- [backcolor=transparent]用户ID:拥有容器 /run/secrets/ 目录下的 secret 文件的用户 ID。默认为 0。
- [backcolor=transparent]用户组ID:拥有容器 /run/secrets/ 目录下的 secret 文件的用户组 ID。默认为 0。
- [backcolor=transparent]权限:将要挂载到容器/run/secrets/ 目录下的 secret 文件的权限。格式为八进制,例如:0444 表示全局可读。由于 secrets 是挂载在临时文件系统上的,所以 secrets 不可写;因此,如果您设置了可写位,系统会忽视您的设置。如果您不熟悉 UNIX 的权限模式,可以使用 Permission Calculator。
此外,本示例中您还需要设置环境变量 MYSQL_ROOT_PASSWORD_FILE 来配置 MySQL 应用使用/run/secrets/my_mysql 文件作为 root 密码。
通过编排模板创建应用
有关如何创建应用,参见
创建应用。
您可以使用 short syntax 或者 long syntax 来在编排模板中进行 secrets 的设置。
short syntax
使用 short syntax,您仅需要指定 secret 名称。容器服务会赋予容器访问 secret 的权限并将 secret 挂载到容器的/run/secrets/<secret_name> 目录。
本示例创建名为 [backcolor=transparent]mysqlshort 的应用。在编排模板中添加密钥的信息。本示例赋权应用使用两个 secrets:[backcolor=transparent]my_mysql_password_v1 和 [backcolor=transparent]my_secret_v1。
[backcolor=transparent]编排示例:
- [backcolor=transparent]version[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'3.2'
- [backcolor=transparent]services[backcolor=transparent]:
- [backcolor=transparent] mysqlshort[backcolor=transparent]:
- [backcolor=transparent] image[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'mysql:5.7'
- [backcolor=transparent] deploy[backcolor=transparent]:
- [backcolor=transparent] mode[backcolor=transparent]:[backcolor=transparent] replicated
- [backcolor=transparent] replicas[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]1
- [backcolor=transparent] update_config[backcolor=transparent]:
- [backcolor=transparent] failure_action[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]continue
- [backcolor=transparent] restart_policy[backcolor=transparent]:
- [backcolor=transparent] condition[backcolor=transparent]:[backcolor=transparent] none
- [backcolor=transparent] environment[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] MYSQL_ROOT_PASSWORD[backcolor=transparent]=[backcolor=transparent]/run/[backcolor=transparent]secrets[backcolor=transparent]/[backcolor=transparent]my_mysql_password_v1 [backcolor=transparent]#配置 MySQL 应用使用 /run/secrets/my_mysql_password_v1 文件作为 root 密码
- [backcolor=transparent] secrets[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] my_mysql_password_v1 [backcolor=transparent]#您所创建的 secret 的名称
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] my_secret_v1 [backcolor=transparent]#您所创建的 secret 的名称
- [backcolor=transparent]secrets[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]#对 secrets 进行声明
- [backcolor=transparent] my_mysql_password_v1[backcolor=transparent]:
- [backcolor=transparent] external[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]true
- [backcolor=transparent] my_secret_v1[backcolor=transparent]:
- [backcolor=transparent] external[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]true
您需要在编排模板中对 secrets 进行声明,否则 secrets 无法生效。其中, external:true 表示密钥已经创建了,容器服务不会尝试创建密钥而是寻找密钥并将其用于服务上。
long syntax
通过使用 long syntax,您可以指定 secrets 的相关参数。
本示例创建名为 [backcolor=transparent]mysqllong 的应用。在编排模板中添加密钥的信息。本示例赋权应用使用两个 secrets:[backcolor=transparent]my_mysql_password_v1 和 [backcolor=transparent]my_secret_v1。
[backcolor=transparent]编排示例:
- [backcolor=transparent]version[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'3.2'
- [backcolor=transparent]services[backcolor=transparent]:
- [backcolor=transparent] mysqllong[backcolor=transparent]:
- [backcolor=transparent] image[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'mysql:5.7'
- [backcolor=transparent] deploy[backcolor=transparent]:
- [backcolor=transparent] mode[backcolor=transparent]:[backcolor=transparent] replicated
- [backcolor=transparent] replicas[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]1
- [backcolor=transparent] update_config[backcolor=transparent]:
- [backcolor=transparent] failure_action[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]continue
- [backcolor=transparent] restart_policy[backcolor=transparent]:
- [backcolor=transparent] condition[backcolor=transparent]:[backcolor=transparent] none
- [backcolor=transparent] environment[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] MYSQL_ROOT_PASSWORD[backcolor=transparent]=[backcolor=transparent]/run/[backcolor=transparent]secrets[backcolor=transparent]/[backcolor=transparent]my_mysql[backcolor=transparent]#配置 MySQL 应用使用 /run/secrets/my_mysql_password_v1 文件作为 root 密码
- [backcolor=transparent] secrets[backcolor=transparent]:
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] source[backcolor=transparent]:[backcolor=transparent] my_mysql_password_v1 [backcolor=transparent]#您所创建的 secret 的名称
- [backcolor=transparent] target[backcolor=transparent]:[backcolor=transparent] my_mysql
- [backcolor=transparent] uid[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'0'
- [backcolor=transparent] gid[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'0'
- [backcolor=transparent] mode[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]444
- [backcolor=transparent] [backcolor=transparent]-[backcolor=transparent] source[backcolor=transparent]:[backcolor=transparent] my_secret_v1 [backcolor=transparent]#您所创建的 secret 的名称
- [backcolor=transparent] target[backcolor=transparent]:[backcolor=transparent] my_secret
- [backcolor=transparent] uid[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'0'
- [backcolor=transparent] gid[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]'0'
- [backcolor=transparent] mode[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]444
- [backcolor=transparent]secrets[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]#对 secrets 进行声明
- [backcolor=transparent] my_mysql_password_v1[backcolor=transparent]:
- [backcolor=transparent] external[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]true
- [backcolor=transparent] my_secret_v1[backcolor=transparent]:
- [backcolor=transparent] external[backcolor=transparent]:[backcolor=transparent] [backcolor=transparent]true
其中:
- [backcolor=transparent]source:您在容器服务中所创建的密钥的名称。
- [backcolor=transparent]target:将要挂载到容器的 /run/secrets/ 目录下的文件的名称。默认情况下,与 [backcolor=transparent]source 值相同,即容器在/run/secrets/<secret_name> 目录下访问密钥。
- [backcolor=transparent]uid:拥有容器 /run/secrets/ 目录下的 secret 文件的用户 ID。默认为 0。
- [backcolor=transparent]gid:拥有容器 /run/secrets/ 目录下的 secret 文件的用户组 ID。默认为 0。
- [backcolor=transparent]mode:将要挂载到容器 /run/secrets/ 目录下的 secret 文件的权限。格式为八进制,例如:0444 表示全局可读。由于 secrets 是挂载在临时文件系统上的,所以 secrets 不可写;因此,如果您设置了可写位,系统会忽视您的设置。如果您不熟悉 UNIX 的权限模式,可以使用 Permission Calculator。
您需要在编排模板中对 secrets 进行声明,否则 secrets 无法生效。其中, external:true 表示密钥已经创建了,容器服务不会尝试创建密钥而是寻找密钥并将其用于服务上。