Нативное мобильное приложение для iOS и Android, позволяющее отслеживать развёртывания Argo CD и управлять ими прямо со смартфона.
Возможности
-
Просмотр всех приложений с актуальным статусом работоспособности (health) и синхронизации (sync)
-
Фильтрация по статусу синхронизации, состоянию, проекту, пространству имён и меткам (ключ или key=value)
-
Запуск синхронизации, принудительного обновления (hard refresh) и отката (rollback)
-
Просмотр дерева ресурсов, управляемых ресурсов и diff
-
Потоковая передача логов подов с выбором контейнера
-
Вход через SSO по протоколу OIDC/Dex (GitHub, LDAP, SAML и др.) с использованием PKCE — пароли не сохраняются
-
Вход по имени пользователя и паролю в качестве резервного варианта
Поддержка SSO
Приложение выполняет прямой OIDC PKCE-поток напрямую со встроенным Dex вашего ArgoCD или с внешним OIDC-провайдером.
Dex: регистрация URI перенаправления для мобильного приложения
ArgoCD жёстко прописывает статический клиент Dex argo-cd-cli в файле util/dex/config.go, допуская только http://localhost и http://localhost:8085/auth/callback в качестве URI перенаправления. Этот список regenerirуется при каждом перезапуске Dex и не может быть переопределён через argocd-cm. URI приложения argocd://auth/callback необходимо внедрить уже после генерации.
Патч деплоймента
Этот подход оборачивает команду контейнера Dex фоновым процессом, который повторно внедряет URI перенаправления каждый раз, когда ArgoCD заново генерирует конфигурацию Dex:
kubectl patch deployment argocd-dex-server -n <argocd-namespace> --type=strategic -p '{
"spec": {
"template": {
"spec": {
"containers": [{
"name": "dex",
"command": [
"/bin/sh",
"-c",
"(LAST=\"\"; while true; do M=$(stat -c %Y /tmp/dex.yaml 2>/dev/null); if [ \"$M\" != \"$LAST\" ]; then LAST=$M; grep -q \"argocd://auth/callback\" /tmp/dex.yaml 2>/dev/null || sed -i \"s| - http://localhost:8085/auth/callback| - http://localhost:8085/auth/callback\\n - argocd://auth/callback|\" /tmp/dex.yaml; fi; sleep 0.2; done) & exec /shared/argocd-dex rundex"
]
}]
}
}
}
}'
exec обеспечивает запуск argocd-dex rundex с PID 1, благодаря чему процесс корректно получает сигналы Kubernetes. Патчер работает в фоне и успевает раньше Dex при старте, поскольку отслеживает изменение файла и реагирует менее чем за 200 мс.
Внешний OIDC-провайдер
Если вы используете внешний OIDC-провайдер (настроенный через oidcConfig в argocd-cm), добавьте argocd://auth/callback в список разрешённых URI перенаправления в настройках приложения этого провайдера и задайте cliClientID в argocd-cm.
Разработка
yarn install
npx expo start
Требуется Expo Go или сборка для разработки на iOS или Android.