Chuyển đến nội dung chính

Bài đăng

GitHub Actions là gì ? Làm quen với GitHub Actions.

Như ta đã biết github là nới chứa source code nổi tiếng thế giới hiện nay, ngoài github còn có gitlab, bitbucket, codecommit, ...Cơ bản github miễn phí cho người dùng developer, nếu nhu cầu sử dụng nhiều repo cũng như project có nhiều thanh viên developer tham gia thì bạn có thể mua bản nâng cao. Về tiến trình CI/CD process, chúng ta có thể biết tới như Jenkins, Team City, Codepipeline trên AWS, ... GitHub Actions mới ra đời gần đây , ngày 13 tháng 11 năm 2019, GitHub Actions ra phiên bản đầu tiên, trước đó khoảng 1 năm bản beta ra đời. Tham khảo tại đây : https://github.blog/2019-08-08-github-actions-now-supports-ci-cd/GitHub Actions khá đơn giản, khi tiến trình build, test và deploy được viết trong một file có định dạng yaml nằm trong thư mục .github/workflows/ trong chính source code của bạn. GitHub Actions là một event-driven nghĩa là chương trình chạy một loạt các dòng lệnh khi bạn nhận được 1 event, ví dụ mỗi lần một developer nào đó tạo một pull request cho một repository nào đ…
Các bài đăng gần đây

Các thành phần Kubernetes.

Khi bạn triển khai Kubernetes, Kubernetes cluster được hình thành. Một Kubernetes cluster chứa một bộ các worker còn gọi là node. Bên trong những node này chạy các container, mỗi cluster có ít nhất một worker node. Những worker node chứa các ***POD, những POD này là những thành phần ứng dụng workload. Control plane quản lý các worker node và các POD trong một cluster. Trên môi trường sản phẩm, Control Plane thường chạy nhiều tính toán và nhiều nodes , nó có khả năng fault-tolerance* và high-availability**. Đây là các components trong một Kubernetes Cluster. 1.Các thành phần Control Plane:Các thành phần Control plane nó quyết định toàn cục của một cluster, cũng như phát hiện và phản hồi một sự kiện trong cluster. Các thành phần control plane có thể chạy bất kỳ trên máy nào trong cluster, Tuy nhiên để đơn giản, ta set up một đoạn code để start tất cả các thành phần control plane trong một một node và không chạy những ứng dụng dành cho người dùng trên node này.
 + kube-apiserver: API Serv…

Tiến trình CI/CD trong phần mềm và thực tế áp dụng cho ngành Network.

Trong kỹ thuật phần mềm, tiến trình CI/CD làm cho quá trình phát triển phần mềm nhanh hơn, thời gian release (ra đời) một sản phẩm được rút ngắn rất nhiều, nâng cao hiệu năng làm việc của developer. Vậy kỹ thuật CI/CD process là gì ? CI viết tắt bởi Continuous Integration và CD viết tắt bởi Continuous delivery.Liên tục tích hợp (CI) là quá trình diễn ra một cách liên tục không đứt quản trong phần việc develop --> testing --> build --> deploy. Liên tục chuyển giao(CD) là quá trình ra đời sản phầm một cách liên tục theo từng phiên bản của phần mềm. (versioning) làm phần mềm dần hoàn thiện hơn cho tới bản release chính thức.Quá trình liên tục tích hợp(CD), cần có các thành phần : 1. Nơi chứa source code của nhà phát triển có thể là các phần mềm như: github, gutlab, bitbucket, ....2. Tiến trình testing phần mềm : chạy các unit test cũng như các thông số quét mã nguồn để tìm các lỗi bảo mật, lỗi code lặp lại, ..v.v.. 3. Môi trường build sản phẩm;  là môi trường mà khi ra đời một s…

Stateful Sets trong kubernetes.

Khi set up một hệ thống kubernetes, có cả database trong đó thì phần tạo database master - slave trong kubernetes là phần tương đối khó nhằn, Ví dụ trong bài viết này ta sẽ tạo một pod master và 2 pods slave , Pod master cho phép đọc và ghi dữ liệu, trong khi các pods slave còn lại chỉ cho phép đọc.

Trước tiên ta sẽ set up pod master trước và sau đó là các slave. 

Các bước set up các pod master và slave như hình.  Lúc này ta khai báo biến MASTER_HOST trỏ đến mysql-master để dữ liệu cần replicate từ master đã chỉ định 

Trong headless service cần khai báo metadata name là: 
name : mysql-h clusterIP: None Và trong pod-definition.yml thì cần khai báo :
subdomain: mysql-h hostname: mysql-pod

