In dieser Ausgabe unserer AWS- und Kubernetes-Beratungsreihe führen wir Sie Schritt für Schritt durch den Start von Kubernetes auf Amazon Web Services.
Der Betrieb einer Anwendung in der Cloud ohne die richtigen Tools zur Verwaltung und Verbesserung ihrer Funktionalität kann schwierig sein. Wenn Sie eine Kundenanwendung bereitstellen, sollten Sie daher über Mittel zur schnellen Bereitstellung, zum Rollout von Funktionen, zur Ressourcenverwaltung, zur Ausfallsicherheit und zur Automatisierung bestimmter Vorgänge verfügen. Kubernetes ist eine Open-Source-Plattform, die Ihnen eine Reihe von Tools zur Verfügung stellt, um genau das zu tun.
K&C - Wir schaffen innovative Tech-Lösungen seit über 20 Jahren.
Kontaktieren Sie uns, um Ihre individuellen Bedürfnisse oder Ihr nächstes Projekt zu diskutieren.
Heute werden wir Kubernetes-Multi-Master-Cluster auf AWS ausführen und eine einfache Anwendung bereitstellen. Wir werden kops (Kubernetes Operations) verwenden, ein Dienstprogramm zur Verwaltung von Kubernetes-Clustern. Unserer Meinung nach ist kops derzeit das beste Tool für die Bereitstellung von Kubernetes-Clustern in Amazon Web Services.
1. Erstellen einer zone in Route53:
aws route53 create-hosted-zone –name example.com
2. Erstellen eines S3-Buckets zum Speichern der cluster configuration:
aws s3api create-bucket --bucket kubernetes-cluster --region eu-west-1
Wir bieten Versionierung (include versioning):
aws s3api put-bucket-versioning --bucket kubernetes-cluster --versioning-configuration Status=Enabled
3. Creating our new cluster
export KOPS_STATE_STORE=s3://kubernetes-cluster kops create cluster --name example.com --master-zones eu-west-1a,eu-west-1b,eu-west-1c --zones eu-west-1a,eu-west-1b,eu-west-1c --state s3://kubernetes-cluster --node-count 3 --yes
name cluster name sollte mit dem zone name identisch sein
master-zones zones in denen die masters gelaunched werden
zones zones in denen sich die Knotenpunkte (nodes) befinden werden
state configuration storage bucket (Konfiguration Speicherplatz)
node-count eine Anzahl von Knoten (nodes) im Cluster
yes übernimmt Änderungen
Prüfung der Verfügbarkeit des Clusters:
kops validate cluster
Der Output:
Using cluster from kubectl context: example.com Validating cluster example.com INSTANCE GROUPS NAME ROLE MACHINETYPE MIN MAX SUBNETS master-eu-west-1a Master m3.medium 1 1 eu-west-1a master-eu-west-1b Master m3.medium 1 1 eu-west-1b master-eu-west-1c Master m3.medium 1 1 eu-west-1c nodes Node t2.medium 3 3 eu-west-1a,eu-west-1b,eu-west-1c NODE STATUS NAME ROLE READY ip-174-21-107-10.eu-west-1.compute.internal node True ip-174-21-113-20.eu-west-1.compute.internal master True ip-174-21-38-94.eu-west-1.compute.internal node True ip-174-21-53-131.eu-west-1.compute.internal node True ip-174-21-61-2.eu-west-1.compute.internal master True ip-174-21-67-114.eu-west-1.compute.internal master True Your cluster example.com is ready
Kops erzeugt auch Einstellungen für kubectl. Das kann man auch machen:
kubectl get node
Der Output:
ip-174-21-107-10.eu-west-1.compute.internal Ready 11d v1.7.2 ip-174-21-113-20.eu-west-1.compute.internal Ready 11d v1.7.2 ip-174-21-38-94.eu-west-1.compute.internal Ready 11d v1.7.2
Um die nodes configuration zu bearbeiten, gehen wir wie folgt vor:
kops edit ig nodes
Editieren der Datei:
apiVersion: kops/v1alpha2 kind: InstanceGroup metadata: creationTimestamp: 2017-10-02T23:10:46Z labels: kops.k8s.io/cluster: example.com name: nodes spec: image: kope.io/k8s-1.7-debian-jessie-amd64-hvm-ebs-2017-07-28 machineType: t2.medium -> t2.xlarge maxSize: 3 -> 4 minSize: 3 -> 4 role: Node subnets: - eu-west-1a - eu-west-1b - eu-west-1c
Speichern Sie die Datei und übertragen Sie die Konfiguration:
kops rolling-update cluster –yes
Überprüfung des Zustands des Clusters:
kops validate cluster
Der Output:
nodes Node t2.xlarge 4 4 eu-west-1a,eu-west-1b,eu-west-1c
Der Einfachheit halber wollen wir ein Dashboard deployen:
kubectl create -f https://raw.githubusercontent.com/kubernetes/kops/master/addons/kubernetes-dashboard/v1.6.3.yaml
Dashboard wird verfügbar sein unter:
https://api.example.com/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/#!/pod?namespace=default
Jetzt wollen wir eine einfache Webanwendung einrichten, mit einem Setup für Balancer mit SSL und einem Domainnamen
Um Kubernetes mit Route53 zu verbinden, müssen wir einen Pod deployen:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/kops/master/addons/route53-mapper/v1.3.0.yml
In der IAM-Rolle müssen wir die Namen der Knoten (nodes) finden und eine Richtlinie hinzufügen:
" Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "route53:ListHostedZonesByName", "Resource": "*" }, { "Effect": "Allow", "Action": "elasticloadbalancing:DescribeLoadBalancers", "Resource": "*" }, { "Effect": "Allow", "Action": "route53:ChangeResourceRecordSets", "Resource": "*" } ] }
Schreiben einer yaml Datei für Deployments:
apiVersion: apps/v1beta1 kind: Deployment metadata: name: project-ci spec: replicas: 2 template: metadata: labels: projectenv: ci spec: containers: - name: project image: ecr.eu-west-1.amazonaws.com/project env: - name: DEPLOYMENT_ENV value: "ci" - name: FILEBEAT_ENABLE value: "yes" ports: - containerPort: 80
Jetzt erstellen einer yaml Datei für den Service:
kind: Service apiVersion: v1 metadata: annotations: domainName: "projectci.example.com." service.beta.kubernetes.io/aws-load-balancer-ssl-cert: "arn:aws:acm:us-west-1:659153740712:certificate/xxxxxxxx" service.beta.kubernetes.io/aws-load-balancer-ssl-ports: "443" service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http name: projectci labels: projectenv: ci dns: route53 spec: selector: projectenv: ci ports: - name: "https" protocol: TCP port: 443 type: LoadBalancer
Nach deployment ist die Anwendung hier zu sehen: https://projectci.example.com
Und in der AWS-Konsole sehen wir den neu erstellten Balancer:
Das war’s! Sie sind startklar. Vielleicht interessieren Sie sich auch für andere Artikel in unserer Kubernetes-Reihe, z. B. Unsere Anleitung für Hashicorp Consul/Vault mit Kubernetes.
K&C mit Sitz in München verfügt über mehr als 20 Jahre Erfahrung als Berater für IT-Services und ausgelagerte Entwicklungsdienstleistungen. Wir bieten DevOps, Cloud-Services, Serverless-Architektur-Design und viele andere Fachgebiete über moderne Entwicklungstechnologie-Stacks und Beratung.
Zu unseren Partnern gehören einige der bekanntesten europäischen Marken, spannende Start-ups und etablierte KMUs. Diese vertrauen bei der Umsetzung ihrer outgesourcten IT-Anforderungen voll und ganz auf unsere Kombination aus deutschem Management und Nearshore-Tech-Talenten.
Gerne informieren wir Sie über Projekte oder Probleme, bei denen wir Ihnen helfen können! Schreiben Sie uns einfach eine Nachricht oder rufen Sie uns an.
Wann funktioniert IT-Outsourcing?
Und wann nicht ?