Skip to content

Commit

Permalink
Merge branch 'GoogleCloudPlatform:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
julianocosta89 committed Feb 2, 2022
2 parents 2e0a167 + 050a590 commit 45bcbbe
Show file tree
Hide file tree
Showing 4 changed files with 92 additions and 53 deletions.
22 changes: 11 additions & 11 deletions release/kubernetes-manifests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/emailservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/emailservice:v0.3.6
ports:
- containerPort: 8080
env:
Expand Down Expand Up @@ -88,7 +88,7 @@ spec:
serviceAccountName: default
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/checkoutservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/checkoutservice:v0.3.6
ports:
- containerPort: 5050
readinessProbe:
Expand Down Expand Up @@ -158,7 +158,7 @@ spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/recommendationservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/recommendationservice:v0.3.6
ports:
- containerPort: 8080
readinessProbe:
Expand Down Expand Up @@ -219,7 +219,7 @@ spec:
serviceAccountName: default
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/frontend:v0.3.5
image: gcr.io/google-samples/microservices-demo/frontend:v0.3.6
ports:
- containerPort: 8080
readinessProbe:
Expand Down Expand Up @@ -318,7 +318,7 @@ spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/paymentservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/paymentservice:v0.3.6
ports:
- containerPort: 50051
env:
Expand Down Expand Up @@ -374,7 +374,7 @@ spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/productcatalogservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/productcatalogservice:v0.3.6
ports:
- containerPort: 3550
env:
Expand Down Expand Up @@ -432,7 +432,7 @@ spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/cartservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/cartservice:v0.3.6
ports:
- containerPort: 7070
env:
Expand Down Expand Up @@ -505,7 +505,7 @@ spec:
value: "frontend:80"
containers:
- name: main
image: gcr.io/google-samples/microservices-demo/loadgenerator:v0.3.5
image: gcr.io/google-samples/microservices-demo/loadgenerator:v0.3.6
env:
- name: FRONTEND_ADDR
value: "frontend:80"
Expand Down Expand Up @@ -536,7 +536,7 @@ spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/currencyservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/currencyservice:v0.3.6
ports:
- name: grpc
containerPort: 7000
Expand Down Expand Up @@ -592,7 +592,7 @@ spec:
serviceAccountName: default
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/shippingservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/shippingservice:v0.3.6
ports:
- containerPort: 50051
env:
Expand Down Expand Up @@ -704,7 +704,7 @@ spec:
terminationGracePeriodSeconds: 5
containers:
- name: server
image: gcr.io/google-samples/microservices-demo/adservice:v0.3.5
image: gcr.io/google-samples/microservices-demo/adservice:v0.3.6
ports:
- containerPort: 9555
env:
Expand Down
64 changes: 64 additions & 0 deletions src/frontend/deployment_details.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package main

import (
"net/http"
"os"
"time"

"cloud.google.com/go/compute/metadata"
"github.com/sirupsen/logrus"
)

var deploymentDetailsMap map[string]string
var log *logrus.Logger

func init() {
initializeLogger()
// Use a goroutine to ensure loadDeploymentDetails()'s GCP API
// calls don't block non-GCP deployments. See issue #685.
go loadDeploymentDetails()
}

func initializeLogger() {
log = logrus.New()
log.Level = logrus.DebugLevel
log.Formatter = &logrus.JSONFormatter{
FieldMap: logrus.FieldMap{
logrus.FieldKeyTime: "timestamp",
logrus.FieldKeyLevel: "severity",
logrus.FieldKeyMsg: "message",
},
TimestampFormat: time.RFC3339Nano,
}
log.Out = os.Stdout
}

