Skip to content

Commit 481221b

Browse files
Merge pull request #2835 from DougAnsonAustinTX/argo-techreview-1
argo tech review
2 parents b706c2b + 5f85fca commit 481221b

7 files changed

Lines changed: 149 additions & 173 deletions

File tree

content/learning-paths/servers-and-cloud-computing/argo-cd-gcp/_index.md

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -48,21 +48,22 @@ operatingsystems:
4848
# ================================================================================
4949
# FIXED, DO NOT MODIFY
5050
# ================================================================================
51+
5152
further_reading:
5253
- resource:
53-
title: Argo CD documentation
54-
link: https://argo-cd.readthedocs.io/
54+
title: Google Cloud documentation
55+
link: https://cloud.google.com/docs
5556
type: documentation
5657

5758
- resource:
58-
title: Google Kubernetes Engine documentation
59-
link: https://cloud.google.com/kubernetes-engine/docs
59+
title: Argo CD documentation
60+
link: https://argo-cd.readthedocs.io/en/stable/
6061
type: documentation
6162

6263
- resource:
63-
title: GitOps principles
64-
link: https://opengitops.dev/
65-
type: documentation
64+
title: Kubernetes documentation
65+
link: https://kubernetes.io/docs/
66+
type: documentation
6667

6768
weight: 1
6869
layout: "learningpathall"

