Installation

Prerequisites Details#

Chart Details#

The chart will do the following:

Installing the chart#

If you are experienced with Kubernetes, you can customize your installation here.

Prerequisites#

  • Argo Workflow

    Note: KintoHub has been tested with argo workflow chart 0.16.6.

  • KintoHub does not support its private docker registry yet. You must use an external one (docker hub, gcr, ecr, acr, etc.).

Install Argo Workflow#

Notes: for containerd runtime, you need to add --set controller.containerRuntimeExecutor=kubelet (k8s +1.20)

kubectl create namespace argo
helm repo add argo https://argoproj.github.io/argo-helm
helm upgrade --install argo \
--version 0.16.6 \
--set installCRD=true \
--set singleNamespace=false \
--set useDefaultArtifactRepo=true \
--set artifactRepository.archiveLogs=true \
--set artifactRepository.s3.accessKeySecret.name=kinto-minio \
--set artifactRepository.s3.accessKeySecret.key=accesskey \
--set artifactRepository.s3.secretKeySecret.name=kinto-minio \
--set artifactRepository.s3.secretKeySecret.key=secretkey \
--set artifactRepository.s3.insecure=true \
--set artifactRepository.s3.bucket=argo-artifacts \
--set artifactRepository.s3.endpoint=kinto-minio:9000 \
--set artifactRepository.minio.install=false \
--namespace argo argo/argo

Install Cert-Manager#

  • Cert Manager

    Note: KintoHub has been tested with cert-manager chart v0.15.0.

You must have a domain name ready to be used. KintoHub only supports Cloudflare at the moment, you can create a free account and transfer your domain ownership easily. Please create an issue if you want to add more providers.

kubectl create namespace cert-manager
helm repo add jetstack https://charts.jetstack.io
helm upgrade --install cert-manager \
--version v0.15.0 \
--set installCRDs=true \
--namespace cert-manager jetstack/cert-manager

Install KintoHub#

This will install KintoHub with PUBLIC dashboard access. For more secure setup, please check our advanced installation.

Don't forget the change the values inside the curly braces.

kubectl create ns kintohub
helm repo add kintohub https://kintoproj.github.io/kinto-helm
helm upgrade --install kinto \
--set common.domainName='{your_domain}' \
--set common.ssl.enabled=true \
--set common.ssl.issuer.email={your_email} \
--set common.ssl.issuer.solver.cloudflare.email={your_cloudflare_account} \
--set common.ssl.issuer.solver.cloudflare.cloudflareApiToken={your_cloudflare_api_token} \
--set builder.env.IMAGE_REGISTRY_HOST={your_image_registry_host} \
--set builder.workflow.docker.registry={your_image_registry_api_host} \
--set builder.workflow.docker.email={your_image_registry_email} \
--set builder.workflow.docker.username={your_image_registry_username} \
--set builder.workflow.docker.password={your_image_registry_password} \
--set minio.resources.requests.memory=null \
--set nginx-ingress-controller.service.type=LoadBalancer \
--set core.ingress.enabled=true \
--set core.secretKey={your_kinto_secret_to_protect_the_dashboard} \
--set dashboard.ingress.enabled=true \
--namespace kintohub kintohub/kinto

This is an example for the configuration using oss.kintohub.net as domain, with dockerhub as image registry (public).

helm upgrade --install kinto \
--set common.domainName='oss.kintohub.net' \
--set common.ssl.enabled=true \
--set common.ssl.issuer.solver.cloudflare.cloudflareApiToken={cloudflare-api-token} \
--set builder.env.IMAGE_REGISTRY_HOST=kintohub \
--set builder.workflow.docker.registry=https://index.docker.io/v1/ \
--set builder.workflow.docker.username=kintohub \
--set builder.workflow.docker.password={dockerhub-api-token} \
--set minio.resources.requests.memory=null \
--set nginx-ingress-controller.service.type=LoadBalancer \
--set core.ingress.enabled=true \
--set core.secretKey=k1nT0!c0R3!53cr3T \
--set dashboard.ingress.enabled=true \
--namespace kintohub kintohub/kinto

Configure and Access KintoHub#

In order to configure KintoHub dashboard and the services it deploy, you should configure your DNS with the instructions shown after KintoHub is installed.

i.e. You should see the following instruction after you install KintoHub:

######################################
SETUP:
1. Get the IP of your Load Balancer.
NOTE: It may take a few minutes for the LoadBalancer public IP to be available!
You can watch the status of the service by running `kubectl get svc -n kintohub -w kinto-nginx-ingress-controller`.
export LB_IP=$(kubectl get service kinto-nginx-ingress-controller -n kintohub -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
echo ${LB_IP}
...

Execute the following line (it may return empty but just wait a while, as the load balancer may take time to setup )

export LB_IP=$(kubectl get service kinto-nginx-ingress-controller -n kintohub -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
echo ${LB_IP}
> 104.248.96.100

Configure the A record with the IP you got on your DNS provider.

For example on cloudflare if you have a domain example.com:

DNS Setup

All your subdomain *.kinto.example.com are now pointed to KintoHub. i.e. your services deployed by KintoHub should have the url like services-ae21234.kinto.example.com, and at the same time you can access the dashboard at dashboard.kinto.example.com

Uninstall the chart#

helm uninstall kinto --namespace kintohub
kubectl delete ns kintohub

Note: you can use the same command to uninstall argo and cert-manager too.