Setting up your Google Cloud environment

This page describes the steps to set up your Google Cloud environment, so that you can distribute your Kubernetes apps.

Create a project

As part of becoming a Google Cloud Marketplace partner, you set up a project that you can use to test and distribute your app.

If you already have projects set up for selling VM solutions, you can re-use those projects, and skip to setting up a container registry.

We recommend that you create a new project primarily for your Google Cloud Marketplace solutions. For steps to create your project, see Creating and managing projects.

After you have created the project, grant the Project Viewer role to marketplace-ops@cloud.google.com. For steps to grant access to your project, see Granting, changing and revoking access to resources.

While you are creating your solution, if you need help debugging your project, such as troubleshooting your Container Registry repository, grant the Project Editor role to marketplace-support@cloud.google.com.

After you have created the project, complete the Project Info form that the Google Cloud Marketplace team gives you.

Set up a container registry

You need a Container Registry repository to host the container images for your app. Container Analysis continuously scans the app images for vulnerabilities so that you can review and address issues before customers deploy your app.

To set up Container Registry, Docker, and the Google Cloud SDK, follow the Container Registry quickstart.

After you set up Container Registry, in the project that contains your registry, grant the Project Viewer role to marketplace-ops@cloud.google.com.

Enable the Container Analysis API

You must enable the Container Analysis API, which scans your container images in Container Registry for vulnerabilities. For an overview of vulnerability scanning in Container Analysis, see see the Container Registry Documentation.

Add your solution in Partner Portal

You use Partner Portal to add marketing information about your app, and to enter your pricing model. Your Partner Engineer enables Partner Portal for you after you have completed the Project Info form.

At this stage, you only need to create the entry for your solution in Partner Portal. You add your marketing information in later steps.

The direct link to Partner Portal is:

https://console.cloud.google.com/partner/solutions?project=YOUR_PUBLIC_PROJECT_ID

To create your solution:

  1. At the top of the page, click Add solution.

  2. Name your solution and check the solution ID. The solution ID is used in the URL for your Google Cloud Marketplace listing.

  3. Under Solution Type, select Kubernetes app.

  4. In the Staging repo URL box, enter the URL for your Container Registry repository.

  5. Click Create. It might take a few seconds to create your solution.

You add your pricing model and marketing information for your solution in later steps.

Create a development cluster in Kubernetes Engine

You use Google Kubernetes Engine to manage and scale Kubernetes clusters. To create a test cluster and deploy a basic app to it, follow the Google Kubernetes Engine quickstart.

Install the mpdev development tool

The mpdev tool is a container that bundles utilities to test and publish your application images. While installing mpdev is not required to submit an application for release, you can run mpdev to verify your development environment, and to test whether your application installs correctly on your development cluster.

Install mpdev from the Google Cloud Marketplace tools GitHub repository.

For information on using mpdev to check your environment and test your application, see the mpdev reference on GitHub.

Organizing your releases

In general, every version of your application must adopt Semantic Versioning 2.0, which follows the MAJOR.MINOR.PATCH numbering convention. Every version must have a unique version number, such as 1.0.1, 1.0.2, 1.3.1, and so on. Optionally, add a hyphen after the version number to add a pre-release modifier, such as 1.3.1-alpha201910. Pre-release modifiers can be used to store and highlight any additional information that you find useful, such as build dates denoting when versions were created.

We recommend that you release your software in tracks. Each track is a series of versions with backwards-compatible updates. This approach ensures that your users can update their installations with minimal manual steps. If you enable managed updates for your application, users can update their deployments through the Cloud Console with a few clicks.

Your release tracks can be based on a major version, such as 4.x, or minor versions, such as 4.1.x. As a best practice, avoid using generic version names such as latest.

For example, if you're releasing version 2.0 of your software on Google Cloud Marketplace, and expect that versions 2.0.1, 2.0.5, and so on will be backwards-compatible with 2.0, organize these releases under the 2.0 release track. When you release updates on this track, users are prompted to update their installations in the Cloud Console.

When you release a backwards-incompatible version of your application, or a version that requires users to go through manual migration steps, release it on a new track, so that users can plan their updates.

Choose your product identifiers

You must select the following identifiers for your company, product, and container images, which are used to create your Google Cloud Marketplace URLs, and the URIs for your container images:

  • Your company's name. For example, if the name of your company is Examplesoft Inc., you can use the identifier examplesoft.

  • Your product's name. For example, if the product's name is Example Pro, use the identifier example-pro.

  • The release track of your product, such as 4.0.

    See the requirements for organizing your releases.

  • Your container images. Select a unique identifier for each container image in your app. The following identifiers are required for all apps:

    • The primary image: This container image is the main image for your product, and uses the same identifier as the product. For example, if your product identifier is example-pro, the primary image uses the same identifier.
    • deployer: The deployment container image for the track. The deployment container runs when users deploy your app from Google Cloud Console You create a deployment image when you create your app package.

For example, the company Examplesoft Inc. chooses the following identifiers for their product, Example Pro:

Name Identifier
Company Examplesoft Inc examplesoft
Product Example Pro example-pro
Image [1] (primary) Example Pro server n/a
Image [2] Example Queue example-queue
Image [deployer] n/a deployer
Release track [1] Version 4.x.x 4.0
Release track [2] Version 5.x.x 5.0

For these identifiers, the following information is automatically generated:

  • The product URL in Google Cloud Marketplace: https://console.cloud.google.com/marketplace/details/examplesoft/example-pro

  • The container image URIs:

    • marketplace.gcr.io/examplesoft/example-pro:4.0
    • marketplace.gcr.io/examplesoft/example-pro/example-queue:4.0
    • marketplace.gcr.io/examplesoft/example-pro/deployer:4.0
    • marketplace.gcr.io/examplesoft/example-pro:5.0
    • marketplace.gcr.io/examplesoft/example-pro/example-queue:5.0
    • marketplace.gcr.io/examplesoft/example-pro/deployer:5.0