Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Google Kubernetes Engine Cluster mit AWS CloudFormation starten

By Aviv LauferDec 5, 20192 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

1 qgjmd4zcbov9rnu 7qukfa

Wandeln auch zwei miteinander, sie seien denn eins? [Amos 3:3]

Letzte Woche hat Amazon die Unterstützung von Drittanbieter-Ressourcen für AWS CloudFormation angekündigt.

1 qgjmd4zcbov9rnu 7qukfa

Bei DoiT International arbeiten wir sowohl mit AWS als auch mit Google Cloud – und wir automatisieren für unser Leben gern. AWS CloudFormation ist ein großartiges Tool, wenn Sie AWS-Kunde sind. Heute setzen jedoch viele Unternehmen auf mehrere Cloud-Anbieter. Also haben wir uns gefragt: Warum nicht einmal Google Kubernetes Engine Cluster per CloudFormation aufsetzen – als Proof of Concept für Kunden, die Infrastructure-as-Code in Multi-Cloud-Umgebungen einsetzen wollen?

Eine gute Einführung in die Entwicklung eigener Ressourcen finden Sie im Walkthrough zur CloudFormation CLI sowie in diesem Blogpost. Ich gehe hier vor allem auf einige Stolpersteine ein, die mir während der Entwicklung begegnet sind.

Für das Starten neuer Cluster nutzen wir die Kubernetes Engine API. Dafür müssen Sie ein Service Account anlegen und ihm mit folgendem Befehl die passenden Rollen zuweisen:

gcloud projects add-iam-policy-binding my-project —-member serviceAccount:[email protected] —-role roles/iam.serviceAccountUser —-role roles/container.admin

Gehen Sie in der IAM-Konsole auf > Service Account Key und laden Sie den Schlüssel als JSON-Datei herunter. Kopieren Sie den Inhalt der JSON-Datei und wechseln Sie in die AWS Secrets Manager Konsole. Legen Sie dort ein neues Plain-Text-Secret an und fügen Sie den Dateiinhalt ein.

Um die Secrets Manager API in Ihrem Code zu verwenden, brauchen Sie den AmazonWebServicesClientProxy.

1 drxsdop2axuqaii8zuotqa

Wichtig: Für lokale Tests mit SAM , müssen Sie diese Zeile

getSecretValueResult =
clientProxy.injectCredentialsAndInvoke(getSecretValueRequest, client::getSecretValue);

ersetzen durch

getSecretValueResult = client.getSecretValue(getSecretValueRequest);

Der API-Aufruf zum Anlegen des Clusters kehrt sofort zurück, die eigentliche Cluster-Erstellung dauert jedoch rund 2–3 Minuten. Wir wollen den Fortschritt mitverfolgen und erst dann zurückkehren, wenn der Cluster fertig erstellt ist (oder die Erstellung fehlgeschlagen ist). Dafür nutzen wir den CallbackContext, um den Status zu melden.

1 nxvhyt gsrmvicwc27x4kq

Sobald klar ist, wie sich eigene Ressourcen für die Cluster-Erstellung entwickeln lassen, sind weitere Operationen wie List, Delete und Update schnell ergänzt. Den Code können Sie als Vorlage für eigene Custom Resources für weitere Google Cloud Services nutzen.

Den Code finden Sie hier.

Lust auf mehr? Stöbern Sie in unserem Blog oder folgen Sie Aviv auf Twitter.