provisionsgroup/config-sync-php

为 Laravel 添加远程配置同步功能

v0.0.8 2020-07-03 14:09 UTC

README

Config Sync 是一个通用的 PHP Composer 包,可以扩展以支持多个后端(目前仅支持 HashiCorp Vault),其目的是将一组后端密钥数据同步到本地加密文件。与典型的 PHP Laravel 应用程序相比,Config Sync 的设计目标是:,

  1. 替换 .env 文件;尤其是密钥
  2. 替换 ENVIRONMENT 变量;尤其是密钥
  3. 减少应用程序访问后端密钥或配置数据时的耦合
  4. 支持 Kubernetes Pod 密钥/配置引导,同时仍支持本地开发

先决条件

  • composer
  • PHP
  • 访问 HashiCorp Vault 的托管位置
  • 在 Vault 的开发者挂载中存储配置
  • developer 环境(见下文)将需要在您的 .env 文件中进行额外设置

命令

php artisan config:sync --backend=vault --environment=developer

选项

可以指定四个选项

--backend=vault : The backend to use for config values
--environment=developer : The backend environment to use
--watch : Flag that keeps the process running rather than running once
--refresh=10 : Only used if the --watch flag is set; frequency of checking with backend and refreshing file

目前,--backend 的唯一选项是 vault,默认也是 vault,因此在运行命令时不需要指定此选项。代码以这种方式编写,如果将来选择另一个后端,只要它与接口兼容,就可以轻松替换 Vault。

--environment 选项有三个选择

  • local
  • developer
  • kubernetes

本地环境

本地环境将使用 Vault 认证令牌进行认证并检索密钥来为本地运行的应用程序创建 Config Safe。

开发者环境

开发者环境将使用 Vault 中的开发者挂载创建 Config Safe。第一次,您需要将以下内容添加到您的本地 .env 文件中

VAULT_MOUNT=Vault 挂载位置

VAULT_SECRET=vault 密钥名称

当与 Vault 认证时,Config Sync 假设您将使用您的 LDAP 用户名和密码,但这可以在配置中更改。

Kubernetes 环境

将使用 JWT(Kubernetes 服务帐户令牌)和角色(例如 auditor-portal)来认证 Vault 并检索该角色的密钥以创建 Config Safe 的 Kubernetes 环境。这将使用 JWT(Kubernetes 服务帐户令牌)和角色(例如 auditor-portal)来认证 Vault 并检索该角色的密钥以创建 Config Safe。