Introducing G Suite Essentials: The simplest way for teams to securely work together from anywhere - Build What's Next

3989

Of your peers have already watched this video.

33:29 Minutes

The most insightful time you'll spend today!

Explainer

Introducing G Suite Essentials: The simplest way for teams to securely work together from anywhere

With millions of employees forced to work from home, it has become clear that the existing tools many have in place were not cutting it. The Google Cloud team stepped in and accelerated production timelines to launch a new offering. G Suite Essentials is Google’s integrated set of tools designed to support a modern workspace.

With that in mind, Google wants to give an introduction to Essentials and insights into how Google addresses this specific situation we find ourselves in due to the pandemic.

And so the question becomes, now that remote work is the new normal, are the tech tools that we have in place the right ones? And here’s the harsh reality–for many, anything other than collaboration whilst sharing the same conference room in-person is broken.

We all have our examples–incorrect versions of documents, not being able to find the right information, unproductive conference calls, you name it. You have your own story. The unfortunate thing is that it feels normal at this point, and that’s just not fair.

How—and where—people work has changed. Being a part of a distributed team is the new normal, and teams need easy-to-adopt tools that empower them to collaborate from anywhere. Learn how your team can get started in minutes, swiftly and securely.

6607

Of your peers have already watched this video.

8:00 Minutes

The most insightful time you'll spend today!

Explainer

Hospitals Can Offer Interconnected Patient Experiences Using Google’s Natural Language Services

Machine Learning (ML) in healthcare helps extract data from conversations, medical records, forms, research reports, insurance claims and other documents across the care value-chain to help care providers have a holistic view of their patients to draw insights for diagnoses and treatments. With Natural Language Processing(NLP), healthcare organizations can program computers and systems to process and analyse large volumes of human communication in form of spoken texts, written documentation and utterances. Watch the video to learn how the healthcare community can leverage Google’s NLP services to process structured and unstructured data to offer interconnected experiences for patients.

How-to

Learn to Easily Administer Multi-cluster Kubernetes Environs: Part 4 KRM Series

5585

Of your peers have already read this article.

4:00 Minutes

The most insightful time you'll spend today!

Operating in multi-cluster environs involves challenges. If your teams are looking to administer multiple clusters in a single go while keeping them secure, or deploy and monitor apps running across multiple clusters, refer the part 4 of KRM series.

This is part 4 in a multi-part series about the Kubernetes Resource Model. See parts 12, and 3 to learn more. 

Kubernetes clusters can scale. Open-source Kubernetes supports up to 5,000 Nodes, and GKE supports up to 15,000 Nodes. But scaling out a single cluster can only get you so far: if your cluster’s control plane goes down, your entire platform goes down; if the Cloud region running your cluster has a service interruption, so does your app. 

Many organizations choose, instead, to operate multiple Kubernetes clusters. Besides availability, there are lots of reasons to consider multi-cluster, such as allocating a cluster to each development team, splitting workloads between cloud and on-prem, or providing burst capability for traffic spikes. 

But operating a multi-cluster platform comes with its own challenges. How to consistently administer many clusters at once? How to keep the clusters secure? How to deploy and monitor applications running across multiple clusters? How to seamlessly fail over from one region to another?

This post introduces a few tools that can help platform teams more easily administer a multi-cluster Kubernetes environment. 

The platform base layer, with Config Sync 

In the last post, we explored how thoughtful platform abstractions can help reduce toil for app developers- including for a multi-cluster environment, where automation such as CI/CD handles all interactions with the staging and production clusters. But equally important is the platform base layer, the Kubernetes resources and configuration that are shared across services. Your platform base layer might consist of Namespacesrole-based access control, and shared workloads like Prometheus

Platform abstractions depend on the existence of these base-layer resources. And so does the security and stability of your platform as a whole. It’s important that these resources not only get deployed, but also stay put. CI/CD is great for deploying resources, but what about making sure resources stay deployed? What if a Kubernetes Namespace gets deleted? Or a Prometheus StatefulSet is modified? 

