Triển khai ảnh bộ chứa cho Dịch vụ Azure Kubernetes
Trong đơn vị này, bạn triển khai ảnh bộ chứa cho Dịch vụ Azure Kubernetes (AKS). Với AKS, bạn đặt cấu hình cụm Kubernetes của mình để chạy ở trạng thái mong muốn thông qua triển khai, đây là quy trình cung cấp các bản cập nhật khai báo cho pod và ReplicaSets. Tuyên bố của nhà nước được quản lý trong tệp YAML kê khai, và bộ điều khiển Kubernetes thay đổi trạng thái hiện tại để tuyên bố nhà nước khi hướng dẫn. Bạn tạo tệp manifest deployment.yml này và hướng dẫn phiên bản AKS flightbookingsystemsample chạy ở trạng thái mong muốn với các giá trị được đặt cấu hình để kéo và chạy ảnh bộ chứa chứa trong sổ đăng ký bộ chứa Azure mà bạn đã đẩy trong đơn vị trước đó. Nếu không có tệp manifest này, bạn phải tạo, cập nhật và xóa thủ công các cụm, thay vì cho phép Kubernetes điều phối quá trình.
Ghi
Nếu phiên của bạn đã hủy hoặc bạn đang thực hiện bước này tại một thời điểm khác hoặc từ MỘT CLI khác, bạn có thể phải khởi tạo lại các biến môi trường của mình và xác thực lại bằng cách sử dụng các lệnh sau:
export AZ_RESOURCE_GROUP=java-containerization-demo-rg
export AZ_CONTAINER_REGISTRY=<your-container-registry>
export AZ_KUBERNETES_CLUSTER=java-containerization-demo-aks
export AZ_LOCATION=<your-Azure-region>
export AZ_KUBERNETES_CLUSTER_DNS_PREFIX=<your-unique-DNS-prefix-to-access-your-AKS-cluster>
az login
az acr login --name $AZ_CONTAINER_REGISTRY
Triển khai ảnh bộ chứa
Bây giờ bạn triển khai hình flightbookingsystemsample ảnh bộ chứa cho cụm AKS của bạn. Trong thư mục gốc của dự án của bạn, Flight-Booking-System-JavaServlets_App/Project/Airlines, tạo một tệp có tên deployment.yml bằng cách sử dụng lệnh sau:
vi deployment.yml
Thêm nội dung sau đây deployment.yml, rồi lưu và thoát. Hãy đảm bảo thay thế chỗ <AZ_CONTAINER_REGISTRY> dành sẵn bằng giá trị của giá trị biến AZ_CONTAINER_REGISTRY môi trường mà bạn đặt trước đó. Để lưu và thoát, nhấn ESC, nhập :wq!, rồi nhấn Enter.
apiVersion: apps/v1
kind: Deployment
metadata:
name: flightbookingsystemsample
spec:
replicas: 1
selector:
matchLabels:
app: flightbookingsystemsample
template:
metadata:
labels:
app: flightbookingsystemsample
spec:
containers:
- name: flightbookingsystemsample
image: <AZ_CONTAINER_REGISTRY>.azurecr.io/flightbookingsystemsample:latest
resources:
requests:
cpu: "1"
memory: "1Gi"
limits:
cpu: "2"
memory: "2Gi"
ports:
- containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
name: flightbookingsystemsample
spec:
type: LoadBalancer
ports:
- port: 8080
targetPort: 8080
selector:
app: flightbookingsystemsample
Ghi
Hoặc bạn có thể sử dụng tệp deployment_solution.yml trong thư mục gốc của dự án, chứa nội dung bạn cần. Bạn có thể thấy dễ dàng hơn khi đổi tên hoặc cập nhật nội dung của tệp đó.
Trong phần trước deployment.yml, tệp chứa một triển khai và một dịch vụ. Việc triển khai được sử dụng để quản lý một tập hợp các nhóm và dịch vụ được sử dụng để cho phép truy nhập mạng vào các nhóm. Các cụm được đặt cấu hình để kéo một hình ảnh duy nhất, <AZ_CONTAINER_REGISTRY>.azurecr.io/flightbookingsystemsample:latesttừ Azure Container Registry. Dịch vụ này được cấu hình để cho phép lưu lượng truy cập cụm HTTP đến cổng 8080, -p tương tự như cách bạn chạy ảnh bộ chứa cục bộ với đối số port.
Nếu triển khai thành công, bạn hiện đã có cụm AKS. Đặt cấu hình Azure CLI để truy nhập cụm AKS của bạn thông qua kubectl lệnh. Cài kubectl đặt cục bộ bằng cách sử dụng lệnh sau:
az aks install-cli
Đặt cấu hình kubectl để kết nối với cụm AKS của bạn bằng cách sử dụng lệnh sau đây:
az aks get-credentials \
--resource-group $AZ_RESOURCE_GROUP \
--name $AZ_KUBERNETES_CLUSTER
Đầu ra sau đây là điển hình:
Merged AZ_KUBERNETES_CLUSTER as current context in ~/.kube/config
Sử dụng AKS để áp deployment.yml thay đổi cho cụm của bạn bằng cách sử dụng lệnh sau đây:
kubectl apply -f deployment.yml
Đầu ra sau đây là điển hình:
deployment.apps/flightbookingsystemsample created
service/flightbookingsystemsample created
Theo dõi trạng thái triển khai bằng cách sử dụng lệnh sau đây:
kubectl get all
Đầu ra sau đây là điển hình:
kubectl get all
NAME READY STATUS RESTARTS AGE
pod/flightbookingsystemsample-b7fd6684f-4j8vf 1/1 Running 0 37s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/flightbookingsystemsample LoadBalancer 10.0.62.153 <external-IP> 8080:30534/TCP 37s
service/kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 11h
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/flightbookingsystemsample 1/1 1 1 37s
NAME DESIRED CURRENT READY AGE
replicaset.apps/flightbookingsystemsample-b7fd6684f 1 1 1 37s
Nếu trạng thái POD bị Running, bạn có thể truy nhập vào ứng dụng. Xem nhật ký ứng dụng trong mỗi giá trị bằng cách sử dụng lệnh sau:
kubectl logs pod/flightbookingsystemsample-<pod-identifier-from-your-running-pod>
Đầu ra sau đây là điển hình:
kubectl logs pod/flightbookingsystemsample-b7fd6684f-4j8vf
15-Nov-2024 12:31:51.208 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/10.1.33
15-Nov-2024 12:31:51.211 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Nov 7 2024 22:28:55 UTC
15-Nov-2024 12:31:51.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 10.1.33.0
15-Nov-2024 12:31:51.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
15-Nov-2024 12:31:51.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 5.15.0-1074-azure
15-Nov-2024 12:31:51.212 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
15-Nov-2024 12:31:51.216 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /usr/lib/jvm/msopenjdk-17
15-Nov-2024 12:31:51.216 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 17.0.13+11-LTS
15-Nov-2024 12:31:51.216 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Microsoft
15-Nov-2024 12:31:51.216 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
15-Nov-2024 12:31:51.216 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
15-Nov-2024 12:31:51.226 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
15-Nov-2024 12:31:51.226 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
15-Nov-2024 12:31:51.227 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
15-Nov-2024 12:31:51.227 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
15-Nov-2024 12:31:51.227 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
15-Nov-2024 12:31:51.227 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.lang=ALL-UNNAMED
15-Nov-2024 12:31:51.228 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.io=ALL-UNNAMED
15-Nov-2024 12:31:51.228 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util=ALL-UNNAMED
15-Nov-2024 12:31:51.228 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.base/java.util.concurrent=ALL-UNNAMED
15-Nov-2024 12:31:51.229 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: --add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED
15-Nov-2024 12:31:51.229 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
15-Nov-2024 12:31:51.229 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
15-Nov-2024 12:31:51.229 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
15-Nov-2024 12:31:51.231 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The Apache Tomcat Native library which allows using OpenSSL was not found on the java.library.path: [/usr/java/packages/lib:/usr/lib64:/lib64:/lib:/usr/lib]
15-Nov-2024 12:31:51.565 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
15-Nov-2024 12:31:51.602 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [616] milliseconds
15-Nov-2024 12:31:51.658 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
15-Nov-2024 12:31:51.659 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.1.33]
15-Nov-2024 12:31:51.689 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/AirlinesReservationSample.war]
15-Nov-2024 12:31:53.264 INFO [main] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
15-Nov-2024 12:31:55.155 INFO [main] com.sun.xml.ws.server.MonitorBase.createRoot Metro monitoring rootname successfully set to: com.sun.metro:pp=/,type=WSEndpoint,name=/AirlinesReservationSample-PriceAndSeats-PriceAndSeatsPort
15-Nov-2024 12:31:55.347 INFO [main] com.sun.xml.ws.transport.http.servlet.WSServletDelegate.<init> WSSERVLET14: XML-WS servlet initializing
WARNING:Error in the metadata of the table SEATS: table's row count in the metadata is 5 but 6 records have been found and loaded by UCanAccess. All will work fine, but it's better to repair your database.
15-Nov-2024 12:31:56.248 INFO [main] com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized WSSERVLET12: XML-WS context listener initializing
15-Nov-2024 12:31:56.249 INFO [main] com.sun.xml.ws.transport.http.servlet.WSServletContextListener.contextInitialized WSSERVLET12: XML-WS context listener initializing
15-Nov-2024 12:31:56.284 INFO [main] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/AirlinesReservationSample.war] has finished in [4,595] ms
15-Nov-2024 12:31:56.285 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/docs]
15-Nov-2024 12:31:56.315 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/docs] has finished in [30] ms
15-Nov-2024 12:31:56.316 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/examples]
15-Nov-2024 12:31:56.439 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/examples] has finished in [123] ms
15-Nov-2024 12:31:56.440 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/manager]
15-Nov-2024 12:31:56.456 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/manager] has finished in [16] ms
15-Nov-2024 12:31:56.457 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/ROOT]
15-Nov-2024 12:31:56.468 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/ROOT] has finished in [11] ms
15-Nov-2024 12:31:56.468 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory [/usr/local/tomcat/webapps/host-manager]
15-Nov-2024 12:31:56.481 INFO [main] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory [/usr/local/tomcat/webapps/host-manager] has finished in [13] ms
15-Nov-2024 12:31:56.484 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
15-Nov-2024 12:31:56.501 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [4897] milliseconds
Sử dụng từ EXTERNAL-IP đầu ra kubectl get services flightbookingsystemsample của bạn để truy cập vào ứng dụng đang chạy trong AKS. Đầu ra sau đây là điển hình:
kubectl get services flightbookingsystemsample
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
flightbookingsystemsample LoadBalancer 10.0.62.153 <external-IP> 8080:30534/TCP 3m28s
Ghi
Thay thế địa chỉ IP <external-IP> trong URL sau bằng giá trị của EXTERNAL-IP bạn từ lệnh bạn đã thực hiện trước đó:
Mở trình duyệt và truy cập trang đích Mẫu Hệ thống Đặt vé máy bay tại http://<external-IP>:8080/AirlinesReservationSample/. Trình duyệt của bạn sẽ trông giống như ảnh chụp màn hình sau đây:
Bạn có thể tùy chọn đăng nhập với bất kỳ người dùngtomcat-users.xml nào - ví dụ: someuser@azure.com: password.
Dọn dẹp tài nguyên
Các tài nguyên bạn đã tạo trong mô-đun này có thể phát sinh chi phí liên tục. Để dọn dẹp các tài nguyên, hãy xóa nhóm tài nguyên có chứa chúng bằng cách sử dụng lệnh sau đây:
az group delete --name $AZ_RESOURCE_GROUP