--- # Секреты-файлы для подов, которые создаёт не Flux, а сам движок workflows. # # ЗАЧЕМ ОТДЕЛЬНО ОТ VAULT. Приложения контура получают креды аннотациями # vault-agent — но это работает только для подов, чей шаблон мы описываем. # Поды задач создаёт workflows-engine во время работы, аннотаций у них нет, и # единственное, что он умеет подключить, — обычный Secret из namespace задач: # # services[S3Storage] = Service{ # CredentialsName: "yc-s3", # CredentialsPath: "/etc/sarex/yc-s3", # Envs: {"SERVICE_S3": `{"service_account": # "/etc/sarex/yc-s3/yc-s3-service-account.json"}`}, # } # (pkg/kube_services/services.go) # # Имя секрета, путь монтирования и имя файла зашиты в код движка — поменять их # нельзя, можно только положить секрет ровно с такими именами. # # Без него задача падает не на доступе к S3, а на разборе конфигурации: # pydantic_core.ValidationError: 1 validation error for S3AccountModel # Value error, Expecting value: line 1 column 1 (char 0) # ValueError: SERVICE_S3 is not valid # то есть файл по пути просто отсутствует и читается как пустая строка. # # Как и у секретов реестра: манифест рендерится, применяется и сразу # удаляется — в нём креды в открытом виде. - name: Отрендерить манифест секретов-файлов ansible.builtin.template: src: app-secrets.yaml.j2 dest: "{{ deploy_dir }}/k3s/app-secrets.yaml" owner: root group: root mode: "0600" no_log: true tags: [appsecrets] # ./k3s смонтирован в k3s-server как /output — отсюда и путь. - name: Применить секреты-файлы в кластере ansible.builtin.command: argv: - "{{ compose_cmd.split()[0] }}" - compose - exec - "-T" - k3s-server - kubectl - apply - "-f" - /output/app-secrets.yaml chdir: "{{ deploy_dir }}" register: app_secret_apply changed_when: >- 'created' in app_secret_apply.stdout or 'configured' in app_secret_apply.stdout tags: [appsecrets] # Удаляем всегда, в том числе если apply упал: файл содержит креды. - name: Удалить манифест секретов-файлов с хоста ansible.builtin.file: path: "{{ deploy_dir }}/k3s/app-secrets.yaml" state: absent tags: [appsecrets]