Kubernetes’ job is to ensure that the cluster’s actual state matches the desired state. But sometimes, the “desired” state isn’t desired at all – it’s a developer who mistakenly modified a resource, or a bad actor that’s gained access into the system. For this reason, a platform base layer needs more than a one-and-done CI/CD pipeline. A tool called Config Sync can help with this. 

Config Sync is a Google Cloud product that can sync Kubernetes resources from a Git repository to one or more GKE or Anthos clusters. Unlike CI/CD tools like Cloud Build, Config Sync watches your clusters constantly, making sure that the intended resource state in the cluster always matches what’s in Git. Config Sync is designed primarily for base-layer resources like namespaces and RBAC. In this way, Config Sync is complementary to, not a replacement for, CI/CD. 

Configs
Source: Config Sync documentation

Config Sync runs in a Pod inside your Kubernetes cluster, watching your Git config repo for changes, and also watching the cluster itself for any divergence from your desired state in Git. If any configuration drift is detected from what’s stored in Git, Config Sync will update the API Server accordingly. 

You can point multiple Config Sync deployments at the same Git repo, allowing you to manage the base-layer platform resources for multiple clusters using the same source of truth. And by using Git as the landing zone for config, you can benefit from some of the GitOps principles we discussed in part 2, including the ability to audit and roll back configuration changes.

Let’s walk through an example of how to manage base-layer resources with Config Sync. 

The Cymbal Bank platform consists of four GKE clusters: admin, dev, staging, and prod. We can install Config Sync on all four clusters using the gcloud tool or the Google Cloud Console, pointing all four clusters at a single Git repository, called cymbalbank-policy. Note that this repo is separate from the application source and config repos, and is managed by the platform team. From the Console, we can see that all four clusters are synced to the same commit of the cymbalbank-policy repo. 

anthos config

Now, let’s say that the Cymbal Bank platform team wants to limit the amount of CPU and memory resources each application team can request for their service. Kubernetes ResourceQuotas help impose these limits, and prevent unexpected Pod evictions.

Policy repo

The platform team can define a set of ResourceQuotas for each application namespace. They can also scope the resources to only be applied to a subset of clusters – for instance, to the production cluster only. (If no cluster name selector is specified, Config Sync will deploy the resource to all clusters by default.)

  apiVersion: v1
kind: ResourceQuota
metadata:
  name: production-quota
  namespace: frontend
  annotations:
    configsync.gke.io/cluster-name-selector: cymbal-prod
spec:
  hard:
    cpu: 700m
    memory: 512Mi

From here, the platform team can commit the resources to the cymbalbank-policy repo, and Config Sync, always watching the policy repo, will deploy the resources to the production cluster:

  NAMESPACE                      NAME                  AGE     REQUEST                                                                                                                               LIMIT
balancereader                  production-quota      6m56s   cpu: 300m/700m, memory: 612Mi/512Mi

If a developer tries to delete one of the ResourceQuotas, Config Sync will block the request, helping to ensure that these base-layer resources stay put.  

  error: You must be logged in to the server (admission webhook "v1.admission-webhook.configsync.gke.io" denied the request: requester is not authorized to delete managed resources)

In this way, Config Sync can help platform teams ensure the stability of that platform base-layer, as well as ensure resource consistency across multiple clusters at once. This, in turn, can help organizations mitigate the complexity of adding new clusters to their environment.  

Enforce policies on Kubernetes resources

Config Sync is a powerful tool on its own, and can work with any Kubernetes resource that your cluster recognizes. This includes Custom Resource Definitions (CRDs) installed with add-ons like Anthos Service Mesh

But Config Sync, by default, doesn’t have an idea of “good or bad” Kubernetes resources. It will deploy whatever resources land in Git, even resources that might pose a security risk to your organization. Security is an essential feature of any developer platform, and when it comes to Kubernetes, it’s important to think about security from the initial software design stages, and set up your clusters with security best-practices in mind.   

