Migration Assistant without requiring AWS

Versions (relevant - OpenSearch/Dashboard/Server OS/Browser):

Describe the issue: I have some queries regarding the Migration Assistant especially when using Migration Assistant without requiring the use of any AWS services. I want to use Migration Assistant for OpenSearch Upgrade where up to 100 TB (or more) data may be involved. Below are the questions:

  1. Do we need to build the Migration Assistant binaries always from source or any pre-built images available that can be downloaded and run
  2. Has Migration Assistant ever been run on a non-AWS environment in Production on K8S ? Would it require changes in Migration Assistant code to run it in non AWS K8S environment ?
  3. For using RFS will already taken previous Snapshots will work or a new Snapshots need to be taken for the entire cluster indices before starting the migration procedure
  4. Is it necessary to store these snapshots in S3 storage or can they be stored on other type of storage like NFS and then used for RFS ?
  5. When RFS based backfill is bringing historical data into Target Cluster, can at the same time live traffic also be served to the target cluster OR live traffic must always be captured in a Kafka queue while RFS backfill is underway and then replayed later

Configuration:

Relevant Logs or Screenshots:

Hi @farman

According to documentation, Migration Assistant is deployed with AWS CloudFormation. The CloudFormation pulls the Migration Assistant EC2 image from AWS repo.

As mentioned before, AWS CloudFormation uses an AWS image to deploy the Migration Assistant as EC2 instance. However, OpenSearch Migration Roadmap has K8s/EKS implementation on the list

According to documentation, you can use existing snapshots. However, they must exist on the S3 bucket.

Documentation only mentions S3 bucket. I couldn’t find anything in the OpenSearch Migrations - Roadmap.

You should consider opening a feature request in the Migration Assistant repo.

You may also find this proposition interesting.

Hi @pablo,

Thanks for your comments. As I see there is already code available for non-AWS K8S deployment in github at following location:

However, as per documentation it is deployable on “MiniKube”, “Kind”. As I understand this is mostly useful for test and development OR can this be enhanced for use in Production environments ?
The ReadMe file Home · opensearch-project/opensearch-migrations Wiki · GitHub says:
“Migration Assistant runs on Kubernetes and uses Argo Workflows for orchestration. The diagram below shows the architecture on AWS EKS, but Migration Assistant works equivalently on any Kubernetes distribution including GKE, AKS, OpenShift, and self-managed Kubernetes clusters.”

But looking at the new backlog item (link below) you sent to enhance Migration Assistant for Multi-Cloud Support, it seems still a lot of work needs to be done to support Migration Assistant on non-AWS platforms (including on-premise).

So, I am still little confused as to what is the exact status of support of Migration Assistant for non-AWS K8S especially on-prem deployment

@farman I followed this documentation.

git clone https://github.com/opensearch-project/opensearch-migrations

cd opensearch-migrations/deployment/k8s

The current deployment/k8s/charts/aggregates/migrationAssistantWithArgo/values.yml is using the Docker Hub repository. But all images are on the AWS repo. So I changed that to:

images:
  captureProxy:
    repository: public.ecr.aws/opensearchproject/opensearch-migrations-traffic-capture-proxy
    tag: latest
  trafficReplayer:
    repository: public.ecr.aws/opensearchproject/opensearch-migrations-traffic-replayer
    tag: latest
  reindexFromSnapshot:
    repository: public.ecr.aws/opensearchproject/opensearch-migrations-reindex-from-snapshot
    tag: latest
  migrationConsole:
    repository: public.ecr.aws/opensearchproject/opensearch-migrations-console
    tag: latest
  installer:
    repository: public.ecr.aws/opensearchproject/opensearch-migrations-console
    tag: latest

Then I’ve just run this command on my k8s cluster (1 master + 3 workers)

helm install --create-namespace -n ma ma   deployment/k8s/charts/aggregates/migrationAssistantWithArgo

As a result, I’ve got this.

argo-server-7995446fd-8rssr                                1/1     Running   0          3m22s
argo-server-7995446fd-d95th                                1/1     Running   0          3m22s
argo-workflow-controller-7c969bf5b6-67mkl                  1/1     Running   0          3m22s
argo-workflow-controller-7c969bf5b6-q9mfj                  1/1     Running   0          3m22s
cert-manager-579475b66-fs7jz                               1/1     Running   0          3m22s
cert-manager-cainjector-7ff59b747c-29ptc                   1/1     Running   0          3m22s
cert-manager-webhook-74d7d5f5fd-wjwxt                      1/1     Running   0          3m22s
fluent-bit-k8nw8                                           1/1     Running   0          3m24s
fluent-bit-rnk4j                                           1/1     Running   0          3m24s
fluent-bit-s8jff                                           1/1     Running   0          3m24s
jaeger-559d44f9d8-jvwfq                                    1/1     Running   0          3m24s
kube-prometheus-stack-grafana-65b597d47-wdhqx              3/3     Running   0          3m13s
kube-prometheus-stack-kube-state-metrics-78c6b78b6-wsqrm   1/1     Running   0          3m13s
kube-prometheus-stack-operator-9c8cf6547-kttv6             1/1     Running   0          3m13s
kube-prometheus-stack-prometheus-node-exporter-7nrtg       1/1     Running   0          3m13s
kube-prometheus-stack-prometheus-node-exporter-ljkzd       1/1     Running   0          3m13s
kube-prometheus-stack-prometheus-node-exporter-pz67t       1/1     Running   0          3m13s
kube-prometheus-stack-prometheus-node-exporter-zwbh9       1/1     Running   0          3m13s
localstack-5975984cd6-mljrx                                1/1     Running   0          3m24s
migration-console-0                                        1/1     Running   0          2m8s
otel-collector-2964f                                       1/1     Running   0          2m8s
otel-collector-9vsqt                                       1/1     Running   0          2m8s
otel-collector-c4rl8                                       1/1     Running   0          2m8s
otel-collector-pnxrj                                       1/1     Running   0          2m8s
prometheus-kube-prometheus-stack-prometheus-0              3/3     Running   0          3m9s
strimzi-cluster-operator-55f77779bf-cjwpn                  1/1     Running   0          3m23s
pablo@kube-master-1:~/opensearch-migrations$ kubectl exec -it migration-console-0 -n ma -- /bin/bash                                                      Welcome to the Migration Assistant Console
(18:49:25) migration-console (~) -> console --version
Migration Assistant 3.2.0
(18:49:30) migration-console (~) ->

I haven’t tested any migration yet, but at least this gives a starting point.