Dies handelt
aws configurepsutil und Flask , Plotly, Boto3 . Installieren Sie sie mit PIP pip3 install -r requirements.txtpip3 install psutil und Flask pip install flaskpip install boto3pip install kubernetes Die Erweiterung von Kubernetes in VSCODEUm die Anwendung auszuführen, navigieren Sie zum Stammverzeichnis des Projekts und führen Sie den folgenden Befehl aus:
$ python3 app.py
Dadurch wird der Flask -Server auf localhost:5000 gestartet. Navigieren Sie zu http: // localhost: 5000/in Ihrem Browser, um auf die Anwendung zuzugreifen.
Dockerfile im Stammverzeichnis des Projekts mit dem folgenden Inhalt: # Use the official Python image as the base image
FROM python:3.9-slim-buster
# Set the working directory in the container
WORKDIR /app
# Copy the requirements file to the working directory
COPY requirements.txt .
RUN pip3 install --no-cache-dir -r requirements.txt
# Copy the application code to the working directory
COPY . .
# Set the environment variables for the Flask app
ENV FLASK_RUN_HOST=0.0.0.0
# Expose the port on which the Flask app will run
EXPOSE 5000
# Start the Flask app when the container is run
CMD ["flask", "run"] $ docker build -t <image_name> . $ docker run -p 5000:5000 <image_name> Dadurch wird der Flask -Server in einem Docker -Container auf localhost:5000 gestartet. Navigieren Sie zu http: // localhost: 5000/in Ihrem Browser, um auf die Anwendung zuzugreifen.
ecr.py :view push commands import boto3
# Create an ECR client
ecr_client = boto3 . client ( 'ecr' )
# Create a new ECR repository
repository_name = 'my-ecr-repo'
response = ecr_client . create_repository ( repositoryName = repository_name )
# Print the repository URI
repository_uri = response [ 'repository' ][ 'repositoryUri' ]
print ( repository_uri ) Dann führen Sie diesen python3 ecr.py aus
$ docker push <ecr_repo_uri>:<tag>
Erstellen Sie einen EKS-Cluster cloud-native-cluster und fügen Sie die Knotengruppe in die AWS-Konsole hinzu
Erstellen Sie einen nodes im EKS -Cluster.
Erstellen Sie Bereitstellung und Dienst in einem Ordner eks.py
from kubernetes import client , config
# Load Kubernetes configuration
config . load_kube_config ()
# Create a Kubernetes API client
api_client = client . ApiClient ()
# Define the deployment
deployment = client . V1Deployment (
metadata = client . V1ObjectMeta ( name = "my-flask-app" ),
spec = client . V1DeploymentSpec (
replicas = 1 ,
selector = client . V1LabelSelector (
match_labels = { "app" : "my-flask-app" }
),
template = client . V1PodTemplateSpec (
metadata = client . V1ObjectMeta (
labels = { "app" : "my-flask-app" }
),
spec = client . V1PodSpec (
containers = [
client . V1Container (
name = "my-flask-container" ,
image = "568373317874.dkr.ecr.us-east-1.amazonaws.com/my-cloud-native-repo:latest" ,
ports = [ client . V1ContainerPort ( container_port = 5000 )]
)
]
)
)
)
)
# This is an automation to run deployment and svc using python
# Create the deployment
api_instance = client . AppsV1Api ( api_client )
api_instance . create_namespaced_deployment (
namespace = "default" ,
body = deployment
)
# Define the service
service = client . V1Service (
metadata = client . V1ObjectMeta ( name = "my-flask-service" ),
spec = client . V1ServiceSpec (
selector = { "app" : "my-flask-app" },
ports = [ client . V1ServicePort ( port = 5000 )]
)
)
# Create the service
api_instance = client . CoreV1Api ( api_client )
api_instance . create_namespaced_service (
namespace = "default" ,
body = service
)Stellen Sie sicher, dass Sie den Namen des Bildes in Zeile 25 mit Ihrer Bild -URL bearbeiten.
So führen Sie die K8S -Befehle für Bereitstellung und Service aus
kubectl apply -f service.ymlanstatt das Python -Skript hinzuzufügenkubectl apply -f deployment.ymldas Sie erstellendeployment.yml and service.yml
aws eks update-kubeconfig --name cloud-native-cluster kubectl get deployment -n default (check deployments)
kubectl get service -n default (check service)
kubectl get pods <name of pod> -n default (to check the pods)
# edit images created if u made errors
kubectl edit deployment my-flask-app -n default
# this will pull down the editted image
kubectl get pod -n default -wSobald Ihr Pod in Betrieb ist, führen Sie den Port-Forward aus, um den Dienst freizulegen
kubectl port-forward service/<service_name> 5000:5000Wenn Sie vorhaben, dieses Repo zum Lernen zu verwenden, drücken Sie bitte den Stern. Danke!