diff --git a/kubernetes-py-exposed-deployment/.gitignore b/kubernetes-py-exposed-deployment/.gitignore new file mode 100644 index 000000000..a3807e5bd --- /dev/null +++ b/kubernetes-py-exposed-deployment/.gitignore @@ -0,0 +1,2 @@ +*.pyc +venv/ diff --git a/kubernetes-py-exposed-deployment/Pulumi.yaml b/kubernetes-py-exposed-deployment/Pulumi.yaml new file mode 100644 index 000000000..efd6db3c2 --- /dev/null +++ b/kubernetes-py-exposed-deployment/Pulumi.yaml @@ -0,0 +1,6 @@ +name: kubernetes-py-exposed-deployment +runtime: + name: python + options: + virtualenv: venv +description: A minimal Python Pulumi program diff --git a/kubernetes-py-exposed-deployment/README.md b/kubernetes-py-exposed-deployment/README.md new file mode 100644 index 000000000..9a84551ac --- /dev/null +++ b/kubernetes-py-exposed-deployment/README.md @@ -0,0 +1,97 @@ +[![Deploy](https://get.pulumi.com/new/button.svg)](https://app.pulumi.com/new) + +# Exposing a Deployment with a Public IP Address + +Deploys `nginx` to a Kubernetes cluster, and publicly exposes it to the Internet with an IP address, +using a Kubernetes `Service`. + +In the gif below we see the experience of deploying this example with `pulumi up`. Notice that +Pulumi has an inherent notion of "done-ness" -- Pulumi waits for the IP address to be allocated to +the `Service`. Because this example uses the Pulumi concept of _stack exports_ to report this IP +address, in this example we are also able to use `curl` to reach the `nginx` server. + +![Allocating a public IP to a Deployment](images/deploy.gif "Allocating a public IP to a Deployment") + +## Running the App + +If you haven't already, follow the steps in [Pulumi Installation and +Setup](https://www.pulumi.com/docs/get-started/install/) and [Configuring Pulumi +Kubernetes](https://www.pulumi.com/docs/intro/cloud-providers/kubernetes/setup/) to get setup with +Pulumi and Kubernetes. + +Now, install dependencies: + +```sh +pip3 install -r requirements.txt +``` + +Create a new stack: + +```sh +$ pulumi stack init +Enter a stack name: exposed-deployment-dev +``` + +This example will attempt to expose the `nginx` deployment Internet with a `Service` of type +`LoadBalancer`. Since minikube does not support `LoadBalancer`, the application already knows to use +type `ClusterIP` instead; all you need to do is to tell it whether you're deploying to minikube: + +```sh +pulumi config set is_minikube "true" +``` + +Perform the deployment: + +```sh +$ pulumi up +Updating stack 'exposed-deployment-dev' +Performing changes: + + Type Name Status Info + + pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev created 1 warning + + ├─ kubernetes:apps:Deployment nginx created + + └─ kubernetes:core:Service nginx created 2 info messages + +Diagnostics: + kubernetes:core:Service: nginx + info: ✅ Service 'nginx-rn6uipeg' successfully created endpoint objects + + info: ✅ Service has been allocated an IP + +---outputs:--- +frontendIp: "35.226.79.225" + +info: 3 changes performed: + + 3 resources created +Update duration: 46.555593397s + +Permalink: https://app.pulumi.com/hausdorff/exposed-deployment-dev/updates/1 +``` + +We can see here in the `---outputs:---` section that the cluster was allocated a public IP, in this +case `35.226.79.225`. It is exported with a stack output variable, `frontend_ip`. We can use `curl` +and `grep` to retrieve the `` of the site the proxy points at. + +> _Note_: minikube does not support type `LoadBalancer`; if you are deploying to minikube, make sure +> to run `kubectl port-forward service/frontend 8080:80` to forward the cluster port to the local +> machine and access the service via `localhost:8080`. + +```sh +$ curl -sL $(pulumi stack output frontendIp) | grep "<title>" +<title>Welcome to nginx! +``` + +## Next steps + +Now that `nginx` is deployed and exposed to the internet with an IP, try playing around with the +example! + +If we change the `nginx` image to `nginx:1.16-alpine`, we can run `pulumi preview --diff` and see +this change reported to us: + +![Diff](images/diff.gif "Reporting a diff after we change the app") + +Notice also that if you provide an image that does not exist, Pulumi will report errors as it sees +them. You should see something similar in principle to this: + +![Diff](images/error.gif "Error reporting") \ No newline at end of file diff --git a/kubernetes-py-exposed-deployment/__main__.py b/kubernetes-py-exposed-deployment/__main__.py new file mode 100644 index 000000000..97d93e6d8 --- /dev/null +++ b/kubernetes-py-exposed-deployment/__main__.py @@ -0,0 +1,56 @@ +"""Copyright 2016-2019, Pulumi Corporation. All rights reserved.""" + +import pulumi +import pulumi_kubernetes as k8s + +"""Minikube does not implement services of type `LoadBalancer` require the user to specify if we're running on minikube, and if so, create only services of type ClusterIP.""" +config = pulumi.Config() +is_minikube = config.require("is_minikube") + +"""nginx container, replicated 1 time.""" +app_name = "nginx" +app_labels = { "app": app_name } + +nginx = k8s.apps.v1.Deployment( + app_name, + spec=k8s.apps.v1.DeploymentSpecArgs( + replicas=1, + selector=k8s.meta.v1.LabelSelectorArgs(match_labels=app_labels), + template=k8s.core.v1.PodTemplateSpecArgs( + metadata=k8s.meta.v1.ObjectMetaArgs(labels=app_labels), + spec=k8s.core.v1.PodSpecArgs( + containers=[ + k8s.core.v1.ContainerArgs( + name=app_name, + image="nginx:1.15-alpine", + ) + ] + ), + ), + ) + ) + + +"""Allocate an IP to the nginx Deployment.""" +frontend = k8s.core.v1.Service( + app_name, + metadata=k8s.meta.v1.ObjectMetaArgs( + labels=app_labels), + spec=k8s.core.v1.ServiceSpecArgs( + selector=app_labels, + ports=[ + k8s.core.v1.ServicePortArgs( + port=80, + target_port=80, + protocol="TCP" + ) + ], + type="ClusterIP" if is_minikube == "true" else "LoadBalancer", + ), + ) + +# """When "done", this will print the public IP.""" +if is_minikube == "true": + pulumi.export("frontend_IP", frontend.spec.apply(lambda s: s.cluster_ip)) +else: + pulumi.export("frontend_IP", frontend.status.apply(lambda s: s.load_balancer.ingress[0].ip)) diff --git a/kubernetes-py-exposed-deployment/images/deploy.cast b/kubernetes-py-exposed-deployment/images/deploy.cast new file mode 100644 index 000000000..d9bbcc6ee --- /dev/null +++ b/kubernetes-py-exposed-deployment/images/deploy.cast @@ -0,0 +1,176 @@ +{"version": 2, "width": 150, "height": 30, "timestamp": 1535693128, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}} +[1.94151, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[1.943095, "o", "\u001b]2;alex@fabienne: ~/src/pulumi/examples/kubernetes-ts-exposed-deployment\u0007\u001b]1;..ed-deployment\u0007"] +[2.061538, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[38;5;15m\u001b[48;5;31m ~ \u001b[48;5;237m\u001b[38;5;31m\u001b[38;5;250m\u001b[48;5;237m src \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m pulumi \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m examples \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;254m\u001b[48;5;237m kubernetes-ts-exposed-deployment \u001b[48;5;161m\u001b[38;5;237m\u001b[38;5;15m\u001b[48;5;161m hausdorff/kube-examples + \u001b[48;5;238m\u001b[38;5;161m\u001b[38;5;39m\u001b[48;5;238m 1 \u001b[48;5;236m\u001b[38;5;238m\u001b[38;5;15m\u001b[48;5;236m $ \u001b[0m\u001b[38;5;236m\u001b[0m \u001b[K"] +[2.061835, "o", "\u001b[?1h\u001b=\u001b[?2004h"] +[2.479075, "o", "p"] +[2.613868, "o", "\bpu"] +[2.733643, "o", "l"] +[2.813897, "o", "u"] +[3.029721, "o", "m"] +[3.19768, "o", "i"] +[3.405792, "o", " "] +[3.613483, "o", "u"] +[3.677876, "o", "p"] +[3.765484, "o", " "] +[4.005748, "o", "-"] +[4.163855, "o", "-"] +[4.357561, "o", "y"] +[4.429687, "o", "e"] +[4.501946, "o", "s"] +[4.637822, "o", "\u001b[?1l\u001b>"] +[4.638144, "o", "\u001b[?2004l\r\r\n"] +[4.639382, "o", "\u001b]2;pulumi up --yes\u0007\u001b]1;pulumi\u0007"] +[7.662318, "o", "\u001b[38;5;13mUpdating stack 'exposed-deployment-dev'\u001b[0m\r\n"] +[8.308534, "o", "\u001b[38;5;8mPerforming changes:\u001b[0m\r\n\r\n"] +[9.104798, "o", "\r\n\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;12mType\u001b[0m \u001b[38;5;12mName\u001b[0m \u001b[38;5;12mStatus\u001b[0m \u001b[38;5;12mInfo\u001b[0m\u001b[0m\r\u001b[1B"] +[9.104951, "o", "\r\n\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[1B"] +[9.989024, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[1B"] +[10.26485, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;12mType\u001b[0m \u001b[38;5;12mName\u001b[0m \u001b[38;5;12mStatus\u001b[0m \u001b[38;5;12mInfo\u001b[0m\u001b[0m\r\u001b[2B"] +[10.265063, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[1B\r\n\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[1B"] +[10.99178, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[2B"] +[10.992077, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[1B"] +[11.073571, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[11.143813, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;3mwarning: \u001b[0m\u001b[38;5;7m[MinimumReplicasUnavailable] Deployment does no\u001b[0m\r\u001b[1B"] +[11.186851, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[11.991827, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[2B"] +[11.992095, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[12.916815, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m✅ Deployment initialization complete\u001b[0m\u001b[0m\r\u001b[1B"] +[12.986605, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[2B"] +[12.986973, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m✅ Deployment initialization complete\u001b[0m\u001b[0m\r\u001b[1B"] +[12.988745, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreated\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m✅ Deployment initialization complete\u001b[0m\u001b[0m\r\u001b[1B"] +[13.068874, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m ├─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreated\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m✅ Deployment initialization complete\u001b[0m\u001b[0m\r\u001b[1B"] +[13.06897, "o", "\r\n\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[1B"] +[13.334209, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[13.986634, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[13.986991, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[14.989189, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[14.989561, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r"] +[14.98983, "o", "\u001b[1B"] +[15.987602, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[15.987858, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[16.989564, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[16.989936, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r"] +[16.990217, "o", "\u001b[1B"] +[17.991641, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[17.992063, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[18.991567, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[18.991941, "o", "\u001b[1A\u001b[1K\u001b[K\r"] +[18.992129, "o", " \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[19.991479, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[19.991796, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[20.988414, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[20.988936, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[21.990945, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[21.991139, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[22.989695, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[22.990101, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/3] Finding Pods to direct traffic to\u001b[0m\r\u001b[1B"] +[23.341021, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[23.992045, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[23.99239, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[24.989423, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[24.989599, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[25.989034, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[25.989389, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[26.989415, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[26.989796, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[27.987656, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[27.988007, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[28.987159, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[28.9889, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[29.988849, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[29.989059, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r"] +[29.989199, "o", "\u001b[1B"] +[30.98807, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[30.988412, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r"] +[30.988603, "o", "\u001b[1B"] +[31.987004, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[31.987457, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[32.986081, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[32.986468, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[33.985464, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[33.985686, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[34.986242, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[34.986537, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r"] +[34.98682, "o", "\u001b[1B"] +[35.986711, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[35.986942, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r"] +[35.987031, "o", "\u001b[1B"] +[36.988071, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[36.988418, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[37.988424, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[37.988615, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[38.986102, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[38.986291, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[39.985362, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[39.98567, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r"] +[39.985796, "o", "\u001b[1B"] +[40.985614, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[40.985981, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[41.989681, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[41.99016, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[42.990684, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[42.991073, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[43.990559, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[43.990872, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[44.990656, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[44.991083, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r"] +[44.991263, "o", "\u001b[1B"] +[45.990603, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[45.990983, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[46.990545, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[46.990896, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[47.990447, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[47.990802, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[48.990693, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[48.991266, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[49.985558, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[49.985847, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[50.986672, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[50.987187, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[51.986792, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[51.986991, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[52.99054, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[52.990855, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[53.984956, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[53.985141, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r"] +[53.985245, "o", "\u001b[1B"] +[54.986881, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[3B"] +[54.987393, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[55.990293, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[3B"] +[55.990565, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[56.987445, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[3B"] +[56.98777, "o", "\u001b[1A\u001b[1K\u001b[K\r"] +[56.987919, "o", " \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r\u001b[1B"] +[57.989253, "o", "\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[3B"] +[57.989734, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[2/3] Attempting to allocate IP address to Service\u001b[0m\u001b[0m\r"] +[57.98999, "o", "\u001b[1B"] +[58.49182, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m✅ Service initialization complete\u001b[0m\u001b[0m\r\u001b[1B"] +[58.556626, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreated\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m✅ Service initialization complete\u001b[0m\u001b[0m\r\u001b[1B"] +[58.653756, "o", "\u001b[4A\u001b[1K\u001b[K\r"] +[58.654002, "o", " \u001b[38;5;12mType\u001b[0m \u001b[38;5;12mName\u001b[0m \u001b[38;5;12mStatus\u001b[0m \u001b[38;5;12mInfo\u001b[0m\u001b[0m\r\u001b[4B\u001b[3A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreated\u001b[0m \u001b[0m\r\u001b[3B"] +[58.654203, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m ├─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreated\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m✅ Deployment initialization complete\u001b[0m\u001b[0m\r\u001b[2B\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreated\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m✅ Service initialization complete\u001b[0m\u001b[0m\r\u001b[1B"] +[58.775269, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m ├─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreated\u001b[0m \u001b[0m\r\u001b[2B"] +[58.775592, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:core:Service nginx \u001b[38;5;2mcreated\u001b[0m \u001b[0m\r\u001b[1B \r\n"] +[58.775885, "o", "\u001b[38;5;2m ---outputs:---\r\n\u001b[0m\u001b[38;5;2m frontendIp: \u001b[0m\u001b[38;5;2m\"35.225.110.1\"\u001b[0m\u001b[38;5;2m\r\n\u001b[0m\r\n"] +[58.776172, "o", "\u001b[38;5;5minfo\u001b[0m: 3 changes performed:\r\n \u001b[38;5;2m+ 3 resources created\u001b[0m\r\n\u001b[38;5;8mUpdate duration: 50.426356323s\u001b[0m\r\n\r\n"] +[58.893758, "o", "\u001b[38;5;13mPermalink: https://app.pulumi.com/hausdorff/exposed-deployment-dev/updates/45\u001b[0m\r\n"] +[58.901997, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[58.902185, "o", "\u001b]2;alex@fabienne: ~/src/pulumi/examples/kubernetes-ts-exposed-deployment\u0007\u001b]1;..ed-deployment\u0007"] +[59.195874, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[38;5;15m\u001b[48;5;31m ~ \u001b[48;5;237m\u001b[38;5;31m\u001b[38;5;250m\u001b[48;5;237m src \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m pulumi \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m examples \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;254m\u001b[48;5;237m kubernetes-ts-exposed-deployment \u001b[48;5;161m\u001b[38;5;237m\u001b[38;5;15m\u001b[48;5;161m hausdorff/kube-examples + \u001b[48;5;238m\u001b[38;5;161m\u001b[38;5;39m\u001b[48;5;238m 1 \u001b[48;5;236m\u001b[38;5;238m\u001b[38;5;15m\u001b[48;5;236m $ \u001b[0m\u001b[38;5;236m\u001b[0m \u001b[K"] +[59.19603, "o", "\u001b[?1h\u001b=\u001b[?2004h"] +[59.609667, "o", "\r\r\nbck-i-search: _\u001b[K\u001b[A\u001b[87C"] +[59.865971, "o", "asciinema re\u001b[4mc\u001b[24m\u001b[1B\u001b[101Dc_\u001b[A\u001b[98C"] +[59.985423, "o", "\u001b[12D\u001b[4mc\u001b[4mu\u001b[24mrl -sL $(p\u001b[24mulumi stack output frontendIp) | grep \"\" \r\r\nbck-i-search: cu_\u001b[K\u001b[A\u001b[A\u001b[85C"] +[60.120351, "o", "\u001b[4mc\u001b[4mu\u001b[4mr\u001b[24m\u001b[2B\u001b[89Dr_\u001b[A\u001b[A\u001b[84C"] +[60.193073, "o", "\u001b[2C\u001b[4mr\u001b[4ml\u001b[24m\u001b[2B\u001b[89Dl_\u001b[A\u001b[A\u001b[83C"] +[60.871989, "o", "\u001b[24mc\u001b[24mu\u001b[24mr\u001b[24ml\u001b[2B\r\u001b[K\u001b[A\u001b[A\u001b[102C"] +[60.872049, "o", "\u001b[?1l\u001b>"] +[60.872232, "o", "\u001b[?2004l\u001b[2B\r"] +[60.8746, "o", "\u001b]2;curl -sL $(pulumi stack output frontendIp) | grep --color=auto \"<title>\"\u0007\u001b]1;curl\u0007"] +[65.630551, "o", "\u001b[01;31m\u001b[K<title>\u001b[m\u001b[KWelcome to nginx!\r\n"] +[65.632747, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[65.63293, "o", "\u001b]2;alex@fabienne: ~/src/pulumi/examples/kubernetes-ts-exposed-deployment\u0007\u001b]1;..ed-deployment\u0007"] +[65.736613, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[38;5;15m\u001b[48;5;31m ~ \u001b[48;5;237m\u001b[38;5;31m\u001b[38;5;250m\u001b[48;5;237m src \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m pulumi \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m examples \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;254m\u001b[48;5;237m kubernetes-ts-exposed-deployment \u001b[48;5;161m\u001b[38;5;237m\u001b[38;5;15m\u001b[48;5;161m hausdorff/kube-examples + \u001b[48;5;238m\u001b[38;5;161m\u001b[38;5;39m\u001b[48;5;238m 1 \u001b[48;5;236m\u001b[38;5;238m\u001b[38;5;15m\u001b[48;5;236m $ \u001b[0m\u001b[38;5;236m\u001b[0m \u001b[K"] +[65.736788, "o", "\u001b[?1h\u001b=\u001b[?2004h"] +[80.389102, "o", "\u001b[?2004l\r\r\n"] diff --git a/kubernetes-py-exposed-deployment/images/deploy.gif b/kubernetes-py-exposed-deployment/images/deploy.gif new file mode 100644 index 000000000..340962142 Binary files /dev/null and b/kubernetes-py-exposed-deployment/images/deploy.gif differ diff --git a/kubernetes-py-exposed-deployment/images/diff.cast b/kubernetes-py-exposed-deployment/images/diff.cast new file mode 100644 index 000000000..cd647162a --- /dev/null +++ b/kubernetes-py-exposed-deployment/images/diff.cast @@ -0,0 +1,60 @@ +{"version": 2, "width": 150, "height": 30, "timestamp": 1534316531, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}} +[1.690079, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[1.6918, "o", "\u001b]2;alex@fabienne: ~/src/pulumi/test-app\u0007\u001b]1;..lumi/test-app\u0007"] +[1.788054, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[38;5;15m\u001b[48;5;31m ~ \u001b[48;5;237m\u001b[38;5;31m\u001b[38;5;250m\u001b[48;5;237m src \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m pulumi \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;254m\u001b[48;5;237m test-app \u001b[48;5;161m\u001b[38;5;237m\u001b[38;5;15m\u001b[48;5;161m (Detached) \u001b[48;5;238m\u001b[38;5;161m\u001b[38;5;39m\u001b[48;5;238m 1 \u001b[48;5;236m\u001b[38;5;238m\u001b[38;5;15m\u001b[48;5;236m $ \u001b[0m\u001b[38;5;236m\u001b[0m \u001b[K"] +[1.788277, "o", "\u001b[?1h\u001b=\u001b[?2004h"] +[2.960446, "o", "p"] +[3.063257, "o", "\bpu"] +[3.21505, "o", "l"] +[3.27021, "o", "u"] +[3.495035, "o", "m"] +[3.591179, "o", "i"] +[3.679165, "o", " "] +[4.159147, "o", "p"] +[4.262894, "o", "r"] +[4.367115, "o", "e"] +[4.550027, "o", "v"] +[4.743231, "o", "i"] +[4.855098, "o", "e"] +[4.943161, "o", "w"] +[5.054996, "o", " "] +[5.191109, "o", "-"] +[5.327083, "o", "-"] +[5.542865, "o", "d"] +[5.655161, "o", "i"] +[5.743131, "o", "f"] +[5.894366, "o", "f"] +[6.766993, "o", "\u001b[?1l\u001b>"] +[6.767403, "o", "\u001b[?2004l\r\r\n"] +[6.76868, "o", "\u001b]2;pulumi preview --diff\u0007\u001b]1;pulumi\u0007"] +[7.559699, "o", "\u001b[38;5;13mPreviewing update of stack 'test-app'\u001b[0m\r\n"] +[7.741244, "o", "✨ Previewing update of...⠋"] +[7.862861, "o", "\b \b⠙"] +[7.93333, "o", "\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b"] +[7.933571, "o", "\u001b[38;5;8mPreviewing changes:\u001b[0m\r\n"] +[7.990793, "o", "✨ Previewing update of...⠋"] +[8.11185, "o", "\b \b⠙"] +[8.240535, "o", "\b \b⠚"] +[8.364302, "o", "\b \b⠒"] +[8.490512, "o", "\b \b⠂"] +[8.61175, "o", "\b \b⠂"] +[8.720421, "o", "\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b"] +[8.720641, "o", "\b \b\b \b\b \b\b \b\b \b\b \b\u001b[38;5;8m* pulumi:pulumi:Stack: (same)\r\n\u001b[38;5;8m [urn=urn:pulumi:test-app::test-app::pulumi:pulumi:Stack::test-app-test-app]\r\n\u001b[0m\u001b[0m"] +[8.740518, "o", "✨ Previewing update of...⠋"] +[8.763852, "o", "\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b"] +[8.764054, "o", "\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b"] +[8.864884, "o", "✨ Previewing update of...⠋"] +[8.990653, "o", "\b \b⠙"] +[9.11241, "o", "\b \b⠚"] +[9.240599, "o", "\b \b⠒"] +[9.295248, "o", "\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b\b \b"] +[9.295481, "o", "\b \b\b \b\b \b\b \b\b \b\b \b\b \b"] +[9.296282, "o", "\u001b[38;5;11m~ kubernetes:apps/v1beta1:Deployment: (update)\r\n\u001b[38;5;8m [id=default.nginx-tsz35hqn]\r\n\u001b[0m\u001b[38;5;8m [urn=urn:pulumi:test-app::test-app::kubernetes:apps/v1beta1:Deployment::nginx]\r\n\u001b[0m\u001b[38;5;8m apiVersion: \u001b[0m\u001b[38;5;8m\"apps/v1beta1\"\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m kind : \u001b[0m\u001b[38;5;8m\"Deployment\"\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m metadata : \u001b[0m\u001b[38;5;8m{\r\n\u001b[0m\u001b[38;5;8m annotations: \u001b[0m\u001b[38;5;8m{\r\n\u001b[0m\u001b[38;5;8m pulumi.com/autonamed: \u001b[0m\u001b[38;5;8m\"true\"\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m }\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m name : \u001b[0m\u001b[38;5;8m\"nginx-tsz35hqn\"\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m }\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;11m ~ spec : \u001b[0m\u001b[38;5;11m{\r\n\u001b[0m\u001b[38;5;8m replicas: \u001b[0m\u001b[38;5;8m3\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m selector: \u001b[0m\u001b[38;5;8m{\r\n\u001b[0m\u001b[38;5;8m matchLabels: \u001b[0m\u001b[38;5;8m{\r\n\u001b[0m\u001b[38;5;8m app: \u001b[0m\u001b[38;5;8m\"nginx\"\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m }\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m }\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38"] +[9.296394, "o", ";5;11m ~ template: \u001b[0m\u001b[38;5;11m{\r\n\u001b[0m\u001b[38;5;8m metadata: \u001b[0m\u001b[38;5;8m{\r\n\u001b[0m\u001b[38;5;8m labels: \u001b[0m\u001b[38;5;8m{\r\n\u001b[0m\u001b[38;5;8m app: \u001b[0m\u001b[38;5;8m\"nginx\"\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m }\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;8m }\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;11m ~ spec : \u001b[0m\u001b[38;5;11m{\r\n\u001b[0m\u001b[38;5;11m ~ containers: \u001b[0m\u001b[38;5;11m[\r\n\u001b[0m\u001b[38;5;11m ~ [0]: \u001b[0m\u001b[38;5;11m{\r\n\u001b[0m\u001b[38;5;11m ~ image: \u001b[0m\u001b[38;5;1m\"nginx:1.15-alpine\"\u001b[0m\u001b[38;5;11m => \u001b[0m\u001b[38;5;2m\"nginx:1.16-alpine\"\u001b[0m\u001b[38;5;11m\r\n\u001b[0m\u001b[38;5;8m name : \u001b[0m\u001b[38;5;8m\"nginx\"\u001b[0m\u001b[38;5;8m\r\n\u001b[0m\u001b[38;5;11m }\r\n\u001b[0m\u001b[38;5;11m ]\r\n\u001b[0m\u001b[38;5;11m }\r\n\u001b[0m\u001b[38;5;11m }\r\n\u001b[0m\u001b[38;5;11m }\r\n\u001b[0m\u001b[0m"] +[9.313711, "o", "\u001b[38;5;5minfo\u001b[0m: 1 change previewed:\r\n \u001b[38;5;11m~ 1 resource to update\u001b[0m\r\n 1 resource unchanged\r\n"] +[9.324145, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[9.324361, "o", "\u001b]2;alex@fabienne: ~/src/pulumi/test-app\u0007"] +[9.324502, "o", "\u001b]1;..lumi/test-app\u0007"] +[9.424517, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[38;5;15m\u001b[48;5;31m ~ \u001b[48;5;237m\u001b[38;5;31m\u001b[38;5;250m\u001b[48;5;237m src \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m pulumi \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;254m\u001b[48;5;237m test-app \u001b[48;5;161m\u001b[38;5;237m\u001b[38;5;15m\u001b[48;5;161m (Detached) \u001b[48;5;238m\u001b[38;5;161m\u001b[38;5;39m\u001b[48;5;238m 1 \u001b[48;5;236m\u001b[38;5;238m\u001b[38;5;15m\u001b[48;5;236m $ \u001b[0m\u001b[38;5;236m\u001b[0m \u001b[K"] +[9.424595, "o", "\u001b[?1h\u001b=\u001b[?2004h"] +[14.838559, "o", "\u001b[?2004l\r\r\n"] diff --git a/kubernetes-py-exposed-deployment/images/diff.gif b/kubernetes-py-exposed-deployment/images/diff.gif new file mode 100644 index 000000000..6558558ea Binary files /dev/null and b/kubernetes-py-exposed-deployment/images/diff.gif differ diff --git a/kubernetes-py-exposed-deployment/images/error.cast b/kubernetes-py-exposed-deployment/images/error.cast new file mode 100644 index 000000000..5b79a6551 --- /dev/null +++ b/kubernetes-py-exposed-deployment/images/error.cast @@ -0,0 +1,69 @@ +{"version": 2, "width": 150, "height": 30, "timestamp": 1535693900, "env": {"SHELL": "/bin/zsh", "TERM": "xterm-256color"}} +[1.926662, "o", "\u001b[1m\u001b[7m%\u001b[27m\u001b[1m\u001b[0m \r \r"] +[1.928337, "o", "\u001b]2;alex@fabienne: ~/src/pulumi/examples/kubernetes-ts-exposed-deployment\u0007\u001b]1;..ed-deployment\u0007"] +[2.06995, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J\u001b[38;5;15m\u001b[48;5;31m ~ \u001b[48;5;237m\u001b[38;5;31m\u001b[38;5;250m\u001b[48;5;237m src \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m pulumi \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;250m\u001b[48;5;237m examples \u001b[48;5;237m\u001b[38;5;244m\u001b[38;5;254m\u001b[48;5;237m kubernetes-ts-exposed-deployment \u001b[48;5;161m\u001b[38;5;237m\u001b[38;5;15m\u001b[48;5;161m hausdorff/kube-examples + \u001b[48;5;238m\u001b[38;5;161m\u001b[38;5;39m\u001b[48;5;238m 1 \u001b[48;5;236m\u001b[38;5;238m\u001b[38;5;15m\u001b[48;5;236m $ \u001b[0m\u001b[38;5;236m\u001b[0m \u001b[K"] +[2.070135, "o", "\u001b[?1h\u001b=\u001b[?2004h"] +[2.526194, "o", "p"] +[2.930883, "o", "\bpu"] +[3.091896, "o", "l"] +[3.178799, "o", "u"] +[3.4029, "o", "m"] +[3.538754, "o", "i"] +[3.691856, "o", " "] +[3.88387, "o", "u"] +[3.964043, "o", "p"] +[4.043588, "o", " "] +[4.227887, "o", "-"] +[4.379879, "o", "-"] +[4.531865, "o", "y"] +[4.611856, "o", "e"] +[4.683894, "o", "s"] +[5.018536, "o", "\u001b[?1l\u001b>"] +[5.018699, "o", "\u001b[?2004l\r\r\n"] +[5.019523, "o", "\u001b]2;pulumi up --yes\u0007\u001b]1;pulumi\u0007"] +[9.379634, "o", "\u001b[38;5;13mUpdating stack 'exposed-deployment-dev'\u001b[0m\r\n"] +[9.978682, "o", "\u001b[38;5;8mPerforming changes:\u001b[0m\r\n\r\n"] +[10.807721, "o", "\r\n"] +[10.807881, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;12mType\u001b[0m \u001b[38;5;12mName\u001b[0m \u001b[38;5;12mStatus\u001b[0m \u001b[38;5;12mInfo\u001b[0m\u001b[0m\r\u001b[1B"] +[10.808183, "o", "\r\n\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[1B"] +[11.650598, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[1B"] +[11.7279, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;12mType\u001b[0m \u001b[38;5;12mName\u001b[0m \u001b[38;5;12mStatus\u001b[0m \u001b[38;5;12mInfo\u001b[0m\u001b[0m\r\u001b[2B"] +[11.728188, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[1B"] +[11.728312, "o", "\r\n\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[1B"] +[12.301078, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[12.649901, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[2B"] +[12.650058, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[12.873145, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;3mwarning: \u001b[0m\u001b[38;5;7m[MinimumReplicasUnavailable] Deployment does no\u001b[0m\r\u001b[1B"] +[12.914933, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[13.648125, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[2B"] +[13.648378, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[14.647748, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[2B"] +[14.647976, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[15.648033, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[2B"] +[15.648268, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[16.652827, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[2B"] +[16.653221, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[17.647931, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[2B"] +[17.648224, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[18.647551, "o", "\u001b[2A\u001b[1K\u001b[K\r"] +[18.647795, "o", " \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[2B\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[19.648577, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[2B"] +[19.648829, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[20.650353, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[2B"] +[20.650662, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[21.647613, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[2B"] +[21.647884, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;5minfo: \u001b[0m\u001b[38;5;7m[1/2] Waiting for app ReplicaSet be marked availab\u001b[0m\r\u001b[1B"] +[22.305315, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;3mwarning: \u001b[0m\u001b[38;5;7m1 Pods failed to run because: [ImagePullBackOff\u001b[0m\r\u001b[1B"] +[22.650501, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[0m\r\u001b[2B"] +[22.650875, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[38;5;3mwarning: \u001b[0m\u001b[38;5;7m1 Pods failed to run because: [ImagePullBackOff\u001b[0m\r\u001b[1B"] +[23.650848, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m...\u001b[0m \u001b[0m\r\u001b[2B"] +[23.651193, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[38;5;3mwarning: \u001b[0m\u001b[38;5;7m1 Pods failed to run because: [ImagePullBackOff\u001b[0m\r\u001b[1B"] +[24.649389, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m\u001b[0m \u001b[0m\r\u001b[2B"] +[24.64966, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[38;5;3mwarning: \u001b[0m\u001b[38;5;7m1 Pods failed to run because: [ImagePullBackOff\u001b[0m\r\u001b[1B"] +[25.650445, "o", "\u001b[2A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m pulumi:pulumi:Stack exposed-deployment-exposed-deployment-dev \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m.\u001b[0m \u001b[0m\r\u001b[2B"] +[25.650745, "o", "\u001b[1A\u001b[1K\u001b[K\r \u001b[38;5;2m+ \u001b[0m └─ kubernetes:apps:Deployment nginx \u001b[38;5;2mcreating\u001b[0m\u001b[38;5;2m..\u001b[0m \u001b[38;5;3mwarning: \u001b[0m\u001b[38;5;7m1 Pods failed to run because: [ImagePullBackOff\u001b[0m\r\u001b[1B"] +[30.797011, "o", "^C"] +[30.798195, "o", "\r\n\u001b[1A\u001b[1K\u001b[K\r \r"] +[30.79856, "o", "\u001b[1B\r\n\u001b[1A\u001b[1K\u001b[K\r\u001b[38;5;3mSystem Messages\u001b[0m\r\u001b[1B\r\n\u001b[1A\u001b[1K\u001b[K\r ^C received; cancelling. If you would like to terminate immediately, press ^C again.\r\u001b[1B\r\n\u001b[1A\u001b[1K\u001b[K"] +[30.798833, "o", "\r \u001b[38;5;9mNote that terminating immediately may lead to orphaned resources and other inconsistencies.\r\u001b[1B\r\n\u001b[1A\u001b[1K\u001b[K\r \u001b[0m\r\u001b[1B"] +[35.724841, "o", "\u001b[?2004l\r\r\n"] diff --git a/kubernetes-py-exposed-deployment/images/error.gif b/kubernetes-py-exposed-deployment/images/error.gif new file mode 100644 index 000000000..7c6102325 Binary files /dev/null and b/kubernetes-py-exposed-deployment/images/error.gif differ diff --git a/kubernetes-py-exposed-deployment/requirements.txt b/kubernetes-py-exposed-deployment/requirements.txt new file mode 100644 index 000000000..be038e34d --- /dev/null +++ b/kubernetes-py-exposed-deployment/requirements.txt @@ -0,0 +1,2 @@ +pulumi==3.11.0 +pulumi-kubernetes==3.6.3