Skip to main content
In this lesson, we will walk through the process of cloning a manifest repository and configuring Argo CD to deploy our Solar System application. The GitHub-hosted repository contains a single Kubernetes folder with the deployment and service YAML files.

Step 1. Initial Deployment Manifest

Below is the initial deployment manifest for the Solar System application:

Step 2. Cloning the Manifest Repository

Clone the repository into Git using your GitHub migration option. In this example, the migration is performed under the “Dash” organization.
The image shows a web interface for migrating a Git repository, with fields for the repository URL, access token, and options for migration settings. The owner and repository name are specified, and there is a button to "Migrate Repository."
After a brief wait, the repository is successfully imported. Even though both the deployment and service YAML files are present, note that the deployment manifest now requires a secret named mongodb‑secrets—which is currently missing.

Step 3. Updating the Deployment Manifest with a Reference to a Secret

The updated snippet of the deployment YAML includes an environment variable section for MongoDB credentials:
Since the referenced secret is missing, we need to create and store it securely.

Step 4. Creating the Kubernetes Secret

Our cluster already has the “solar-system” namespace. You can verify the namespaces and running nodes with the following commands:
Example output:
And to view the nodes:
Example output:
Generate a secret YAML without creating it immediately in the cluster. This command creates a file named “mongo-creds_k8s-secret.yaml” containing the secret’s definition:
Although the generated YAML encodes the values in Base64, storing unencrypted secrets in Git is not recommended. We will improve security by encrypting these secrets using Bitnami Sealed Secrets.
The unencrypted secret YAML might look as follows:

Step 5. Encrypting the Secret Using Bitnami Sealed Secrets

First, retrieve the TLS certificate from the Sealed Secrets controller. List the secrets in the “kube-system” namespace and filter for those containing “sealed”:
Example output:
Next, extract and decode the TLS certificate:
Now, use the kubeseal CLI to generate an encrypted sealed secret from your previously generated YAML file:
The resulting sealed secret will look similar to this:
This sealed secret can now be safely stored in your Git repository. Commit the file (e.g., named secret.yaml) as part of your manifest repository.
The image shows a Gitea repository interface with a list of YAML files related to Kubernetes, including deployment.yml, secret.yml, and service.yml. The repository is named "solar-system-gitops-argocd."

Step 6. Configuring the Argo CD Application

Now we configure an Argo CD application to deploy the Solar System app. Argo CD is installed in the Kubernetes cluster and runs in its own namespace. Verify its installation with:
The Argo CD server is accessible on node port 31663. After logging into the Argo CD UI, you’ll notice that it manages the Bitnami Sealed Secrets application. For example:
The image shows the Argo CD interface displaying an application named "bitnami-sealed-secrets" with a status of "Healthy" but "OutOfSync." It includes details like the repository URL, target revision, and namespace.

Creating the Solar System Argo CD Application

Configure the application with the following settings:
  • Name: Solar System Argo App
  • Project: default
  • Synchronization Policy: Manual (auto-sync is disabled for now)
  • Namespace: Enable auto-creation during sync if the target namespace (“solar-system”) does not exist
  • Repository URL: Use the URL from your migrated repository
  • Revision: main
  • Path: Kubernetes
  • Cluster URL: Use the default in-cluster URL
The application configuration screen looks similar to the following:
The image shows the Argo CD interface with a configuration screen for creating or managing an application, displaying options for source repository, revision, and path settings.
Once created, Argo CD fetches the manifests (service, deployment, and sealed secret files) from the repository. However, since manual synchronization is selected, the application remains out-of-sync until you trigger a sync:
The image shows the Argo CD interface displaying two applications, "bitnami-sealed-secrets" and "solar-system-argo-app," both marked as "OutOfSync" with different health statuses. The interface includes options to sync, refresh, or delete the applications.
Later, you can update the deployment manifest with the latest Docker image and then manually initiate a synchronization. The final state of the Solar System app in Argo CD is depicted here:
The image shows an Argo CD interface with an application named "solar-system-argo-app" that is out of sync and missing. It displays a visual representation of the application's components, including "solar-system" and "mongo-db-creds."

Conclusion

In this lesson, we successfully imported the manifest repository, added an encrypted secret using Bitnami Sealed Secrets, and configured an Argo CD application to manage the Solar System deployment. Thank you for following along! For more information, visit the Kubernetes Documentation and the Argo CD project page.

Watch Video