In dieser Übung werden wir unseren ersten Pod in unseren zuvor erstellten Managed Kubernetes Cluster (AKS) in Azure deployen. Ziel der Übung ist es, dass wir einen nginx Container in unseren AKS Cluster deployen. Da wir uns in dieser Übung keinerlei Gedanken um eine public-facing IP für unseren Pod machen, werden wir mit kubectl ein Port-Forwarding konfigurieren, um auf unseren Pod zuzugreifen.
- Ein neues Pulumi Kubernetes Typescript Projekt mit Namen
lab8
erstellen. - Einen neuen Stack
dev
hinzufügen.
Da wir unseren Cluster mit einem anderen Pulumi Programm (Lab7) deployed haben, müssen wir den Stack im anderen Projekt referenzieren, um die kubeConfig
abzufragen. Diese brauchen wir, um den Pulumi Kubernetes Provider zu konfigurieren, so dass die Kubernetes Resourcen, die wir erzeugen, auch im richtigen Cluster landen.
var stackName = pulumi.getStack();
var pulumiSignInName = "codedevote"; // hier Euren sign-in name für pulumi setzen
var lab7Ref = new pulumi.StackReference("lab7reference", {
name: `${pulumiSignInName}/lab7/${stackName}`
});
var kubeConfig = lab7Ref.requireOutput("kubeConfig");
Als nächstes erzeugen wir einen Kubernetes Provider mit der gerade abgefragten kubeConfig
und verpacken das in Pulumi CustomResourceOptions
. Das ist etwas einfacher und prägnanter, statt diese Optionen bei jeder Resource neu zu erzeugen. Wir sehen das gleich im weiteren Verlauf.
const k8sProvider = new k8s.Provider("aksprovider", {
kubeconfig: kubeConfig
});
const opts: pulumi.CustomResourceOptions = {
provider: k8sProvider
};
Die erste Kubenertes Resource, die wir erzeugen, ist ein Namespace:
const namespace = new k8s.core.v1.Namespace("lab8-ns", {
metadata: {
name: "lab8"
}
}, opts);
💪 Als nächstes erzeugt Ihr einen Pod, als ContainerImage könnt ihr z.B. einfach nginx
verwenden:
const pod = new k8s.core.v1.Pod...
💪 Nach Aufruf von pulumi up
steht der Pod im Cluster zur Verfügung.
Wir verwenden die Portforwarding Funktion von kubectl, um einen Tunnel zu unserem eben erstellten Pod herzustellen. Der Podname und Namespace könnten bei Euch variieren:
# Namen des Pods raussuchen:
kubectl get pods --namespace lab8
# Tunnel zum Pod herstellen
kubectl port-forward pod/firstpod :80 --namespace lab8