PFS Release Notes

v0.4.0

Release Date: Sep 18, 2019

This preview release of Pivotal Function Service is not intended for use in a production environment.

Distribution

PFS is now distributed in the form of thick Cloud Native Application Bundle (CNAB) which includes container images inside the bundle.

The release also includes the duffle CNAB installer. PFS is no longer installed into a Kubernetes cluster using the pfs CLI.

Builds

PFS now supports builds for applications and containers as well as for functions. Each build resource reports the latest image that a runtime uses to deploy the built workload. The built image is always reported as a digested image, making the detection and rollout of changes more deterministic.

Choice of Runtimes

PFS no longer has a hard dependency on Knative and Istio. Knative integration is provided by the Knative runtime, which is available in clusters with Knative Serving installed. Istio is only required for the Knative runtime.

pfs CLI

Creating a function builds the container image, but it no longer deploys the function as a Knative workload. Functions are deployed using the deployment features of the runtime, and Knative is just one runtime option.

Other highlights of the new CLI include:

  • --tail to watch logs during create until the resource is ready or fails
  • tail command to watch all logs for a resource until canceled
  • delete and list commands for every resource that is created
  • colorized output

system CRDs

Powering the new build and runtime models is riff System. riff System provides Kubernetes CRDs and a controller to reconcile the state of custom riff resources with other resources.

Known Issues

v0.2.0

Release Date: May 7, 2019

This preview release of Pivotal Function Service is not intended for use in a production environment. Features are subject to change without notice in future releases.

Distribution

PFS is now distributed in 2 formats.

  • The thin distribution does not include container images, and can be used for installing directly from publicly accessible registries. Images are referenced with SHA-256 digests to ensure that they have not been modified.

  • The thick distribution includes all container images in a more compact form than the v0.1.0 release, and can be used to install PFS by pulling images relocated to a private registry. This is useful for airgapped installs.

Installation

  • The pfs CLI is now available for Windows, in addition to macOS and Linux.
  • Local Windows installs can target Minikube or Docker Desktop for Windows.
  • Running a local registry is no longer required to install PFS locally on Minikube or Docker.

pfs CLI

  • pfs namespace init offers basic auth for alternative registries like Harbor.
  • pfs function create
    • --local-path builds no longer require environment variables for PFS_BUILDER_IMAGE and PFS_PACKS_RUN_IMAGE, and can be used with authenticated registries such as GCR.
    • --git-repo builds support --sub-path for building from a subdirectory.
    • --image names are optional, inferred from the function name and the registry or image-prefix configured for the namespace.
  • pfs function build can be used to build an image without creating a Knative service.
  • pfs service invoke offers improved error handling.
  • pfs system install and pfs system uninstall provide improved robustness.
  • pfs channel create will automatically use a default channel provisioner.
  • pfs subscription create accepts --reply instead of --reply-to.
  • pfs namespace cleanup is similar to system uninstall, but for a namespace.
  • pfs image relocate accepts just --repository-prefix instead of requiring both --registry and --registry-user.
  • The pfs CLI should work with OIDC authentication providers such as UAA in PKS.

Knative

Cloud Native Buildpacks

  • update to pack v0.1.0
  • The builder now uses a separate buildpack per function invoker
  • A riff.toml file in the build directory can be used to specify invoker parameters.
  • The Java buildpack includes support for Java 11. Please add a source version of Java 8 or later to your Maven pom or Gradle build.

    Maven

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
    

    Gradle

    sourceCompatibility = 1.8
    

Limitations

  • The pfs CLI v0.1.0 cannot be used to install this release as the format of the distribution archive has changed. Please ensure you are using pfs CLI v0.2.0.

Known Issues

  • Under Windows, the CLI password prompt for the --registry-user and --docker-hub options of pfs namespace init does not work with git bash. Please use the Windows PowerShell or Command terminal instead.

v0.1.0

Release Date: December 7, 2018

This preview release of Pivotal Function Service is not intended for use in a production environment. Features are subject to change without notice in future releases.

Features

  • Supports PKS on GCP, PKS on vSphere, GKE, and Minikube. For more information, see Installing PFS.
  • Supports private registries. For more information, see Registries and Relocate Container Images.
  • Supports Java, JavaScript, and Command functions in one or more namespaces. For more information, see Functions and Invokers and Using PFS.
  • Supports cloud-native buildpacks. For more information, see PFS Buildpacks.
  • Supports in-cluster builds and for Minikube, local builds. For more information, see Using PFS.
  • Supports eventing. For more information, see Eventing and Using Eventing Channels.
    • Currently only supports the in-memory stub bus.
  • Includes the pfs command line interface. For more information, see The pfs Command Line Interface.
  • Supports Knative. This includes the following:
    • Knative/build for building containers from source.
    • Knative/serving for deploying, managing, and autoscaling Knative container workloads.
    • Knative/eventing for connecting Knative container workloads over publish-subscribe channels.
  • Supports Istio. For more information, see PFS Component Layering.

Limitations

  • PFS on PKS is supported on GCP with GCR as a registry and on vSphere with a container registry configured as documented. Other IaaS platforms, will be supported in future releases of PFS.
  • Installation from images relocated to a private registry is supported only from a cluster on GCP with the GCR registry.
  • The pfs CLI runs only on macOS and Linux. Windows is not supported.
  • The pfs CLI does not support OIDC authentication providers such as UAA in PKS.
  • pfs function create with --local-path is supported only when the builder and run images can be pulled from an unauthenticated registry (Minikube).
  • JavaScript streaming functions are experimental.
  • Custom languages, buildpacks, and invokers are not supported.
  • The eventing features and event sources in Knative are under development.
  • Knative monitoring features are not included in this release of PFS.
  • Exporting metrics from StatsD to Prometheus is not supported. The deployment istio-statsd-prom-bridge, a deprecated Istio service, is omitted from PFS.
  • Collection of logs under /var/log is not supported. The image k8s.gcr.io/fluentd-elasticsearch is omitted from PFS.

Known Issues

  1. The pfs function create command may fail with the following error:

    Error: failed to : find metadata: unexpected end of JSON input
    

    This error occurs when a previous image has incompatible metadata. You can work around this issue by specifying a different image name in the --image flag or by deleting the remote image. For more information, see issue #21 in the buildpack lifecycle component on GitHub.

  2. In some cases pfs service invoke may not return the result of the first invocation of function after scaling down to zero. For more information, see riff issue #1004.