But it’s just as important to think about security at deploy-time. Who and what can access your clusters? What kinds of Kubernetes resources – and fields within those resources- are allowed? These decisions will depend on lots of factors, including the kinds of data your application deals with, and any industry-specific regulations. 

One common security use case for KRM is the need to monitor incoming Kubernetes resources, whether they’re coming in through kubectl, CI/CD, or Config Sync. But if you have multiple clusters, your Kubernetes environment has multiple API Servers, and therefore multiple entry points.  

A Google tool called Policy Controller can help automate resource monitoring across multiple clusters. Policy Controller is a Kubernetes admission controller that can accept or reject incoming resources based on custom policies you define. Policy Controller is based on the OpenPolicyAgent Gatekeeper project, and it allows you to define policies, or “Constraints,” as KRM. This means you can deploy them using Config Sync, via Git. Once deployed, Policy Controller uses your Constraints as a set of rules to evaluate all incoming KRM, rejecting resources that fall out of compliance.  

Let’s walk through an example. Say that the Cymbal Bank security team wants to ensure that no code in development is accessible to the public. Kubernetes Services of type LoadBalancer expose public IP addresses by default, so the platform team wants to define a PolicyController constraint that blocks Services of that type on the development GKE cluster.

example

To do this, the platform team can define a Policy Controller Constraint as KRM. This Constraint uses a Constraint Template, provided through the pre-installed Constraint Template library. The ConstraintTemplate defines the logic of the policy itself, and the Constraint makes the template concrete, populating any variables needed to execute the policy logic. Here, we’re also adding a Config Sync cluster name annotation, to scope this resource to apply only to the development cluster.

  apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sNoExternalServices
metadata:
  name: dev-no-ext-services
  annotations:
    configsync.gke.io/cluster-name-selector: cymbal-dev
spec:
  internalCIDRs: []

The platform team can then commit the resource to the cymbalbank-policy repo, and Config Sync will deploy the resource to the development cluster. 

From here, if an app developer tries to create an externally-accessible Kubernetes Service, Policy Controller will block the resource from being created.

  for: "constraint-ext-services/contacts-svc-lb.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [denied by dev-no-ext-services] Creating services of type `LoadBalancer` without Internal annotation is not allowed

The platform team can define as many of these Constraints as they want, each defining a separate policy.

Writing custom policies 

The Policy Controller Constraint Template library provides a lot of functionality, from blocking privileged containers, to requiring certain resource labels, to preventing app teams from deploying into certain namespaces. But if you want to enforce custom logic on your organization’s KRM, you can do so by writing a custom Constraint Template. 

Constraint Templates are written in a query language called Rego. Rego was designed for policy rule evaluation, and it can introspect Kubernetes resource fields to make a conclusion as to whether the resource is allowed or not. 

For instance, let’s say that the platform team wants to limit the number of containers allowed inside a single application Pod. Too many containers per Pod can cause outage risks— when one container crashes, the entire Pod crashes.

developer

To enforce this policy, the platform team can define a Constraint Template, using the Rego language, that looks inside a resource to ensure that the number of containers per Pod is within the allowed limit: 

  apiVersion: templates.gatekeeper.sh/v1beta1
kind: ConstraintTemplate
metadata:
  name: k8slimitcontainersperpod
spec:
  crd:
    spec:
      names:
        kind: K8sLimitContainersPerPod
      validation:
        openAPIV3Schema:
          properties:
            allowedNumContainers:
              type: integer
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8slimitcontainersperpod
        numTemplateContainers := count(input.review.object.spec.template.spec.containers)
        numRunningContainers := count(input.review.object.spec.containers)
        containerLimit := input.parameters.allowedNumContainers
        template_containers_over_limit = true {
          numTemplateContainers > containerLimit
        }
        running_containers_over_limit = true {
          numRunningContainers > containerLimit
        }
        violation[{"msg": msg}] {
          template_containers_over_limit
          msg := sprintf("Number of containers in template (%v) exceeds the allowed limit (%v)", [numTemplateContainers, containerLimit])
        }
        violation[{"msg": msg}] {
          running_containers_over_limit
          msg := sprintf("Number of running containers (%v) exceeds the allowed limit (%v)", [numRunningContainers, containerLimit])
        }
