Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 17f

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2)

In a series of previous articles, I covered a lot about the “Quarkus – Kubernetes extension” and also the “Helm Extension for Quarkus”.

In my previous article, you could read more about the “Argo CD Extension for Quarkus” I tried out. As a base for this, I used my already existing Linux demo environment, including Quarkus and K3s (a lightweight certified Kubernetes distribution) and setup via Vagrant. The focus of that part 1 article, was setting up the ArgoCD environment. You could read for example about how I met a requirement for using the “Argo CD Extension for Quarkus”, by adding a project under version control system Git and pushing it on a GitHub Private repository.

In this part 2 article, I will continue following some of the next steps as described in the “Getting Started” part of the Argo CD documentation:

  • Login Using The CLI
  • Register A Cluster To Deploy Apps To (Optional)
  • Create An Application From A Git Repository, Creating Apps Via CLI
  • Create An Application From A Git Repository, Creating Apps Via UI
  • Sync (Deploy) The Application, Syncing via CLI
  • Sync (Deploy) The Application, Syncing via UI

[https://argo-cd.readthedocs.io/en/stable/getting_started/#getting-started]

I will be using the Argo CD CLI and UI in combination with an example GitHub repository containing a guestbook application.

Overview of my Linux demo environment, including Argo CD

Below, you can see an overview of my Linux demo environment, as described in my previous article:
[Quarkus – trying out the “Argo CD Extension for Quarkus” (part 1)]

This includes the Argo CD API Server and Argo CD CLI.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 18

For the Linux demo environment to start, from the Oracle VM VirtualBox Manager on my Windows laptop, I started the appliance (in “Headless Start” mode).

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 19

Once the VM was running, for executing later manual steps, I used vagrant ssh to connect into the running VM.

In my previous article, I already described how I installed Argo CD via kubectl.
[Quarkus – trying out the “Argo CD Extension for Quarkus” (part 1)]

This time however, I wanted Argo CD to be installed by using Helm.

But first, I had to remove the Argo CD Kubernetes objects that were created the previous time, when I installed Argo CD via kubectl, in order to be able to install Argo CD by using Helm.

Removing the created Kubernetes objects

As you may remember from my previous article, all the Argo CD Kubernetes objects were created in 1 namespace, named argocd.

In order to delete all the resources in the argocd namespace, I used the following command on the Linux Command Prompt:

kubectl delete -n argocd all --all

Remark about option –all:
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_delete/]

With the following output:

pod “argocd-application-controller-0” deleted
pod “argocd-applicationset-controller-694458f998-cp4lk” deleted
pod “argocd-dex-server-746dd6b4b9-g9cgf” deleted
pod “argocd-notifications-controller-746cd74b97-28tgf” deleted
pod “argocd-redis-db5bc49bf-bdd9t” deleted
pod “argocd-repo-server-775b449c46-f54lw” deleted
pod “argocd-server-7d4d46b98-bpxrh” deleted
service “argocd-applicationset-controller” deleted
service “argocd-dex-server” deleted
service “argocd-metrics” deleted
service “argocd-notifications-controller-metrics” deleted
service “argocd-redis” deleted
service “argocd-repo-server” deleted
service “argocd-server” deleted
service “argocd-server-metrics” deleted
deployment.apps “argocd-applicationset-controller” deleted
deployment.apps “argocd-dex-server” deleted
deployment.apps “argocd-notifications-controller” deleted
deployment.apps “argocd-redis” deleted
deployment.apps “argocd-repo-server” deleted
deployment.apps “argocd-server” deleted
replicaset.apps “argocd-server-7d4d46b98” deleted
statefulset.apps “argocd-application-controller” deleted

Install Argo CD by using Helm

I navigated to the “Operator Manual, Installation” part of the Argo CD documentation. From there, I navigated to the “Helm” part.

