A version of the Kubernetes Guestbook
application using Pulumi. Unlike the direct port of the original YAML, this variant
leverages real code to eliminate boilerplate. A ServiceDeployment
class is used that combines the common pattern
of deploying a container image using a Kubernetes Deployment
, and then scaling it using a Service
.
Follow the steps in Pulumi Installation and Kubernetes Setup to get Pulumi working with Kubernetes.
Create a new stack:
$ pulumi stack init
Enter a stack name: testbook
This example will attempt to expose the Guestbook application to the Internet with a Service
of
type LoadBalancer
. Since minikube does not support LoadBalancer
, the Guestbook application
already knows to use type ClusterIP
instead; all you need to do is to tell it whether you're
deploying to minikube:
pulumi config set isMinikube <value>
Perform the deployment:
$ pulumi up
Updating (kubernetes-go-guestbook):
Type Name Status
+ pulumi:pulumi:Stack kubernetes-go-guestbook-kubernetes-go-guestbook created
+ ├─ kubernetes-go-guestbook:component:ServiceDeployment redis-leader created
+ │ ├─ kubernetes:core:Service redis-leader created
+ │ └─ kubernetes:apps:Deployment redis-leader created
+ ├─ kubernetes-go-guestbook:component:ServiceDeployment redis-replica created
+ │ ├─ kubernetes:core:Service redis-replica created
+ │ └─ kubernetes:apps:Deployment redis-replica created
+ └─ kubernetes-go-guestbook:component:ServiceDeployment frontend created
+ ├─ kubernetes:core:Service frontend created
+ └─ kubernetes:apps:Deployment frontend created
Outputs:
frontend_ip: "10.96.243.48"
Resources:
+ 10 created
And finally - open the application in your browser to see the running application. If you're running macOS you can simply run:
open $(pulumi stack output frontendIP)
Note: minikube does not support type
LoadBalancer
; if you are deploying to minikube, make sure to runkubectl port-forward svc/frontend 8080:80
to forward the cluster port to the local machine and access the service vialocalhost:8080
.