Then, the platform team can define a concrete Constraint, using this Constraint Template, to set the number of allowed containers per Pod to 3: 
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sLimitContainersPerPod
metadata:
  name: limit-three-containers
spec:
  parameters:
    allowedNumContainers: 3

Finally, the platform team can push these resources to the cymbalbank-policy repo, and Config Sync will deploy the policy to all four clusters. If a developer tries to define a Kubernetes Deployment containing more containers per pod than what’s allowed, the resource will be blocked at deploy time: 

  Error from server ([limit-three-containers] Number of containers in template (4) exceeds the allowed limit (3)): error when creating "constraint-limit-containers/test-workload.yaml": admission webhook "validation.gatekeeper.sh" denied the request: [limit-three-containers] Number of containers in template (4) exceeds the allowed limit (3)

Custom Constraint Templates can give platform teams lots of flexibility in the types of policies they define and enforce in a Kubernetes environment. 

Integrating policy checks into CI/CD 

As we explored earlier, Config Sync and CI/CD are complementary tools. Config Sync works great for base-layer platform resources and policies, whereas CI/CD works well for application tests and deployment. 

But one pitfall of having two separate KRM deployment mechanisms is that app developers may not know that their resources are out of policy until they try to deploy them into production. This is especially true if some policies are scoped only to production, as we saw with the ResourceQuota example. Ideally, the platform team has a way to empower developers and code reviewers to know ahead of time whether new or modified resources are still in compliance. We can enable this use case by integrating policy checks into the existing Cymbal Bank CI/CD.

operator

Policy Controller operates, by default, as a Kubernetes Admission Controller running inside the cluster. But Policy Controller also provides a “standalone” mode, running inside a container, that can be used outside of a cluster, such as from inside a Cloud Build pipeline. 

In the example below, Cloud Build executes Policy Controller checks by getting the cymbalbank-app-config manifests, cloning the cymbalbank-policy resources, and using the “policy-controller-validate” container image to evaluate the app manifests against the policies. 

  steps:
- id: 'Render prod manifests'
  name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: '/bin/sh'
  args: ['-c', 'mkdir hydrated-manifests && kubectl kustomize overlays/prod > hydrated-manifests/prod.yaml']
