The Tackle Operator fully manages the deployment and life cycle of Tackle on Kubernetes and OpenShift.
Please ensure the following requirements are met prior installation.
- k8s v1.22+ or OpenShift 4.9+
- Persistent Storage
- Operator Lifecycle Manager (OLM) support
- Ingress support
- Network policy support
We strongly suggest OLM support for Tackle deployments, in some production kubernetes clusters OLM might already be present, if not, see the following examples in how to add OLM support to minikube or standard kubernetes clusters below:
$ minikube addons enable olm
$ minikube addons enable ingress
$ kubectl apply -f https://raw.githubusercontent.com/operator-framework/operator-lifecycle-manager/master/deploy/upstream/quickstart/crds.yaml
$ kubectl apply -f https://raw.githubusercontent.com/operator-framework/operator-lifecycle-manager/master/deploy/upstream/quickstart/olm.yaml
For details and official instructions in how to add OLM support to kubernetes and customize your installation see here
Note: Please wait a few minutes for OLM support to become available if this is a new deployment.
Tackle can provide namespace network isolation if a supported CNI, such as Calico, is installed.
$ minikube start --network-plugin=cni --cni=calico
Released (or public betas) of Tackle are installable on Kubernetes via OperatorHub.
Deploy Tackle using manifest:
$ kubectl apply -f https://raw.githubusercontent.com/konveyor/tackle2-operator/main/tackle-k8s.yaml
This step will create the konveyor-tackle namespace, catalogsource and other OLM related objects.
If you need to deploy a beta release (or special branch) please replace the main branch in URL with the desired beta branch (i.e v2.0.0-beta.0):
$ kubectl apply -f https://raw.githubusercontent.com/konveyor/tackle2-operator/v2.0.0-beta.0/tackle-k8s.yaml
Note: Upgrades between beta releases are not guaranteed , once installed, we strongly suggest to edit your subscription and switch to Manual upgrade mode for beta releases: $ kubectl edit subscription
-> installPlanApproval: Manual
$ cat << EOF | kubectl apply -f -
kind: Tackle
apiVersion: tackle.konveyor.io/v1alpha1
metadata:
name: tackle
namespace: <your-tackle-namespace>
spec:
EOF
Once the CR is created, the operator will deploy the hub, UI and configure the rest of required components.
Note: Please review storage requirements prior creating the Tackle CR in case you need to adjust settings.
Depending on your hardware it should take around 1-3 minutes to deploy Tackle, below is a sample output of a successful deployment
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
c4af2f0f9eab63b6ac49c81b0e517eb37c2efe1bb2ede02e8642cd--1-ghq 0/1 Completed 0 134m
konveyor-tackle-rm6jb 1/1 Running 0 134m
tackle-hub-6b6ff674dd-c6xbr 1/1 Running 0 130m
tackle-keycloak-postgresql-57f5c44bcc-r9w9s 1/1 Running 0 131m
tackle-keycloak-sso-c65cd79bf-6j4xr 1/1 Running 0 130m
tackle-operator-6b65fccb7f-q9lpf 1/1 Running 0 133m
tackle-pathfinder-6c58447d8f-rd6rr 1/1 Running 0 130m
tackle-pathfinder-postgresql-5fff469bcc-bc5z2 1/1 Running 0 130m
tackle-ui-5f694bddcb-scbh5 1/1 Running 0 130m
Released (or public betas) of Tackle are installable on OpenShift via community operators which appear in OCP and OKD.
- Visit the OpenShift Web Console.
- Navigate to Operators => OperatorHub.
- Search for Tackle.
- Install the desired Tackle version.
Installing latest is almost an identical procedure to released versions but requires creating a new catalog source.
oc apply -f https://raw.githubusercontent.com/konveyor/tackle2-operator/main/tackle-operator-catalog.yaml
- Visit the OpenShift Web Console.
- Navigate to Operators => OperatorHub.
- Search for Tackle.
- There should be two Tackle available for installation now.
- Select the Tackle without the community tag.
- Proceed to install latest using the development channel in the subscription step.
- Visit OpenShift Web Console, navigate to Operators => Installed Operators.
- Select Tackle.
- Locate Tackle on the top menu and click on it.
- Adjust settings if desired and click Create instance.
If operator defaults need to be altered, the Tackle CR spec can be customized to meet desired needs, see the table below for some of the most significant settings:
Name | Default | Description |
---|---|---|
feature_auth_required | true | Enable keycloak auth or false (single user/noauth) |
feature_isolate_namespace | true | Enable namespace isolation via network policies |
hub_database_volume_size | 5Gi | Size requested for Hub database volume |
hub_bucket_volume_size | 100gi | Size requested for Hub bucket volume |
keycloak_database_data_volume_size | 1Gi | Size requested for Keycloak DB volume |
pathfinder_database_data_volume_size | 1Gi | Size requested for Pathfinder DB volume |
maven_data_volume_size | 100Gi | Size requested for maven m2 repository volume |
rwx_storage_class | N/A | Storage class requested for Tackle RWX volumes |
rwo_storage_class | N/A | Storage class requested for Tackle RWO volumes |
Custom settings can be applied by editing the Tackle
CR.
oc edit tackle -n <your-tackle-namespace>
Tackle requires a total of 5 persistent volumes (PVs) used by different components to successfully deploy, 3 RWO volumes and 2 RWX volumes will be requested via PVCs.
Name | Default Size | Access Mode | Description |
---|---|---|---|
hub database | 5Gi | RWO | Hub DB |
hub bucket | 100Gi | RWX | Hub file storage |
keycloak postgresql | 1Gi | RWO | Keycloak backend DB |
pathfinder postgresql | 1Gi | RWO | Pathfinder backend DB |
maven | 100Gi | RWX | maven m2 repository |
The example below requests a custom hub bucket volume size and RWX storage class
kind: Tackle
apiVersion: tackle.konveyor.io/v1alpha1
metadata:
name: tackle
namespace: <your-tackle-namespace>
spec:
hub_bucket_volume_size: "50Gi"
rwx_storage_class: "nfs"
See development.md for details in how to contribute to Tackle operator.
See the Konveyor Tackle Documentation for detailed installation instructions as well as how to use Tackle.