In a series of previous articles, I covered a lot about the “Argo CD Extension for Quarkus”.
In my previous article, I described how I continued with the “Getting started” part of the “Argo CD Extension for Quarkus”, and how I created an Argo CD Application in Kubernetes, for the “kubernetes-quickstart” application in my GitHub Private repository.
In this article (part 5), I will continue with, using the Argo CD Sync Options.
As a base for this, I will be using my already existing Linux demo environment, including Quarkus and K3s (a lightweight certified Kubernetes distribution) and setup via Vagrant.
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 4)]
This includes the Argo CD API Server and Argo CD CLI.
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).
Once the VM was running, for executing later manual steps, I used vagrant ssh to connect into the running VM.
The Argo CD Application and Argo CD Project manifest (yaml) files
In my previous article I described how the following Argo CD manifest (yaml) files were generated as part of the Quarkus build: application-kubernetes-quickstart.yaml and appproject-kubernetes-quickstart.yaml.
[Quarkus – trying out the “Argo CD Extension for Quarkus” (part 4)]
As you may remember, the content of file appproject-kubernetes-quickstart.yaml was:
--- apiVersion: argoproj.io/v1alpha1 kind: AppProject metadata: name: kubernetes-quickstart namespace: argocd spec: destinations: - namespace: nl-amis-development server: https://kubernetes.default.svc sourceRepos: - https://github.com/marclameriks/kubernetes-quickstart.git
As you may remember, the content of file application-kubernetes-quickstart.yaml was:
--- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: kubernetes-quickstart namespace: argocd spec: destination: server: https://kubernetes.default.svc namespace: nl-amis-development project: kubernetes-quickstart source: helm: valueFiles: - values.yaml path: .helm/kubernetes/kubernetes-quickstart repoURL: https://github.com/marclameriks/kubernetes-quickstart.git targetRevision: HEAD syncPolicy: automated: prune: true selfHeal: true retry: backoff: duration: 5s factor: 2 maxDuration: 10m syncOptions: - CreateNamespace=true - RespectIgnoreDifferences=true - ApplyOutOfSyncOnly=true
In order to see the current status of the Argo CD kubernetes-quickstart application (via the Argo CD UI), in the Web Browser on my Windows laptop, I entered the URL:
As I did before and described in my previous article, I logged in with the username and password for the Argo CD API Server.
[Quarkus – trying out the “Argo CD Extension for Quarkus” (part 2)]
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- Created: 01/25/2026 16:40:17 (23 days ago)
- Last Sync: 02/17/2026 19:38:07 (2 minutes ago)
Above you can see the Argo CD kubernetes-quickstart application. Next, I clicked on this application.
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- APP HEALTH: Healty
- SYNC STATUS: Synced to HEAD (96c2f7b)
- LAST SYNC: Sync OK to 96c2f7b, Succeeded 2 minutes ago (Tue Feb 17 2026 19:38:07 GMT +0100)
As you can see, there are 5 replicated Pods (replicas) running.
Again (as described in my previous article), let’s look at some of the Sync information visible on this page:
- APP HEALTH
The health status of your app.
- SYNC STATUS
Whether or not the version of your app is up to date with your repo. You may wish to sync your app if it is out-of-sync.
- LAST SYNC
Whether or not your last app sync was successful. It has been 0 days since last sync. Click for the status of that sync.
Argo CD compares the current, “live state” against the “desired target state” (as specified in the Git repo).
Argo CD is implemented as a Kubernetes controller which continuously monitors running applications and compares the current, live state against the desired target state (as specified in the Git repo). A deployed application whose live state deviates from the target state is considered OutOfSync. Argo CD reports & visualizes the differences, while providing facilities to automatically or manually sync the live state back to the desired target state. Any modifications made to the desired target state in the Git repo can be automatically applied and reflected in the specified target environments.
[https://argo-cd.readthedocs.io/en/latest/#architecture]
Components:
- API Server
The API server is a gRPC/REST server which exposes the API consumed by the Web UI, CLI, and CI/CD systems.
- Repository Server
The repository server is an internal service which maintains a local cache of the Git repository holding the application manifests. rver is a gRPC/REST server which exposes the API consumed by the Web UI, CLI, and CI/CD systems.
- Application Controller
The application controller is a Kubernetes controller which continuously monitors running applications and compares the current, live state against the desired target state (as specified in the repo). It detects OutOfSync application state and optionally takes corrective action. It is responsible for invoking any user-defined hooks for lifecycle events (PreSync, Sync, PostSync)
[https://argo-cd.readthedocs.io/en/latest/operator-manual/architecture/#components]
In my case Argo CD compares the current, “live state” of my “kubernetes-quickstart” application in my Kubernetes cluster, against the “desired target state”, as specified in my “kubernetes-quickstart” application in the “kubernetes-quickstart” project in my GitHub Private repository.
As I mentioned before, the content of file application-kubernetes-quickstart.yaml is:
[in bold, I highlighted the SyncPolicy part]
--- apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: kubernetes-quickstart namespace: argocd spec: destination: server: https://kubernetes.default.svc namespace: nl-amis-development project: kubernetes-quickstart source: helm: valueFiles: - values.yaml path: .helm/kubernetes/kubernetes-quickstart repoURL: https://github.com/marclameriks/kubernetes-quickstart.git targetRevision: HEAD syncPolicy: automated: prune: true selfHeal: true retry: backoff: duration: 5s factor: 2 maxDuration: 10m syncOptions: - CreateNamespace=true - RespectIgnoreDifferences=true - ApplyOutOfSyncOnly=true
This file contains a syncPolicy with an automated policy, that was set by default, when this Argo CD manifest (yaml) file was generated as part of the Quarkus build.
All these syncPolicy settings in the Argo CD Application manifest (yaml) file above, were generated as part of the Quarkus build. So let’s take a closer look at some of these settings.
Argo CD Automated Sync Policy
Automated Sync Policy
spec:
syncPolicy:
automated: {}
Argo CD has the ability to automatically sync an application when it detects differences between the desired manifests in Git, and the live state in the cluster. A benefit of automatic sync is that CI/CD pipelines no longer need direct access to the Argo CD API server to perform the deployment. Instead, the pipeline makes a commit and push to the Git repository with the changes to the manifests in the tracking Git repo.
[https://argo-cd.readthedocs.io/en/stable/user-guide/auto_sync/#automated-sync-policy]
Automatic Pruning
spec: syncPolicy: automated: prune: true
By default (and as a safety mechanism), automated sync will not delete resources when Argo CD detects the resource is no longer defined in Git. To prune the resources, a manual sync can always be performed (with pruning checked). Pruning can also be enabled to happen automatically as part of the automated sync by setting the prune option to true in the automated sync policy.
[https://argo-cd.readthedocs.io/en/stable/user-guide/auto_sync/#automatic-pruning]
Automatic Self-Healing
spec: syncPolicy: automated: selfHeal: true
By default, changes that are made to the live cluster will not trigger automated sync. To enable automatic sync when the live cluster’s state deviates from the state defined in Git, set the self-heal option to true in the automated sync policy.
[https://argo-cd.readthedocs.io/en/stable/user-guide/auto_sync/#automatic-self-healing]
Argo CD Retry Options
Retry
retry: backoff: duration: 5s factor: 2 maxDuration: 10m
The “Retry” option in ArgoCD controls whether failed sync operations are automatically retried.
[https://kubernetes-tutorial.schoolofdevops.com/articles/argo_retry_options/]
Argo CD app sync options:
- retry-backoff-duration (duration)
Retry backoff base duration. Input needs to be a duration (e.g. 2m, 1h) (default 5s)
- retry-backoff-factor (int)
Factor multiplies the base duration after each failed retry (default 2)
- retry-backoff-max-duration (duration)
Max retry backoff duration. Input needs to be a duration (e.g. 2m, 1h) (default 3m0s)
- retry-limit int
Max number of allowed sync retries
[https://argo-cd.readthedocs.io/en/release-2.0/user-guide/commands/argocd_app_sync/#options]
Argo CD Sync Options
Create Namespace
syncPolicy: … syncOptions: - CreateNamespace=true - RespectIgnoreDifferences=true - ApplyOutOfSyncOnly=true
An Argo CD Application can be configured so it will create the namespace specified in spec.destination.namespace if it doesn’t exist already. Without this, the Application will fail to sync if the namespace doesn’t exist.
[https://argo-cd.readthedocs.io/en/release-2.4/user-guide/sync-options/#create-namespace]
Respect ignore difference configs
syncPolicy: … syncOptions: - CreateNamespace=true - RespectIgnoreDifferences=true - ApplyOutOfSyncOnly=true
This sync option is used to enable Argo CD to consider the configurations made in the spec.ignoreDifferences attribute also during the sync stage. By default, Argo CD uses the ignoreDifferences config just for computing the diff between the live and desired state which defines if the application is synced or not. However during the sync stage, the desired state is applied as-is. The patch is calculated using a 3-way-merge between the live state the desired state and the last-applied-configuration annotation. This sometimes leads to an undesired results. This behavior can be changed by setting the RespectIgnoreDifferences=true sync option like in the example below:
apiVersion: argoproj.io/v1alpha1 kind: Application spec: ignoreDifferences: - group: "apps" kind: "Deployment" jsonPointers: - /spec/replicas syncPolicy: syncOptions: - RespectIgnoreDifferences=true
The example above shows how an ArgoCD Application can be configured so it will ignore the spec.replicas field from the desired state (git) during the sync stage. This is achieved by calculating and pre-patching the desired state before applying it in the cluster. Note that the RespectIgnoreDifferences sync option is only effective when the resource is already created in the cluster. If the Application is being created and no live state exists, the desired state is applied as-is.
[https://argo-cd.readthedocs.io/en/release-2.4/user-guide/sync-options/#respect-ignore-difference-configs]
Selective Sync
syncPolicy: … syncOptions: - CreateNamespace=true - RespectIgnoreDifferences=true - ApplyOutOfSyncOnly=true
Currently when syncing using auto sync, Argo CD applies this on every object in the application. For applications containing thousands of objects this takes quite a long time and puts undue pressure on the api server. Turning on selective sync option which will sync only out-of-sync resources.
You can add this option by adding ApplyOutOfSyncOnly=true in the manifest.
apiVersion: argoproj.io/v1alpha1 kind: Application spec: syncPolicy: syncOptions: - ApplyOutOfSyncOnly=true
[https://argo-cd.readthedocs.io/en/release-2.4/user-guide/sync-options/#selective-sync]
Changing the number of replicated Pods (replicas) from 5 to 2 in the “desired state” (Git repo)
As you may remember, a Deployment creates a ReplicaSet that creates a number of replicated Pods, indicated by the .spec.replicas field.
[https://kubernetes.io/docs/concepts/workloads/controllers/deployment/]
So, I wanted to make a change in the “desired state” of my “kubernetes-quickstart” application in the “kubernetes-quickstart” project in my GitHub Private repository.
In order to list all deployments in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
kubectl get deployments -n nl-amis-development
With the following output:
NAME READY UP-TO-DATE AVAILABLE AGE kubernetes-quickstart 5/5 5 5 3d13h
In order to list all replica set’s in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/]
kubectl get replicasets -n nl-amis-development
With the following output:
NAME DESIRED CURRENT READY AGE kubernetes-quickstart-547485758b 5 5 5 3d13h kubernetes-quickstart-65b8454949 0 0 0 26d
First, I checked the current number of Pods that were running, with the following command on the Linux Command Prompt:
kubectl get pods -n nl-amis-development
With the following output:
NAME READY STATUS RESTARTS AGE kubernetes-quickstart-547485758b-bc2zq 1/1 Running 0 3d13h kubernetes-quickstart-547485758b-bp2cj 1/1 Running 0 3d13h kubernetes-quickstart-547485758b-k5td4 1/1 Running 0 3d13h kubernetes-quickstart-547485758b-m4d92 1/1 Running 0 3d13h kubernetes-quickstart-547485758b-zlbhf 1/1 Running 0 3d13h
As you can see in the output above, 5 Pods were running successfully.
With regard to the shared folder, the following directory is present on my Windows laptop:
Next, in the shared folder, I navigated to github\repositories\private\kubernetes-quickstart\src\main\resources and changed the content of file application.properties to:
[in bold, I highlighted the changes]
quarkus.container-image.registry=localhost:8443 quarkus.container-image.username=mylocregusername quarkus.container-image.password=mylocregpassword quarkus.container-image.group=quarkus quarkus.kubernetes.namespace=nl-amis-development quarkus.kubernetes.ports.”ports”.container-port=8080 quarkus.kubernetes.ports.”ports”.host-port=8180 quarkus.kubernetes.ports.”ports”.node-port=30010 quarkus.kubernetes.replicas=2 quarkus.kubernetes.service-type=node-port quarkus.helm.output-directory=../.helm quarkus.argocd.destination-namespace=nl-amis-development
As I did before, in order to generate the Helm resources, I used the following commands on the Linux Command Prompt:
cd /mnt/mysharedfolder/github/repositories/private/kubernetes-quickstart mvn clean package -DskipTests
In order to check if the change in replicas was noticed, on my Windows laptop, in the shared folder, I checked the content of file github\repositories\private\kubernetes-quickstart\.helm\kubernetes\kubernetes-quickstart\values.yaml:
[in bold, I highlighted the changes]
--- app: image: localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT ports: http: 8080 ports: 8080 replicas: 2
So indeed, the replicas were changed from 5 to 2.
By the way, again, the following Argo CD manifest (yaml) files were generated as part of the Quarkus build: application-kubernetes-quickstart.yaml and appproject-kubernetes-quickstart.yaml.
The content of these two files remained the same.
Checking in my code changes in Git
On my Windows laptop, I navigated to folder C:\My\AMIS\MySharedFolder\github\repositories\private\kubernetes-quickstart.
Next, I used TorsoiseGit to commit the files, that were changed in my local working tree. In order to describe the changes I was committing, as a Commit Log Message, I used:
The number of replicated Pods is changed from 5 to 2
Then, I used TorsoiseGit Push, in order to push my commit to the project in my GitHub Private repository.
I logged in into github.com with my own GitHub account, in order to check the project in my GitHub Private repository.
Then, I clicked on the “4 commits” link.
As you can see above, the last commit was visible.
For each of the commits, I copied the full SHA, via the copy icon:
- 83097dc1ba181767f3a1aec95d342ec1852900dc (Commits on Feb 21, 2026)
- 96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c (Commits on Feb 17, 2026)
- 121fac97dba6ec580f14ec059606e7b2bd2cf8b8 (Commits on Jan 15, 2026)
- 9f72f17181617807d01098dcaa0151666f19dbb8 (Commits on Dec 19, 2025)
Next, I checked the Argo CD kubernetes-quickstart application via the Argo CD UI.
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- Created: 01/25/2026 16:40:17 (a month ago)
- Last Sync: 02/21/2026 15:15:36 (13 minutes ago)
Above you can see the Argo CD kubernetes-quickstart application. Next, I clicked on this application.
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- APP HEALTH: Healty
- SYNC STATUS: Synced to HEAD (83097dc)
- LAST SYNC: Sync OK to 83097dc, Succeeded 3 minutes ago (Sat Feb 21 2026 15:15:36 GMT +0100)
When you look at the “Comment” part, you can see my Commit Log Message, I used earlier.
Next, I clicked on the “Sync OK” link.
Then, I closed the Sync page.
In order to list all deployments in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/deployment/]
kubectl get deployments -n nl-amis-development
With the following output:
NAME READY UP-TO-DATE AVAILABLE AGE kubernetes-quickstart 2/2 2 2 26d
In order to list all replica set’s in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/]
kubectl get replicasets -n nl-amis-development
With the following output:
NAME DESIRED CURRENT READY AGE kubernetes-quickstart-547485758b 0 0 0 3d19h kubernetes-quickstart-65b8454949 0 0 0 26d kubernetes-quickstart-7497b84446 2 2 2 4m26s
Next, again I checked the current number of Pods that were running, with the following command on the Linux Command Prompt:
kubectl get pods -n nl-amis-development
With the following output:
NAME READY STATUS RESTARTS AGE
kubernetes-quickstart-7497b84446-drsck 1/1 Running 0 4m25s
kubernetes-quickstart-7497b84446-t8mrp 1/1 Running 0 4m27s
As you can see in the output above, now only 2 Pods were running successfully, as expected. So, Argo CD automatically synced my application when it detected differences between the “desired state” manifests in Git, and the “live state” in the Kubernetes cluster.
Changing the number of replicated Pods (replicas) from 2 to 3 in the “live state” (Kubernetes cluster)
So, now I wanted to make a change in the “live state” of my “kubernetes-quickstart” application running on my Kubernetes cluster.
[https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#scaling-a-deployment]
kubectl scale -n nl-amis-development deployment kubernetes-quickstart --replicas=3
With the following output:
deployment.apps/kubernetes-quickstart scaled
In order to list all deployments in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/deployment/]
kubectl get deployments -n nl-amis-development
With the following output:
NAME READY UP-TO-DATE AVAILABLE AGE kubernetes-quickstart 2/2 2 2 26d
In order to list all replica set’s in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/]
kubectl get replicasets -n nl-amis-development
With the following output:
NAME DESIRED CURRENT READY AGE kubernetes-quickstart-547485758b 0 0 0 3d21h kubernetes-quickstart-65b8454949 0 0 0 27d kubernetes-quickstart-7497b84446 2 2 2 104m
Next, again I checked the current number of Pods that were running, with the following command on the Linux Command Prompt:
kubectl get pods -n nl-amis-development
With the following output:
NAME READY STATUS RESTARTS AGE kubernetes-quickstart-7497b84446-drsck 1/1 Running 0 104m kubernetes-quickstart-7497b84446-t8mrp 1/1 Running 0 104m
As you can see in the output above, only 2 Pods were running (the “desired state”) and not the 3 Pods (the “live state”). So apparently the Argo CD automated sync process was successful.
Next, I checked the Argo CD kubernetes-quickstart application via the Argo CD UI.
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- Created: 01/25/2026 16:40:17 (a month ago)
- Last Sync: 02/21/2026 16:34:20 (a few seconds ago)
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- APP HEALTH: Healty
- SYNC STATUS: Synced to HEAD (83097dc)
- LAST SYNC: Sync OK to 83097dc, Succeeded a minute ago (Sat Feb 21 2026 16:34:20 GMT+0100)
Later on in this article you can see which commands I use in order to gather more information about the Argo CD automated sync process that just happened. I show you this information now, also for my own convenience.
This is the output from the Argo CD events (only showing a part):
In the events above, we can see the Argo CD automated sync process is started. The sync status is changed from Synced -> OutOfSync and later on from OutOfSync -> Synced. The health status is changed from Healthy -> Progressing and later on from Progressing -> Healthy.
This is the output, on Feb 21 2026 around 16:34:20 GMT+0100, from the log of the Argo CD Application Controller (only showing a part):
time="2026-02-21T15:34:20Z" level=info msg="Initiated automated sync to [83097dc1ba181767f3a1aec95d342ec1852900dc]" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=OperationStarted type=Normal time="2026-02-21T15:34:20Z" level=info msg="Initiated automated sync to [83097dc1ba181767f3a1aec95d342ec1852900dc]" app-namespace=argocd application=kubernetes-quickstart project=kubernetes-quickstart time="2026-02-21T15:34:20Z" level=info msg="Updated sync status: Synced -> OutOfSync" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal time="2026-02-21T15:34:20Z" level=info msg="Updated health status: Healthy -> Progressing" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal ... time="2026-02-21T15:34:20Z" level=info msg="Updated sync status: OutOfSync -> Synced" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal time="2026-02-21T15:34:20Z" level=info msg="Updated health status: Progressing -> Healthy" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal
In the log above, we can see the Argo CD automated sync process is started. The sync status is changed from Synced -> OutOfSync and later on from OutOfSync -> Synced. The health status is changed from Healthy -> Progressing and later on from Progressing -> Healthy.
You can also see in the log above the full SHA of the following Git commit, I mentioned earlier:
- 83097dc1ba181767f3a1aec95d342ec1852900dc (Commits on Feb 21, 2026)
Because the Argo CD sync process, in this case, was not so easy to follow, I decided to make another change (the next day).
Changing the number of replicated Pods (replicas) from 2 to 7 in the “live state” (Kubernetes cluster)
So, now I wanted to make a change in the “live state” of my “kubernetes-quickstart” application running on my Kubernetes cluster.
In order to scale up my deployment from 2 to 7 replicas, I used the following command (on 02/22/2026 around 08:45:45 GMT+0100) on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#scaling-a-deployment]
kubectl scale -n nl-amis-development deployment kubernetes-quickstart --replicas=7
With the following output:
deployment.apps/kubernetes-quickstart scaled
In order to list all deployments in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/deployment/]
kubectl get deployments -n nl-amis-development
With the following output:
NAME READY UP-TO-DATE AVAILABLE AGE kubernetes-quickstart 2/2 2 2 27d
In order to list all replica set’s in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/]
kubectl get replicasets -n nl-amis-development
With the following output:
NAME DESIRED CURRENT READY AGE kubernetes-quickstart-547485758b 0 0 0 4d13h kubernetes-quickstart-65b8454949 0 0 0 27d kubernetes-quickstart-7497b84446 2 2 2 17h
Next, again I checked the current number of Pods that were running, with the following command on the Linux Command Prompt:
kubectl get pods -n nl-amis-development
With the following output:
NAME READY STATUS RESTARTS AGE
kubernetes-quickstart-7497b84446-5lsb2 1/1 Terminating 0 12s
kubernetes-quickstart-7497b84446-7rhjb 1/1 Terminating 0 12s
kubernetes-quickstart-7497b84446-drsck 1/1 Running 0 17h
kubernetes-quickstart-7497b84446-ft6vl 1/1 Terminating 0 12s
kubernetes-quickstart-7497b84446-hmxps 1/1 Terminating 0 12s
kubernetes-quickstart-7497b84446-t8mrp 1/1 Running 0 17h
So, in the output above we can see that the Argo CD automated sync process is started. From the 7 pods, 1 is already deleted, and 4 more are being terminated and 2 are left running.
And after some time, I repeated the command, with the following output:
NAME READY STATUS RESTARTS AGE kubernetes-quickstart-7497b84446-drsck 1/1 Running 0 17h kubernetes-quickstart-7497b84446-t8mrp 1/1 Running 0 17h
As you can see in the output above, now again only 2 Pods were running, as expected.
Next, I checked the Argo CD kubernetes-quickstart application via the Argo CD UI.
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- Created: 01/25/2026 16:40:17 (a month ago)
- Last Sync: 02/22/2026 08:45:45 (3 minutes ago)
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- APP HEALTH: Healty
- SYNC STATUS: Synced to HEAD (83097dc)
- LAST SYNC: Sync OK to 83097dc, Succeeded 5 minutes ago (Sun Feb 22 2026 08:45:45 GMT+0100)
I also had a look at the Argo CD events.
In order to list the Argo CD events, I used the following command on the Linux Command Prompt:
kubectl get events -n argocd
With the following output (only showing a part):
In the events above, we can see the Argo CD automated sync process is started. The sync status is changed from Synced -> OutOfSync and later on from OutOfSync -> Synced. The health status is changed from Healthy -> Progressing and later on from Progressing -> Healthy.
I also had a look at the Argo CD logs.
First, in order to get the name of the Argo CD Application Controller, I used the following command on the Linux Command Prompt:
kubectl get pods -n argocd
With the following output:
NAME READY STATUS RESTARTS AGE argo-cd-argocd-application-controller-0 1/1 Running 2 (4d22h ago) 39d argo-cd-argocd-applicationset-controller-d95667bb6-2sd4l 1/1 Running 2 (4d22h ago) 39d argo-cd-argocd-dex-server-5db69dd4c5-5h27c 1/1 Running 2 (4d22h ago) 39d argo-cd-argocd-notifications-controller-b7fb4658b-fcth9 1/1 Running 2 (4d22h ago) 39d argo-cd-argocd-redis-64744bd689-bdqk4 1/1 Running 2 (4d22h ago) 39d argo-cd-argocd-repo-server-6989765765-k47fw 1/1 Running 2 (4d22h ago) 39d argo-cd-argocd-server-75d7874dcb-qq5jp 1/1 Running 2 (4d22h ago) 39d
Then, in order to get the log of the Argo CD Application Controller, I used the following command on the Linux Command Prompt:
kubectl logs -n argocd argo-cd-argocd-application-controller-0
With the following output, on Feb 22 2026 around 08:45:45 GMT+0100 (only showing a part):
time="2026-02-22T07:45:43Z" level=info msg="Initiated automated sync to [83097dc1ba181767f3a1aec95d342ec1852900dc]" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=OperationStarted type=Normal time="2026-02-22T07:45:43Z" level=info msg="Initiated automated sync to [83097dc1ba181767f3a1aec95d342ec1852900dc]" app-namespace=argocd application=kubernetes-quickstart project=kubernetes-quickstart time="2026-02-22T07:45:43Z" level=info msg="Updated sync status: Synced -> OutOfSync" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal time="2026-02-22T07:45:43Z" level=info msg="Updated health status: Healthy -> Progressing" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal ... time="2026-02-22T07:45:45Z" level=info msg="Updated sync status: OutOfSync -> Synced" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal ... time="2026-02-22T07:45:46Z" level=info msg="Updated health status: Progressing -> Healthy" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal
In the log above, we can see the Argo CD automated sync process is started. The sync status is changed from Synced -> OutOfSync and later on from OutOfSync -> Synced. The health status is changed from Healthy -> Progressing and later on from Progressing -> Healthy.
So again, the Argo CD automated sync process was successful, only 2 Pods were running (the “desired state”) and not the 7 Pods (the “live state”).
Changing the “live state” (Kubernetes cluster), by deleting my kubernetes-quickstart service
So, again I wanted to make a change in the “live state” of my “kubernetes-quickstart” application running on my Kubernetes cluster, this time by deleting my kubernetes-quickstart service.
In order to delete my kubernetes-quickstart service, I used the following command on the Linux Command Prompt:
kubectl delete -n nl-amis-development service kubernetes-quickstart
With the following output:
service "kubernetes-quickstart" deleted
In order to check my kubernetes-quickstart service, I used the following command on the Linux Command Prompt:
kubectl get services -n nl-amis-development
With the following output:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes-quickstart NodePort 10.43.85.5 <none> 8180:30010/TCP 4s
As you can see in the output above, this service was just created, as part of the Argo CD automated sync process.
Next, I checked the Argo CD kubernetes-quickstart application via the Argo CD UI.
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- Created: 01/25/2026 16:40:17 (a month ago)
- Last Sync: 02/23/2026 17:23:38 (a minute ago)
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- APP HEALTH: Healty
- SYNC STATUS: Synced to HEAD (83097dc)
- LAST SYNC: Sync OK to 83097dc, Succeeded a minute ago (Mon Feb 23 2026 17:23:38 GMT+0100)
Again, I had a look at the Argo CD events.
In order to list the Argo CD events, I used the following command on the Linux Command Prompt:
kubectl get events -n argocd
With the following output (only showing a part):
In the events above, we can see the Argo CD automated sync process is started. The sync status is changed from Synced -> OutOfSync and later on from OutOfSync -> Synced. The health status is changed from Healthy -> Missing and later on from Misssing -> Healthy.
I also had a look at the Argo CD logs.
In order to get the log of the Argo CD Application Controller, I used the following command on the Linux Command Prompt:
kubectl logs -n argocd argo-cd-argocd-application-controller-0
With the following output, around Feb 23 2026 17:23:38 GMT+0100 (only showing a part):
time="2026-02-23T16:23:38Z" level=info msg="Initiated automated sync to [83097dc1ba181767f3a1aec95d342ec1852900dc]" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=OperationStarted type=Normal time="2026-02-23T16:23:38Z" level=info msg="Initiated automated sync to [83097dc1ba181767f3a1aec95d342ec1852900dc]" app-namespace=argocd application=kubernetes-quickstart project=kubernetes-quickstart time="2026-02-23T16:23:38Z" level=info msg="Updated sync status: Synced -> OutOfSync" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal time="2026-02-23T16:23:38Z" level=info msg="Updated health status: Healthy -> Missing" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal ... time="2026-02-23T16:23:38Z" level=info msg="Adding resource result, status: 'Synced', phase: 'Running', message: 'service/kubernetes-quickstart created'" app-namespace=argocd application=kubernetes-quickstart kind=Service name=kubernetes-quickstart namespace=nl-amis-development phase=Sync project=kubernetes-quickstart syncId=00005-QQwvK ... time="2026-02-23T16:23:38Z" level=info msg="Updated sync status: OutOfSync -> Synced" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal time="2026-02-23T16:23:38Z" level=info msg="Updated health status: Missing -> Healthy" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal
In the log above, we can see the Argo CD automated sync process is started. The sync status is changed from Synced -> OutOfSync and later on from OutOfSync -> Synced. The health status is changed from Healthy -> Missing and later on from Misssing -> Healthy.
So again, the Argo CD automated sync process was successful, the deleted service was automatically created again.
Changing a particular Pod in the “live state” (Kubernetes cluster)
Next, again I wanted to make a change in the “live state” of my “kubernetes-quickstart” application running on my Kubernetes cluster. This time, I wanted to use a ConfigMap within an existing Pod.
Creating a ConfigMap
A ConfigMap is an API object used to store non-confidential data in key-value pairs. Pods can consume ConfigMaps as environment variables, command-line arguments, or as configuration files in a volume.
A ConfigMap allows you to decouple environment-specific configuration from your container images, so that your applications are easily portable.
[https://kubernetes.io/docs/concepts/configuration/configmap/]
On my Windows laptop, in subdirectory named yaml of my shared folder, I created file configmap-kubernetes-quickstart.yaml with the following content:
apiVersion: v1 kind: ConfigMap metadata: name: configmap-kubernetes-quickstart namespace: nl-amis-development data: my_key_1: "value_of_my_key_1" my_key_2: "value_of_my_key_2" my_key_3: "value_of_my_key_3"
In order to create a ConfigMap, I used the following commands on the Linux Command Prompt:
cd /mnt/mysharedfolder kubectl apply -f yaml/configmap-kubernetes-quickstart.yaml
With the following output:
configmap/configmap-kubernetes-quickstart created
In order to list all config map’ s in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
kubectl get configmaps -n nl-amis-development
With the following output:
NAME DATA AGE configmap-kubernetes-quickstart 3 35s kube-root-ca.crt 1 195d
Changing a Pod’s manifest (yaml) file
Next, I checked again, the current Pods that were running, with the following command on the Linux Command Prompt:
kubectl get pods -n nl-amis-development
With the following output:
NAME READY STATUS RESTARTS AGE kubernetes-quickstart-7497b84446-drsck 1/1 Running 0 3d4h kubernetes-quickstart-7497b84446-t8mrp 1/1 Running 0 3d4h
In order to list a single pod in JSON output format and save the output to a file, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_get/]
kubectl get pod kubernetes-quickstart-7497b84446-drsck -n nl-amis-development -o yaml > yaml/kubernetes-quickstart-7497b84446-drsck.yaml
Remark about option -o, –output string:
Output format. One of: (json, yaml, kyaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file, custom-columns, custom-columns-file, wide). See custom columns [https://kubernetes.io/docs/reference/kubectl/#custom-columns], golang template [http://golang.org/pkg/text/template/#pkg-overview] and jsonpath template [https://kubernetes.io/docs/reference/kubectl/jsonpath/].
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_get/#options]
Next, in the shared folder, I navigated to yaml and changed the content of file kubernetes-quickstart-7497b84446-drsck.yaml to:
[in bold, I highlighted the changes]
apiVersion: v1
kind: Pod
metadata:
annotations:
app.quarkus.io/build-timestamp: 2026-02-21 - 13:30:26 +0000
app.quarkus.io/commit-id: 96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c
app.quarkus.io/quarkus-version: 3.25.2
app.quarkus.io/vcs-uri: https://github.com/marclameriks/kubernetes-quickstart.git
creationTimestamp: "2026-02-21T14:15:38Z"
generateName: kubernetes-quickstart-7497b84446-
generation: 1
labels:
app.kubernetes.io/managed-by: quarkus
app.kubernetes.io/name: kubernetes-quickstart
app.kubernetes.io/version: 1.0.0-SNAPSHOT
pod-template-hash: 7497b84446
name: kubernetes-quickstart-7497b84446-drsck
namespace: nl-amis-development
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: kubernetes-quickstart-7497b84446
uid: 76ac41eb-6b56-46db-bf14-aba99509ccc3
resourceVersion: "119893"
uid: 4dc0ee7c-b1de-4dbd-81c9-1028761743ff
spec:
containers:
- env:
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
- name: CONFIGMAP_KUBERNETES-QUICKSTART_MY_KEY_1
valueFrom:
configMapKeyRef:
name: configmap-kubernetes-quickstart
key: my_key_1
image: localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT
imagePullPolicy: Always
name: kubernetes-quickstart
ports:
- containerPort: 8080
name: ports
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-mvk7z
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: ubuntu2204.localdomain
preemptionPolicy: PreemptLowerPriority
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: kubernetes-quickstart
serviceAccountName: kubernetes-quickstart
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
volumes:
- name: kube-api-access-mvk7z
projected:
defaultMode: 420
sources:
- serviceAccountToken:
expirationSeconds: 3607
path: token
- configMap:
items:
- key: ca.crt
path: ca.crt
name: kube-root-ca.crt
- downwardAPI:
items:
- fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
path: namespace
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2026-02-21T14:15:40Z"
status: "True"
type: PodReadyToStartContainers
- lastProbeTime: null
lastTransitionTime: "2026-02-21T14:15:38Z"
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: "2026-02-21T14:15:40Z"
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2026-02-21T14:15:40Z"
status: "True"
type: ContainersReady
- lastProbeTime: null
lastTransitionTime: "2026-02-21T14:15:38Z"
status: "True"
type: PodScheduled
containerStatuses:
- containerID: containerd://967622590398c8db356fbf99830fd391fa0a44ea839205442730f07287c4d647
image: localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT
imageID: localhost:8443/quarkus/kubernetes-quickstart@sha256:4db2c4311d63394b0b36b8a8d45301b74d3b8305c294d028b59496c69b3840ab
lastState: {}
name: kubernetes-quickstart
ready: true
resources: {}
restartCount: 0
started: true
state:
running:
startedAt: "2026-02-21T14:15:40Z"
user:
linux:
gid: 0
supplementalGroups:
- 0
uid: 185
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-mvk7z
readOnly: true
recursiveReadOnly: Disabled
hostIP: 10.0.2.15
hostIPs:
- ip: 10.0.2.15
phase: Running
podIP: 10.42.0.189
podIPs:
- ip: 10.42.0.189
qosClass: BestEffort
startTime: "2026-02-21T14:15:38Z"
In order to use a ConfigMap (configmap-kubernetes-quickstart) in an environment variable in a Pod, for the container in my Pod specification, I added an environment variable (CONFIGMAP_KUBERNETES-QUICKSTART_MY_KEY_1) for the ConfigMap key (my_key_1) that I wanted to use.
[https://kubernetes.io/docs/concepts/configuration/configmap/#using-configmaps-as-environment-variables]
In order to change the Pod, I used the following command on the Linux Command Prompt:
kubectl apply -f yaml/kubernetes-quickstart-7497b84446-drsck.yaml
With the following output:
Warning: resource pods/kubernetes-quickstart-7497b84446-drsck is missing the kubectl.kubernetes.io/last-applied-configuration annotation which is required by kubectl apply. kubectl apply should only be used on resources created declaratively by either kubectl create --save-config or kubectl apply. The missing annotation will be patched automatically. The Pod "kubernetes-quickstart-7497b84446-drsck" is invalid: spec: Forbidden: pod updates may not change fields other than `spec.containers[*].image`,`spec.initContainers[*].image`,`spec.activeDeadlineSeconds`,`spec.tolerations` (only additions to existing tolerations),`spec.terminationGracePeriodSeconds` (allow it to be set to 1 if it was previously negative) core.PodSpec{ Volumes: {{Name: "kube-api-access-mvk7z", VolumeSource: {Projected: &{Sources: {{ServiceAccountToken: &{ExpirationSeconds: 3607, Path: "token"}}, {ConfigMap: &{LocalObjectReference: {Name: "kube-root-ca.crt"}, Items: {{Key: "ca.crt", Path: "ca.crt"}}}}, {DownwardAPI: &{Items: {{Path: "namespace", FieldRef: &{APIVersion: "v1", FieldPath: "metadata.namespace"}}}}}}, DefaultMode: &420}}}}, InitContainers: nil, Containers: []core.Container{ { ... // 5 identical fields Ports: {{Name: "ports", ContainerPort: 8080, Protocol: "TCP"}}, EnvFrom: nil, Env: []core.EnvVar{ {Name: "KUBERNETES_NAMESPACE", ValueFrom: &{FieldRef: &{APIVersion: "v1", FieldPath: "metadata.namespace"}}}, + { + Name: "CONFIGMAP_MY_KEY_1", + ValueFrom: &core.EnvVarSource{ + ConfigMapKeyRef: &core.ConfigMapKeySelector{LocalObjectReference: core.LocalObjectReference{...}, Key: "my_key_1"}, + }, + }, }, Resources: {}, ResizePolicy: nil, ... // 14 identical fields }, }, EphemeralContainers: nil, RestartPolicy: "Always", ... // 29 identical fields }
So, making this change on Pod level did not work, because of the missing kubectl.kubernetes.io/last-applied-configuration annotation in the resource.
[https://kubernetes.io/docs/tasks/manage-kubernetes-objects/declarative-config/#how-to-create-objects]
Changing the Deployment
Next, I tried changing the Deployment.
In order to edit the Deployment in YAML, using “nano” as an alternative editor, and save the modified config in its annotation, I used the following command on the Linux Command Prompt:
KUBE_EDITOR="nano" kubectl edit -n nl-amis-development deployment/kubernetes-quickstart -o yaml --save-config
The edit command allows you to directly edit any API resource you can retrieve via the command-line tools. It will open the editor defined by your KUBE_EDITOR, or EDITOR environment variables, or fall back to ‘vi’ for Linux or ‘notepad’ for Windows.
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_edit/]
Remark about option -o, –output string:
Output format. One of: (json, yaml, kyaml, name, go-template, go-template-file, template, templatefile, jsonpath, jsonpath-as-json, jsonpath-file).
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_get/#options]
Remark about option –save-config:
If true, the configuration of current object will be saved in its annotation. Otherwise, the annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_edit/#options]
This opened the “nano” editor. I changed the content by adding the environment variable CONFIGMAP-KUBERNETES-QUICKSTART.
This is the output (for readability I formatted the JSON part at kubectl.kubernetes.io/last-applied-configuration):
apiVersion: apps/v1 kind: Deployment metadata: annotations: app.quarkus.io/build-timestamp: 2026-02-21 - 13:30:26 +0000 app.quarkus.io/commit-id: 96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c app.quarkus.io/quarkus-version: 3.25.2 app.quarkus.io/vcs-uri: https://github.com/marclameriks/kubernetes-quickstart.git argocd.argoproj.io/tracking-id: kubernetes-quickstart:apps/Deployment:nl-amis-development/kubernetes-quickstart deployment.kubernetes.io/revision: "4" kubectl.kubernetes.io/last-applied-configuration: | { "apiVersion": "apps/v1", "kind": "Deployment", "metadata": { "annotations": { "app.quarkus.io/build-timestamp": "2026-02-21 - 13:30:26 +0000", "app.quarkus.io/commit-id": "96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c", "app.quarkus.io/quarkus-version": "3.25.2", "app.quarkus.io/vcs-uri": "https://github.com/marclameriks/kubernetes-quickstart.git", "argocd.argoproj.io/tracking-id": "kubernetes-quickstart:apps/Deployment:nl-amis-development/kubernetes-quickstart", "deployment.kubernetes.io/revision": "4" }, "creationTimestamp": "2026-01-25T15:40:22Z", "generation": 8, "labels": { "app.kubernetes.io/managed-by": "quarkus", "app.kubernetes.io/name": "kubernetes-quickstart", "app.kubernetes.io/version": "1.0.0-SNAPSHOT" }, "managedFields": [ { "apiVersion": "apps/v1", "fieldsType": "FieldsV1", "fieldsV1": { "f:metadata": { "f:annotations": { ".": {}, "f:app.quarkus.io/build-timestamp": {}, "f:app.quarkus.io/commit-id": {}, "f:app.quarkus.io/quarkus-version": {}, "f:app.quarkus.io/vcs-uri": {}, "f:argocd.argoproj.io/tracking-id": {}, "f:kubectl.kubernetes.io/last-applied-configuration": {} }, "f:labels": { ".": {}, "f:app.kubernetes.io/managed-by": {}, "f:app.kubernetes.io/name": {}, "f:app.kubernetes.io/version": {} } }, "f:spec": { "f:progressDeadlineSeconds": {}, "f:replicas": {}, "f:revisionHistoryLimit": {}, "f:selector": {}, "f:strategy": { "f:rollingUpdate": { ".": {}, "f:maxSurge": {}, "f:maxUnavailable": {} }, "f:type": {} }, "f:template": { "f:metadata": { "f:annotations": { ".": {}, "f:app.quarkus.io/build-timestamp": {}, "f:app.quarkus.io/commit-id": {}, "f:app.quarkus.io/quarkus-version": {}, "f:app.quarkus.io/vcs-uri": {} }, "f:labels": { ".": {}, "f:app.kubernetes.io/managed-by": {}, "f:app.kubernetes.io/name": {}, "f:app.kubernetes.io/version": {} } }, "f:spec": { "f:containers": { "k:{\"name\":\"kubernetes-quickstart\"}": { ".": {}, "f:env": { ".": {}, "k:{\"name\":\"KUBERNETES_NAMESPACE\"}": { ".": {}, "f:name": {}, "f:valueFrom": { ".": {}, "f:fieldRef": {} } } }, "f:image": {}, "f:imagePullPolicy": {}, "f:name": {}, "f:ports": { ".": {}, "k:{\"containerPort\":8080,\"protocol\":\"TCP\"}": { ".": {}, "f:containerPort": {}, "f:name": {}, "f:protocol": {} } }, "f:resources": {}, "f:terminationMessagePath": {}, "f:terminationMessagePolicy": {} } }, "f:dnsPolicy": {}, "f:restartPolicy": {}, "f:schedulerName": {}, "f:securityContext": {}, "f:serviceAccount": {}, "f:serviceAccountName": {}, "f:terminationGracePeriodSeconds": {} } } } }, "manager": "argocd-controller", "operation": "Update", "time": "2026-02-22T07:45:45Z" }, { "apiVersion": "apps/v1", "fieldsType": "FieldsV1", "fieldsV1": { "f:spec": { "f:template": { "f:spec": { "f:containers": { "k:{\"name\":\"kubernetes-quickstart\"}": { "f:env": { "k:{\"name\":\"CONFIGMAP_KUBERNETES-QUICKSTART_MY_KEY_1\"}": { ".": {}, "f:name": {}, "f:valueFrom": { ".": {}, "f:configMapKeyRef": {} } } } } } } } } }, "manager": "kubectl-edit", "operation": "Update", "time": "2026-02-25T07:04:45Z" }, { "apiVersion": "apps/v1", "fieldsType": "FieldsV1", "fieldsV1": { "f:metadata": { "f:annotations": { "f:deployment.kubernetes.io/revision": {} } }, "f:status": { "f:availableReplicas": {}, "f:conditions": { ".": {}, "k:{\"type\":\"Available\"}": { ".": {}, "f:lastTransitionTime": {}, "f:lastUpdateTime": {}, "f:message": {}, "f:reason": {}, "f:status": {}, "f:type": {} }, "k:{\"type\":\"Progressing\"}": { ".": {}, "f:lastTransitionTime": {}, "f:lastUpdateTime": {}, "f:message": {}, "f:reason": {}, "f:status": {}, "f:type": {} } }, "f:observedGeneration": {}, "f:readyReplicas": {}, "f:replicas": {}, "f:updatedReplicas": {} } }, "manager": "k3s", "operation": "Update", "subresource": "status", "time": "2026-02-25T07:04:50Z" } ], "name": "kubernetes-quickstart", "namespace": "nl-amis-development", "resourceVersion": "120986", "uid": "3f7f0851-b1eb-4b4c-a07d-188f82f21b3c" }, "spec": { "progressDeadlineSeconds": 600, "replicas": 2, "revisionHistoryLimit": 10, "selector": { "matchLabels": { "app.kubernetes.io/name": "kubernetes-quickstart", "app.kubernetes.io/version": "1.0.0-SNAPSHOT" } }, "strategy": { "rollingUpdate": { "maxSurge": "25%", "maxUnavailable": "25%" }, "type": "RollingUpdate" }, "template": { "metadata": { "annotations": { "app.quarkus.io/build-timestamp": "2026-02-21 - 13:30:26 +0000", "app.quarkus.io/commit-id": "96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c", "app.quarkus.io/quarkus-version": "3.25.2", "app.quarkus.io/vcs-uri": "https://github.com/marclameriks/kubernetes-quickstart.git" }, "creationTimestamp": null, "labels": { "app.kubernetes.io/managed-by": "quarkus", "app.kubernetes.io/name": "kubernetes-quickstart", "app.kubernetes.io/version": "1.0.0-SNAPSHOT" } }, "spec": { "containers": [ { "env": [ { "name": "KUBERNETES_NAMESPACE", "valueFrom": { "fieldRef": { "apiVersion": "v1", "fieldPath": "metadata.namespace" } } }, { "name": "CONFIGMAP-KUBERNETES-QUICKSTART", "valueFrom": { "configMapKeyRef": { "key": "my_key_1", "name": "configmap-kubernetes-quickstart" } } } ], "image": "localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT", "imagePullPolicy": "Always", "name": "kubernetes-quickstart", "ports": [ { "containerPort": 8080, "name": "ports", "protocol": "TCP" } ], "resources": {}, "terminationMessagePath": "/dev/termination-log", "terminationMessagePolicy": "File" } ], "dnsPolicy": "ClusterFirst", "restartPolicy": "Always", "schedulerName": "default-scheduler", "securityContext": {}, "serviceAccount": "kubernetes-quickstart", "serviceAccountName": "kubernetes-quickstart", "terminationGracePeriodSeconds": 30 } } }, "status": { "availableReplicas": 2, "conditions": [ { "lastTransitionTime": "2026-02-24T19:01:47Z", "lastUpdateTime": "2026-02-24T19:01:47Z", "message": "Deployment has minimum availability.", "reason": "MinimumReplicasAvailable", "status": "True", "type": "Available" }, { "lastTransitionTime": "2026-01-25T15:40:22Z", "lastUpdateTime": "2026-02-25T07:04:50Z", "message": "ReplicaSet \"kubernetes-quickstart-77cd5f6ff4\" has successfully progressed.", "reason": "NewReplicaSetAvailable", "status": "True", "type": "Progressing" } ], "observedGeneration": 8, "readyReplicas": 2, "replicas": 2, "updatedReplicas": 2 } } creationTimestamp: "2026-01-25T15:40:22Z" generation: 9 labels: app.kubernetes.io/managed-by: quarkus app.kubernetes.io/name: kubernetes-quickstart app.kubernetes.io/version: 1.0.0-SNAPSHOT name: kubernetes-quickstart namespace: nl-amis-development resourceVersion: "121283" uid: 3f7f0851-b1eb-4b4c-a07d-188f82f21b3c spec: progressDeadlineSeconds: 600 replicas: 2 revisionHistoryLimit: 10 selector: matchLabels: app.kubernetes.io/name: kubernetes-quickstart app.kubernetes.io/version: 1.0.0-SNAPSHOT strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate template: metadata: annotations: app.quarkus.io/build-timestamp: 2026-02-21 - 13:30:26 +0000 app.quarkus.io/commit-id: 96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c app.quarkus.io/quarkus-version: 3.25.2 app.quarkus.io/vcs-uri: https://github.com/marclameriks/kubernetes-quickstart.git creationTimestamp: null labels: app.kubernetes.io/managed-by: quarkus app.kubernetes.io/name: kubernetes-quickstart app.kubernetes.io/version: 1.0.0-SNAPSHOT spec: containers: - env: - name: KUBERNETES_NAMESPACE valueFrom: fieldRef: apiVersion: v1 fieldPath: metadata.namespace - name: CONFIGMAP_KUBERNETES-QUICKSTART_MY_KEY_1 valueFrom: configMapKeyRef: key: my_key_1 name: configmap-kubernetes-quickstart image: localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT imagePullPolicy: Always name: kubernetes-quickstart ports: - containerPort: 8080 name: ports protocol: TCP resources: {} terminationMessagePath: /dev/termination-log terminationMessagePolicy: File dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} serviceAccount: kubernetes-quickstart serviceAccountName: kubernetes-quickstart terminationGracePeriodSeconds: 30 status: availableReplicas: 2 conditions: - lastTransitionTime: "2026-02-24T19:01:47Z" lastUpdateTime: "2026-02-24T19:01:47Z" message: Deployment has minimum availability. reason: MinimumReplicasAvailable status: "True" type: Available - lastTransitionTime: "2026-01-25T15:40:22Z" lastUpdateTime: "2026-02-25T07:04:50Z" message: ReplicaSet "kubernetes-quickstart-77cd5f6ff4" has successfully progressed. reason: NewReplicaSetAvailable status: "True" type: Progressing observedGeneration: 8 readyReplicas: 2 replicas: 2 updatedReplicas: 2
Then I used Ctrl+O, Offer to write file (“Save as”).
[https://www.nano-editor.org/dist/latest/cheatsheet.html]
Remark:
^ is <Ctrl>
M is <Alt>
After an <Enter> to confirm the file name, I used Ctrl+X, Close buffer, exit from nano.
[https://www.nano-editor.org/dist/latest/cheatsheet.html]
In order to list all deployments in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/deployment/]
kubectl get deployments -n nl-amis-development
With the following output:
NAME READY UP-TO-DATE AVAILABLE AGE kubernetes-quickstart 2/2 2 2 30d
In order to list all replica set’s in the nl-amis-development namespace, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/]
kubectl get replicasets -n nl-amis-development
With the following output:
kubectl get replicasets -n nl-amis-development NAME DESIRED CURRENT READY AGE kubernetes-quickstart-547485758b 0 0 0 7d12h kubernetes-quickstart-65b8454949 0 0 0 30d kubernetes-quickstart-7497b84446 2 2 2 3d17h kubernetes-quickstart-77cd5f6ff4 0 0 0 19m kubernetes-quickstart-844884d85b 0 0 0 4m5s
Next, again I checked the current number of Pods that were running, with the following command on the Linux Command Prompt:
kubectl get pods -n nl-amis-development
With the following output:
NAME READY STATUS RESTARTS AGE kubernetes-quickstart-7497b84446-5fjw8 1/1 Running 0 4m4s kubernetes-quickstart-7497b84446-xqdzl 1/1 Running 0 4m3s
Next, I checked the Argo CD kubernetes-quickstart application via the Argo CD UI.
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- Created: 01/25/2026 16:40:17 (a month ago)
- Last Sync: 02/25/2026 08:19:41 (a minute ago)
This is some of the information mentioned for the Argo CD kubernetes-quickstart application:
- APP HEALTH: Healty
- SYNC STATUS: Synced to HEAD (83097dc)
- LAST SYNC: Sync OK to 83097dc, Succeeded 8 minutes ago (Wed Feb 25 2026 08:19:41 GMT+0100)
Again, I had a look at the Argo CD events.
In order to list the Argo CD events, I used the following command on the Linux Command Prompt:
kubectl get events -n argocd
With the following output (only showing a part):
In the events above, we can see the Argo CD automated sync process is started. The sync status is changed from Synced -> OutOfSync and later on from OutOfSync -> Synced. The health status is changed from Healthy -> Progressing and later on from Progressing -> Healthy.
I also had a look at the Argo CD logs.
In order to get the log of the Argo CD Application Controller, I used the following command on the Linux Command Prompt:
kubectl logs -n argocd argo-cd-argocd-application-controller-0
With the following output, around Feb 25 2026 08:19:41 GMT+0100 (only showing a part):
time="2026-02-25T07:19:41Z" level=info msg="Initiated automated sync to [83097dc1ba181767f3a1aec95d342ec1852900dc]" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=OperationStarted type=Normal time="2026-02-25T07:19:41Z" level=info msg="Initiated automated sync to [83097dc1ba181767f3a1aec95d342ec1852900dc]" app-namespace=argocd application=kubernetes-quickstart project=kubernetes-quickstart time="2026-02-25T07:19:41Z" level=info msg="Updated sync status: Synced -> OutOfSync" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal time="2026-02-25T07:19:41Z" level=info msg="Updated health status: Healthy -> Progressing" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal time="2026-02-25T07:19:42Z" level=info msg="Updated sync status: OutOfSync -> Synced" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal time="2026-02-25T07:19:48Z" level=info msg="Updated health status: Progressing -> Healthy" application=kubernetes-quickstart dest-namespace=nl-amis-development dest-server="https://kubernetes.default.svc" reason=ResourceUpdated type=Normal
In the log above, we can see the Argo CD automated sync process is started. The sync status is changed from Synced -> OutOfSync and later on from OutOfSync -> Synced. The health status is changed from Healthy -> Progressing and later on from Progressing -> Healthy.
So again, the Argo CD automated sync process was successful, the change of a particular Pod in the “live state” was reversed.
Next, I also wanted to check the log of the Pod.
In order to print the logs for the container in a specific pod, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_logs/]
kubectl logs -n nl-amis-development kubernetes-quickstart-7497b84446-5fjw8
With the following output:
INFO exec -a "java" java -XX:MaxRAMPercentage=80.0 -XX:+UseParallelGC -XX:MinHeapFreeRatio=10 -XX:MaxHeapFreeRatio=20 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -XX:+ExitOnOutOfMemoryError -Djava.util.logging.manager=org.jboss.logmanager.LogManager -cp "." -jar /home/jboss/quarkus-run.jar INFO running in /home/jboss __ ____ __ _____ ___ __ ____ ______ --/ __ \/ / / / _ | / _ \/ //_/ / / / __/ -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ /\ \ --\___\_\____/_/ |_/_/|_/_/|_|\____/___/ 2026-02-25 07:19:49,305 INFO [io.quarkus] (main) kubernetes-quickstart 1.0.0-SNAPSHOT on JVM (powered by Quarkus 3.25.2) started in 5.129s. Listening on: http://0.0.0.0:8080 2026-02-25 07:19:49,314 INFO [io.quarkus] (main) Profile prod activated. 2026-02-25 07:19:49,314 INFO [io.quarkus] (main) Installed features: [argocd, cdi, kubernetes, kubernetes-client, rest, smallrye-context-propagation, vertx]
So, in the log above, we can see the Pod started at 2026-02-25 07:19:49,305, at the same time (Wed Feb 25 2026 08:19:41 GMT+0100) that the Argo CD automated sync process was started.
Then, in order to get the YAML (with object information) for a particular Pod, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_get/]
kubectl get pod kubernetes-quickstart-7497b84446-5fjw8 -n nl-amis-development -o yaml
With the following output:
apiVersion: v1
kind: Pod
metadata:
annotations:
app.quarkus.io/build-timestamp: 2026-02-21 - 13:30:26 +0000
app.quarkus.io/commit-id: 96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c
app.quarkus.io/quarkus-version: 3.25.2
app.quarkus.io/vcs-uri: https://github.com/marclameriks/kubernetes-quickstart.git
creationTimestamp: "2026-02-25T07:19:42Z"
generateName: kubernetes-quickstart-7497b84446-
generation: 1
labels:
app.kubernetes.io/managed-by: quarkus
app.kubernetes.io/name: kubernetes-quickstart
app.kubernetes.io/version: 1.0.0-SNAPSHOT
pod-template-hash: 7497b84446
name: kubernetes-quickstart-7497b84446-5fjw8
namespace: nl-amis-development
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: kubernetes-quickstart-7497b84446
uid: 76ac41eb-6b56-46db-bf14-aba99509ccc3
resourceVersion: "121338"
uid: d1bec4bf-636f-4033-971f-e75a8e278a51
spec:
containers:
- env:
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
image: localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT
imagePullPolicy: Always
name: kubernetes-quickstart
ports:
- containerPort: 8080
name: ports
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-4c4z7
readOnly: true
dnsPolicy: ClusterFirst
enableServiceLinks: true
nodeName: ubuntu2204.localdomain
preemptionPolicy: PreemptLowerPriority
priority: 0
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: kubernetes-quickstart
serviceAccountName: kubernetes-quickstart
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
volumes:
- name: kube-api-access-4c4z7
projected:
defaultMode: 420
sources:
- serviceAccountToken:
expirationSeconds: 3607
path: token
- configMap:
items:
- key: ca.crt
path: ca.crt
name: kube-root-ca.crt
- downwardAPI:
items:
- fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
path: namespace
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2026-02-25T07:19:43Z"
status: "True"
type: PodReadyToStartContainers
- lastProbeTime: null
lastTransitionTime: "2026-02-25T07:19:42Z"
status: "True"
type: Initialized
- lastProbeTime: null
lastTransitionTime: "2026-02-25T07:19:43Z"
status: "True"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2026-02-25T07:19:43Z"
status: "True"
type: ContainersReady
- lastProbeTime: null
lastTransitionTime: "2026-02-25T07:19:42Z"
status: "True"
type: PodScheduled
containerStatuses:
- containerID: containerd://5fb0134fc6f1fd4e08e9bdd6084a1bb28ed0b7b931053a0e7362f6fa2958fe75
image: localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT
imageID: localhost:8443/quarkus/kubernetes-quickstart@sha256:4db2c4311d63394b0b36b8a8d45301b74d3b8305c294d028b59496c69b3840ab
lastState: {}
name: kubernetes-quickstart
ready: true
resources: {}
restartCount: 0
started: true
state:
running:
startedAt: "2026-02-25T07:19:43Z"
user:
linux:
gid: 0
supplementalGroups:
- 0
uid: 185
volumeMounts:
- mountPath: /var/run/secrets/kubernetes.io/serviceaccount
name: kube-api-access-4c4z7
readOnly: true
recursiveReadOnly: Disabled
hostIP: 10.0.2.15
hostIPs:
- ip: 10.0.2.15
phase: Running
podIP: 10.42.0.199
podIPs:
- ip: 10.42.0.199
qosClass: BestEffort
startTime: "2026-02-25T07:19:42Z"
As you can see in the output above, the environment variable CONFIGMAP_KUBERNETES-QUICKSTART_MY_KEY_1 isn’t used anymore.
And finally, in order to get the YAML (with object information, including managed fields) for a particular Deployment, I used the following command on the Linux Command Prompt:
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_get/]
kubectl get deployment kubernetes-quickstart -n nl-amis-development -o yaml --show-managed-fields
Remark about option –show-managed-fields:
If true, keep the managedFields when printing objects in JSON or YAML format.
[https://kubernetes.io/docs/reference/kubectl/generated/kubectl_get/#options]
Note:
kubectl get omits managed fields by default. Add –show-managed-fields to show managedFields when the output format is either json or yaml.
[https://kubernetes.io/docs/reference/using-api/server-side-apply/]
With the following output:
apiVersion: apps/v1
kind: Deployment
metadata:
annotations:
app.quarkus.io/build-timestamp: 2026-02-21 - 13:30:26 +0000
app.quarkus.io/commit-id: 96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c
app.quarkus.io/quarkus-version: 3.25.2
app.quarkus.io/vcs-uri: https://github.com/marclameriks/kubernetes-quickstart.git
argocd.argoproj.io/tracking-id: kubernetes-quickstart:apps/Deployment:nl-amis-development/kubernetes-quickstart
deployment.kubernetes.io/revision: "6"
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"apps/v1","kind":"Deployment","metadata":{"annotations":{"app.quarkus.io/build-timestamp":"2026-02-21 - 13:30:26 +0000","app.quarkus.io/commit-id":"96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c","app.quarkus.io/quarkus-version":"3.25.2","app.quarkus.io/vcs-uri":"https://github.com/marclameriks/kubernetes-quickstart.git","argocd.argoproj.io/tracking-id":"kubernetes-quickstart:apps/Deployment:nl-amis-development/kubernetes-quickstart"},"labels":{"app.kubernetes.io/managed-by":"quarkus","app.kubernetes.io/name":"kubernetes-quickstart","app.kubernetes.io/version":"1.0.0-SNAPSHOT"},"name":"kubernetes-quickstart","namespace":"nl-amis-development"},"spec":{"replicas":2,"selector":{"matchLabels":{"app.kubernetes.io/name":"kubernetes-quickstart","app.kubernetes.io/version":"1.0.0-SNAPSHOT"}},"template":{"metadata":{"annotations":{"app.quarkus.io/build-timestamp":"2026-02-21 - 13:30:26 +0000","app.quarkus.io/commit-id":"96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c","app.quarkus.io/quarkus-version":"3.25.2","app.quarkus.io/vcs-uri":"https://github.com/marclameriks/kubernetes-quickstart.git"},"labels":{"app.kubernetes.io/managed-by":"quarkus","app.kubernetes.io/name":"kubernetes-quickstart","app.kubernetes.io/version":"1.0.0-SNAPSHOT"}},"spec":{"containers":[{"env":[{"name":"KUBERNETES_NAMESPACE","valueFrom":{"fieldRef":{"fieldPath":"metadata.namespace"}}}],"image":"localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT","imagePullPolicy":"Always","name":"kubernetes-quickstart","ports":[{"containerPort":8080,"name":"ports","protocol":"TCP"}]}],"serviceAccountName":"kubernetes-quickstart"}}},"status":{"availableReplicas":2,"conditions":[{"lastTransitionTime":"2026-02-24T19:01:47Z","lastUpdateTime":"2026-02-24T19:01:47Z","message":"Deployment has minimum availability.","reason":"MinimumReplicasAvailable","status":"True","type":"Available"},{"lastTransitionTime":"2026-01-25T15:40:22Z","lastUpdateTime":"2026-02-25T07:19:41Z","message":"Created new replica set \"kubernetes-quickstart-844884d85b\"","reason":"NewReplicaSetCreated","status":"True","type":"Progressing"}],"observedGeneration":9,"readyReplicas":2,"replicas":3,"unavailableReplicas":1,"updatedReplicas":1}}
creationTimestamp: "2026-01-25T15:40:22Z"
generation: 10
labels:
app.kubernetes.io/managed-by: quarkus
app.kubernetes.io/name: kubernetes-quickstart
app.kubernetes.io/version: 1.0.0-SNAPSHOT
managedFields:
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:app.quarkus.io/build-timestamp: {}
f:app.quarkus.io/commit-id: {}
f:app.quarkus.io/quarkus-version: {}
f:app.quarkus.io/vcs-uri: {}
f:argocd.argoproj.io/tracking-id: {}
f:kubectl.kubernetes.io/last-applied-configuration: {}
f:labels:
.: {}
f:app.kubernetes.io/managed-by: {}
f:app.kubernetes.io/name: {}
f:app.kubernetes.io/version: {}
f:spec:
f:progressDeadlineSeconds: {}
f:replicas: {}
f:revisionHistoryLimit: {}
f:selector: {}
f:strategy:
f:rollingUpdate:
.: {}
f:maxSurge: {}
f:maxUnavailable: {}
f:type: {}
f:template:
f:metadata:
f:annotations:
.: {}
f:app.quarkus.io/build-timestamp: {}
f:app.quarkus.io/commit-id: {}
f:app.quarkus.io/quarkus-version: {}
f:app.quarkus.io/vcs-uri: {}
f:labels:
.: {}
f:app.kubernetes.io/managed-by: {}
f:app.kubernetes.io/name: {}
f:app.kubernetes.io/version: {}
f:spec:
f:containers:
k:{"name":"kubernetes-quickstart"}:
.: {}
f:env:
.: {}
k:{"name":"KUBERNETES_NAMESPACE"}:
.: {}
f:name: {}
f:valueFrom:
.: {}
f:fieldRef: {}
f:image: {}
f:imagePullPolicy: {}
f:name: {}
f:ports:
.: {}
k:{"containerPort":8080,"protocol":"TCP"}:
.: {}
f:containerPort: {}
f:name: {}
f:protocol: {}
f:resources: {}
f:terminationMessagePath: {}
f:terminationMessagePolicy: {}
f:dnsPolicy: {}
f:restartPolicy: {}
f:schedulerName: {}
f:securityContext: {}
f:serviceAccount: {}
f:serviceAccountName: {}
f:terminationGracePeriodSeconds: {}
manager: argocd-controller
operation: Update
time: "2026-02-25T07:19:41Z"
- apiVersion: apps/v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
f:deployment.kubernetes.io/revision: {}
f:status:
f:availableReplicas: {}
f:conditions:
.: {}
k:{"type":"Available"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
k:{"type":"Progressing"}:
.: {}
f:lastTransitionTime: {}
f:lastUpdateTime: {}
f:message: {}
f:reason: {}
f:status: {}
f:type: {}
f:observedGeneration: {}
f:readyReplicas: {}
f:replicas: {}
f:updatedReplicas: {}
manager: k3s
operation: Update
subresource: status
time: "2026-02-25T07:19:47Z"
name: kubernetes-quickstart
namespace: nl-amis-development
resourceVersion: "121387"
uid: 3f7f0851-b1eb-4b4c-a07d-188f82f21b3c
spec:
progressDeadlineSeconds: 600
replicas: 2
revisionHistoryLimit: 10
selector:
matchLabels:
app.kubernetes.io/name: kubernetes-quickstart
app.kubernetes.io/version: 1.0.0-SNAPSHOT
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
template:
metadata:
annotations:
app.quarkus.io/build-timestamp: 2026-02-21 - 13:30:26 +0000
app.quarkus.io/commit-id: 96c2f7b0ebe9bf9166453f6fbd3d7b5d463d774c
app.quarkus.io/quarkus-version: 3.25.2
app.quarkus.io/vcs-uri: https://github.com/marclameriks/kubernetes-quickstart.git
creationTimestamp: null
labels:
app.kubernetes.io/managed-by: quarkus
app.kubernetes.io/name: kubernetes-quickstart
app.kubernetes.io/version: 1.0.0-SNAPSHOT
spec:
containers:
- env:
- name: KUBERNETES_NAMESPACE
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.namespace
image: localhost:8443/quarkus/kubernetes-quickstart:1.0.0-SNAPSHOT
imagePullPolicy: Always
name: kubernetes-quickstart
ports:
- containerPort: 8080
name: ports
protocol: TCP
resources: {}
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
securityContext: {}
serviceAccount: kubernetes-quickstart
serviceAccountName: kubernetes-quickstart
terminationGracePeriodSeconds: 30
status:
availableReplicas: 2
conditions:
- lastTransitionTime: "2026-02-24T19:01:47Z"
lastUpdateTime: "2026-02-24T19:01:47Z"
message: Deployment has minimum availability.
reason: MinimumReplicasAvailable
status: "True"
type: Available
- lastTransitionTime: "2026-01-25T15:40:22Z"
lastUpdateTime: "2026-02-25T07:19:47Z"
message: ReplicaSet "kubernetes-quickstart-7497b84446" has successfully progressed.
reason: NewReplicaSetAvailable
status: "True"
type: Progressing
observedGeneration: 10
readyReplicas: 2
replicas: 2
updatedReplicas: 2
I conclude this part 5 article.
In this article, I continued with, using the Argo CD Sync Options.
You can read about the Argo CD Automated Sync Policy, that was set by default, when the Argo CD manifest (yaml) files were generated as part of the Quarkus build.
You also can read about how I, changed the “desired state” (as specified in the Git repo):
- Changing the number of replicated Pods (replicas) from 5 to 2 in the “desired state” (Git repo)
You also can read about how I, changed the “live state” (on the Kubernetes cluster):
- Changing the number of replicated Pods (replicas) from 2 to 3 in the “live state” (Kubernetes cluster)
- Changing the number of replicated Pods (replicas) from 2 to 7 in the “live state” (Kubernetes cluster)
- Changing the “live state” (Kubernetes cluster), by deleting my kubernetes-quickstart service
- Changing a particular Pod in the “live state” (Kubernetes cluster)
After each change, I followed the Argo CD automated sync process for my Argo CD kubernetes-quickstart application via the Argo CD UI and also by looking at the Argo CD events and the Argo CD Application Controller logs.
