×
Community Blog Migrating Applications from the Application Center to ACK One GitOps

Migrating Applications from the Application Center to ACK One GitOps

This article describes how to migrate applications from Application Center to ACK One GitOps.

By Liusheng

This article focuses only on the migration of applications that use Git as the source in the Application Center. For migrating applications that use orchestration templates as the source, please refer to the Q&A section.

Prerequisites

(1) An ACK One multi-cluster management instance is created. For more information, see Enable multi-cluster Management.

(2) A sub-cluster is connected to the ACK One multi-cluster management instance. For more information, see Manage Associated Clusters.

(3) GitOps is enabled for the ACK One multi-cluster instance. For more information, see Quick Start of GitOps.

Step 1: Download the ArgoCD CLI and Access the Master Instance in the Application Center

(1) Visit the ArgoCD to download and install the latest ArgoCD CLI.

(2) Use the ArgoCD CLI to access the master instance in the Application Center.

Import environment variables:

$ export ARGOCD_OPTS='--port-forward-namespace appcenter --plaintext'

View the application list. The example is as follows:

$ argocd app list
NAME                   CLUSTER                     NAMESPACE  PROJECT  STATUS  HEALTH   SYNCPOLICY  CONDITIONS  REPO                                              PATH  TARGET
appcenter/gitops-demo  https://192.168.0.244:6443  gitops     default  Synced  Healthy  <none>      <none>      git@github.com:haoshuwei/gitops-demo-private.git  helm  main

The name of the application to be migrated is gitops-demo. The repo used is git@github.com:haoshuwei/gitops-demo-private.git. The application is deployed in the target cluster https://192.168.0.244:6443

Step 2: Export the Application Manifest

(1) Export Application CR Manifests. The following is an example:

$ kubectl -n appcenter get application gitops-demo -oyaml > gitops-demo.yaml

(2) Export the repo secret used by the application. The following is an example:

View the list of repo secret:

$ kubectl -n appcenter get secret -l argocd.argoproj.io/secret-type=repository
NAME              TYPE     DATA   AGE
repo-3914117193   Opaque   5      50m

According to the fact that repo url used by the application gitops-demo in step 1 is git@github.com:haoshuwei/gitops-demo-private.git, confirm the name of the repo secret to be exported and view the repo secret information as follows:

$ kubectl -n appcenter get secret repo-3914117193 -o jsonpath="{.data.url}" | base64 -d
git@github.com:haoshuwei/gitops-demo-private.git

Confirm and export the repo secret named repo-3914117193:

$ kubectl -n appcenter get secret repo-3914117193 -oyaml > repo-3914117193.yaml

Step 3: Download the ArgoCD CLI and Access the Master Instance of ACK One

(1) For more information, see Use the ArgoCD CLI to Access the ACK One GitOps.

(2) View the sub-cluster information. The following is an example:

$ argocd cluster list
SERVER                          NAME                                                      VERSION  STATUS      MESSAGE                                                  PROJECT
https://<apiserver>:6443        <clusterid>-ack-production-oversea  1.24+    Successful
https://kubernetes.default.svc  in-cluster                                                         Unknown     Cluster has no applications and is not being monitored.

Step 4: Import the Application Manifest to the Master Instance of ACK One

(1) Modify the gitops-demo.yaml and repo-3914117193.yaml files exported in step 2:

Check whether the {.spec.destination.server} server address in the gitops-demo.yaml is the same as the server address of the destination cluster listed in step 3 (whether they are the public network addresses or internal network addresses). If they are different, run the following shell command to modify them:

Replace $sed -i "s/192.168.0.244/< with the IP address of the cluster server in the ACK One instance >/g" gitops-demo.yaml

Change the namespace in the gitops-demo.yaml to argocd. The following is an example:

$ sed -i "s/namespace: appcenter/namespace: argocd/g" gitops-demo.yaml

Change the namespace in the repo-3914117193.yaml to argocd. The following is an example:

$ sed -i "s/namespace: appcenter/namespace: argocd/g" repo-3914117193.yaml

(2) Import repo Manifests to the master instance of ACK One

Import repo-3914117193.yaml

$ kubectl apply -f repo-3914117193.yaml

Check whether the repo has been imported and confirm that the STATUS is Successful (indicating that the repo is connected):

$ argocd repo list
TYPE  NAME                 REPO                                              INSECURE  OCI    LFS    CREDS  STATUS      MESSAGE  PROJECT
git   gitops-demo-private  git@github.com:haoshuwei/gitops-demo-private.git  true      false  false  false  Successful

(3) Import application Manifests to the master instance of ACK One

Import gitops-demo.yaml

$ kubectl apply -f gitops-demo.yaml

View the application list and check whether the application status is consistent with the Application Center:

$ argocd app list
NAME         CLUSTER                   NAMESPACE  PROJECT  STATUS  HEALTH   SYNCPOLICY  CONDITIONS  REPO                                              PATH  TARGET
gitops-demo  https://<apiserver>:6443  gitops     default  Synced  Healthy  <none>      <none>      git@github.com:haoshuwei/gitops-demo-private.git  helm  main

Step 5: Remove the Application from the Application Center

In the master instance of the Application Center, run the following command to remove the application:

$ argocd app delete gitops-demo --cascade=false

Note: You must use the --cascade=false parameter. Otherwise, the Kubernetes resources that run in the target cluster will be deleted along with the application.

Now, you have successfully migrated the application from the Application Center to ACK One GitOps.

Q&A

(1) How to migrate the applications that use orchestration templates as the source?

ACK One GitOps iterates on features with the Argocd open source community and only supports the creation and management of applications sourced from Git. For applications in the Application Center sourced from an orchestration template, you must manually migrate the template to a Git source, use that source to publish the application in the ACK One GitOps system, and then follow step 5 to remove the application from the Application Center.

(2) How to replace the triggers of the applications that use orchestration templates as the source?

Application Center triggers only support applications sourced from orchestration templates. In ACK One GitOps systems, applications using Git as the source automatically update application images using image-updater. For instructions on using image-updater to automatically update application images, refer to: https://www.alibabacloud.com/blog/practices-for-building-gitops-delivery-based-on-ack-one-and-acr_600067

(3) How to migrate applications automatically updated by image-updater in the Application Center to ACK One GitOps?

After completing the previous five steps, you need to configure credentials for accessing ACR and Git repositories in the master instance of ACK One:

Configure credentials for accessing ACR:

$ kubectl -n argocd apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: acr
type: Opaque
stringData:
  acr: <your_username>:<your_password>  Replace <your_username>:<your_password> with the credentials of your image repository.
EOF

Configure credentials for accessing the Git repository:

$ kubectl -n argocd create secret generic git-creds \
--from-literal=username=<your_username> \
--from-literal=password=<your_password>

Update the annotation argocd-image-updater.argoproj.io/write-back-method in the application as follows:

metadata:
  annotations:
    argocd-image-updater.argoproj.io/write-back-method: git:secret:argocd/git-creds

That is, update the namespace appcenter in the git:secret:<modify from appcenter to argocd>/git-creds to argocd.

0 1 0
Share on

Alibaba Container Service

120 posts | 26 followers

You may also like

Comments