Note: helm-hub-sync is no longer maintained or supported by JFrog. Feel free to review this code for your own POC concepts, but we are not continuing to update it or add features.
For helm-hub-sync replacement we do suggest to use JFrog ChartCenter which is a free Helm chart central repository that was built to help the Helm community find immutable, secure, and reliable charts and have a single source of truth to proxy all the charts from one location.
A command line tool to synchronize Helm Hub repositories with JFrog Artifactory
That's a really good question to begin with! Helm Hub with the new UI is super awesome, but it only can be used as distributed public repository to search for charts in UI.
You might still want to have a single central location where you can find the Helm charts for your organization. helm-hub-sync
helps you maintain a virtual repository in Artifactory that can be that single source of truth, using the configuration from Helm Hub.
To run the app, you'll need to set a few command line variables
- TIMEINTERVAL: The time in seconds between two successive runs (if not set, or set to
-1
, only one run will be done) - LOGLEVEL: The log level to use (possible values are
panic
,fatal
,error
,warn
,info
, anddebug
) - CONSOLELOG: Boolean value to create human-friendly, colorized output (set to
true
for console logging) - ARTIFACTORY_HOST: The hostname of JFrog Artifactory to connect to (like
http://jfrog.local/artifactory
) - ARTIFACTORY_HELM_REPO: The Helm Virtual Repository to use (like
helm
) - ARTIFACTORY_AUTH_TYPE: The authentication type to use (either
basic
orapikey
) - ARTIFACTORY_AUTH_DATA: The authentication data to use (see below for details)
- ARTIFACTORY_KEEP_LIST: A comma separated list containing Helm Remote repos that will never be removed (like
myAwesomeRepo, stable
) - ARTIFACTORY_KEEP_DELETED_REPOS: Boolean value whether to keep repos that have been removed from the GitHub data (defaults to
false
) - GITHUB_IGNORE_LIST: A comma separated list containing Helm repos that should never be created (like
stable, another-repo
)
helm-hub-sync uses JFrog Artifactory's REST API to update the Helm repositories. The JFrog Artifactory REST API supports a few forms of authentication:
- Basic authentication using your username and password
- Set
ARTIFACTORY_AUTH_TYPE
tobasic
andARTIFACTORY_AUTH_DATA
to<username>:<password>
- Set
- Basic authentication using your username and API Key.
- Set
ARTIFACTORY_AUTH_TYPE
tobasic
andARTIFACTORY_AUTH_DATA
to<username>:<apikey>
- Set
- Using an access token instead of a password for basic authentication.
- Set
ARTIFACTORY_AUTH_TYPE
tobasic
andARTIFACTORY_AUTH_DATA
to<username>:<token>
- Set
- Using a dedicated header (X-JFrog-Art-Api) with your API Key.
- Set
ARTIFACTORY_AUTH_TYPE
toapikey
andARTIFACTORY_AUTH_DATA
toyour api key>
- Set
The easiest way to install Helm-hub-sync is using the Helm chart
Please follow install instruction from chart's readme
For non Kubernetes environments export the necessary environment variables and run it
./helm-hub-sync
To build helm-hub-sync
locally
make build
To build helm-hub-sync
docker image locally (testing docker image build)
make image
We welcome community contribution through pull requests.
This tool is available under the Apache License, Version 2.0.
(c) All rights reserved JFrog