Hướng dẫn deploy app lên Azure Container thông qua GitHub Action CI/CD
Last updated
Last updated
Xin chào mọi người, trong bài viết này tôi sẽ hướng dẫn triển khai dự án .NET lên azure container thông qua GitHub action một cách chi tiết, dễ hiểu nhất.
Trước khi bắt đầu thì nếu mọi người chưa biết các thuật ngữ như Azure, Azure Container, CI/CI thì mọi người có thể dừng lại qua hiểu các khái niệm ở trên tôi đã nêu để khỏi mất thời gian.
Trước tiên tôi sẽ chuẩn bị một project mẫu để mọi người có thể hình dung, project này chỉ đơn gian là .NET WebAPI default thôi. Có thể download source về:
Trong này cũng có sẵn 1 file Dockerfile để build image. Bạn có thể điều chỉnh các thông tin cấu hình của Dockerfile theo đúng với dự án của bạn.
Để tạo ACR thì bạn có thể tham khảo ở trang
Trong bài viết này mình sẽ tạo azure container registry trên portal cho dễ dàng hình dung.
Ở đây sẽ chọn Subscription, Resource nhé, nếu chưa có 2 thứ này thì bạn có thể tạo ở bên ngoài rồi vào lại trang tạo ACR này.
Ở đây chú ý phần registry name: là phần tên registry mà bạn sẽ dùng nó để cấu hình trong file publish-azure-container.yml
ở bên dưới. Lưu ý là chọn location cho phù hợp với nhu cầu của bạn, mình ở VN nên mình sẽ chọn location là Southeast Asia.
Tiếp theo cứ bấm next vào tạo ACR.
Lưu ý sau khi tạo xong thì bạn cần vào lại ACR đã được tạo, và vào phần Settings>Access Keys> tích vào ô admin user.
Hoặc làm theo những bước của tôi:
Tạo image từ file Dockerfile
Login azure container registry
az acr login --name your-arc-name
Sau khi chạy thành công thì sẽ in ra màn hình: Login Succeeded
Tạo Tags
docker tag testarcdemocontainer <your-arc-name>.azurecr.io/<your-image-name>:<your-version>
Việc này sẽ tạo ra tag và hãy thay các giá trị mà tôi đã để sẵn.
Push lên ACR
docker push <your-arc-name>.azurecr.io/<your-image-name>:<your-version>
Sau câu lệnh này thì sẽ push image lên azure container registry rồi. Giờ là triển khai.
Trong bài này mình sẽ hướng dẫn tạo trên Portal:
Ở tab basic thì chỉ cần chọn lại subscription, resource group và nhập tên container app. Lưu ý phần tên container app này sẽ dùng để cấu hình file yml.
Ở bước này thì chỉ cần nhập y thông tin image. Lưu ý nếu phần select registry mà bị lỗi "Cannot access ACR 'acrd4vdsqgvnmpo4.azurecr.io' because admin credentials on the ACR are disabled." thì bạn chỉ cần vào phần Settings>Access Keys> tích vào ô admin user là được.
ở bên dưới có phần Environment variables thì phần này là thông tin của container app. Thí dụ như dự án .NET của mình thì sẽ cần 1 env này là ASPNETCORE_ENVIROMENT=Developmet
Ở phần này nếu bạn muốn container chạy internal thì không cần click vào enabled ingress. Còn nếu muốn public container và cho phép mọi người đều kết nối đến thì có thể cấu hình như hình. Hoặc có thể cấu hình nâng cao theo ý của bạn.
Cuối cùng là create
Để cấu hình github action thì hãy tạo cho mình folder với đường dẫn sau: .github/workflows/publish-azure-container.yml
Nội dung file publish-azure-container.yml sẽ có những nội dung quan trọng sau:
name: Deploy JFramework to azure container
on: workflow_dispatch: push: branches: ["develop"] env: AZURE_CONTAINER_REGISTRY: jfwapidemo CONTAINER_APP_NAME: jfwtestcontainer RESOURCE_GROUP: jfw-demo jobs: build-and-deploy: runs-on: ubuntu-latest
Ở đây các bước quan trọng là từ bước 6 trở đi.
Đối với biết AZURE_CREDENTIALS thì cần setting như sau để lấy giá trị này:
az ad sp create-for-rbac \
--name <your-credential-name>
--role contributor
--scopes /subscriptions/<your-subcription-id>
--sdk-auth
Câu lệnh này tạo credential của bạn, và sau đó sẽ return về json object. Hãy copy nguyên object đó và vào trang github để thêm secret varriable để thêm với biến là AZURE_CREDENTIALS và giá trị là object mà câu lệnh này đã generate ra.
Tiếp theo là AZURE_REGISTRY_USERNAME, AZURE_REGISTRY_PASSWORD thì 2 biến này nằm ở azure, hãy vào ACR và vào phần Access Keys để copy 2 thông tin user này, và cứ thế lên github và tạo 2 secret varriable này.
Cuối cùng là commit và push code lên github để xem thành quả của bạn.
Để xem được container chạy trên azure thì hãy vào container đó, và xem ở phần overview bạn sẽ thấy có 1 phần là Application Url, thì đó chính là URL public của azure sau khi bạn deploy thành công.
khi để tạo image thì bạn có thể xem thêm ở đây:
Sau khi đã tạo được ACR rồi, thì tiếp theo sẽ tạo container cho ứng dụng của bạn. Bạn có thể xem thêm link của microsoft tại đây: