Wie man

Ausführen von Docker-Containern auf AWS mit ECS – Teil 1

Ausführen von Docker-Containern auf AWS mit ECS – Teil 1

Dieser Artikel ist Teil 1 einer vierteiligen Anleitung zum Ausführen von Docker-Containern auf AWS ECS. ECS steht für Elastic Container Service. Es ist ein verwalteter Containerdienst, der Docker-Container ausführen kann run. AWS bietet zwar auch Container-Management mit Kubernetes (EKS) an, hat aber auch seine proprietäre Lösung (ECS). Der Leitfaden behandelt:

In dieser Anleitung wird beschrieben, wie Sie den ECS-Cluster erstellen.

Voraussetzungen/Voraussetzungen

Bevor Sie mit diesem Handbuch fortfahren, muss der Leser/Benutzer über Folgendes verfügen:

Eine Anleitung zum Erstellen von VPC und Subnetzen (AWS-Netzwerkarchitektur) finden Sie unter dem folgenden Link:

Erstellen des AWS ECS-Clusters

Es gibt zwei Arten von ECS-Clustern, die wir erstellen können.

Erstellen Sie einen AWS ECS-Cluster mit der Fargate-Option

Um den Cluster zu erstellen, können wir dies manuell oder automatisch tun, indem wir entweder CloudFormation oder Terraform verwenden. Für diesen Artikel erstelle ich den Cluster mit CloudFormation und manuell.

CloudFormation:

Die folgende CloudFormation-Vorlage erstellt einen ECS-Cluster mit einem Kapazitätsanbieter als Fargate und Container Insights aktiviert. Der Leser sollte die Vorlageneinstellungen ändern, um sie an seine spezifischen Anforderungen anzupassen. Wichtige Aspekte für die Veränderung werden sein:

AWSTemplateFormatVersion: "2010-09-09" Beschreibung: "ECS-Fargate-Cluster erstellen" Parameter: Name: Typ: String Beschreibung: Der Name der ECS-Cluster-Ressourcen: ECSCluster: Typ: 'AWS::ECS::Cluster' Eigenschaften: ClusterName : !Ref Name ClusterSettings: - Name: containerInsights Wert: aktiviert CapacityProviders: - FARGATE Tags: - Schlüssel: "Name" Wert: "test-ecs" - Schlüssel: "CreatedBy" Wert: "Maureen Barasa" - Schlüssel: "Umgebung" Wert: "test" Outputs: ECS: Beschreibung: Der erstellte ECS-Cluster-Wert: !Ref ECSCluster

Manuell:

Führen Sie die folgenden Schritte aus, um den Cluster manuell zu erstellen.

Klicken Sie in der Elastic Container Services-Konsole auf Cluster erstellen.

Cluster erstellen

Wählen Sie dann für die Cluster-Vorlage Powered by Fargate als Ihre Option. Klicken Sie auf den nächsten Schritt.

Clustervorlage auswählen (Powered by Fargate)

Konfigurieren Sie abschließend die Cluster-Einstellung und klicken Sie auf Cluster erstellen. Hinweis: Sie können eine neue VPC für den Cluster erstellen. Aber das ist optional.

Clustereinstellungen konfigurieren

Ihr ECS Fargate-Cluster läuft jetzt.

Erstellen Sie einen AWS ECS-Cluster mit EC2-Option

Wir können dies auch mit CloudFormation, Terraform oder manuell tun.

CloudFormation:

Verwenden Sie für CloudFormation die folgende Vorlage.

