Skip to content
Open
Show file tree
Hide file tree
Changes from 22 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
ccff86a
Add section header for EC2 connection instructions
Chirantana-g-156 Jul 18, 2026
3301c5b
Create Understanding deployment yaml file
Chirantana-g-156 Jul 20, 2026
14965ad
Enhance comments in deployment YAML file
Chirantana-g-156 Jul 20, 2026
fd3dad1
Update Understanding deployment yaml file
Chirantana-g-156 Jul 20, 2026
10ba482
Create Understanding srv yaml file
Chirantana-g-156 Jul 20, 2026
7005106
Clarify targetPort with comment in srv yaml file
Chirantana-g-156 Jul 20, 2026
1337614
Create serviceaccount yaml file
Chirantana-g-156 Jul 20, 2026
4c0a96a
Update serviceaccount yaml file
Chirantana-g-156 Jul 20, 2026
f1ce763
Add complete-deploy yaml for microservices deployment
Chirantana-g-156 Jul 20, 2026
348cdd1
Update Understanding deployment yaml file
Chirantana-g-156 Jul 21, 2026
ee8b9da
Change service type to NodePort for external access
Chirantana-g-156 Jul 21, 2026
fb9b8ea
Create load balancer service type
Chirantana-g-156 Jul 21, 2026
3845f59
Update load balancer service type
Chirantana-g-156 Jul 22, 2026
68c78da
Create downsides of LB.md
Chirantana-g-156 Jul 22, 2026
b9a3bc7
Create ingress yaml file
Chirantana-g-156 Jul 22, 2026
18f511f
Rename Understanding deployment yaml file to 03-Understanding deploym…
Chirantana-g-156 Jul 22, 2026
298d658
Rename Understanding srv yaml file to 04-Understanding srv yaml file
Chirantana-g-156 Jul 22, 2026
75c1f9c
Rename file for changing service type to NodePort
Chirantana-g-156 Jul 22, 2026
318d930
Rename load balancer service type to 05-load balancer service type
Chirantana-g-156 Jul 22, 2026
4f27604
Rename downsides of LB.md to 05-downsides of LB.md
Chirantana-g-156 Jul 22, 2026
7b4698e
Rename ingress yaml file to 08-ingress yaml file
Chirantana-g-156 Jul 22, 2026
aa346fe
Create flow.md
Chirantana-g-156 Jul 26, 2026
28d08b1
Create Route53.md
Chirantana-g-156 Jul 27, 2026
261f656
Create CICD overview.md
Chirantana-g-156 Jul 27, 2026
2bb87c4
Update CICD overview.md
Chirantana-g-156 Jul 27, 2026
6c22726
Create CI.yaml file.md
Chirantana-g-156 Jul 27, 2026
d84e75b
Add CI pipeline for Product Catalog Service
Chirantana-g-156 Jul 27, 2026
7e57777
Update CI.yaml
Chirantana-g-156 Jul 27, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
863 changes: 863 additions & 0 deletions flow.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion section-9/01-connect-k8s-using-kubectl.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Connect to EKS Cluster using AWS CLI and kubectl

# INSIDE EC2

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== locate file =="
fd -a '01-connect-k8s-using-kubectl.md' . || true

echo "== relevant file excerpt =="
file="$(fd '01-connect-k8s-using-kubectl.md' . | head -n 1 || true)"
if [ -n "${file:-}" ]; then
  wc -l "$file"
  sed -n '1,220p' "$file" | cat -n
fi

echo "== search aws configure/keys in related files =="
rg -n "aws configure|aws_access|aws_secret|access key|secret key|kubeco|kubectl|INSIDE EC2" . -g '*.md' -g '*.sh' -g '*.yaml' -g '*.yml' || true

Repository: iam-veeramalla/ultimate-devops-project-aws

Length of output: 3197


Use an EC2 IAM role instead of prompting for long-lived keys.

