
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
INDIGO PaaS Orchestrator的简单图形化界面。
orchestrator-dashboard是一个基于http://flask.pocoo.org/%E5%BE%AE%E6%A1%86%E6%9E%B6%E6%9E%84%E5%BB%BA%E7%9A%84Python%E5%BA%94%E7%94%A8%EF%BC%8C%E4%BD%BF%E7%94%A8https://flask-dance.readthedocs.io/en/latest/%E5%AE%9E%E7%8E%B0Openid-Connect/OAuth2%E9%9B%86%E6%88%90%E3%80%82Docker%E9%95%9C%E5%83%8F%E4%BD%BF%E7%94%A8https://gunicorn.org/%E4%BD%9C%E4%B8%BAWSGI HTTP服务器来运行Flask应用。该镜像提供了PaaS编排器的图形化管理界面,方便用户管理部署。
适用于需要通过图形化界面管理INDIGO PaaS Orchestrator部署的用户,包括开发人员、系统管理员等,用于监控、管理和操作PaaS平台上的应用部署。
应用需要数据库存储数据并通过HTTPS运行。
https://<DASHBOARD_HOST>:<PORT>/login/iam/authorizedopenid、email、profile、offline_accessauthorization_code、refresh_token和urn:ietf:params:oauth:grant-type:token-exchange
instance文件夹,包含以下文件:
config.json将证书放在任意位置,使用时引用正确路径。bashopenssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -sha256 -days 365
launch.json和docker-compose.yml期望证书位于certs文件夹中。https://<PROXY_HOST>/login/iam/authorized)https://<PROXY_HOST>/访问仪表板本地环境
若要在仓库提供的Docker镜像外运行应用:
requirements.txt中定义的包依赖
使用pip:
使用poetry:bashpip install -r requirements.txt
安装过程和虚拟环境激活取决于您偏好的方式。bashcat requirements.txt | xargs poetry add
若要更改图形或自动启用一组功能,请选择预配置的配置文件
config.json文件中,设置CONFIGURATION_PROFILE变量(例如infn-cloud)。若要启用Redis
config.json文件中,设置REDIS_URL变量(例如redis://:my-password@localhost:6379)。若要更改上传文件夹
config.json文件中,设置UPLOAD_FOLDER(例如**/opt/uploads**)。若要在左侧导航栏显示高级菜单选项或在部署创建中启用调度配置
config.json文件中,设置FEATURE_ADVANCED_MENU为true。若要使用docker/start.sh文件启动应用
ENABLE_HTTPS=True若需要安装和信任默认CA bundle中未包含的证书
trusted_certs文件夹中创建CA证书。若要集成vault服务
instance文件夹中添加vault-config.json文件。若要手动克隆tosca-templates仓库
config.json文件,使TOSCA_TEMPLATES_DIR指向正确路径(例如**/opt/tosca-templates**)。bashgit clone https://baltig.infn.it/infn-cloud/tosca-templates.git
docker-compose.yml期望该仓库位于instance文件夹中。
若要手动克隆dashboard-configuration仓库
config.json文件,使SETTINGS_DIR指向正确路径(例如**/opt/dashboard-configuration**)。bashgit clone https://baltig.infn.it/infn-cloud/dashboard-configuration.git
docker-compose.yml期望该仓库位于instance文件夹中。
在
dashboard-configuration/tosca-metadatametadata.yaml中定义了用户与可用服务之间的映射。可以使用正则表达式定义多个组。
若要启用SSH公钥
config.json文件中,设置FEATURE_REQUIRE_USER_SSH_PUBKEY为yes。若要启用vault功能
vault-config.json变量中设置的策略名称匹配。config.json文件中,设置FEATURE_VAULT_INTEGRATION为yes。vault-config.json文件,至少包含:VAULT_URL、VAULT_ROLE和VAULT_BOUND_AUDIENCE。使用环境变量代替在.json文件中定义变量
FLASK_TOSCA_TEMPLATES_DIR)config.json参数
| 键 | 描述 | 是否必填 |
|---|---|---|
| SECRET_KEY | 项目的唯一标识符 | 是 |
| IAM_CLIENT_ID | 在IAM中注册的客户端ID | 是 |
| IAM_CLIENT_SECRET | 在IAM中注册的客户端密钥 | 是 |
| IAM_BASE_URL | IAM URL | 是 |
| IAM_SCOPE | IAM允许的作用域 | 是 |
| ORCHESTRATOR_URL | 编排器服务URL | 否 |
| SLAM_URL | SLAM服务URL | 是 |
| CMDB_URL | CMDB服务URL | 否 |
| IM_URL | IM服务URL | 否 |
| EXTERNAL_LINKS | 其他外部链接... | 否 |
| SQLALCHEMY_DATABASE_URI | 数据库的完整URL | 是 |
| REDIS_URL | Redis实例的完整URL。若未设置,应用将尝试连接本地主机。 | 否 |
| CALLBACK_URL | 编排器用于更新仪表板的URL | 是 |
| ADMINS | 管理员电子邮件列表。列表中的每个电子邮件必须用单引号括起来。(已弃用) | 否 |
| SUPPORT_EMAIL | 用户支持电子邮件 | 否 |
| IAM_GROUP_MEMBERSHIP | 应用中使用的用户组列表 | 否 |
| IAM_ADMIN_GROUPS | 管理员所属的IAM组列表 | 是 |
| CONFIGURATION_PROFILE | 选择仪表板图形 | 否 |
| LOG_LEVEL | 应用日志级别。必须为大写。 | 否 |
| ENABLE_HTTPS | 仅在运行start.sh脚本时启用HTTPS。 | 否 |
| TOSCA_TEMPLATES_DIR | tosca-templates仓库的路径。若已克隆,将上传其内容;否则为放置仓库内容的目标文件夹名称。 | 否 |
| SETTINGS_DIR | dashboard-configuration仓库的路径。若已克隆,将上传其内容;否则为放置仓库内容的目标文件夹名称。 | 否 |
| UPLOAD_FOLDER | 上传文件保存的文件夹路径。若文件夹不存在,服务将在创建第一个项目时创建它。 | 否 |
| FEATURE_ADVANCED_MENU | 启用部署调度和其他高级设置。 | 否 |
| FEATURE_HIDDEN_DEPLOYMENT_COLUMNS | 在部署列表中隐藏的列(用户视图) | 否 |
| FEATURE_DEPLOYMENT_SORT_COLUMN | 部署列表的初始排序列(用户视图) | 否 |
| FEATURE_HIDDEN_ADMIN_DEPLOYMENT_COLUMNS | 在部署列表中隐藏的列(管理员视图) | 否 |
| FEATURE_HIDDEN_DEPLOYMENT_SORT_COLUMN | 部署列表的初始排序列(管理员视图) | 否 |
| FEATURE_MAX_PIE_SLICES | 饼图中的最大切片数(0表示无限制)(管理员视图) | 否 |
| FEATURE_SHOW_BROKEN_DEPLOYMENTS | 在统计中显示没有模板引用的部署(UNKNOWN模板)(管理员视图) | 否 |
| FEATURE_UPDATE_DEPLOYMENT | 更新部署时启用更新/删除高级选项(已弃用-相关图形未更新)。 | 否 |
| FEATURE_VAULT_INTEGRATION | 启用vault集成。 | 否 |
| FEATURE_REQUIRE_USER_SSH_PUBKEY | 启用添加用户SSH公钥的部分。依赖于FEATURE_VAULT_INTEGRATION,因为SSH公钥存储在vault中。提交任何部署时此项为必填。 | 否 |
| FEATURE_S3CREDS_MENU | 启用S3凭据创建菜单。(已弃用) | 否 |
| PROVIDER_NAMES_TO_SPLIT | 要拆分为提供商名称和区域名称的提供商名称列表。 | 否 |
| MAIL_SERVER | SMTP服务器 | 否 |
| MAIL_PORT | SMTP服务器端口 | 否 |
| MAIL_SENDER | 电子邮件中的发件人*** | 否 |
| MAIL_USERNAME | 要使用的电子邮件账户的用户名 | 否 |
| MAIL_PASSWORD | 要使用的电子邮件账户的密码 | 否 |
| MAIL_USE_TLS | 使用TLS | 否 |
| LDAP_TLS_CACERT_FILE | LDAP的CA验证证书 | 否 |
| LDAP_SOCKET | 用于连接LDAP实例的套接字 | 否 |
| LDAP_BASE | 否 | |
| LDAP_BIND_USER | 否 | |
| LDAP_BIND_PASSWORD | 否 | |
| RUCIO_CONNECTOR_ENABLE | 是否启用Rucio。必须设置为'yes'才启用 | 否 |
| RUCIO_CONNECTOR_URL | Rucio连接器的URL | 否 |
LDAP变量是运行Sync&Share等服务所必需的。
vault-config.json参数
仅当FEATURE_VAULT_INTEGRATION=yes时,这些变量才为必填。
尽管TOKEN_TIME_DURATION和TOKEN_RENEWAL_TIME_DURATION都标记为必填,但它们可视为互斥。
| 键 | 描述 | 是否必填 |
|---|---|---|
| VAULT_URL | Vault服务URL | 是 |
| VAULT_ROLE | Vault角色 | 是 |
| VAULT_OIDC_AUDIENCE | 该角色的Vault注册受众(已弃用) | 是 |
| VAULT_BOUND_AUDIENCE | 该角色的Vault注册受众 | 否 |
| VAULT_SECRET_PATH | URL中用户密钥的根路径(已弃用) | 否 |
| VAULT_SECRETS_PATH | URL中用户密钥的根路径(当前未在代码中使用,仅在ansible脚本中使用) | 否 |
| WRAPPING_TOKEN_TIME_DURATION | 是 | |
| READ_POLICY | 要使用的读策略名称 | 是 |
| READ_TOKEN_TIME_DURATION | Vault令牌的删除权限持续时间 | 是 |
| READ_TOKEN_RENEWAL_TIME_DURATION | 读令牌续期周期。若定义此值,令牌的持续时间等于该周期。READ_TOKEN_TIME_DURATION可省略。 | 是 |
| WRITE_POLICY | 要使用的写策略名称 | 是 |
| WRITE_TOKEN_TIME_DURATION | Vault令牌的写权限持续时间 | 是 |
| WRITE_TOKEN_RENEWAL_TIME_DURATION | 写令牌续期周期。若定义此值,令牌的持续时间等于该周期。WRITE_TOKEN_TIME_DURATION可省略。 | 是 |
| DELETE_POLICY | 要使用的删除策略名称 | 是 |
| DELETE_TOKEN_TIME_DURATION | Vault令牌的删除权限持续时间 | 是 |
| DELETE_TOKEN_RENEWAL_TIME_DURATION | 删除令牌续期周期。若定义此值,令牌的持续时间等于该周期。DELETE_TOKEN_TIME_DURATION可省略。 | 是 |
仪表板首次启动时,从管理员设置页面,您需要下载tosca-templates仓库。它将被放置在
TOSCA_TEMPLATES_DIR中。
仪表板首次启动时,从管理员设置页面,您需要下载dashboard-configuration仓库。它将被放置在
SETTINGS_DIR中。
在本地环境运行Flask应用的命令:
bashFLASK_app=orchdashboard flask run --host=0.0.0.0 --cert cert.pem --key key.pem
在本地环境使用gunicorn运行应用的命令:
bashgunicorn -w 1 --timeout 60 \ --bind 0.0.0.0:5000 \ --certfile certs/cert.pem \ --keyfile certs/key.pem \ orchdashboard:app
或者,您可以运行docker/start.sh脚本,该脚本是Docker化实例启动时运行的脚本。
该脚本使用CERT和KEY环境变量定义cert.pem和key.pem文件的路径;默认情况下,它们等于/certs/cert.pem和/certs/key.pem。
服务暴露的端口可以使用PORT环境变量设置;默认情况下,start.sh脚本在端口5001上暴露服务。
运行脚本:
bash./docker/start.sh
若要在Docker容器中运行应用,仓库提供了Docker镜像和docker-compose.yml文件以启动所有需要的服务。
运行Docker容器:
bashdocker run -d -p 5000:5001 \ --name='orchestrator-dashboard' \ -v $PWD/certs:/certs \ -v $PWD/trusted_certs:/trusted_certs \ -v $PWD/instance/:/app/instance/ \ -e ENABLE_HTTPS=True \ -e TOSCA_TEMPLATES_DIR=/app/instance/tosca-templates \ -e SETTINGS_DIR=/app/instance/dashboard-configuration \ -e UPLOAD_FOLDER=/app/instance/uploads \ infn-datacloud/orchestrator-dashboard:latest
由于应用在容器内运行,请记住正确设置
SQLALCHEMY_DATABASE_URI和REDIS_URL作为环境变量或在config.json中设置。
除了orchestrator-dashboard,docker compose还启动5.7版本的MySQL数据库和Redis服务实例。此外,它绑定项目顶层目录中的instance文件夹。期望在该目录中找到所有.json文件,并将tosca-templates、dashboard-configuration和uploads文件夹放在那里。docker-compose.yml正确定义了环境变量SQLALCHEMY_DATABASE_URI、REDIS_URL、TOSCA_TEMPLATES_DIR、SETTINGS_DIR和UPLOAD_FOLDER。
运行docker compose套件:
bashdocker compose -f docker/docker-compose.yml up -d
默认情况下,Docker镜像暴露端口5001而非5000。
docker-compose.yml将容器的5001端口映射到本地主机的5000端口。 默认情况下,TOSCA_TEMPLATES_DIR、SETTINGS_DIR和UPLOAD_FOLDER指向需要管理员权限的路径。docker-compose.yml将这些变量映射到用户可访问的路径。
对于VSCode用户,.devcontainer文件夹中提供了devcontainer配置。
仓库包含orchdasboard_dev.py文件,应用于开发人员调试。与主文件orchdashboard.py的主要区别是它调用检查和自动更新数据库的例程。 如果要使用上述生产环境的orchdashboard.py文件进行调试,当需要更新数据库时,必须手动启动migrate_db.py文件。 在Docker化配置中,此文件会自动启动。
bashgit clone https://github.com/infn-datacloud/orchestrator-dashboard.git cd orchestrator-dashboard docker build -f docker/Dockerfile -t
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务