func loadDeploymentDetails() {
deploymentDetailsMap = make(map[string]string)
var metaServerClient = metadata.NewClient(&http.Client{})

podHostname, err := os.Hostname()
if err != nil {
log.Error("Failed to fetch the hostname for the Pod", err)
}

podCluster, err := metaServerClient.InstanceAttributeValue("cluster-name")
if err != nil {
log.Error("Failed to fetch the name of the cluster in which the pod is running", err)
}

podZone, err := metaServerClient.Zone()
if err != nil {
log.Error("Failed to fetch the Zone of the node where the pod is scheduled", err)
}

deploymentDetailsMap["HOSTNAME"] = podHostname
deploymentDetailsMap["CLUSTERNAME"] = podCluster
deploymentDetailsMap["ZONE"] = podZone

log.WithFields(logrus.Fields{
"cluster": podCluster,
"zone": podZone,
"hostname": podHostname,
}).Debug("Loaded deployment details")
}
44 changes: 5 additions & 39 deletions src/frontend/handlers.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import (
"strings"
"time"

"cloud.google.com/go/compute/metadata"
"github.com/gorilla/mux"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
Expand Down Expand Up @@ -116,7 +115,7 @@ func (fe *frontendServer) homeHandler(w http.ResponseWriter, r *http.Request) {
"platform_css": plat.css,
"platform_name": plat.provider,
"is_cymbal_brand": isCymbalBrand,
"deploymentDetails": getDeploymentDetails(r),
"deploymentDetails": deploymentDetailsMap,
}); err != nil {
log.Error(err)
}
Expand Down Expand Up @@ -201,7 +200,7 @@ func (fe *frontendServer) productHandler(w http.ResponseWriter, r *http.Request)
"platform_css": plat.css,
"platform_name": plat.provider,
"is_cymbal_brand": isCymbalBrand,
"deploymentDetails": getDeploymentDetails(r),
"deploymentDetails": deploymentDetailsMap,
}); err != nil {
log.Println(err)
}
Expand Down Expand Up @@ -313,7 +312,7 @@ func (fe *frontendServer) viewCartHandler(w http.ResponseWriter, r *http.Request
"platform_css": plat.css,
"platform_name": plat.provider,
"is_cymbal_brand": isCymbalBrand,
"deploymentDetails": getDeploymentDetails(r),
"deploymentDetails": deploymentDetailsMap,
}); err != nil {
log.Println(err)
}
Expand Down Expand Up @@ -386,7 +385,7 @@ func (fe *frontendServer) placeOrderHandler(w http.ResponseWriter, r *http.Reque
"platform_css": plat.css,
"platform_name": plat.provider,
"is_cymbal_brand": isCymbalBrand,
"deploymentDetails": getDeploymentDetails(r),
"deploymentDetails": deploymentDetailsMap,
}); err != nil {
log.Println(err)
}
Expand Down Expand Up @@ -448,7 +447,7 @@ func renderHTTPError(log logrus.FieldLogger, r *http.Request, w http.ResponseWri
"error": errMsg,
"status_code": code,
"status": http.StatusText(code),
"deploymentDetails": getDeploymentDetails(r),
"deploymentDetails": deploymentDetailsMap,
}); templateErr != nil {
log.Println(templateErr)
}
Expand Down Expand Up @@ -517,36 +516,3 @@ func stringinSlice(slice []string, val string) bool {
}
return false
}

func getDeploymentDetails(httpRequest *http.Request) map[string]string {
var deploymentDetailsMap = make(map[string]string)
var metaServerClient = metadata.NewClient(&http.Client{})
var log = httpRequest.Context().Value(ctxKeyLog{}).(logrus.FieldLogger)

podHostname, err := os.Hostname()
if err != nil {
log.Error("Failed to fetch the hostname for the Pod", err)
}

podCluster, err := metaServerClient.InstanceAttributeValue("cluster-name")
if err != nil {
log.Error("Failed to fetch the name of the cluster in which the pod is running", err)
}

podZone, err := metaServerClient.Zone()
if err != nil {
log.Error("Failed to fetch the Zone of the node where the pod is scheduled", err)
}

deploymentDetailsMap["HOSTNAME"] = podHostname
deploymentDetailsMap["CLUSTERNAME"] = podCluster
deploymentDetailsMap["ZONE"] = podZone

log.WithFields(logrus.Fields{
"cluster": podCluster,
"zone": podZone,
"hostname": podHostname,
}).Debug("Fetched pod details")

return deploymentDetailsMap
}
15 changes: 12 additions & 3 deletions src/frontend/templates/footer.html
Original file line number Diff line number Diff line change
Expand Up @@ -29,9 +29,18 @@
<br/>
<small>
{{ if $.deploymentDetails }}
<b>Cluster: </b>{{index .deploymentDetails "CLUSTERNAME" }}<br/>
<b>Zone: </b>{{index .deploymentDetails "ZONE" }}<br/>
<b>Pod: </b>{{index .deploymentDetails "HOSTNAME" }}
{{ if index .deploymentDetails "CLUSTERNAME" }}
<b>Cluster: </b>{{ index .deploymentDetails "CLUSTERNAME" }}<br/>
{{ end }}
{{ if index .deploymentDetails "ZONE" }}
<b>Zone: </b>{{ index .deploymentDetails "ZONE" }}<br/>
{{ end }}
{{ if index .deploymentDetails "HOSTNAME" }}
<b>Pod: </b>{{ index .deploymentDetails "HOSTNAME" }}
{{ end }}
{{ else }}
Deployment details are still loading.
Try refreshing this page.
{{ end }}
</small>
</p>
Expand Down

0 comments on commit 45bcbbe

Please sign in to comment.