Chào mọi người trong cộng đồng DevOps Việt Nam chúng ta. Mình là Nguyễn Việt Hùng gần đây mình có đạt danh hiệu Kubestronaut. Trong DevOps, danh hiệu Kubestronaut được nhắc đến khá nhiều vì để đạt được sẽ cần có đủ 5 chứng chỉ Kubernetes-related của CNCF (KCNA, KCSA, CKA, CKAD, CKS) và có đủ cả 5 chứng chỉ đang active thì mới được công nhận là Kubestronaut.

Với cá nhân mình thì nó cũng không quá khó và mình viết bài này không phải để tâng bốc một hệ thống chứng chỉ. Điều mình muốn chia sẻ đến mọi người là sự quyết tâm rất lớn mà một cá nhân như mình cần có khi phải ngồi xuống, đối mặt với cả một khối lượng công nghệ xa lạ, rồi kiên trì đi hết chặng đường đó.
Chính xác như vậy, mình không bắt đầu sự nghiệp trong ngành IT. Mình từng là sinh viên cơ điện tử, có tư duy kỹ thuật, nhưng hoàn toàn không có kiến thức nền về công nghệ, không có background IT, cũng không có kinh nghiệm gì về cloud. Bài viết này dành cho những người giống như mình, những ai đang cân nhắc chuyển ngành hoặc đang nhìn vào DevOps từ bên ngoài và tự hỏi liệu mình có đủ khả năng hay không.
Trước khi bắt đầu hành trình này, chúng ta cần hiểu tại sao mình nên học Kubernetes. Nếu bạn không có một lý do đủ rõ ràng, khối lượng thử thách rất lớn của nó sớm muộn cũng sẽ vắt kiệt sức bạn.
Kubernetes chính là động cơ
Đứng một mình, Kubernetes đã là một công cụ rất đáng nể của ngành công nghệ. Nhưng sức mạnh thực sự của nó nằm ở hệ sinh thái mã nguồn mở rất lớn xung quanh. Nếu tưởng tượng hệ sinh thái Kubernetes như một cửa hàng Lego, thì nó cung cấp các mảnh ghép và nền tảng để bạn tùy biến, tinh chỉnh hạ tầng theo nhu cầu riêng, với mức độ kiểm soát rất cao.
Nếu bạn biết Kubernetes, và dĩ nhiên là cả Linux, bạn sẽ hiểu cách các kỹ sư trên toàn thế giới vận hành hạ tầng cho rất nhiều hệ thống quan trọng hiện nay như thế nào. Hơn thế nữa, cách tiếp cận mã nguồn mở, có thể ghép nối linh hoạt như vậy đang khai thác mạnh vào các ngành công nghiệp truyền thống, vốn trước đây mang tính độc quyền rất cao, với quy mô hàng tỷ đô như viễn thông và tự động hóa công nghiệp.
Với những ai đang lo lắng về tương lai, mình nghĩ DevOps sẽ là một trong những ngành bị thay thế khá chậm bởi AI. AI có thể thay thế một số tác vụ riêng lẻ, nhưng rất khó thay thế tư duy kỹ thuật cần thiết để thiết kế và duy trì những hệ thống lớn.
Nền tảng cơ bản
Nếu muốn đi qua thử thách này mà không bị kiệt sức, bạn không thể đâm đầu thẳng vào Kubernetes. Bạn cần có một nền tảng đủ tốt.
-
Nền tảng về networking và security: Mình đã học networking và security vài tháng trước khi bắt đầu học Kubernetes.
-
Kỹ năng thực hành Linux tốt: Mình từng self-hosted một số services cá nhân bằng Docker trên một Ubuntu VM. Việc đó cho mình rất nhiều kinh nghiệm về Linux cũng như các khái niệm container của Docker, điều này rất cần để bạn hiểu được rõ các khái niệm.
-
Khả năng tiếng Anh: Những tài liệu tốt nhất và cập nhật nhất hầu như đều bằng tiếng Anh và bài thi cũng như vậy.
-
Một hệ thống ghi chú tốt: Ghi chú ngắn, rõ, đủ để bạn không phải đọc lại hoặc xem lại tài liệu quá nhiều lần. Điều này rất quan trọng nếu bạn phải cày một lượng lớn kiến thức và tài liệu.
Mẹo thi và thực hành thực tế
Lộ trình học
Mình khuyên thật trên chính trải nghiệm của mình là nhảy thẳng vào học CKAD trên KodeKloud. CKAD mới là nơi diễn ra quá trình học thực sự. Nó ép bạn phải hiểu các định nghĩa liên quan, các khái niệm cốt lõi, và quan trọng nhất là nó có những bài lab rất dễ tiếp cận với người mới, cho phép bạn tương tác trực tiếp với hệ thống thật.
KCNA và KCSA khá dễ. Nên với mình, mình thi luôn hai chứng chỉ này trước để lấy một chút động lực.
Làm chủ các lệnh Linux
Mọi người nên làm quen thật kỹ với các công cụ như grep và curl. Bạn sẽ phải dùng chúng liên tục để lọc log và kiểm tra endpoint trong quá trình thi.
Tận dụng lệnh để tạo nhanh file YAML
Mọi người nên tận dụng các lệnh ngắn để tạo sẵn file YAML rồi chỉnh sửa tiếp. Làm quen với việc gõ --dry-run=client -o yaml > file.yaml. Đừng bỏ qua phần này trên KodeKloud, vì nó sẽ tiết kiệm cho bạn rất nhiều thời gian trong bài thi CKA và CKAD.
Cày KillerCoda
Mọi người nên làm từng bài lab trên KillerCoda cho tới khi việc gõ lệnh gần như thành phản xạ như vậy lúc thi sẽ tiết kiệm hơn thời gian rất nhiều.
Đừng hoảng
Khi phải sửa một component của Kubernetes bị lỗi, ví dụ như kube-apiserver, mà nó mãi không chịu lên, cứ bình tĩnh vì chuyện đó là bình thường. Mọi người nên làm quen với những tình huống như vậy. KillerCoda có các bài lab về CKA xoay quanh những lỗi kiểu này, nên bạn sẽ có khá nhiều cơ hội để thực hành trước và đỡ bỡ ngỡ hơn.
Nghịch lý Talos Linux