AWSTemplateFormatVersion: "2010-09-09" Beschreibung: "ECS-Fargate-Cluster erstellen" Parameter: Name: Typ: Zeichenfolge Beschreibung: Der Name der ECS-Cluster-VPC: Typ: Zeichenfolge Beschreibung: Der vpc zum Starten des Dienstes Standard: vpc-ID PrivateSubnet01: Typ: Zeichenfolge Beschreibung: Das Subnetz, in dem die ecs-Instanzen gestartet werden sollen Standard: Subnetz-ID PrivateSubnet02: Typ: Zeichenfolge Beschreibung: Das Subnetz, in dem die ecs-Instanzen gestartet werden Standard: Subnetz-ID InstanceType: Typ: Zeichenfolge Beschreibung: Die EC2-Instanz Typ Standard: "t2.micro" MinSize: Typ: Zeichenfolge Beschreibung: Das Subnetz, in dem die ec2 gestartet werden soll Standard: 1 MaxSize: Typ: Zeichenfolge Beschreibung: Das Subnetz, in dem die ec2 gestartet werden soll Standard: 2 DesiredSize: Typ: Zeichenfolge Beschreibung: Das Subnetz, in dem die ec2 gestartet werden soll Standardwert: 1 Ressourcen: IAMInstanceRole: Typ: 'AWS::IAM::Role' Eigenschaften: Beschreibung: Der Rollenname der ECS-Instanz: ecsInstanceRole2 AssumeRolePolicyDocument: Version: 2012-10-17 Anweisung: - Wirkung: Principal zulassen: Dienst: - ec2.Amazonaws.com Aktion: - 'sts:AssumeRole' ManagedPolicyArns: - arn:aws:iam::aws:policy/service-role/AmazonEC2ContainerServiceforEC2Role - arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy - arn:aws:iam::aws :policy/AmazonS3ReadOnlyAccess Tags: - Schlüssel: "Environment" Wert: "test" - Schlüssel: "createdBy" Wert: "Maureen Barasa" - Schlüssel: "Name" Wert: "ecsInstanceRole2" IAMInstanceProfile: Typ: AWS::IAM:: InstanceProfile-Eigenschaften: InstanceProfileName: ecsInstanceRole2 Rollen: - !Ref IAMInstanceRole ECSSecurityGroup: Typ: "AWS::EC2::SecurityGroup" Properties: GroupDescription: "Security Group to control access to the ECS cluster" GroupName: "test-ECS-SG" VpcId: !Ref VPC SecurityGroupIngress: - CidrIp: 0.0.0.0/0 FromPort: 80 IpProtocol: "tcp" ToPort: 80 - CidrIp: 0.0.0.0/0 FromPort: 443 IpProtocol: "tcp" ToPort: 443 Tags: - Schlüssel: "Name" Wert: "test-ECS-SG" - Schlüssel: "CreatedBy" Wert: "Maureen Barasa" - Schlüssel: "Umgebung" Wert : "test" ECSCluster: Typ: 'AWS::ECS::Cluster' Eigenschaften: ClusterName: !Ref Name ClusterSettings: - Name: containerInsights Wert: aktiviert Tags: - Schlüssel: "Name" Wert: "test-ecs" - Schlüssel: "CreatedBy" Wert: "Maureen Barasa" - Schlüssel: "Umgebung" Wert: "test" ECSAutoScalingGroup : Typ: AWS::AutoScaling::AutoScalingGroup-Eigenschaften: VPCZoneIdentifier: - !Ref PrivateSubnet01 - !Ref PrivateSubnet02 LaunchConfigurationName: !Ref LaunchConfiguration MinSize: !Ref MinSize MaxSize: !Ref Max. Gewünschte Kapazität: !Ref DesiredSize HealthCheckGracePeriod: 300 Tags: - Schlüssel: "Name" Wert: "test-ecs" PropagateAtLaunch: true - Schlüssel: "CreatedBy" Wert: "MaureenBarasa" PropagateAtLaunch: true - Schlüssel: "Environment" Wert: "test" PropagateAtLaunch: true LaunchConfiguration: Typ: AWS::AutoScaling::LaunchConfiguration Eigenschaften: ImageId: "ami-ID" SecurityGroups: - !Ref ECSSecurityGroup InstanceType: !Ref InstanceType IamInstanceProfile: !Ref IAMInstanceProfile KeyName: "test-key" UserData: Fn::Base64: !Unter | #!/bin/bash echo ECS_CLUSTER=test-ecs >> /etc/ecs/ecs.config;echo ECS_BACKEND_HOST= >> /etc/ecs/ecs.konfigurieren; BlockDeviceMappings: - DeviceName: "/dev/xvda" Ebs: Encrypted: false VolumeSize: 20 VolumeType: "gp2" DeleteOnTermination: true Ausgaben: IAMProfile: Description: Der Rollenwert der erstellten EC2-Instance: !Ref IAMInstanceProfile AutoScalingGroup: Beschreibung: Der Wert der ECS Autoscaling-Gruppe: !Ref ECSAutoScalingGroup ECS: Beschreibung: Der erstellte ECS-Clusterwert: !Ref ECSCluster