The Argo CD can be installed using Helm. The Helm chart is currently community maintained and available at argo-helm/charts/argo-cd.
[https://argo-cd.readthedocs.io/en/stable/operator-manual/installation/#helm]

Then, I clicked on the “argo-helm/charts/argo-cd” link.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 20

I logged in into github.com with my own GitHub account.
[https://github.com/argoproj/argo-helm/tree/main/charts/argo-cd]

In order to be able to clone this project onto my local computer, above the list of files, I clicked on “<> Code”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 21

Then, I clicked on “Code”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 22

In order to be able to clone this project onto my local computer, I clicked on “Copy URL to clipboard”.

https://github.com/argoproj/argo-helm.git

I will be using this remote repository URL later on.

The https:// clone URLs are available on all repositories, regardless of visibility. https:// clone URLs work even if you are behind a firewall or proxy.

When you git clone, git fetch, git pull, or git push to a private remote repository using HTTPS URLs on the command line, Git will ask for your GitHub username and password. When Git prompts you for your password, enter your personal access token.
[https://docs.github.com/en/get-started/git-basics/about-remote-repositories#cloning-with-https-urls]

On my Windows laptop, as you may remember from a previous article, I had a shared folder available.
[Quarkus – Supersonic Subatomic Java – Get Started (reinvestigated)]

So, in this shared folder, I navigated to helmcharts.

Next, in order to Clone a repository into a new directory, I used the following command:
[https://git-scm.com/docs/git-clone]

git.exe clone --progress --verbose https://marclameriks@github.com/argoproj/argo-helm.git

Remark about option –progress:
Progress status is reported on the standard error stream by default when it is attached to a terminal, unless –quiet is specified. This flag forces progress status even if the standard error stream is not directed to a terminal.
[https://git-scm.com/docs/git-clone#Documentation/git-clone.txt—progress]

Remark about option –verbose:
Run verbosely. Does not affect the reporting of progress status to the standard error stream.
[https://git-scm.com/docs/git-clone#Documentation/git-clone.txt–v]

Remark about authenticating with GitHub from Git:
In order to authenticate with GitHub from Git, I used the following format (after some research):
[https://stackoverflow.com/questions/10054318/how-do-i-provide-a-username-and-password-when-running-git-clone-gitremote-git]

https://<username>@<repository>

With the following output:

Cloning into 'argo-helm'...
POST git-upload-pack (193 bytes)
POST git-upload-pack (gzip 61370 to 30395 bytes)
remote: Enumerating objects: 23815, done.
remote: Counting objects: 100% (339/339), done.
remote: Compressing objects: 100% (163/163), done.
remote: Total 23815 (delta 291), reused 176 (delta 176), pack-reused 23476 (from 4)
Receiving objects: 100% (23815/23815), 47.12 MiB | 1.26 MiB/s, done.
Resolving deltas: 100% (16821/16821), done.

Next, I checked my shared folder, directory helmcharts\argo-helm.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 23

From there I navigated to helmcharts\argo-helm\charts\argo-cd.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 24

As you can see in the directory above, there is a file Chart.yaml and a file values.yaml.

Below, you can see the content of file Chart.yaml:

apiVersion: v2
appVersion: v3.2.3
kubeVersion: ">=1.25.0-0"
description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes.
name: argo-cd
version: 9.3.0
home: https://github.com/argoproj/argo-helm
icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
sources:
  - https://github.com/argoproj/argo-helm/tree/main/charts/argo-cd
  - https://github.com/argoproj/argo-cd
keywords:
  - argoproj
  - argocd
  - gitops
maintainers:
  - name: argoproj
    url: https://argoproj.github.io/
dependencies:
  - name: redis-ha
    version: 4.34.11
    repository: https://dandydeveloper.github.io/charts/
    condition: redis-ha.enabled
annotations:
  artifacthub.io/signKey: |
    fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
    url: https://argoproj.github.io/argo-helm/pgp_keys.asc
  artifacthub.io/changes: |
    - kind: added
      description: Ability to define global volumes and volume mounts

Below, you can see the content of file values.yaml (only showing the begin part):

## Argo CD configuration
## Ref: https://github.com/argoproj/argo-cd
##

# -- Provide a name in place of `argocd`
nameOverride: argocd
# -- String to fully override `"argo-cd.fullname"`
fullnameOverride: ""
# -- Override the namespace
# @default -- `.Release.Namespace`
namespaceOverride: ""
# -- Override the Kubernetes version, which is used to evaluate certain manifests
kubeVersionOverride: ""
# Override APIVersions
# If you want to template helm charts but cannot access k8s API server
# you can set api versions here
apiVersionOverrides: {}
…

Before I am going to use the Argo CD Helm chart, I wanted to make a change.

As you may remember from my previous article, the argocd-server service is of service type ClusterIP.

Remark about service type ClusterIP:
Exposes the Service on a cluster-internal IP. Choosing this value makes the Service only reachable from within the cluster. This is the default that is used if you don’t explicitly specify a type for a Service.
[https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types]

This time however, I wanted to use another service type.

Because I wanted to expose a Service onto an external IP address, one that’s accessible from outside of my cluster, I opted for using service type NodePort (including using my own port number), as I already did before and described in one of my articles some time ago.
[Quarkus – Kubernetes extension (reinvestigated, part 4), implementing a Service of service type NodePort]

Service with service type: NodePort

If you set the type field to NodePort, the Kubernetes control plane allocates a port from a range specified by –service-node-port-range flag (default: 30000-32767). Each node proxies that port (the same port number on every Node) into your Service. Your Service reports the allocated port in its .spec.ports[*].nodePort field.

Using a NodePort gives you the freedom to set up your own load balancing solution, to configure environments that are not fully supported by Kubernetes, or even to expose one or more nodes’ IP addresses directly.

For a node port Service, Kubernetes additionally allocates a port (TCP, UDP or SCTP to match the protocol of the Service). Every node in the cluster configures itself to listen on that assigned port and to forward traffic to one of the ready endpoints associated with that Service. You’ll be able to contact the type: NodePort Service, from outside the cluster, by connecting to any node using the appropriate protocol (for example: TCP), and the appropriate port (as assigned to that Service).
[https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport]

Be aware that when using a service type NodePort you expose one or more nodes’ IP addresses directly. So, this type of service exposure is not very secure, because external clients basically have access to worker nodes directly. NodePort is mainly recommended for demos and test environments. Do not use this service type in production.
[Quarkus – Kubernetes extension (reinvestigated, part 5), implementing a Service of service type LoadBalancer with K3s]

I changed the content of file values.yaml to (only showing the “Server service configuration” part):
[in bold, I highlighted the changes]


  ## Server service configuration
  service:
    # -- Server service annotations
    annotations: {}
    # -- Server service labels
    labels: {}
    # -- Server service type
    type: NodePort
    # -- Server service http port for NodePort service type (only if `server.service.type` is set to "NodePort")
    nodePortHttp: 30080
    # -- Server service https port for NodePort service type (only if `server.service.type` is set to "NodePort")
    nodePortHttps: 30443
    # -- Server service http port
    servicePortHttp: 80
    # -- Server service https port
    servicePortHttps: 443
    # -- Server service http port name, can be used to route traffic via istio
    servicePortHttpName: http
    # -- Server service https port name, can be used to route traffic via istio
    servicePortHttpsName: https
    # -- Server service https port appProtocol
    ## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#application-protocol
    servicePortHttpsAppProtocol: ""
    # -- The class of the load balancer implementation
    loadBalancerClass: ""
    # -- LoadBalancer will get created with the IP specified in this field
    loadBalancerIP: ""
    # -- Source IP ranges to allow access to service from
    ## EKS Ref: https://repost.aws/knowledge-center/eks-cidr-ip-address-loadbalancer
    ## GKE Ref: https://cloud.google.com/kubernetes-engine/docs/concepts/network-overview#limit-connectivity-ext-lb
    loadBalancerSourceRanges: []
    # -- Server service external IPs
    externalIPs: []
    # -- Denotes if this Service desires to route external traffic to node-local or cluster-wide endpoints
    ## Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
    externalTrafficPolicy: Cluster
    # -- Used to maintain session affinity. Supports `ClientIP` and `None`
    ## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
    sessionAffinity: None

As you can see above, I navigated to “Server service configuration” and changed the Argo CD Server service type, to: NodePort.

Install the Argo CD Helm chart

Now, in order to install the Argo CD Helm chart (in the argocd namespace), I used the following commands on the Linux Command Prompt:
[https://helm.sh/docs/helm/helm_install]

cd /mnt/mysharedfolder/helmcharts/argo-helm/charts

helm install argo-cd ./argo-cd --namespace argocd

With the following output:

Error: INSTALLATION FAILED: unable to continue with install: ServiceAccount “argocd-application-controller” in namespace “argocd” exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key “app.kubernetes.io/managed-by”: must be set to “Helm”; annotation validation error: missing key “meta.helm.sh/release-name”: must be set to “argo-cd”; annotation validation error: missing key “meta.helm.sh/release-namespace”: must be set to “argocd”

See https://stackoverflow.com/questions/62964532/helm-not-creating-the-resources

Apparently, the resource ServiceAccount “argocd-application-controller” in namespace “argocd” already exists. So first, I had to delete it.

In order to list all serviceaccounts in the argocd namespace, I used the following command on the Linux Command Prompt:

kubectl get serviceaccounts -n argocd

With the following output:

NAME                               SECRETS   AGE
argo-cd-argocd-redis-secret-init   0         11m
argocd-application-controller      0         5m46s
argocd-applicationset-controller   0         5m46s
argocd-dex-server                  0         5m46s
argocd-notifications-controller    0         5m46s
argocd-redis                       0         5m46s
argocd-repo-server                 0         5m46s
argocd-server                      0         5m46s
default                            0         14m

In order to delete all serviceaccounts in the argocd namespace, I used the following command on the Linux Command Prompt:

kubectl delete -n argocd serviceaccounts --all

With the following output:

serviceaccount "argo-cd-argocd-redis-secret-init" deleted
serviceaccount "argocd-application-controller" deleted
serviceaccount "argocd-applicationset-controller" deleted
serviceaccount "argocd-dex-server" deleted
serviceaccount "argocd-notifications-controller" deleted
serviceaccount "argocd-redis" deleted
serviceaccount "argocd-repo-server" deleted
serviceaccount "argocd-server" deleted
serviceaccount "default" deleted

Again, in order to install the Argo CD Helm chart (in the argocd namespace), I used the following command on the Linux Command Prompt:

[https://helm.sh/docs/helm/helm_install]

helm install argo-cd ./argo-cd --namespace argocd

With the following output:

Error: INSTALLATION FAILED: unable to continue with install: Secret "argocd-notifications-secret" in namespace "argocd" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "argo-cd"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "argocd"

Apparently, the resource Secret “argocd-notifications-secret” in namespace “argocd” already exists. So first, I had to delete it.

In order to list all secrets in the argocd namespace, I used the following command on the Linux Command Prompt:

kubectl get secrets -n argocd

With the following output:

NAME TYPE DATA AGE
argocd-initial-admin-secret Opaque 1 16m
argocd-notifications-secret Opaque 0 10m
argocd-redis Opaque 1 16m
argocd-secret Opaque 5 10m

In order to delete all secrets in the argocd namespace, I used the following commands on the Linux Command Prompt:

kubectl delete -n argocd secrets --all

With the following output:

secret "argocd-initial-admin-secret" deleted
secret "argocd-notifications-secret" deleted
secret "argocd-redis" deleted
secret "argocd-secret" deleted

Again, in order to install the Argo CD Helm chart (in the argocd namespace), I used the following command on the Linux Command Prompt:
[https://helm.sh/docs/helm/helm_install]

helm install argo-cd ./argo-cd --namespace argocd

With the following output:

Error: INSTALLATION FAILED: unable to continue with install: ConfigMap "argocd-cm" in namespace "argocd" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "argo-cd"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "argocd"

Apparently, the resource ConfigMap “argocd-cm” in namespace “argocd” already exists. So first, I had to delete it.

In order to list all configmaps in the argocd namespace, I used the following command on the Linux Command Prompt:

kubectl get configmaps -n argocd

With the following output:

NAME                        DATA   AGE
argocd-cm                   9      14m
argocd-cmd-params-cm        0      14m
argocd-gpg-keys-cm          0      14m
argocd-notifications-cm     0      14m
argocd-rbac-cm              0      14m
argocd-ssh-known-hosts-cm   1      14m
argocd-tls-certs-cm         0      14m
kube-root-ca.crt            1      20m

In order to delete all configmaps in the argocd namespace, I used the following command on the Linux Command Prompt:

kubectl delete -n argocd configmaps --all

With the following output:

configmap "argocd-cm" deleted
configmap "argocd-cmd-params-cm" deleted
configmap "argocd-gpg-keys-cm" deleted
configmap "argocd-notifications-cm" deleted
configmap "argocd-rbac-cm" deleted
configmap "argocd-ssh-known-hosts-cm" deleted
configmap "argocd-tls-certs-cm" deleted
configmap "kube-root-ca.crt" deleted

Again, in order to install the Argo CD Helm chart (in the argocd namespace), I used the following commands on the Linux Command Prompt:
[https://helm.sh/docs/helm/helm_install]

helm install argo-cd ./argo-cd --namespace argocd

With the following output:

Error: INSTALLATION FAILED: unable to continue with install: CustomResourceDefinition "applications.argoproj.io" in namespace "" exists and cannot be imported into the current release: invalid ownership metadata; label validation error: missing key "app.kubernetes.io/managed-by": must be set to "Helm"; annotation validation error: missing key "meta.helm.sh/release-name": must be set to "argo-cd"; annotation validation error: missing key "meta.helm.sh/release-namespace": must be set to "argocd"

After some research on the Internet, I changed the content of file values.yaml to (only showing the “Custom resource configuration” part):
[in bold, I highlighted the changes]

## Custom resource configuration
crds:
  # -- Install and upgrade CRDs
  install: false
  # -- Keep CRDs on chart uninstall
  keep: true
  # -- Annotations to be added to all CRDs
  annotations: {}
  # -- Additional labels to be added to all CRDs
  additionalLabels: {}

Again, in order to install the Argo CD Helm chart (in the argocd namespace), I used the following command on the Linux Command Prompt:
[https://helm.sh/docs/helm/helm_install]

helm install argo-cd ./argo-cd --namespace argocd

With the following output:

NAME: argo-cd
LAST DEPLOYED: Tue Jan 13 09:20:17 2026
NAMESPACE: argocd
STATUS: deployed
REVISION: 1
DESCRIPTION: Install complete
TEST SUITE: None
NOTES:
In order to access the server UI you have the following options:

1. kubectl port-forward service/argo-cd-argocd-server -n argocd 8080:443

    and then open the browser on http://localhost:8080 and accept the certificate

2. enable ingress in the values file `server.ingress.enabled` and either
      - Add the annotation for ssl passthrough: https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#option-1-ssl-passthrough
      - Set the `configs.params."server.insecure"` in the values file and terminate SSL at your ingress: https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#option-2-multiple-ingress-objects-and-hosts


After reaching the UI the first time you can login with username: admin and the random password generated during the installation. You can find the password by running:

kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

(You should delete the initial secret afterwards as suggested by the Getting Started Guide: https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli)

In order to list helm releases (for the current namespace context), I used the following command on the Linux Command Prompt:
[https://helm.sh/docs/helm/helm_list]

helm list

With the following output:

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
k3s-release default 1 2025-08-13 08:54:45.276772079 +0000 UTC deployed k3s-chart-0.1.0 1.16.0

In order to list all releases across all namespaces, I used the following command on the Linux Command Prompt:
[https://helm.sh/docs/helm/helm_list]

helm list --all-namespaces

With the following output:

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
argo-cd argocd 1 2026-01-13 09:33:02.169702739 +0000 UTC deployed argo-cd-9.3.0 v3.2.3
helm-kubernetes-quickstart nl-amis-development 2 2025-11-19 15:21:02.359823405 +0000 UTC deployed kubernetes-quickstart-1.0.0-SNAPSHOT
k3s-release default 1 2025-08-13 08:54:45.276772079 +0000 UTC deployed k3s-chart-0.1.0 1.16.0
traefik kube-system 1 2025-08-13 08:51:34.633744141 +0000 UTC deployed traefik-34.2.1+up34.2.0 v3.3.2
traefik-crd kube-system 1 2025-08-13 08:51:09.549088333 +0000 UTC deployed traefik-crd-34.2.1+up34.2.0 v3.3.2

In order to list all releases for a specific namespace, I used the following command on the Linux Command Prompt:
[https://helm.sh/docs/helm/helm_list]

helm list --namespace argocd

With the following output:

NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
argo-cd argocd 1 2026-01-13 09:33:02.169702739 +0000 UTC deployed argo-cd-9.3.0 v3.2.3

So now, let’s check the Kubernetes objects that were created.

I checked whether the Pods were running successfully, via a series of commands on the Linux Command Prompt.

kubectl get namespaces

With the following output:

NAME                   STATUS   AGE
argocd                 Active   24d
default                Active   153d
kube-node-lease        Active   153d
kube-public            Active   153d
kube-system            Active   153d
kubernetes-dashboard   Active   153d
nl-amis-development    Active   153d
kubectl get services -n argocd

With the following output:

NAME                                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGE
argo-cd-argocd-applicationset-controller   ClusterIP   10.43.135.23    <none>        7000/TCP                     4m27s
argo-cd-argocd-dex-server                  ClusterIP   10.43.6.39      <none>        5556/TCP,5557/TCP            4m27s
argo-cd-argocd-redis                       ClusterIP   10.43.90.59     <none>        6379/TCP                     4m27s
argo-cd-argocd-repo-server                 ClusterIP   10.43.98.107    <none>        8081/TCP                     4m27s
argo-cd-argocd-server                      NodePort    10.43.189.214   <none>        80:30080/TCP,443:30443/TCP   4m27s
kubectl get replicasets -n argocd

With the following output:

NAME                                                 DESIRED   CURRENT   READY   AGE
argo-cd-argocd-applicationset-controller-d95667bb6   1         1         1       4m39s
argo-cd-argocd-dex-server-5db69dd4c5                 1         1         1       4m39s
argo-cd-argocd-notifications-controller-b7fb4658b    1         1         1       4m39s
argo-cd-argocd-redis-64744bd689                      1         1         1       4m39s
argo-cd-argocd-repo-server-6989765765                1         1         1       4m39s
argo-cd-argocd-server-75d7874dcb                     1         1         1       4m39s
kubectl get pods -n argocd

With the following output:

NAME                                                       READY   STATUS    RESTARTS   AGE
argo-cd-argocd-application-controller-0                    1/1     Running   0          4m50s
argo-cd-argocd-applicationset-controller-d95667bb6-2sd4l   1/1     Running   0          4m51s
argo-cd-argocd-dex-server-5db69dd4c5-5h27c                 1/1     Running   0          4m51s
argo-cd-argocd-notifications-controller-b7fb4658b-fcth9    1/1     Running   0          4m51s
argo-cd-argocd-redis-64744bd689-bdqk4                      1/1     Running   0          4m50s
argo-cd-argocd-repo-server-6989765765-k47fw                1/1     Running   0          4m51s
argo-cd-argocd-server-75d7874dcb-qq5jp                     1/1     Running   0          4m51s
kubectl get endpointslice -n argocd

With the following output:

NAME                                             ADDRESSTYPE   PORTS       ENDPOINTS     AGE
argo-cd-argocd-applicationset-controller-9h9vz   IPv4          7000        10.42.0.131   5m16s
argo-cd-argocd-dex-server-pdjzz                  IPv4          5556,5557   10.42.0.132   5m16s
argo-cd-argocd-redis-mzlc7                       IPv4          6379        10.42.0.135   5m16s
argo-cd-argocd-repo-server-4797m                 IPv4          8081        10.42.0.129   5m16s
argo-cd-argocd-server-xstlh                      IPv4          8080,8080   10.42.0.133   5m16s
kubectl get nodes

With the following output:

NAME                     STATUS   ROLES                  AGE    VERSION
ubuntu2204.localdomain   Ready    control-plane,master   153d   v1.33.3+k3s1
kubectl get serviceaccounts -n argocd

With the following output:

NAME                               SECRETS   AGE
argo-cd-argocd-redis-secret-init   0         5m36s
argo-cd-argocd-repo-server         0         5m31s
argocd-application-controller      0         5m31s
argocd-applicationset-controller   0         5m31s
argocd-dex-server                  0         5m31s
argocd-notifications-controller    0         5m31s
argocd-server                      0         5m31s
default                            0         9m37s
kubectl get secrets -n argocd

With the following output:

NAME                            TYPE                 DATA   AGE
argocd-initial-admin-secret     Opaque               1      5m35s
argocd-notifications-secret     Opaque               0      5m40s
argocd-redis                    Opaque               1      5m43s
argocd-secret                   Opaque               5      5m40s
sh.helm.release.v1.argo-cd.v1   helm.sh/release.v1   1      5m45s
kubectl get configmaps -n argocd

With the following output:

NAME                                    DATA   AGE
argo-cd-argocd-redis-health-configmap   2      5m47s
argocd-cm                               17     5m47s
argocd-cmd-params-cm                    20     5m47s
argocd-gpg-keys-cm                      0      5m47s
argocd-notifications-cm                 1      5m47s
argocd-rbac-cm                          4      5m47s
argocd-ssh-known-hosts-cm               1      5m47s
argocd-tls-certs-cm                     0      5m47s
kube-root-ca.crt                        1      8m29s

Below, you see an overview of my Kubernetes cluster at this moment, with regard to the Argo CD API Server (argocd-server):

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 25

The argocd-server service is of service type NodePort.

Download Argo CD CLI

In my previous article, I described how I downloaded and installed the Argo CD CLI. Now I wanted to check if it is still working.

I should be able to run argocd commands.

So, let’s try it.

In order to print version information, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_version/]

argocd version

With the following output:

argocd: v3.2.2+8d0dde1
  BuildDate: 2025-12-18T10:17:02Z
  GitCommit: 8d0dde1388a92ca4dc0daacec5707f4378b9d06a
  GitTreeState: clean
  GoVersion: go1.25.0
  Compiler: gc
  Platform: linux/amd64
{"level":"fatal","msg":"Argo CD server address unspecified","time":"2025-12-19T14:12:55Z"}

This looked familiar. There is some work to be done.

Access the Argo CD API Server

In my previous article, I described how by default, the Argo CD API server is not exposed with an external IP. To access the API server, again I opted for using port forwarding.

I wanted to be able to use a Web Browser on my Windows laptop, to connect to the
Argo CD API server.

In my previous article, I also described how in the Oracle VM VirtualBox Manager on my Windows laptop, I navigated to the appliance | Details | Network | Advanced | Port Forwarding. And that I added two extra port forwarding rules (for ports 8085 en 8086).

In order to determine the IP of the K3s node, I used the following commands on the Linux Command Prompt, as I described in a previous article:
[Creating a re-usable Vagrant Box from an existing VM with Ubuntu and k3s (with the Kubernetes Dashboard) and adding mysql, using Vagrant and Oracle VirtualBox]

nodeIP=$(kubectl get node ubuntu2204.localdomain -o yaml | grep address: | grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}")
echo "---$nodeIP---"

With the following output:

---10.0.2.15---

Next, for port forwarding port 8085 on my Linux demo environment, I used the following command on the Linux Command Prompt:

socat tcp-listen:8085,fork tcp:$nodeIP:30080 &

With the following output:

[1] 60902
vagrant@ubuntu2204:/mnt/mysharedfolder/helmcharts/argo-helm/charts$ 2026/01/13 10:41:42 socat[60902] E bind(5, {AF=2 0.0.0.0:8085}, 16): Address already in use
^C
[1]+  Exit 1                  socat tcp-listen:8085,fork tcp:$nodeIP:30080

Because of the port forwarding steps described in my previous article, port 8085 was already in use.

In order to find the process/service listening on port 8085, I used the following command on the Linux Command Prompt:
[https://man7.org/linux/man-pages/man8/lsof.8.html]

sudo lsof -i :8085

With the following output:

COMMAND   PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
kubectl 10355 vagrant    8u  IPv4 111056      0t0  TCP *:8085 (LISTEN)

Remark about the -i option:
-i [i]
Selects the listing of files any of whose Internet address matches the address specified in i. If no address is specified, this option selects the listing of all Internet and x.25 (HP-UX) network files

Next, I killed that process:

sudo kill 10355

I repeated the steps above for port 8086.

Again, for port forwarding port 8085 on my Linux demo environment, I used the following command on the Linux Command Prompt:

socat tcp-listen:8085,fork tcp:$nodeIP:30080 &

With the following output:

[1] 60998

Again, for port forwarding port 8085 on my Linux demo environment, I used the following command on the Linux Command Prompt:

socat tcp-listen:8086,fork tcp:$nodeIP:30443 &

With the following output:

[2] 61015

With the port forwarding in place, I repeated the previous argocd command.

argocd version

With the following output:

argocd: v3.2.2+8d0dde1
  BuildDate: 2025-12-18T10:17:02Z
  GitCommit: 8d0dde1388a92ca4dc0daacec5707f4378b9d06a
  GitTreeState: clean
  GoVersion: go1.25.0
  Compiler: gc
  Platform: linux/amd64
argocd-server: v3.2.3+2b6251d

Below, you see an overview of my Kubernetes cluster at this moment:

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 26

In order to check access to the Argo CD API Server via port 8085, I used the following command on the Linux Command Prompt:

curl http://localhost:8085

With the following output:

<a href="https://localhost:8085/">Temporary Redirect</a>.

Remark about redirect:
Argo CD API server runs both a gRPC server (used by the CLI), as well as a HTTP/HTTPS server (used by the UI). Both protocols are exposed by the argocd-server service object on the following ports:

  • 443 – gRPC/HTTPS
  • 80 – HTTP (redirects to HTTPS)

[https://argo-cd.readthedocs.io/en/stable/operator-manual/ingress/#ingress-configuration]

In order to check access to the Argo CD API Server via port 8086, I used the following command on the Linux Command Prompt:

curl https://localhost:8086

With the following output:

2026/01/13 10:51:15 socat[61123] E write(6, 0x55d3711aa000, 24): Broken pipe
curl: (60) SSL certificate problem: self-signed certificate
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Remark about self-signed certificate:
This default installation will have a self-signed certificate and cannot be accessed without a bit of extra work. Do one of:

[https://argo-cd.readthedocs.io/en/stable/getting_started/#1-install-argo-cd]

Before looking further into this, first I continued following the steps as described in the “Getting Started” part of the Argo CD documentation.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#getting-started]

Login Using The CLI

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 27

I continued with reading the documentation.

The initial password for the admin account is auto-generated and stored as clear text in the field password in a secret named argocd-initial-admin-secret in your Argo CD installation namespace. You can simply retrieve this password using the argocd CLI:

argocd admin initial-password -n argocd

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 28
[https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli]

In order to retrieve the password for the admin account, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_admin/]

argocd admin initial-password -n argocd

With the following output:

RXuPhomo0kF8s-sr

This password must be only used for first time login. We strongly recommend you update the password using `argocd account update-password`.

I continued with reading the documentation.

Using the username admin and the password from above, login to Argo CD’s IP or hostname:

argocd login <ARGOCD_SERVER>

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 29
[https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli]

Remark:
Step 3 refers to: “Access The Argo CD API Server”.

In order to login to Argo CD’s IP or hostname, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_login/]

argocd login https://localhost:8086

With the following output:

{“level”:”fatal”,”msg”:”error dial proxy: dial tcp: address https://localhost:8086: too many colons in address”,”time”:”2026-01-13T11:54:08Z”}

Then, I had a look at: https://github.com/argoproj/argo-cd/issues/10884

Next, I used the following command on the Linux Command Prompt:

argocd login localhost:8086

With the following output:

WARNING: server certificate had error: error creating connection: tls: failed to verify certificate: x509: certificate signed by unknown authority. Proceed insecurely (y/n)? y
Username: admin
Password:
‘admin:login’ logged in successfully
Context ‘localhost:8086’ updated

In order to avoid the warning, I used the following command on the Linux Command Prompt:

argocd login --insecure localhost:8086

With the following output:

Username: Username: admin
Password:
‘admin:login’ logged in successfully
Context ‘localhost:8086’ updated

Remark about option –insecure:
Skip server certificate and domain verification
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_login/#argocd-login-command-reference]

I continued with reading the documentation.

Change the password using the command:

argocd account update-password

[https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli]

In order to change the password for the admin account, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_account/]

argocd account update-password

With the following output:

*** Enter password of currently logged in user (admin):
*** Enter new password for user admin:
*** Confirm new password for user admin:
Password updated
Context ‘localhost:8086’ updated

Now, I wanted to try out some argocd commands.

In order to list Argo CD Contexts, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/latest/user-guide/commands/argocd_context/]

argocd context

With the following output:

CURRENT NAME SERVER
* localhost:8086 localhost:8086

In order to list Argo CD applications, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_list/]

argocd app list

With the following output:

NAME CLUSTER NAMESPACE PROJECT STATUS HEALTH SYNCPOLICY CONDITIONS REPO PATH TARGET

In order to list all known certificates, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_cert_list/]

argocd cert list

With the following output:

HOSTNAME TYPE SUBTYPE INFO
[ssh.github.com]:443 ssh ecdsa-sha2-nistp256 SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM
[ssh.github.com]:443 ssh ssh-ed25519 SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU
[ssh.github.com]:443 ssh ssh-rsa SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s
bitbucket.org ssh ecdsa-sha2-nistp256 SHA256:FC73VB6C4OQLSCrjEayhMp9UMxS97caD/Yyi2bhW/J0
bitbucket.org ssh ssh-ed25519 SHA256:ybgmFkzwOSotHTHLJgHO0QN8L0xErw6vd0VhFA9m3SM
bitbucket.org ssh ssh-rsa SHA256:46OSHA1Rmj8E8ERTC6xkNcmGOw9oFxYr0WF6zWW8l1E
github.com ssh ecdsa-sha2-nistp256 SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM
github.com ssh ssh-ed25519 SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU
github.com ssh ssh-rsa SHA256:uNiVztksCsDhcc0u9e8BujQXVUpKZIDTMczCvj3tD2s
gitlab.com ssh ecdsa-sha2-nistp256 SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSnUw
gitlab.com ssh ssh-ed25519 SHA256:eUXGGm1YGsMAS7vkcx6JOJdOGHPem5gQp4taiCfCLB8
gitlab.com ssh ssh-rsa SHA256:ROQFvPThGrW4RuWLoL9tq9I9zJ42fK4XywyRtbOz/EQ
ssh.dev.azure.com ssh ssh-rsa SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og
vs-ssh.visualstudio.com ssh ssh-rsa SHA256:ohD8VZEXGWo6Ez8GSEJQ9WpafgLFsOfLOtGGQCQo6Og

In order to list all known TLS certificates, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_cert_list/]

argocd cert list --cert-type https

With the following output:

HOSTNAME  TYPE  SUBTYPE  INFO

In order to log out from Argo CD, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/latest/user-guide/commands/argocd_logout/]

argocd logout localhost:8086

With the following output:

Logged out from 'localhost:8086'

Remember, the warning mentioned above:

You should delete the argocd-initial-admin-secret from the Argo CD namespace once you changed the password. The secret serves no other purpose than to store the initially generated password in clear and can safely be deleted at any time. It will be re-created on demand by Argo CD if a new admin password must be re-generated.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#4-login-using-the-cli]

So, in order to list all secrets in the argocd namespace, I used the following command on the Linux Command Prompt:

kubectl get secrets -n argocd

With the following output:

NAME TYPE DATA AGE
argocd-initial-admin-secret Opaque 1 148m
argocd-notifications-secret Opaque 0 148m
argocd-redis Opaque 1 148m
argocd-secret Opaque 5 148m
sh.helm.release.v1.argo-cd.v1 helm.sh/release.v1 1 148m

Next, in order to get the secret argocd-initial-admin-secret‘s YAML, I used the following command on the Linux Command Prompt:

kubectl get secret argocd-initial-admin-secret -n argocd -o yaml

With the following output:

apiVersion: v1
data:
password: Ulh1UGhvbW8wa0Y4cy1zcg==
kind: Secret
metadata:
creationTimestamp: “2026-01-13T09:33:12Z”
name: argocd-initial-admin-secret
namespace: argocd
resourceVersion: “74739”
uid: 57c3958f-4ce3-4d77-b3b6-015b6f67f619
type: Opaque

Then, in order to get the password (base64 decoded) of the secret argocd-initial-admin-secret, I used the following command on the Linux Command Prompt:

kubectl get secret argocd-initial-admin-secret -n argocd --template={{.data.password}} | base64 -d

With the following output:

RXuPhomo0kF8s-sr

So, this was indeed the initial password for the admin account, which I changed by now.

Next, in order to delete the secret argocd-initial-admin-secret, I used the following command on the Linux Command Prompt:

kubectl delete secret argocd-initial-admin-secret -n argocdsecret -n argocd

With the following output:

secret "argocd-initial-admin-secret" deleted

Then, I continued following the steps as described in the “Getting Started” part of the Argo CD documentation.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#getting-started]

Create An Application From A Git Repository

An example repository containing a guestbook application is available at https://github.com/argoproj/argocd-example-apps.git to demonstrate how Argo CD works.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 30
[https://argo-cd.readthedocs.io/en/stable/getting_started/#6-create-an-application-from-a-git-repository]

I had a look at the URL, mentioned above:

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 31

I had a look at file README.md.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 32

Next, I navigated to the guestbook application.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 33

As you can see in the directory above, there is a file guestbook-ui-svc.yaml and a file guestbook-ui-deployment.yaml.

Below, you can see the content of file guestbook-ui-svc.yaml:

apiVersion: v1
kind: Service
metadata:
  name: guestbook-ui
spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: guestbook-ui

Below, you can see the content of file guestbook-ui-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: guestbook-ui
spec:
  replicas: 1
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app: guestbook-ui
  template:
    metadata:
      labels:
        app: guestbook-ui
    spec:
      containers:
        - image: gcr.io/google-samples/gb-frontend:v5
          name: guestbook-ui
          ports:
            - containerPort: 80

Create An Application From A Git Repository, Creating Apps Via CLI

I continued with reading the documentation.

First we need to set the current namespace to argocd running the following command:

kubectl config set-context --current --namespace=argocd

Create the example guestbook application with the following command:

argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default

[https://argo-cd.readthedocs.io/en/stable/getting_started/#creating-apps-via-cli]

So, in order to set the current namespace to argocd, I used the following command on the Linux Command Prompt:

sudo kubectl config set-context --current --namespace=argocd

With the following output:

Context "default" modified.

Next, in order to log in to Argo CD, I used the following command on the Linux Command Prompt:

argocd login --insecure localhost:8086

With the following output:

Username: admin
Password:
'admin:login' logged in successfully
Context 'localhost:8086' updated

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 27

Then, in order to create the example guestbook application, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_create/]

argocd app create guestbook --repo https://github.com/argoproj/argocd-example-apps.git --path guestbook --dest-server https://kubernetes.default.svc --dest-namespace default

With the following output:

application 'guestbook' created

So this command will create the following in Argo CD:

[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_create/]

Next, in order to list Argo CD applications, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_list/]

argocd app list

With the following output:

NAME              CLUSTER                         NAMESPACE  PROJECT  STATUS     HEALTH   SYNCPOLICY  CONDITIONS  REPO                                                 PATH       TARGET
argocd/guestbook  https://kubernetes.default.svc  default    default  OutOfSync  Missing  Manual      <none>      https://github.com/argoproj/argocd-example-apps.git  guestbook

Remark about the application name:
For the CLI and UI, applications are now referred to and displayed as in the format <namespace>/<name>.

For backwards compatibility, if the namespace of the Application is the control plane’s namespace (i.e. argocd), the <namespace> can be omitted from the application name when referring to it. For example, the application names argocd/someapp and someapp are semantically the same and refer to the same application in the CLI and the UI.
[https://argo-cd.readthedocs.io/en/stable/operator-manual/app-any-namespace/#application-names]

Next, in order to list Argo CD projects, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_proj/]

argocd proj list

With the following output:

NAME     DESCRIPTION  DESTINATIONS  SOURCES  CLUSTER-RESOURCE-WHITELIST  NAMESPACE-RESOURCE-BLACKLIST  SIGNATURE-KEYS  ORPHANED-RESOURCES  DESTINATION-SERVICE-ACCOUNTS
default               *,*           *        */*                         <none>                        <none>          disabled            <none>

By the way, in my next article I will go in to more detail on the components Argo CD application and Argo CD project.

Sync (Deploy) The Application, Syncing via CLI

I continued with reading the documentation.

Once the guestbook application is created, you can now view its status:

$ argocd app get guestbook
Name:               guestbook
Server:             https://kubernetes.default.svc
Namespace:          default
URL:                https://10.97.164.88/applications/guestbook
Repo:               https://github.com/argoproj/argocd-example-apps.git
Target:
Path:               guestbook
Sync Policy:        <none>
Sync Status:        OutOfSync from  (1ff8a67)
Health Status:      Missing

GROUP  KIND        NAMESPACE  NAME          STATUS     HEALTH
apps   Deployment  default    guestbook-ui  OutOfSync  Missing
       Service     default    guestbook-ui  OutOfSync  Missing

The application status is initially in OutOfSync state since the application has yet to be deployed, and no Kubernetes resources have been created. To sync (deploy) the application, run:

argocd app sync guestbook

This command retrieves the manifests from the repository and performs a kubectl apply of the manifests. The guestbook app is now running and you can now view its resource components, logs, events, and assessed health status.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#syncing-via-cli]

So, in order to get the Argo CD guestbook application details, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_get/]

argocd app get guestbook

With the following output:

Name:               argocd/guestbook
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          default
URL:                https://argocd.example.com/applications/guestbook
Source:
- Repo:             https://github.com/argoproj/argocd-example-apps.git
  Target:
  Path:             guestbook
SyncWindow:         Sync Allowed
Sync Policy:        Manual
Sync Status:        OutOfSync from  (0d521c6)
Health Status:      Missing

GROUP  KIND        NAMESPACE  NAME          STATUS     HEALTH   HOOK  MESSAGE
       Service     default    guestbook-ui  OutOfSync  Missing
apps   Deployment  default    guestbook-ui  OutOfSync  Missing

Next, in order to Sync the Argo CD guestbook application to its target state, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_sync/]

argocd app sync guestbook

With the following output:

TIMESTAMP                  GROUP        KIND   NAMESPACE                  NAME    STATUS    HEALTH        HOOK  MESSAGE
2026-01-13T13:54:12+00:00            Service     default          guestbook-ui  OutOfSync  Missing
2026-01-13T13:54:12+00:00   apps  Deployment     default          guestbook-ui  OutOfSync  Missing
2026-01-13T13:54:12+00:00            Service     default          guestbook-ui  OutOfSync  Healthy
2026-01-13T13:54:12+00:00            Service     default          guestbook-ui  OutOfSync  Healthy              service/guestbook-ui created
2026-01-13T13:54:12+00:00   apps  Deployment     default          guestbook-ui  OutOfSync  Missing              deployment.apps/guestbook-ui created
2026-01-13T13:54:12+00:00            Service     default          guestbook-ui    Synced  Healthy              service/guestbook-ui created

Name:               argocd/guestbook
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          default
URL:                https://argocd.example.com/applications/guestbook
Source:
- Repo:             https://github.com/argoproj/argocd-example-apps.git
  Target:
  Path:             guestbook
SyncWindow:         Sync Allowed
Sync Policy:        Manual
Sync Status:        Synced to  (0d521c6)
Health Status:      Progressing

Operation:          Sync
Sync Revision:      0d521c6e049889134f3122eb32d7ed342f43ca0d
Phase:              Succeeded
Start:              2026-01-13 13:54:12 +0000 UTC
Finished:           2026-01-13 13:54:12 +0000 UTC
Duration:           0s
Message:            successfully synced (all tasks run)

GROUP  KIND        NAMESPACE  NAME          STATUS  HEALTH       HOOK  MESSAGE
       Service     default    guestbook-ui  Synced  Healthy            service/guestbook-ui created
apps   Deployment  default    guestbook-ui  Synced  Progressing        deployment.apps/guestbook-ui created

Again, in order to get Argo CD guestbook application details, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_get/]

argocd app get guestbook

With the following output:

Name:               argocd/guestbook
Project:            default
Server:             https://kubernetes.default.svc
Namespace:          default
URL:                https://argocd.example.com/applications/guestbook
Source:
- Repo:             https://github.com/argoproj/argocd-example-apps.git
  Target:
  Path:             guestbook
SyncWindow:         Sync Allowed
Sync Policy:        Manual
Sync Status:        Synced to  (0d521c6)
Health Status:      Healthy

GROUP  KIND        NAMESPACE  NAME          STATUS  HEALTH   HOOK  MESSAGE
       Service     default    guestbook-ui  Synced  Healthy        service/guestbook-ui created
apps   Deployment  default    guestbook-ui  Synced  Healthy        deployment.apps/guestbook-ui created

Now, instead of creating and syncing an application via the Argo CD CLI, let’s repeat these steps, but this time we will be using the UI. In order to be able to do this, first we have to delete the application via the CLI.

So, in order to delete the Argo CD guestbook application, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_delete/]

argocd app delete guestbook

With the following output:

Are you sure you want to delete 'guestbook' and all its resources? [y/n] y
application 'guestbook' deleted

Again, in order to get the Argo CD guestbook application details, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/stable/user-guide/commands/argocd_app_get/]

argocd app list

With the following output:

NAME  CLUSTER  NAMESPACE  PROJECT  STATUS  HEALTH  SYNCPOLICY  CONDITIONS  REPO  PATH  TARGET

Finally, in order to log out from Argo CD, I used the following command on the Linux Command Prompt:
[https://argo-cd.readthedocs.io/en/latest/user-guide/commands/argocd_logout/]

argocd logout localhost:8086

With the following output:

Logged out from 'localhost:8086'

Create An Application From A Git Repository, Creating Apps Via UI

I continued with reading the documentation, and followed the steps as described.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 34

Open a browser to the Argo CD external UI, and login by visiting the IP/hostname in a browser and use the credentials set in step 4 or locally as explained in Try Argo CD Locally.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#creating-apps-via-ui]

First, in the Web Browser on my Windows laptop, I entered the URL:

https://localhost:8086

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 35

Remark about the connection:
As you may remember from my previous article, the Argo CD API Server uses a self-signed certificate and cannot be accessed without a bit of extra work.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#1-install-argo-cd]

Next, I clicked on “Advanced“.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 36

Then, I clicked on “Proceed to localhost (unsafe)”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 37

Next, I entered the username and password for the Argo CD API Server.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 38

After logging in, click the + New App button as shown below:
[https://argo-cd.readthedocs.io/en/stable/getting_started/#creating-apps-via-ui]

So, I clicked on “NEW APP”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 39

Give your app the name guestbook, use the project default, and leave the sync policy as Manual.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#creating-apps-via-ui]

I followed the steps as described.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 40

Connect the https://github.com/argoproj/argocd-example-apps.gitrepo to Argo CD by setting repository url to the github repo url, leave revision as HEAD, and set the path to guestbook.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#creating-apps-via-ui]

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 41

For Destination, set cluster URL to https://kubernetes.default.svc (or in-cluster for cluster name) and namespace to default.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#creating-apps-via-ui]

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 42

After filling out the information above, click Create at the top of the UI to create the guestbook application.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#creating-apps-via-ui]

So, I clicked on “CREATE”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 43

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 44

Above you can see that the Argo CD guestbook application was created.

Sync (Deploy) The Application, Syncing via UI

I continued with reading the documentation, and followed the steps as described.

On the Applications page, click on Sync button of the guestbook application.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#syncing-via-ui]

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 45

So, I clicked on “SYNC”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 46

A panel will be opened and then, click on Synchronize button.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#syncing-via-ui]

Next, I clicked on “SYNCHRONIZE”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 47

You can see more details by clicking at the guestbook application.
[https://argo-cd.readthedocs.io/en/stable/getting_started/#syncing-via-ui]

Then, I clicked on the Argo CD guestbook application.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 48

In the overview above, you can see (from left to right) the Argo CD guestbook Application, the
guestbook-ui Service, the guestbook-ui Deployment, the guestbook-ui-85db984648 ReplicaSet and the guestbook-ui-85db984648-cpfj2 Pod.

Finally, I clicked on “ Log out”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 49

Next, in the Web Browser on my Windows laptop, again I entered the URL:

https://localhost:8086

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 50

Then, I clicked on “Not secure”.

Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2) lameriks 2026 01 51

Finally, I clicked on “Turn on warnings” and closed the Web Browser.

Now, I wanted to check the created service in Kubernetes.

In order to set the current namespace back to default, I used the following command on the Linux Command Prompt:

sudo kubectl config set-context --current --namespace=default

With the following output:

Context "default" modified

I used the following command, to list the Services:

kubectl get services

With the following output:

NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
guestbook-ui   ClusterIP   10.43.245.240   <none>        80/TCP    5m56s
kubernetes     ClusterIP   10.43.0.1       <none>        443/TCP   153d

Above, you can see the guestbook-ui Service.

So, all these steps (using the Argo CD CLI and UI in combination with an example GitHub repository containing a guestbook application) as described in the “Getting Started” part of the Argo CD documentation, gave me a good idea about how to work with Argo CD.

I conclude this part 2 article.

In this article, I continued following some of the steps as described in the “Getting Started” part of the Argo CD documentation:

  • Login Using The CLI
  • Create An Application From A Git Repository, Creating Apps Via CLI
  • Create An Application From A Git Repository, Creating Apps Via UI
  • Sync (Deploy) The Application, Syncing via CLI
  • Sync (Deploy) The Application, Syncing via UI

[https://argo-cd.readthedocs.io/en/stable/getting_started/#getting-started]

As a base for this, I used my already existing Linux demo environment, including Quarkus and K3s (a lightweight certified Kubernetes distribution) and setup via Vagrant.

In my next article (part 3), I will continue with the “Getting started” part of the “Argo CD Extension for Quarkus”, in order to generate an Argo CD Application or Project as part of the Quarkus build or by using the Quarkus CLI.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.