Trong quá trình ôn CKAD, mình đã thực hành lab trên Talos Linux. Với những ai chưa biết, Talos Linux là một hệ điều hành immutable, được điều khiển bằng API, và được xây dựng riêng cho Kubernetes. Nó không có SSH, không có shell truyền thống, và gần như ẩn toàn bộ việc quản lý etcd và kube-api ở tầng dưới.
Thực hành trên Talos là một lựa chọn rất phù hợp cho CKAD, vì nó cho phép mình tập trung hoàn toàn vào tầng ứng dụng mà không cần bận tâm quá nhiều đến cấu hình node.
Tuy nhiên, điều này lại dẫn đến một cú sốc khá lớn khi mình chuyển sang ôn thi CKA và CKS.
CKA và CKS yêu cầu việc quản lý node ở mức rất sâu, từ SSH vào worker, chỉnh thủ công cấu hình kubelet, cho tới quản lý backup etcd. Do đã quen dùng Talos Linux, mình bắt đầu đặt dấu hỏi về tính hữu dụng lâu dài của một số phần trong bài thi CKA và CKS. Khi các kiến trúc hiện đại như Talos biến việc quản lý node Linux thủ công trở nên ít cần thiết hơn, bằng cách coi chính hệ điều hành là một phần của hạ tầng bất biến, thì cách làm cũ thực sự mang lại cảm giác khá xa với hướng đi mới của ngành.
Dĩ nhiên, việc biết và hiểu cách Kubernetes hoạt động ở tầng dưới vẫn là điều rất cần thiết. Bạn không thể sửa một abstraction layer nếu không biết lớp bên dưới thực sự có gì. Nhưng ngành này đang thực sự chuyển dần sang kiến trúc hạ tầng immutable, và việc đi qua những bài thi này cũng khiến mình nhận ra khá rõ khoảng cách giữa chứng chỉ và thực tế trong ngành.
Lời kết
Cuối cùng khi lấy được danh hiệu Kubestronaut mình thấy một điều: lĩnh vực này cũng như nhiều ngành khác, nó đòi hỏi kỷ luật và sự bền bỉ.
Một điều nữa mình muốn nhấn mạnh là Kubernetes không phải con đường duy nhất để bước chân vào ngành. Đúng là hiểu K8s sẽ mang lại một nền tảng rất vững để bạn đi sâu hơn vào những mảng như GitOps, Platform Engineering hay các bài toán lớn hơn. Nhưng bạn hoàn toàn không bắt buộc phải có chứng chỉ Kubestronaut này, và cũng không nhất thiết phải lấy Kubernetes làm điểm xuất phát mặc định để theo DevOps. Có rất nhiều con đường khác để bắt đầu.
Và nếu để khuyên các bạn mới (đặc biệt còn hạn chế kinh phí) khi mình đi lại hành trình thì mình sẽ lấy chứng chỉ CKAD để xác nhận kỹ năng Kubernetes cơ bản, rồi dành phần thời gian còn lại cho việc build lab và làm quen với những tool khác trong CNCF Landscape.
Mình viết bài này với hy vọng rằng bất kỳ ai đọc được nó, đặc biệt là những người đang nhìn vào DevOps từ bên ngoài và cảm thấy do dự, sẽ nhận ra rằng con đường này hoàn toàn khả thi. Chúc các bạn may mắn với hành trình cày cuốc. Hy vọng bài viết này sẽ giúp bạn vạch ra lộ trình học tập của riêng mình rõ ràng hơn dù chỉ một chút.








