Стадия жизненного цикла модуля: General Availability

Подключение плагинов к Stronghold состоит из двух шагов: настройки списка загружаемых плагинов и регистрации плагинов.

Настройка списка плагинов

Настройка списка плагинов выполняется в ModuleConfig.

Пример:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: stronghold
spec:
  enabled: true
  version: 1
  settings:
    plugins:
      - name: "vault-plugin-secrets-github"
        url: "https://github.com/martinbaillie/vault-plugin-secrets-github/releases/download/v2.3.2/vault-plugin-secrets-github-linux-amd64"
        sha256: "72cb1f2775ee2abf12ffb725e469d0377fe7bbb93cd7aaa6921c141eddecab87"
      - name: "vault-plugin-auth-any"
        url: "https://plugins.example.local/myplugins/vault-plugin-auth-any-v1.0.0-linux-amd64"
        sha256: "c943b505b39b53e1f4cb07f2a3455b59eac523ebf600cb04813b9ad28a848b21"
        ignoreFailure: true
        insecureSkipVerify: false
        ca: |
          -----BEGIN CERTIFICATE-----
          MIIDDTCCAfWgAwIBAgIJAOb7PcmW8W9MMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
          BAMTCWxvY2FsaG9zdDAeFw0yNjA1MjAwMDAwMDBaFw0yNjA2MjAwMDAwMDBaMBQx
          EjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
          ggEBAKHh4g5i1R+3+9XdG0RFLiX1x5T2PvQ92E/78vR6+Bn09+G0P+C6143+wLn
          j96/E8rHbHr4R6L0f62/OJZh8JnZ/qRqE1N8oNc06Vh9Y7X8EzF4nZ4KgX/3y6L
          vXD251Qm7g==
          -----END CERTIFICATE-----

Добавление или удаление плагинов вызовет перезапуск Stronghold. Если плагин не удастся скачать или провалидировать, то запуск Stronghold будет заблокирован. Исключение составляют плагины с включенным флагом ignoreFailure. При этом, если не прошла проверка контрольной суммы - плагин считается не загруженным (удаляется).

Регистрация плагина

Плагин регистрируется в Stronghold через CLI (d8 stronghold) с указанием команды запуска (соответствует имени плагина в ModuleConfig), контрольной суммы SHA256, версии и имени плагина:

# Узнайте SHA-сумму файла плагина
PLUGIN_SHA=$(sha256sum <plugin_binary> | awk '{print $1;}')

d8 stronghold plugin register                     \
   -command <command_to_run_plugin_binary>       \
   -sha256 "${PLUGIN_SHA}"                        \
   -version "<semantic_version>"                 \
   <plugin_type>                                  \
   <plugin_name>

Пример регистрации плагина типа secret с именем mykv:

d8 stronghold plugin register   \
    -command mykvplugin        \
    -sha256 ${PLUGIN_SHA}      \
    -version "v1.0.1"         \
    secret                     \
    mykv

# Success! Registered plugin: mykv

После регистрации плагина его нужно включить как секретный или аутентификационный engine по нужному пути:

d8 stronghold <secrets | auth> enable \
  -path <mount_path>   \
  <plugin_name>
  • secrets — для плагинов типа secret (например, KV, database);
  • auth — для плагинов аутентификации;
  • -path — путь монтирования (например, kv, github);
  • plugin_name — имя, под которым плагин был зарегистрирован.

Пример: включить зарегистрированный плагин mykv по пути test-kv:

d8 stronghold secrets enable -path test-kv mykv

Отключение плагина

  1. Отключите все secrets и auth методы, использующие плагин.

  2. Отключиите плагин

    d8 stronghold plugin deregister secrets my-custom-plugin
  3. Удалите плагин из конфигурации в ModuleConfig