ArgoCD is a continuous delivery tool for Kubernetes. It runs in a Kubernetes cluster and enables a GitOps workflow by watching repositories and automatically updating deployments using Kubernetes manifests.

Pre-Requisites

Before we get started deploying applications, you need to set up ArgoCD and Crossplane in our existing Kubernetes cluster.

For the Crossplane setup, you can follow the instructions available here.

For ArgoCD setup, you can follow its getting started guide.

Setting Up Pipelines

📘

ArgoCD project structure

For testing purposes, you do not need to create multiple projects in ArgoCD but rather use the default ArgoCD project.

You can see an example of using multiple projects for organizing your projects in ArgoCD if you wish to separate infrastructure and application definitions later.

ArgoCD is compatible with any hosted git platform. For this guide, we will use Github, but you can choose whatever platform with which you are most comfortable.

Using ArgoCD, we can create pipelines to deploy applications and Shipa resources that are available through the integration of Shipa and Crossplane. Shipa resources include frameworks, plans, and others.

ArgoCD uses projects to group applications and resources into a logical grouping. Although you can leverage ArgoCD projects in different ways, one common approach when integrating it with Shipa is to create 2 projects, one for applications and another for infrastructure, where you can organize your resources similar to this:

Infrastructure

  • frameworks
  • clusters
  • teams and roles

Applications

  • applications and related objects

Go to Settings > Projects > New Project in the ArgoCD console to create a new project. For this example, it may be easier to give the most permissive access and narrow the scope if you intend to run in a production scenario.

Also, you must enable in-cluster as a destination.

3358

Sets project destination and source repositories.

3358

Adding * to CLUSTER RESOURCE ALLOW LIST

Since Shipa will be the layer responsible for deploying the applications across multiple clusters, there is no need for you to set up different Kubernetes infrastructures on Argo.

1527

Creating Applications

📘

Resource definitions

Shipa integrates with Crossplane for creating and managing resources.

You can find detailed information on each resource kind and its definition here

You can use ArgoCD applications on both projects to deploy both infrastructure-related items and applications.

Within each project, you can create simple app-level separations to ease management, such as:

Infrastructure

  • frameworks
  • clusters
  • teams and roles

Applications

  • individual application per service

When creating your applications, you can use the following as an example:

3358 3360

Deployment

After creating the applications, you should see all resources appear in the visualization, and you will be able to sync them. Doing so, ArgoCD will then work with Crossplane and Shipa to create both infrastructure-related objects and applications across Kubernetes and Linux.

844

🚧

Deleting ArgoCD applications

Keep in mind that when you delete an application in ArgoCD (infrastructure and application), ArgoCD will automatically delete that resource on Shipa.