Since this section is inside EC2, skip the aws configure access/secret key input and run aws eks ... update-kubeconfig with an IAM role/instance profile that has the required EKS permissions. This keeps credentials on the instance metadata as temporary credentials instead of storing long-lived access keys.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@section-9/01-connect-k8s-using-kubectl.md` at line 2, Update the EC2 setup
instructions under “INSIDE EC2” to remove the aws configure access-key and
secret-key prompts. Instruct users to run aws eks update-kubeconfig using the
instance’s IAM role/profile with the required EKS permissions, relying on
temporary instance-metadata credentials.

Source: MCP tools

## Step 1: Download and Install AWS CLI

Follow the instructions to download and install the AWS CLI from the [official AWS documentation](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html).
Expand Down
68 changes: 68 additions & 0 deletions section-9/03-Understanding deployment yaml file
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
EX:-
apiVersion: apps/v1
kind: Deployment // can be:- deployment, service, ingress, webhooks (kind helps in understanding what is this yaml file about)
metadata:
name: opentelemetry-demo-adservice
labels: // labels to know what it is for and which project it is for in an organisation

opentelemetry.io/name: opentelemetry-demo-adservice
Comment on lines +1 to +8

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🔴 Critical | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

for file in \
  "section-9/03-Understanding deployment yaml file" \
  "section-9/serviceaccount yaml file"; do
  kubectl apply --dry-run=client --validate=strict -f "$file"
done

Repository: iam-veeramalla/ultimate-devops-project-aws

Length of output: 225


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

printf 'Files:\n'
git ls-files | rg -F 'section-9' || true

printf '\nRelevant file size/content snippets:\n'
for file in \
  "section-9/03-Understanding deployment yaml file" \
  "section-9/serviceaccount yaml file"; do
  if [ -f "$file" ]; then
    printf '\n== %s (%d lines) ==\n' "$file" "$(wc -l < "$file")"
    sed -n '1,220p' "$file" | cat -n
  else
    printf 'missing: %s\n' "$file"
  fi
done

printf '\nYAML parser check (if available):\n'
python3 - <<'PY' || true
try:
    import yaml
except Exception as e:
    print(f"PyYAML unavailable/import error: {type(e).__name__}: {e}")
    raise SystemExit
import pathlib, sys
for path in [pathlib.Path("section-9/03-Understanding deployment yaml file"), pathlib.Path("section-9/serviceaccount yaml file")]:
    print(f"\n== {path} ==")
    all_errors = []
    try:
        docs = list(yaml.safe_load_all(path.read_text()))
        print(f"loaded {len(docs)} document(s)")
        for i, doc in enumerate(docs, 1):
            print(f"doc {i}: {type(doc).__name__}={doc!r}")
    except Exception as e:
        print(f"load_all error: {type(e).__name__}: {e}")
PY

Repository: iam-veeramalla/ultimate-devops-project-aws

Length of output: 7509


🌐 Web query:

official Kubernetes YAML YAML-based text format comments supported # not //

💡 Result:

Yes, Kubernetes uses the standard YAML format, which supports comments using the octothorpe/hash symbol (#) [1][2][3]. The double-slash (//) syntax, commonly used in languages like C, Java, or JavaScript, is not a valid comment syntax in YAML and will result in a parsing error if used [1]. Key points regarding comments in Kubernetes YAML: - Symbol: Only the # symbol is used to denote comments [1][2]. - Scope: Comments are single-line only; there is no native multi-line comment syntax in YAML [1]. To comment out multiple lines, you must prefix each line with a # symbol [1]. - Placement: Comments can be placed on their own line or at the end of a line (inline) [1]. They are ignored by the Kubernetes API server and have no effect on the processed configuration [4][2]. - Constraints: Comments cannot be placed inside strings or block scalar values (like multiline strings), as the parser will treat the # symbol as part of the data itself [1][2]. - Separators: Kubernetes supports the use of document separators (---). While historically some parsers encountered issues when comments immediately followed these separators, recent versions of Kubernetes handle whitespace and comments after separators correctly [5][6]. Because Kubernetes manifests rely on standard YAML parsers, they strictly follow the YAML specification, which does not recognize // for commenting [7][2][3].

Citations:


Keep instructional prose and non-YAML comments out of manifest files.

section-9/03-Understanding deployment yaml file mixes free-form text with YAML and uses // comments, which Kubernetes YAML does not support; that file fails to parse. Move the tutorial prose to Markdown and replace every // annotation with #. In section-9/serviceaccount yaml file, the first document is non-YAML prose before ---, making it parse as a string document; keep only the ServiceAccount manifest after the separator.

📍 Affects 2 files
  • section-9/03-Understanding deployment yaml file#L1-L8 (this comment)
  • section-9/serviceaccount yaml file#L1-L4
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@section-9/03-Understanding` deployment yaml file around lines 1 - 8, Remove
instructional prose from section-9/03-Understanding deployment yaml file and
place it in a Markdown document; replace every unsupported // annotation in the
deployment manifest with YAML # comments. In section-9/serviceaccount yaml file,
remove the prose before the document separator so the file contains only the
ServiceAccount manifest after ---.

