Releases: GoogleCloudPlatform/marketplace-k8s-app-tools
Helm tiller support (alpha)
Support boolean application create property (#304) Some helm charts wish to use global.application.create value to control whether the Application resource should be included in the generated manifests. This is the negation of the truthy value of the existing APPLICATION_UID property.
Bug fixes
0.7.0 Release
New guide
We released a new guide for building deployers.
Breaking changes
The Makefile
s are no longer in tools repo. If you wish to continue using them, please obtain a copy from click-to-deploy or example repos.
We found that Makefile
s are too prescriptive. We recommend direct use of CLI commands to build and test your deployer. You can still choose to use our Makefile
s for automation.
Release notes
- This release changes partner integration points, but can run against deployers generated from preview versions. All tooling is now packaged in a
dev
container. See here for references. - Continuous testing blocking merging to
master
branch. - Continuous publishing of container images for each merge to
master
branch.
v0.6.2 Beta
Beta
Since v0.6, we are now using the v1beta1
version of the Application resource. Please see v0.6.1 release notes.
New feature
Supporting base64 encoded string
Example:
properties:
explicitPassword:
type: string
x-google-marketplace:
type: STRING
string:
generatedProperties:
base64Encoded: explicitPasswordEncoded
In your manifests, explicitPasswordEncoded
can additionally be used. It contains the value of explicitPassword
encoded in base 64.
v0.6.1 Beta!
Breaking Change
Application CRD has been upgraded from v1alpha1
to v1beta1
.
Upgrading your deployer
Make sure you pull the new versions of the base deployers.
docker pull gcr.io/cloud-marketplace-tools/k8s/deployer_helm:latest
docker pull gcr.io/cloud-marketplace-tools/k8s/deployer_envsubst:latest
In schema.yaml
Add the following line to (the top of) the file:
application_api_version: v1beta1
In Application
manifest:
- Change
apiVersion
toapp.k8s.io/v1beta1
- Move the following fields (all previously under
spec
) to a new field calleddescriptor
:
type
version
description
maintainers
owners
keywords
links
notes
An example of the new Application
manifest can be found here.
Development
Only one version of the Application CRD can be present in a given cluster. To upgrade a cluster with a previous version of the CRD installed:
- Delete all
Application
instances in the cluster.1 - Delete the CRD:
kubectl delete crd applications.app.k8s.io
- Install the new CRD (
make crd/install
if you use our Makefile system)
1 existing v1alpha1
applications won't be retrievable/deletable from the k8s API any more once the CRD is deleted.
New feature
Supporting multi-part image properties
Example:
properties:
imageNginx.image:
type: string
default: marketplace.gcr.io/google/nginx:1.0
x-google-marketplace:
type: IMAGE
image:
generatedProperties:
splitByColon:
before: imageNginx.repo
after: imageNginx.tag
In your manifests, the following two properties can be used:
imageNginx.repo
, which should have the value ofmarketplace.gcr.io/google/nginx
for the default value.imageNginx.tag
, which should have the value of1.0
for the default value.
v0.5.3
New features
Supporting multi-part image properties
Example:
properties:
imageNginx.image:
type: string
default: marketplace.gcr.io/google/nginx:1.0
x-google-marketplace:
type: IMAGE
image:
generatedProperties:
splitByColon:
before: imageNginx.repo
after: imageNginx.tag
In your manifests, the following two additional properties can be used:
imageNginx.repo
, which should have the value ofmarketplace.gcr.io/google/nginx
for the default value.imageNginx.tag
, which should have the value of1.0
for the default value.
Supporting base64 encoded string
Example:
properties:
explicitPassword:
type: string
x-google-marketplace:
type: STRING
string:
generatedProperties:
base64Encoded: explicitPasswordEncoded
In your manifests, explicitPasswordEncoded
can additionally be used. It contains the value of explicitPassword
encoded in base 64.
v0.5.1
v0.5
v0.4
Breaking changes
- Please update your Dockerfile's
FROM
line. The deployer base images moved fromgcr.io/google-marketplace-tools/k8s/deployer_helm
togcr.io/cloud-marketplace-tools/k8s/deployer_helm
. See example.
Fixes
- Fixes for Mac OS compatibility issues. Command
make app/verify
now works correctly on Mac OS.
New features
- Base deployer images are now available for direct pulls at gcr.io/cloud-marketplace-tools/k8s
v0.3
Breaking changes
Scripts
Start.sh
Script start.sh
doesn't have --test_parameters
anymore. The parameters for testing should be specified in --parameters
.
Script start_test.sh
is deprecated. Verification should use 'start.sh' with with --entrypoint
set to 'deploy_with_tests.sh'
Complete example here.
Stop.sh
Script stop.sh
now requires extra parameters:
--namespace
: to specify the kubernetes namespace--name
: to specify the name of the application
Example here.
Driver.sh
Script driver.sh
now requires --parameters
, the same way start.sh
does. Example here.
Features
Schema file
Supporting Service Account and Storage Class as dependency resources
Some dependency resources can be now be specified through schema files. If the resource does not exist yet, a new resource will be provisioned according to the specifications required for that resource (examples are based on the different type of resources). For now, we support Service Account and Storage Class.
Service account
In schema.yaml
:
properties:
operatorServiceAccount:
type: string
x-google-marketplace:
type: SERVICE_ACCOUNT
serviceAccount:
roles:
# You can list one or more roles following the examples below.
- type: ClusterRole # This is a cluster-wide ClusterRole
rulesType: PREDEFINED
rulesFromRoleName: edit # Use predefined role named "edit"
- type: Role # This is a namespaced Role
rulesType: CUSTOM # We specify our own custom RBAC rules
rules:
- apiGroups: ['apps.kubernetes.io/v1alpha1']
resources: ['Application']
verbs: ['*']
- type: ClusterRole
rulesType: CUSTOM
rules:
- apiGroups: ['etcd.database.coreos.com/v1beta2']
resources: ['EtcdCluster']
verbs: ['*']
The resulting ServiceAccount (as well as Roles and RoleBindings) will be created in the same namespace as the application.
This is a real usage example from spark operator app.
SSD storage class
In schema.yaml
:
properties:
storageClass:
type: string
x-google-marketplace:
type: STORAGE_CLASS
storageClass:
type: SSD
Dependency resources can be referenced by its property name in manifests, just like any other property defined in schema.yaml
.