ArgoCD поддерживает декларативную конфигурацию: https://argo-cd.readthedocs.io/en/stable/operator-manual/declarative-setup/
В частности, для учетных данных репозитория: https://argo-cd.readthedocs.io/en/stable/operator-manual/argocd-repo-creds-yaml/
Например, типичная запись может выглядеть так:
# Repository credentials, for using the same credentials in multiple repositories.
apiVersion: v1
kind: Secret
metadata:
name: argoproj-https-creds
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repo-creds
stringData:
url: https://github.com/argoproj
type: helm
password: my-password
username: my-username
Аналогичным образом можно добавить доступ по SSH к репозиториям git с помощью закрытого ключа SSH:
apiVersion: v1
kind: Secret
metadata:
name: argoproj-ssh-creds
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repo-creds
stringData:
url: [email protected]:argoproj-labs
type: helm
sshPrivateKey: |
-----BEGIN OPENSSH PRIVATE KEY-----
...
-----END OPENSSH PRIVATE KEY-----
В обоих сценариях текстовый пароль и закрытый ssh-ключ сохраняются в текстовом файле в git.
Существует ли канонический способ безопасного хранения этих учетных данных вместо обычного текста?
https://xyproblem.info/: Я пытаюсь решить проблему автоматической загрузки экземпляра ArgoCD с помощью пары файлов YAML, хранящихся в репозитории git, предназначенном для gitops. Сервер приложений ArgoCD будет использовать файл YAML repo-creds для своего заполнения, чтобы впоследствии создавать приложения ArgoCD из этих репозиториев. Однако нежелательно, чтобы пароль/закрытый ключ проверялись в git в виде обычного текста. Как мы можем загрузить все необходимые репозитории, не делая этого?
Мне известен по крайней мере один обходной путь: я мог бы использовать приложение argocd CLI в нашем кластере K8s для заполнения репо-кредитов (или даже просто kubectl apply, если уж на то пошло). Но тогда какой смысл ArgoCD программно поддерживать учетные данные репо-кредитов через gitops?





Возможно, вы захотите добавить способ внедрения секретов и вообще избегать их хранения в git.
Вот некоторые распространенные решения для внедрения секретов и простого использования секретных пользовательских ресурсов в git:
Чистая загрузочная версия argocd будет выглядеть так:
Поэтому обычно при начальной загрузке вы все равно предоставляете один ключ, которого нет в git, который нужен секретному оператору.
Примечание. Действительно полезной функцией является шаблон учетных данных , поскольку он позволяет вам определить один секрет для ваших репозиториев Git вместо повторения конфигурации для каждого репозитория.
Я бы не рекомендовал использовать что-либо вроде SOPS, которое шифрует содержимое вашего репозитория, потому что это затрудняет разумную реакцию на скомпрометированный ключ (потому что даже если вы повторно зашифруете что-либо, скомпрометированный ключ можно использовать с предыдущими данными в ваша история git). +1 за внешние секреты.