Copy metadata và spec vào phần template của Deployment và đổi Deployment thành StatefulSet 

Lúc này DNS trong kubernetes sẽ là : mysql-pod.mysql-h.default.svc.cluster.local Nó sẽ bị duplicate DNS như trên. 


Stateful Sets trong kubernetes là khi bạn tạo các pod StatefulSet thì pod được tạo đầu tiên sẽ là master, c…

Một số hàm cơ bản khi tạo một hạ tầng ảo trên AWS dùng CDK python.

Như các bạn đã biết AWS CDK Python là một framework để code automation hạ tầng mạng cho AWS. Trong bài viết này chúng ta đi sơ qua một vài function cơ bản trong CDK Python dùng cho việc code automate hạ tầng trên AWS. 
Các components sẽ tạo như:  1. VPC, subnet, Internet GW và NAT GW.  2. ECS - Elastic Container Service, load balancer, AutoScaling Group, ... 
Nếu trước kia bạn có thể sử dụng Ansible hoặc terraform để deploy mà bạn không cần phải biết 1 ngôn ngữ nào, bạn cũng có thể deploy được các components phía trên. 
Terraform: Ansible:

Ngày nay bạn sử dụng code Python để deploy các component trên bằng framework CDK của AWS. 
Trong đó có các hàm thông dụng sau: 

vpc = ec2.Vpc(stack, "VPC",
max_azs=3,
cidr="10.100.0.0/16",
# configuration will create 3 groups in 2 AZs = 6 subnets.
subnet_configuration=[ec2.SubnetConfiguration(
subnet_type=ec2.SubnetType.PUBLIC,
name=name_subnet_public,
cidr_mask=24
) Tạo một VPC, có parameter tối đa available_zone = 3 và CIDR = 10.100.0.0/16 và 6 …

HTTPS cho Jenkins và Sonarqube.

Trong quá trình làm project, devops chúng ta thường build bộ CI/CD nhưng để bảo mật tầng web cho 2 ứng dụng này là Jenkins và Sonarqube thì bạn cần phải làm gì ?

Jenkins server được cài đặt trên ec2 instance của Amazon và Sonarqube được cài đặt chung với server Jenkins nhưng chạy port khác.

Logo Jenkins

Kết quả scan của sonarqube:

Trong trường hợp này bạn phân quyền developer nào được quyền truy cập vào web jenkins để deploy và developer nào được vào Sonarqube để xem các kết quả sonar-scanner trả về.

Mong muốn các dữ liệu truyền được mã hoá, vậy phải bật tính năng https cho truy cập jenkins và sonarqube.

Ví dụ ta đang dùng Nginx làm Reverse Proxy



Sau khi cài đặt nginx thành công ta viết 1 file configuration :

upstream jenkins {   server 127.0.0.1:8443 fail_timeout=0; } server {         listen 443 ssl;          listen [::]:443 ssl;         ssl_certificate /etc/nginx/nginx-selfsigned.crt;         ssl_certificate_key /etc/nginx/nginx-selfsigned.key;         root /var/www/example.com/html;         inde…

AWS CDK là gì ? Cách khởi tạo để cấu hình một hạ tầng cho ứng dụng trên nền tảng đám mây AWS

AWS CDK là gì?

Là bộ công cụ phát triển đám mây AWS (AWS CDK) là khung phát triển phần mềm nguồn mở để xác định cơ sở hạ tầng đám mây dưới dạng mã với các ngôn ngữ lập trình hiện đại và triển khai thông qua AWS CloudFormation

Trong bài viết này mình giới thiệu cách khởi tạo AWS CDK bằng ngôn ngữ python. 

Tạo một project. 

Tạo một folder, sau đó khởi động python cdk bằng lệnh : cdk init 

mkdir my-project cd my-project cdk init app --language python

Bật môi trường ảo cho python: 

source .env/bin/activate

Sau đó cài các dependencies: 

pip install -r requirements.txt

Để cài những thư viện cdk python. ta dùng lệnh: 

pip install aws-cdk.aws-s3 aws-cdk.aws-lambda

Với aws-s3, aws-lambda là SERVICE-NAME. 

Trước khi deploy lên AWS bạn chạy : 

cdk synth: Tổng hợp thành một Cloudformation Template từ một hoặc nhiều stack vào trong ứng dụng AWS CDK. 

cdk deploy API_corp VPC_corp: triển khai (deploy) một hoặc nhiều stack (API_corp VPC_corp) lên hạ tầng AWS.