Source: MCP tools

app.kubernetes.io/instance: opentelemetry-demo
app.kubernetes.io/component: adservice
app.kubernetes.io/name: opentelemetry-demo-adservice
app.kubernetes.io/version: "1.12.0"
app.kubernetes.io/part-of: opentelemetry-demo
spec:
replicas: 1
revisionHistoryLimit: 10
selector:
matchLabels:

opentelemetry.io/name: opentelemetry-demo-adservice
template:
metadata:
labels:

opentelemetry.io/name: opentelemetry-demo-adservice
app.kubernetes.io/instance: opentelemetry-demo
app.kubernetes.io/component: adservice
app.kubernetes.io/name: opentelemetry-demo-adservice
spec:
serviceAccountName: opentelemetry-demo
containers:
- name: adservice
image: 'ghcr.io/open-telemetry/demo:1.12.0-adservice'
imagePullPolicy: IfNotPresent
ports:

- containerPort: 8080
name: service
env: //usually given by developer
- name: OTEL_SERVICE_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.labels['app.kubernetes.io/component']
- name: OTEL_COLLECTOR_NAME
value: 'opentelemetry-demo-otelcol'
- name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
value: cumulative
- name: AD_SERVICE_PORT
value: "8080"
- name: FLAGD_HOST
value: 'opentelemetry-demo-flagd'
- name: FLAGD_PORT
value: "8013"
- name: OTEL_EXPORTER_OTLP_ENDPOINT
value: http://$(OTEL_COLLECTOR_NAME):4318
- name: OTEL_LOGS_EXPORTER
value: otlp
- name: OTEL_RESOURCE_ATTRIBUTES
value: service.name=$(OTEL_SERVICE_NAME),service.namespace=opentelemetry-demo,service.version=1.12.0
resources:
limits:
memory: 300Mi
volumeMounts:
volumes:

........................................................................................................................................................
apiversion, kind help in identifying what kind of resource it is
33 changes: 33 additions & 0 deletions section-9/04-Understanding srv yaml file
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
EX:-
apiVersion: v1
kind: Service
metadata:
name: opentelemetry-demo-cartservice
labels:

opentelemetry.io/name: opentelemetry-demo-cartservice
app.kubernetes.io/instance: opentelemetry-demo
app.kubernetes.io/component: cartservice
app.kubernetes.io/name: opentelemetry-demo-cartservice
app.kubernetes.io/version: "1.12.0"
app.kubernetes.io/part-of: opentelemetry-demo
spec:
type: ClusterIP
ports:
- port: 8080
name: tcp-service
targetPort: 8080 //target port meets the container port in the deplo yaml file (containerPort: 8080)
selector:
opentelemetry.io/name: opentelemetry-demo-cartservice

...........................................................................................................
we know a service identifies a pod using labels but how will service know?
-> Selector:
-> we specify the label inside this that we have in our pod, pod resource or in our deployment template ( template:
metadata:
labels:
opentelemetry.io/name: opentelemetry-demo-cartservice
app.kubernetes.io/instance: opentelemetry-demo
app.kubernetes.io/component: cartservice
app.kubernetes.io/name: opentelemetry-demo-cartservice)
)
Comment on lines +1 to +33

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Separate prose from copyable YAML and use # comments.

Both files embed prose or // annotations in YAML. // becomes part of the field value rather than a YAML comment, causing invalid Service port/Ingress host values when copied and validated.

  • section-9/04-Understanding srv yaml file#L1-L33: remove EX:-, move explanations outside a fenced YAML block, and change the targetPort annotation to #.
  • section-9/08-ingress yaml file#L1-L22: place the introductory sentence outside the YAML block and replace the host’s // annotation with #.
📍 Affects 2 files
  • section-9/04-Understanding srv yaml file#L1-L33 (this comment)
  • section-9/08-ingress yaml file#L1-L22
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@section-9/04-Understanding` srv yaml file around lines 1 - 33, Separate
explanatory prose from copyable YAML in section-9/04-Understanding srv yaml file
lines 1-33: remove the EX:- marker, use a fenced YAML block, and replace the
targetPort // annotation with a # comment. Apply the same formatting fix in
section-9/08-ingress yaml file lines 1-22 by moving the introductory sentence
outside the YAML block and changing the host // annotation to #.

Loading