Config 存放 Function 執行過程中會使用到的環境變數設定檔案 等運作時所使用的配置。

在 Function 初始化階段,根據設定 Syntixi 會自動將 Config 的內容放到對應環境變數或指定目錄下以 Function 存取使用。

如何建立 Config

純文字 (Literal)

可以使用 --from-literal <key>=<value> 來使用純文字建立設定檔,指令如下

  syntixi config create --name db-config \
    --from-literal MYSQL_ADDRESS='127.0.0.1:3306' \
    --from-literal MYSQL_USER="root" \
    --from-literal MYSQL_PASSWD="password" 
  

建立的結果如下

  apiVersion: core.syntixi.dev/v1
kind: Config
metadata:
  name: db-config
  namespace: default
spec:
  data:
    MYSQL_ADDRESS: MTI3LjAuMC4xOjMzMDY=
    MYSQL_PASSWD: cGFzc3dvcmQ=
    MYSQL_USER: cm9vdA==
  

檔案 (File)

如需使用檔案,則可以使用 --from-file <key>=<absolute-path-to-file> 來建立 Config。

以下示範,我們使用 OpenSSL 來為域名 example.com 生成 TLS 憑證檔案,然後使用生成的檔案建立 Config。

  sudo openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \
    -keyout example.key -out example.crt -subj "/CN=example.com"
  
  syntixi config create --name tls-cfg --type tls \
    --from-file tls.key=example.key \
    --from-file tls.crt=example.crt
  

結果如下

  apiVersion: core.syntixi.dev/v1
kind: Config
metadata:
  name: tls-cfg
  namespace: default
spec:
  data:
    tls.crt: <BASE64 CONTENT>
    tls.key: <BASE64 CONTENT>
  type: tls
  

Function 如何使用 Config

您可以使用兩種方式來讓 Function 使用 Config 內的資料:

  • 環境變數 (As Environment Variables)
  • 檔案 (As Files)

環境變數

使用 Config 內容作為環境變數時,可以於創建 Function 時使用 --env-from-config <CONFIG_NAME>=<KEY>=<ENV_NAME>

以下為使用上面建立的 Config 來當作 Function pod 的環境變數

  syntixi function create --name=config-demo --image=nginx \
    --env-from-config db-config=MYSQL_ADDRESS=MYSQL_ASSRESS \ 
    --env-from-config db-config=MYSQL_USER=MYSQL_USER \
    --env-from-config db-config=MYSQL_PASSWD=MYSQL_PASSWD
  

檔案

使用 Config 內容以檔案形式存取時,可以於創建 Function 時使用 --file-from-config <CONFIG_NAME>=<KEY>=</absolute/path/to/file>

以下示範使用,將 Config 當作檔案放入 Function 容器內的 /opt/ 路徑底下

  syntixi function create --name=config-demo --image=nginx \
    --file-from-config db-config=MYSQL_ADDRESS=/opt/MYSQL_ASSRESS \ 
    --file-from-config db-config=MYSQL_USER=/opt/MYSQL_USER \
    --file-from-config db-config=MYSQL_PASSWD=/opt/MYSQL_PASSWD
  
Was this page helpful?