Mình đã đạt 99% CKAD như thế nào?
Xin chào mọi người, mình là Thành.
Như tiêu đề không mấy khiêm tốn ở trên, mình đã lấy được chứng chỉ CKAD với mức điểm gần như tuyệt đối. Trong lúc vẫn còn nhớ nhiều thứ về kỳ thi, mình muốn viết một bài chia sẻ về quá trình ôn luyện, thực hành, và ngày ngồi vào bàn thi của mình.

Nhưng trước hết, mình muốn gửi lời cảm ơn tới DevOps VietNam đã tạo điều kiện để mình và nhiều anh chị em khác có thể tiếp cận tới các chứng chỉ của Linux Foundation với mức giá rất tốt.
Và thậm chí còn được hoàn tiền thông qua chương trình DevOps VietNam x Linux Foundation Education: đặc quyền kép nữa. Điều mà không phải tổ chức đối tác nào của Linux Foundation cũng sẵng sàng cho đi như vậy. Biggg respect!!!
Nên khi được DevOps VietNam mời làm tác giả chia sẻ mình đã nhận lời, vừa là để lại kiến thức lâu dài quá trình làm việc của bản thân vừa giúp được anh chị em đang có mong muốn thi thêm nguồn tham khảo thực tế.
Okay, cùng đi vào nội dung chính ha.
Một chút cảm nghĩ
Dành cho những ai chưa biết về CKAD thì đây là một chứng chỉ về Kubernetes do CNCF và Linux Foundation phát hành, tập trung vào đối tượng là anh em Dev cần thao tác với các workload trên Kubernetes.
Ban đầu khi mới biết đến CKAD, mình đã nghĩ là nó rất khoai và sẽ ngốn không ít thời gian để ôn luyện. Nhưng sau khi đọc một số bài đánh giá cũng như nghe review từ các tiền bối đã hoàn thành chứng chỉ, mình cũng vơi đi phần nào nỗi lo về độ khó của chứng chỉ này.
Nhìn chung, sau khi trải nghiệm, mình thấy đúng với cái tên và mục tiêu mà chứng chỉ được sinh ra, các câu hỏi và yêu cầu tập trung vào việc kiểm soát các workload, cái mà thí sinh cần thành thạo là các kỹ năng để điều khiển cho ứng dụng chạy và kết nối với nhau trên K8s, chưa cần tới mức sâu xa quá như cài đặt, quản trị hay bảo mật (cái đó thì CKA và CKS sẽ yêu cầu nhiều hơn).
Quá trình ôn luyện
Để mà nói về ôn luyện lý thuyết thì mình không học ở quá nhiều nguồn, chủ yếu sẽ là qua khóa học Kubernetes Certified Application Developer (CKAD) with Tests. Không rõ rằng đây là đã là khóa học tốt nhất hay chưa nhưng theo mình trải nghiệm thì lượng kiến thức mà nó mang lại là hoàn toàn đủ so với syllabus mà CKAD cung cấp.
Cái hay nhất của khóa là nó cho mình một môi trường để thực hành với những gì đã học, giúp kiến thức được giữ lại chứ không trôi tuột.
Ngoài ra thì mình sẽ dùng thêm các nguồn tài liệu như K8s Docs, Helm Docs để đọc thêm nếu có một số chỗ chưa hiểu lắm, cũng như để làm quen với việc tra cứu tài liệu khi thi thật.
Và tất nhiên, GPT hay Gemini luôn là các trợ thủ đắc lực của mình.
Thực hành
Kodekloud
Nếu các bạn cũng học khóa học như mình ở trên thì đây sẽ là nơi đầu tiên các bạn nên dành thời gian để làm quen và học thêm nhiều thứ với K8s như syntax, nơi lưu config,…
Mọi người có thể tham khảo:
Killer.sh
Bên cạnh đó, khi mua chứng chỉ thì LF cũng tặng chúng ta 2 mock exam trên nền tảng Killer.sh. Môi trường làm exam ở đây sẽ rất giống với thi thật nên các bạn có thể dùng nó để làm quen. Với mình thì đây là nơi ôn tập cuối cùng, giống như là 2 bài thi thử để đánh giá năng lực trước khi bước vào ngày thi.
Về độ khó của 2 mock exam, chúng ta sẽ có 2 bài A và B, mình đánh giá là bài A giống như món khai vị ấy, nó rất nhẹ nhàng và đủ để các bạn làm quen dần với môi trường thi, còn bài B thì khó hơn hẳn, các câu hỏi sẽ dài và phức tạp hơn, thậm chí mình thấy nó còn khó hơn một chút so với bài thi thật. Nên mình nghĩ nếu pass được 2 bài này ngon lành thì có thể tự tin bước vào phòng thi được rồi.
Nguồn khác
Ngoài các nguồn kể trên thì mình cũng tìm được ra một số nguồn để thực hành, và đây là những nơi mình đã dùng để nghịch ngợm thêm:
CK-X: một repo giúp bạn deploy một môi trường lab với 2 bài exam ngay trên local với Docker. Theo mình thấy thì họ thiết kế giao diện khá giống với thi thật (ngoài việc không có VSCodium), các câu hỏi cũng không quá khó nhưng dùng để ôn tập cũng ổn, nên khá hợp lý để luyện tập thêm.
CKAD-exercises: một repo huyền thoại với những câu hỏi về nhiều mảng trong CKAD, và hiện tại vẫn được cập nhật. Ở đây có từ các phần kiến thức cơ bản cho tới các phần chiếm ít trọng số như Helm, Podman, CRD. Mình hay tận dụng môi trường bên Kodekloud để làm các câu hỏi trong này.
Ngày phán xử
Về việc chuẩn bị môi trường thi thì mình sẽ không đề cập nhiều, mọi người có thể đọc thêm chi tiết ở candidate requirements.
Sau khi book lịch thi xong thì PSI sẽ cho chúng ta vài lần cài đặt môi trường thi thử để đảm bảo máy tính đáp ứng được các yêu cầu khi vào môi trường thật, rất nên tận dụng điều này để có môi trường đáp ứng tốt nhất.
Về quá trình check in, đơn giản là cứ làm theo những gì giám thị yêu cầu, từ soi quanh phòng, soi quanh bàn, soi kính, đồng hồ,… Ban đầu mình cũng không nghĩ là mất quá nhiều thời gian, nhưng tổng thời gian check in của mình tới tận gần 25 phút, vậy nên hãy cứ vào sớm nhất có thể (khoảng 30 phút trước giờ thi) để không bị vội.
Về bài thi
Các phần nội dung thi thì mình thấy cũng không quá phức tạp, tập trung vào thao tác với Pod, Deployment, Service, Secret, ConfigMap,… Chỉ là gõ lệnh đúng là được.
Có một số câu về inspect lỗi, nhưng theo mình thấy cũng không quá khó, các bạn hiểu được cách các resource kết nối với nhau ra sao là sẽ làm ngon.
Nên ôn thêm các câu lệnh thao tác với image / container dùng Docker và Podman.
Để mà nói về phần tricky nhất trong bài thì theo mình sẽ là về Network Policy, nên ôn kĩ kĩ phần này xíu để tránh mất điểm.
Ngoài ra thì cũng không cần quá lo lắng về giám thị đâu, chỉ cần ngồi nghiêm túc làm bài là được. Mình chỉ bị nhắc nhở nhẹ một lần vì lỡ che miệng trong lúc trầm ngâm quá đà.
Tips and tricks
Với một bài thi 17 câu trong 2 tiếng thì theo mình thấy là không quá khó, nhưng để dư dả thời gian còn soát lại bài thì cũng cần một số mẹo. Đây là một vài mẹo nhỏ mà mình đã áp dụng để làm bài mượt mà hơn:
-
Với thời gian trung bình khoảng 7 phút/câu, có những câu chỉ cần làm chưa tới 1 phút, nhưng sẽ có những câu rất mất thời gian. Độ khó cũng sẽ được sắp xếp ngẫu nhiên. Với mục tiêu là thi thành công thì chúng ta cần tối đa số câu làm được, nên đừng ngại lùi lại một câu nào đó nếu thấy nó cần nhiều thời gian ngẫm nghĩ hơn bình thường nhé.
-
Trong lúc ôn luyện thì nên tập thói quen tra docs, vì đó là thứ có thể cứu nguy trong lúc thi nếu lỡ gặp một phần kiến thức lạ lẫm nào đó. Ngoài ra, khi mở trình duyệt trong lab thì nó đã mở sẵn Resources Allowed, các bạn không cần nhớ địa chỉ web, chỉ cần biết thứ mình cần tìm là gì thôi.
-
Bên cạnh việc tra docs, nên tận dụng câu lệnh
kubectl explain, mình sẽ ưu tiên dùng nó hơn trong trường hợp mình quên tên field nào đó trong manifest. Có thể dùng thêm--recursiveđể xem hết toàn bộ field nha. -
Tận dụng
dry-runnhiều nhất có thể thay vì ngồi viết yaml từ đầu. Hãy cứ hình dung một đề bài đơn giản là tạo một Deployment A với image B, ta có thể thực hiện nó với một lệnh duy nhất như sau:k create deploy A --image B -
Mỗi câu hỏi sẽ yêu cầu thực hiện trên một server riêng, câu lệnh ssh sẽ được note sẵn nên không phải lo. Cái cần chú ý là các thao tác cần thực hiện trên đúng namespace được yêu cầu, nếu không thì coi như công cốc.
-
Tận dụng alias, export và config vim để múa lệnh nhanh hơn. Cái này thì cũng tùy thói quen và tần suất dùng các lệnh của mỗi người, đây là setup mà mình đã dùng trong khi thi:
export do=" --dry-run=client -oyaml " # k create deploy A --image B $do > deploy.yaml
alias kns="kubectl config set-context --current --namespace " # kns namespace_x
alias ka="kubectl apply -f "
alias kp="kubectl get po"
alias kd="kubectl get deploy"
echo <<EOF >> ~/.vimrc
syntax on
filetype plugin indent on
set tabstop=2
set shiftwidth=2
set expandtab
EOF
Với setup trên, mình sẽ viết hết lệnh ra VSCodium lúc đầu giờ, mỗi lần sang câu hỏi mới thì chỉ cần copy vào chạy sau khi ssh, sau đó dùng kns để chuyển sang namespace theo đề là có thể yên tâm làm bài.
- Ngoài ra, trong trường hợp cần test kết nối tới pod thì có thể dùng lệnh sau để chạy một pod làm việc duy nhất là gọi tới cổng trên pod khác, sau đó tự động xóa:
k run test-con --image busybox -it --rm --restart=Never -- wget -O- <podIP>:<port> --timeout 2 - Một tip đặc biệt dành cho những ai có con chuột thích double click như mình. Vào một lần khi mình đang ngồi ôn lab trên Killer.sh, chuột của mình đã vô tình x2 khi mình next câu hỏi mà mình không nhận ra, tới lúc check điểm mình mới thấy là có một câu mà mình còn chưa thèm động đến. Kể từ đó thì mình quyết định sẽ đánh flag cho những câu đã làm, vừa an toàn mà vừa đỡ phải mua chuột mới.
Kết
Đối với mình, quá trình ôn luyện và thi chứng chỉ này là một trải nghiệm vô cùng thú vị. Mong là với những điều mình chia sẻ có thể giúp mọi người thuận tiện hơn trong quá trình ôn và thi.
Hãy cứ tận hưởng quá trình, đừng quá căng thẳng vì dẫu sao LF cũng đã tâm lý cho chúng ta 1 lần retake, cứ chill thôii.
Nếu mọi người có thêm kinh nghiệm hay điều gì muốn chia sẻ thì đừng ngần ngại cho mình và các bạn khác cùng biết nha.
Cảm ơn mọi người đã đọc tới đây. Chúc mọi người dù thi CKAD hay bất kỳ chứng chỉ nào khác đều sẽ đạt kết quả tốt nhất.
Bai bai.