Geben Sie im Parameterabschnitt der Vorlage die spezifischen benutzerdefinierten Eingaben für Ihren Cluster ein. Dazu gehören:

Unter der Rubrik Ressourcen. Beachten Sie zum Anpassen:

Nachdem CloudFormation die Ausführung des Stack abgeschlossen hat, sollten Sie jetzt über einen ECS-Cluster mit einer registrierten aktiven EC2-Container-Instance verfügen. Siehe unten:

ECS-Cluster mit einer Container-Instance

Manuell:

Führen Sie die folgenden Schritte aus, um den Cluster manuell zu erstellen:

Erstellen Sie eine ECS-Instance-Rolle mit den folgenden AWS Managed Policies:

Bearbeiten Sie die Rollenvertrauensstellung und fügen Sie die folgende JSON-Vertrauensrichtlinie hinzu.

 "Version": "2008-10-17", "Statement": [  "Sid": "", "Effect": "Allow", "Principal":  "Service": "ec2.Amazonaws.com" , "Action": "sts:AssumeRole"  ] 

Klicken Sie dann in der Elastic Container Service-Konsole auf Cluster erstellen. Wählen Sie dieses Mal im Fenster "Cluster-Vorlage auswählen" die Option "EC2 Linux + Networking", anstatt sich für Powered by Fargate zu entscheiden. Klicken Sie auf den nächsten Schritt.

Clustervorlage auswählen

Als Nächstes müssen Sie Ihren Cluster konfigurieren. Bei der Clusterkonfiguration gibt es 3 Hauptabschnitte:

Clustername:

Clustername

Instanzkonfiguration:

Instanzkonfigurationen

Stellen Sie sicher, dass Sie die richtigen Instanzkonfigurationen für Ihre Anforderungen auswählen.

Vernetzung:

Netzwerkkonfigurationen

Hier besteht die Möglichkeit, eine neue VPC und Subnetze zu erstellen, falls der Benutzer keine eigene erstellt hat. Wenn er bereits eine Netzwerkarchitektur erstellt hat, kann der Leser das vorhandene Setup verwenden. Gleiches gilt für die Sicherheitsgruppe für den Cluster. Ein neues kann erstellt werden oder wir können ein bestehendes auswählen.

Wählen Sie dann für die Containerinstanz-IAM-Rolle die Rolle aus, die Sie oben erstellt haben. Aktivieren Sie Container-Einblicke, indem Sie das Kästchen neben "Container-Einblicke aktivieren" aktivieren.

Konfigurieren von IAM-Rollen und Container Insights

Klicken Sie abschließend auf Cluster erstellen. In wenigen Minuten ist ein Cluster einsatzbereit.

Unten finden Sie einen Link zu Teil 2 dieser Serie, in dem ich die Bereitstellung von Containern für den Cluster mithilfe von Aufgaben- und Dienstdefinitionen erläutere.

Ausführen von Docker-Containern auf AWS ECS – Hochladen von Docker-Images in ECR – Teil 2

AWS ECS: Bereitstellen von Containern mithilfe von Aufgaben- und Servicedefinitionen – Teil 3

Stichworte:

Wichtige Links

Weitere Anleitungen zu AWS:

Mounten Sie das AWS EFS-Dateisystem auf der EC2-Instance

So erstellen Sie ein AWS EFS-Dateisystem mit CloudFormation

Glückliches Bauen!!!

Bereitstellen von VM-Instanzen in der Hetzner Cloud mit Terraform
In diesem Blogbeitrag sehen wir uns an, wie Sie mit Terraform VMs in der Hetzner Cloud bereitstellen. Hetzner ist ein in Deutschland ansässiger Hostin...
CentOS 7 vs CentOS 8 - Funktionsvergleich
EinführungAls CentOS 8 in den späteren Teilen dieses Jahres (2019) offiziell veröffentlicht wurde, haben sich wahrscheinlich viele gefragt, was sich g...
Top-Terminal-basierte Überwachungstools für Linux
Ein grundlegender Schlüssel zum Erfolg der Diagnose und der Feststellung, woran ein System leidet, wenn es Anzeichen von „krank” ist die Fähigkeit, so...