- id: 'Clone cymbalbank-policy repo'
  name: 'gcr.io/kpt-dev/kpt'
  entrypoint: '/bin/sh'
  args: ['-c', 'kpt pkg get https://github.com/$$GITHUB_USERNAME/cymbalbank-policy.git@main constraints
                  && kpt fn source constraints/ hydrated-manifests/ > hydrated-manifests/kpt-manifests.yaml']
  secretEnv: ['GITHUB_USERNAME']
- id: 'Validate prod manifests against policies'
  name: 'gcr.io/config-management-release/policy-controller-validate'
  args: ['--input', 'hydrated-manifests/kpt-manifests.yaml']
availableSecrets:
  secretManager:
  - versionName: projects/${PROJECT_ID}/secrets/github-username/versions/1 
    env: 'GITHUB_USERNAME'
timeout: '1200s' #timeout - 20 minutes

From here, an app developer or operator can know if their resources violate org-wide policies, by looking at the Cloud Build output for their Pull Request:  

  Status: Downloaded newer image for gcr.io/config-management-release/policy-controller-validate:latest
Error: Found 1 violations:
[1] Number of containers in template (4) exceeds the allowed limit (3)

By integrating policy checks into CI/CD, app development teams can understand whether their resources are in compliance, and platform teams add an additional layer of policy checks to the platform. 

Overall, Config Sync and Policy Controller can provide a powerful toolchain for standardizing base-layer config across a multi-cluster environment. Check out the Part 4 demo to try out each of these examples. 

And stay tuned for Part 5, where we’ll learn how to use KRM to manage cloud-hosted resources. 

Blog

Google Launches Product Locator and Gives Store Locator Plus an Upgrade to Expand Retail Offerings

5858

Of your peers have already read this article.

1:30 Minutes

The most insightful time you'll spend today!

To cater to the changing customer behaviors and demand for superior retail shopping experience, Google introduces Product Locator and updates Store Locator Plus! Read to learn how these offerings deliver best online-to-offline retail experience.

We all experienced, first hand, how Covid-19 has impacted the world and our communities. Last year, store closures, reduced hours, and social-distancing requirements drove people to adopt more e-commerce options, which, according to eMarketer, grew 27.6% worldwide in 2020. Meanwhile, consumer desires to shop locally also grew with Google searches for “____ near me” up 100% year over year,1 and 1 in 3 consumers having tried curbside pickup over the last year.2

As countries begin to lift Covid-19 restrictions, businesses are looking toward a post-pandemic future and asking ‘Which of these shopping trends will stick and how should I adapt?’ At Google, we expect consumers to continue demanding helpful shopping experiences that blur the line between the physical retail and digital experience, as well as help them to continue shopping locally.3 To address these changes in shopper behavior, we refreshed our retail solutions—adding a new solution, Product Locator, and updating Store Locator Plus—to help you offer the best possible online-to-offline experience and drive shoppers to your stores. 

Introducing Product Locator solution: connecting online shopping to nearby stores

Under Covid restrictions, consumers have grown accustomed to having a myriad of shopping options, from curbside pickup to same-day delivery. Increased searches for ‘along my route’ and ‘in stock’ tell us that convenience is king for today’s consumer.4 Retailers can increase online conversion rates and drive store visits by including product availability and pick-up options on each of their product description pages (PDP); emphasizing the speed and convenience of these options and saving on significant shipping costs. 

Our newest retail solution, Product Locator, can further help drive customers to visit by showing the exact distance stores are to the shopper and even estimated driving time, to further highlight the convenience of a store visit. A study conducted by Shopify found that showcasing local inventory boosted key store metrics including 45% of local pickup who made an additional purchase upon arrival.5 See the Product Locator solution guide to get started today.

Retail solutions image 1
Example of Product Locator solution implemented on a sample product page

Update your store locator page to address more of shoppers’ needs

Store locators allow shoppers to more easily find your stores and can be made even more helpful with our Store Locator Plus solution. Our updated Store Locator Plus solution refreshes the store locator page to be more informative and engaging by integrating offers redeemable in-store, online scheduling for appointments and services, and text me directions services. Implement Store Locator Plus today using the guide.

Retail solutions image 2
Example of Store Locator Plus, featuring appointment booking and local offers

Build and customize Store Locator Plus for your business in minutes

At Google Maps Platform, we are always thinking of ways to make building a map easier and faster for our customers. In May at I/O we made Cloud-based Maps Styling generally available, enabling map updates to happen without touching a line of code. Today we’re excited to introduce Quick Builder, our free, low code builder which allows you to demo, customize and build a version of the Store Locator Plus solution for your website in minutes. Experience Quick Builder today.
To learn more about how you can start adopting these retail solutions, visit our retail solutions page.

For more information on Google Maps Platform, visit our website.


Global Insights Briefing: Getting back out there

2 https://www.shopify.com/pos/future-of-retail-2021

3 https://www.thinkwithgoogle.com/future-of-marketing/digital-transformation/covid-trends-1-year/

4 https://www.thinkwithgoogle.com/consumer-insights/consumer-trends/pandemic-shopping-behavior/

5 https://www.shopify.com/pos/future-of-retail-2021

Research Reports

Download the Forrester Study to Explore the Benefits of AI for IT Operations in Cloud Environment

7116

Of your peers have already read this article.

1:30 Minutes

The most insightful time you'll spend today!

Download this Forrester study and learn why 91 percent of implementations of AIOps to address at least one cloud operational issue were able to expand rapidly!

Organizations are currently modernizing their businesses in order to meet the increasing complexity of today’s business landscape. In effect, business leaders must evaluate the best way to mitigate the challenges which plague their cloud operations, all while meeting customers’ growing expectations around digital experience (DX) through agility, automation, and proactive incident avoidance. 

In this commissioned study, “Modernize With AIOps To Maximize Your Impact”, Forrester Consulting surveyed organizations worldwide to better understand how they’re approaching artificial intelligence for IT operations (AIOps) in their cloud environments, and what kind of benefits they’re seeing. 

Within this July 2021 study, you’ll see that AIOps systems and principles are here to help. It covers how AIOps increases efficiency and productivity across day-to-day operations, and how businesses are taking note. In fact, 91% of respondents have implemented AIOps to address at least one cloud operations issue, and expansion is set to skyrocket. Those that wait to act, risk losing out on the efficacy of their cloud investment and falling behind their more efficient competitors.

AIOps.jpg

As you can see in the image above, there is a plethora of great information in this complimentary study. So, if you’re looking to enhance your cloud operations and/or adopt AIOps within your organization, be sure to download this free study today.

4934

Of your peers have already watched this video.

9:37 Minutes

The most insightful time you'll spend today!

Webinar

L’Oréal: Managing Big-data Complexity with Google Cloud

L’Oreal is a global company with a presence in 150 countries worldwide. Between managing all of its brands and requirements for different countries, L’Oreal looks to data to make insightful business decisions. How does L’Oreal unify its data across all its systems and databases? How does L’Oreal make the data accessible to thousands of employees? In this video, Antoine Castex, Enterprise Architect at L’Oreal, discusses with Martin Omander how L’Oreal built a serverless, multi-cloud warehouse based on Google Cloud.

Chapters:

0:00 – Intro

0:23 – Why does L’Oreal need a new data warehouse?

0:51 – Who is the L’Oreal group?

1:35 – Which systems does L’Oreal use?

2:14 – How does L’Oreal manage complexity?

3:59 – What is ELT?

4:57 – Who are L’Oreal’s data consumers?

5:41 – How L’Oreal built the data warehouse

8:51 – L’Oreal’s future plans

9:10 – Wrap up

Google Cloud Workflows → https://goo.gle/3q20M1V

Cloud Run → https://goo.gle/3CSWbXG

Eventarc → https://goo.gle/3B7qhFy

BigQuery → https://goo.gle/3KHgyJ3

Looker → https://goo.gle/3Rx4Ind

Checkout more episodes of Serverless Expeditions → https://goo.gle/ServerlessExpeditions​

Subscribe to Google Cloud Tech → https://goo.gle/GoogleCloudTech​

#ServerlessExpeditions​

More Relevant Stories for Your Company

Blog

All About Cloud Run, its Scalability and Management Features

Mindful Containers is a fictitious company that is creating containerized microservice applications. They need a fully managed compute environment for deploying and scaling serverless containerized microservices. So, they are considering Cloud Run.  They are excited about Cloud Run because it abstracts away the cluster configuration, monitoring, and management so they

Research Reports

Report on API-led Digital Transformations in 2020 and the Future

In 2020, many businesses across industries turned their focus and investments towards digital strategies. APIs being an integral part of every organization's digital disruption, will grow in relevance throughout 2021. Read the report to gain more insights on driving API-led digital transformations and in-depth analysis of Google Cloud's Apigee API

Case Study

15 Companies–from Korean Air to Salesforce–Share How G-Suite and Google Meet Help Them Battle COVID-19

More than a decade ago we introduced secure, easy-to-use business collaboration and productivity apps (now known as G Suite), and we envisioned a new way of working in the cloud. And although we always knew the value of cloud-based collaboration, it is more important than ever at a time like

How-to

Video: How Google App Maker Helps Businesses Build Mobile Apps in No Time

Analysts estimate that the right custom mobile app can save each employee 7.5 hours per week (that’s a week’s worth of lunch breaks!). Yet, too few businesses have the means, let alone the resources, to invest time and effort in building customized mobile apps. Why? That's because their budgets center on

SHOW MORE STORIES