content/learning-paths/servers-and-cloud-computing/argo-cd-gcp/_next-steps.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,11 @@ weight: 21 # Set to always be larger than the content in this p
66
title: "Next Steps" # Always the same, html page title.
77
layout: "learningpathall" # All files under learning paths have this same wrapper for Hugo processing.
88
---
9+
10+
## Further reading
11+
12+
For more information about Argo CD and GitOps on Arm-based Kubernetes clusters:
13+
14+
- [Argo CD documentation](https://argo-cd.readthedocs.io/)
15+
- [Google Kubernetes Engine documentation](https://cloud.google.com/kubernetes-engine/docs)
16+
- [GitOps principles](https://opengitops.dev/)

content/learning-paths/servers-and-cloud-computing/argo-cd-gcp/argocd-gitops-workflow.md

Lines changed: 51 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
---
2-
title: Deploy Applications using GitOps with Argo CD
2+
title: Deploy applications using GitOps with Argo CD
33
weight: 6
44

5-
### FIXED, DO NOT MODIFY
65
layout: learningpathall
76
---
87

@@ -21,27 +20,22 @@ Ensure the following prerequisites are met before proceeding:
2120
* `kubectl` is configured for the cluster
2221
* A GitHub repository to store GitOps manifests (an empty repo is sufficient)
2322

24-
## Create GitOps Repository
23+
## Create a GitOps repository
2524

26-
Create a local Git repository that acts as the **single source of truth** for application configuration.
25+
Create a local Git repository that acts as the **single source of truth** for application configuration:
2726

2827
```console
2928
mkdir -p argocd-arm-gitops/apps/nginx
3029
cd argocd-arm-gitops
3130
git init
3231
```
3332

34-
What this does:
33+
This creates a GitOps-compliant directory structure for managing Kubernetes applications and initializes a local Git repository that you'll push to GitHub. This establishes Git as the only place where application state is defined (no manual `kubectl apply`).
3534

36-
* Creates a GitOps-compliant directory structure for managing Kubernetes applications
37-
* Initializes a local Git repository that will later be pushed to GitHub
38-
* Establishes Git as the only place where application state is defined (no manual kubectl apply)
3935

40-
41-
**Repository structure:**
36+
Repository structure:
4237

4338
```text
44-
Copy code
4539
argocd-arm-gitops/
4640
└── apps/
4741
└── nginx/
@@ -50,10 +44,11 @@ argocd-arm-gitops/
5044
└── service.yaml
5145
```
5246

53-
## Kubernetes Manifests
47+
## Create Kubernetes manifests
48+
5449
Create declarative Kubernetes manifests that define the desired state of the application.
5550

56-
Creates an isolated production namespace (`apps/nginx/namespace.yaml`):
51+
Create a namespace manifest (`apps/nginx/namespace.yaml`):
5752

5853
```yaml
5954
apiVersion: v1
@@ -62,9 +57,7 @@ metadata:
6257
name: prod
6358
```
6459
65-
**Deployment Manifest (apps/nginx/deployment.yaml):**
66-
67-
Deploys an NGINX application with two replicas for high availability.
60+
Create a deployment manifest (`apps/nginx/deployment.yaml`) that deploys an NGINX application with two replicas for high availability:
6861

6962
```yaml
7063
apiVersion: apps/v1
@@ -89,9 +82,7 @@ spec:
8982
- containerPort: 80
9083
```
9184

92-
**Service Manifest (apps/nginx/service.yaml):**
93-
94-
Exposes NGINX publicly using a LoadBalancer service.
85+
Create a service manifest (`apps/nginx/service.yaml`) that exposes NGINX publicly using a LoadBalancer service:
9586

9687
```yaml
9788
apiVersion: v1
@@ -108,27 +99,30 @@ spec:
10899
targetPort: 80
109100
```
110101

111-
## Commit and Push
112-
Push the application manifests to GitHub so Argo CD can continuously track and apply changes.
102+
## Create a GitHub repository for the application
103+
104+
Go to `https://github.com/<YOUR_GITHUB_USERNAME>` and create a repository called `argocd-arm-gitops`.
105+
106+
## Commit and push
107+
Push the application manifests to GitHub so Argo CD can continuously track and apply changes:
113108

114109
```console
115110
git add .
116111
git config --global user.email "you@example.com"
117112
git config --global user.name "Your Name"
118-
git commit -m "Initial ARM GitOps app"
113+
git commit -m "Initial Arm GitOps app"
119114
git branch -M main
120115
git remote add origin https://github.com/<YOUR_GITHUB_USERNAME>/argocd-arm-gitops.git
121116
git push -u origin main
122117
```
123118

124-
* Commits define the desired cluster state
125-
* Any future Git change automatically triggers reconciliation
126-
* Replace <YOUR_GITHUB_USERNAME> with your own GitHub username or organization name.
119+
Replace `<YOUR_GITHUB_USERNAME>` with your GitHub username or organization name. These commits define the desired cluster state, and any future Git change automatically triggers reconciliation.
120+
121+
## Register the application in Argo CD
127122

128-
## Register Application in Argo CD
129123
Create an Argo CD Application resource to link GitHub manifests with the GKE cluster.
130124

131-
Create **argo-app.yaml**:
125+
Create `argo-app.yaml` and replace `<YOUR_GITHUB_USERNAME>` with your GitHub username or organization:
132126

133127
```yaml
134128
apiVersion: argoproj.io/v1alpha1
@@ -139,7 +133,7 @@ metadata:
139133
spec:
140134
project: default
141135
source:
142-
repoURL: https://github.com/<YOUR_ORG>/argocd-arm-gitops.git
136+
repoURL: https://github.com/<YOUR_GITHUB_USERNAME>/argocd-arm-gitops.git
143137
targetRevision: main
144138
path: apps/nginx
145139
destination:
@@ -151,22 +145,23 @@ spec:
151145
selfHeal: true
152146
```
153147

154-
155-
**Key settings:**
148+
Key settings:
156149

157150
* `automated` sync keeps the cluster aligned with Git
158151
* `prune` removes deleted resources
159152
* `selfHeal` restores manual drift
160-
* Ensure the repoURL points to your own GitHub repository.
161153

162-
**Apply the application:**
154+
Ensure the `repoURL` points to your GitHub repository.
155+
156+
Apply the application:
163157

164158
```console
165159
kubectl apply -f argo-app.yaml
166160
```
167161

168-
## Verify GitOps Deployment
169-
Confirm that Argo CD has successfully synchronized and deployed the application.
162+
## Verify the GitOps deployment
163+
164+
Confirm that Argo CD has successfully synchronized and deployed the application:
170165

171166
```console
172167
kubectl get pods -n prod
@@ -184,22 +179,27 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
184179
nginx LoadBalancer 34.118.225.71 34.30.xx.xx 80:32019/TCP 2m11s
185180
```
186181

187-
## Access the Application
188-
Validate the deployment by accessing the application through the external load balancer.
182+
## Access the application
183+
184+
Validate the deployment by accessing the application through the external load balancer:
189185

190186
```bash
191187
http://<NGINX_EXTERNAL_IP>
192188
```
193189

194-
Expected result:
190+
You should see the NGINX welcome page:
195191

196-
![NGINX Welcome Page confirming successful GitOps deployment via Argo CD alt-txt#center](images/argo-cd-nginx.png "NGINX Application Output")
192+
![NGINX welcome page confirming successful GitOps deployment via Argo CD alt-txt#center](images/argo-cd-nginx.png "NGINX Application Output")
197193

198194
This confirms the application is successfully deployed via GitOps.
199195

196+
## View application status in the Argo CD UI
200197

201-
## Argo CD Application Status (UI)
198+
Return to the Argo CD UI:
202199

200+
```bash
201+
https://<ARGOCD_EXTERNAL_IP>
202+
```
203203
The Argo CD UI provides real-time visibility into application health, sync status, repository source, and deployment history.
204204

205205
![Argo CD UI showing nginx-prod application in Healthy and Synced state alt-txt#center](images/argocd-app.png "Argo CD Application Status")
@@ -212,22 +212,24 @@ Key indicators:
212212
* **Path:** `apps/nginx`
213213
* **Namespace:** `prod`
214214

215+
## Test self-healing
215216

216-
## Test Self-Healing
217-
Validate Argo CD’s self-healing capability by manually changing cluster state.
217+
Validate Argo CD's self-healing capability by manually changing the cluster state:
218218

219219
```console
220220
kubectl scale deployment nginx -n prod --replicas=1
221221
```
222222

223-
Argo CD automatically restores the deployment back to 2 replicas, matching the Git-defined desired state.
223+
Argo CD automatically restores the deployment back to two replicas, matching the Git-defined desired state.
224+
225+
## What you've accomplished and what's next
224226

225-
## Learning Outcome
227+
You've successfully implemented a production-grade GitOps workflow on Arm infrastructure:
226228

227-
By completing this section, you have successfully implemented a production-grade GitOps workflow on ARM infrastructure.
229+
- Deployed applications on an Arm64-based GKE cluster
230+
- Configured declarative GitOps deployment
231+
- Enabled Argo CD automated sync and pruning
232+
- Validated continuous reconciliation and self-healing
233+
- Exposed the application externally via LoadBalancer
228234

229-
- ARM64-based GKE cluster
230-
- Declarative GitOps deployment
231-
- Argo CD automated sync and pruning
232-
- Continuous reconciliation and self-healing
233-
- External application exposure via LoadBalancer
235+
You can now explore additional Argo CD features or apply these GitOps patterns to your own applications.

0 commit comments

Comments
 (0)