Announcing Cloudfoundry for Kubernetes 0.1.0 release


Chip Childers <cchilders@...>
 

Awesome! Once those are ready, let us know so that we can us that to help folks that land on the main cloudfoundry.org site. :)

It's also a topic in the Cloud Foundry and Kubernetes tutorial here > http://tutorials.cloudfoundry.org/cf-and-k8s/docs/cf-on-k8s/

Feedback on that welcome (or just PR any proposed changes!) > https://github.com/cloudfoundry-tutorials/cf-and-k8s

Chip Childers
Executive Director
Cloud Foundry Foundation


On Mon, Apr 13, 2020 at 3:10 PM Troy Topnik <troy.topnik@...> wrote:
Congratulations Sai and everyone working in CF-for-K8s! 

@Chip and Dan: As Sai mentions, we'll be drafting something for cloudfoundry.org and/or docs.cloudfoundry.org to point users to the appropriate project for their interest or need. We also talked about putting some "if you're looking for..." blurbs in both project READMEs to help clarify.

TT

--
Troy Topnik
Senior Product Manager, 
SUSE Cloud Application Platform 
 


Troy Topnik
 

Congratulations Sai and everyone working in CF-for-K8s! 

@Chip and Dan: As Sai mentions, we'll be drafting something for cloudfoundry.org and/or docs.cloudfoundry.org to point users to the appropriate project for their interest or need. We also talked about putting some "if you're looking for..." blurbs in both project READMEs to help clarify.

TT

--
Troy Topnik
Senior Product Manager, 
SUSE Cloud Application Platform 
troy.topnik@...
 


Chip Childers <cchilders@...>
 

Awesome! Thanks Sai, Troy, Swarna and everyone that is working to bring cf to k8s. :)

Chip Childers
Executive Director
Cloud Foundry Foundation


On Fri, Apr 10, 2020 at 3:43 PM Saikiran Yerram <syerram@...> wrote:
Hey Chip,

Thanks! A lot of people were involved in making this happen!

Yes, that is the plan. We discussed this topic in one of the SIG calls last month but now is a good time to make that happen as we have our first 0.1.0 release. 

My plan is to work with Troy Topnik, Swarna to build this page. Troy already published a blog post with comparisons but it is worth having a dedicated page on Cloud Foundry with details so that users can decide which project to start with. Also, we will need to keep it up to date, so our users continue to get optimal experience as the products evolve.

Thanks,
Sai


Saikiran Yerram
 

Hey Chip,

Thanks! A lot of people were involved in making this happen!

Yes, that is the plan. We discussed this topic in one of the SIG calls last month but now is a good time to make that happen as we have our first 0.1.0 release. 

My plan is to work with Troy Topnik, Swarna to build this page. Troy already published a blog post with comparisons but it is worth having a dedicated page on Cloud Foundry with details so that users can decide which project to start with. Also, we will need to keep it up to date, so our users continue to get optimal experience as the products evolve.

Thanks,
Sai


Daniel Jones
 

+1 for this. It's confusing for customers/users, and undermines confidence in the ecosystem if people aren't sure what/how to pick and when/if they may converge.

Regards,
Daniel 'Deejay' Jones - CEO
+44 (0)79 8000 9153
EngineerBetter Ltd - More than cloud platform specialists


On Fri, 10 Apr 2020 at 15:24, Chip Childers <cchilders@...> wrote:
This is awesome news. Well done to the RelInt team!

Have the KubeCF and RelInt considered creating a document somewhere that folks can reference to know what the "current state" differences between KubeCF and cf-for-k8s are? IMO, that will help people navigate what will be an ever-changing set of differences/similarities when deciding which project to start with.

Chip Childers
Executive Director
Cloud Foundry Foundation


On Thu, Apr 9, 2020 at 7:17 PM Saikiran Yerram <syerram@...> wrote:

Release Notes

--------------------

Introducing the v0.1.0 alpha version of Cloud Foundry for Kubernetes

Installation

Follow the instructions in the How to Deploy document.

Background

The Release Integration team has been developing a Cloud Foundry deployment artifact to install the Cloud Foundry Foundation on a Kubernetes cluster. The deployment artifact contains the new Kubernetes-native CF components, which are built on top of popular Kubernetes projects like kpack, fluentd, and Istio.


The deployment artifact has been available to the community for some time with limited capabilities. The primary goal was to enable CF contributing projects to rapidly iterate on their components.


With the recent integration of buildpacks support, we are excited to release the first version, 0.1, of this product "Cloud Foundry for Kubernetes" (aka "cf-for-k8s"). We will continue to create 0.X releases as new capabilities are added and we improve stability of cf-for-k8s. We plan to establish a release cadence.

Highlights

App staging with kpack

With the 0.1 release, users can now push an app with source code. In the Cloud Foundry for Bosh, the Cloud Controller issues a staging request to Diego, which detects and builds a droplet with the right Cloud Foundry build packs. Once the droplet is built, it then schedules the app on one or more Diego cells.  


In cf-for-k8s, CAPI issues the request to kpack, which uses cloud-native buildpacks to detect the app language and then build the app image. Once the app image is available, the image is pushed to the app registry and a request is sent to Eirini to schedule the app workloads, which are scheduled as one or more K8s pod deployments. Once the app workloads are available, users can curl the app.

Encrypted communication

The v0.1 release comes with Istio, which enforces encrypted communication between components, app workloads, and ingress gateway. In the Cloud Foundry for Bosh, each component owned the responsibility of managing and enforcing encrypted communication. All of this responsibility is now delegated to Istio. 


Istio uses sidecar, which is deployed to every pod, to encrypt communication between all CF components, app workloads and shared resources like the database. In addition, Istio will rotate certificates automatically without requiring any intervention from the component teams or platform engineers.

Manage cf-for-k8s lifecycle with kapp

In the Cloud Foundry for Bosh, Platform engineers and Contributing teams relied on bosh deploy command to install, upgrade or remove Cloud Foundry foundation on VMs. 


Kapp provides a similar experience where users can install, upgrade or remove Cloud Foundry on Kubernetes. Unlike kubectl apply command that exits before resources are created in the cluster, kapp waits until all resources are created and continuously provides status updates on the resource availability. In addition, kapp can delete all cf-for-k8s resources in one swoop.


Furthermore, kapp provides resource differences when upgrading to new versions of cf-for-k8s. Platform engineers can audit the differences (new resources, updates to existing resources) between their current foundation and the new version (e.g. new version of cf-for-k8s may bump cluster resource needs).

Templating with ytt 

ytt (pronounced spelled out) is a templating tool that understands YAML structure. Product delivery teams can use it to create reusable YAML templates that operators can use for product configuration.


Reusable configuration and built in full featured programming language help ease the burden of configuring complex software. The built in YAML structure helps reduce the mental overhead of YAML construction. You can reuse the same templates in different environments by injecting environment-specific values (via cf-install-values.yml) at deploy time. For example, configuring app registry, your domain certificates and so on. 


Furthermore, with the custom validations, and fast and deterministic execution, you can take advantage of faster feedback loops when creating, testing, and deploying templates.

ytt ‘s “overlay” functionality helps users manage the customization of complex software configuration by providing advanced configuration. Using an overlay, you can replace parts or whole of cf-for-k8s templates. For e.g. see `remove-resource-requirements.yml`, which reduces needs for matching resources, so cf-for-k8s can be installed on smaller environments.


Documentation

The main documentation page for cf-for-k8s contains a variety of resources to help get you started. You can find instructions on deploying CF, guidelines for contributors, and other helpful resources. We eagerly accept PRs if you have corrections, suggestions, etc.

Configuration options

Platform operators define their configuration using a cf-for-k8s “values” file. See the sample-cf-install-values.yml file as suggested by the deploy documentation.


  • cf-for-k8s has been shown to run on multiple distributions of Kubernetes, including GKE, PKS, AKS, EKS, Minikube and Kind. 

  • Both Docker Hub and Google’s Container Registry can be used as the App Registry.


If there are any missing configuration options, we recommend you create a feature request issue in the cf-for-k8s repository. We would like to know more about your usecases. 

Compatibility

Kubernetes

  • 1.15 or 1.16

Known Issues

For a list of known issues with this release, please visit the issues page in the repository. A few notable issues are listed below,


  1. cf push does not stream app staging logs.

  2. Upgrading cf-for-k8s is not yet supported

  3. Custom buildpacks and cf cli buildpacks related commands are not supported.

Feedback

We love feedback. Please file a GitHub issue for bugs, feature requests, or suggestions. Or reach out to us on Cloud Foundry Slack in #cf-for-k8s.

Coming Next

You can see our upcoming prioritized work in our CF Release Integration tracker project.

Resources

tools from k14s - ytt, kapp, kbld


--
Saikiran Yerram


Dieu Cao <dcao@...>
 

Woohoo!


On Fri, Apr 10, 2020 at 7:24 AM Chip Childers <cchilders@...> wrote:
This is awesome news. Well done to the RelInt team!

Have the KubeCF and RelInt considered creating a document somewhere that folks can reference to know what the "current state" differences between KubeCF and cf-for-k8s are? IMO, that will help people navigate what will be an ever-changing set of differences/similarities when deciding which project to start with.

Chip Childers
Executive Director
Cloud Foundry Foundation


On Thu, Apr 9, 2020 at 7:17 PM Saikiran Yerram <syerram@...> wrote:

Release Notes

--------------------

Introducing the v0.1.0 alpha version of Cloud Foundry for Kubernetes

Installation

Follow the instructions in the How to Deploy document.

Background

The Release Integration team has been developing a Cloud Foundry deployment artifact to install the Cloud Foundry Foundation on a Kubernetes cluster. The deployment artifact contains the new Kubernetes-native CF components, which are built on top of popular Kubernetes projects like kpack, fluentd, and Istio.


The deployment artifact has been available to the community for some time with limited capabilities. The primary goal was to enable CF contributing projects to rapidly iterate on their components.


With the recent integration of buildpacks support, we are excited to release the first version, 0.1, of this product "Cloud Foundry for Kubernetes" (aka "cf-for-k8s"). We will continue to create 0.X releases as new capabilities are added and we improve stability of cf-for-k8s. We plan to establish a release cadence.

Highlights

App staging with kpack

With the 0.1 release, users can now push an app with source code. In the Cloud Foundry for Bosh, the Cloud Controller issues a staging request to Diego, which detects and builds a droplet with the right Cloud Foundry build packs. Once the droplet is built, it then schedules the app on one or more Diego cells.  


In cf-for-k8s, CAPI issues the request to kpack, which uses cloud-native buildpacks to detect the app language and then build the app image. Once the app image is available, the image is pushed to the app registry and a request is sent to Eirini to schedule the app workloads, which are scheduled as one or more K8s pod deployments. Once the app workloads are available, users can curl the app.

Encrypted communication

The v0.1 release comes with Istio, which enforces encrypted communication between components, app workloads, and ingress gateway. In the Cloud Foundry for Bosh, each component owned the responsibility of managing and enforcing encrypted communication. All of this responsibility is now delegated to Istio. 


Istio uses sidecar, which is deployed to every pod, to encrypt communication between all CF components, app workloads and shared resources like the database. In addition, Istio will rotate certificates automatically without requiring any intervention from the component teams or platform engineers.

Manage cf-for-k8s lifecycle with kapp

In the Cloud Foundry for Bosh, Platform engineers and Contributing teams relied on bosh deploy command to install, upgrade or remove Cloud Foundry foundation on VMs. 


Kapp provides a similar experience where users can install, upgrade or remove Cloud Foundry on Kubernetes. Unlike kubectl apply command that exits before resources are created in the cluster, kapp waits until all resources are created and continuously provides status updates on the resource availability. In addition, kapp can delete all cf-for-k8s resources in one swoop.


Furthermore, kapp provides resource differences when upgrading to new versions of cf-for-k8s. Platform engineers can audit the differences (new resources, updates to existing resources) between their current foundation and the new version (e.g. new version of cf-for-k8s may bump cluster resource needs).

Templating with ytt 

ytt (pronounced spelled out) is a templating tool that understands YAML structure. Product delivery teams can use it to create reusable YAML templates that operators can use for product configuration.


Reusable configuration and built in full featured programming language help ease the burden of configuring complex software. The built in YAML structure helps reduce the mental overhead of YAML construction. You can reuse the same templates in different environments by injecting environment-specific values (via cf-install-values.yml) at deploy time. For example, configuring app registry, your domain certificates and so on. 


Furthermore, with the custom validations, and fast and deterministic execution, you can take advantage of faster feedback loops when creating, testing, and deploying templates.

ytt ‘s “overlay” functionality helps users manage the customization of complex software configuration by providing advanced configuration. Using an overlay, you can replace parts or whole of cf-for-k8s templates. For e.g. see `remove-resource-requirements.yml`, which reduces needs for matching resources, so cf-for-k8s can be installed on smaller environments.


Documentation

The main documentation page for cf-for-k8s contains a variety of resources to help get you started. You can find instructions on deploying CF, guidelines for contributors, and other helpful resources. We eagerly accept PRs if you have corrections, suggestions, etc.

Configuration options

Platform operators define their configuration using a cf-for-k8s “values” file. See the sample-cf-install-values.yml file as suggested by the deploy documentation.


  • cf-for-k8s has been shown to run on multiple distributions of Kubernetes, including GKE, PKS, AKS, EKS, Minikube and Kind. 

  • Both Docker Hub and Google’s Container Registry can be used as the App Registry.


If there are any missing configuration options, we recommend you create a feature request issue in the cf-for-k8s repository. We would like to know more about your usecases. 

Compatibility

Kubernetes

  • 1.15 or 1.16

Known Issues

For a list of known issues with this release, please visit the issues page in the repository. A few notable issues are listed below,


  1. cf push does not stream app staging logs.

  2. Upgrading cf-for-k8s is not yet supported

  3. Custom buildpacks and cf cli buildpacks related commands are not supported.

Feedback

We love feedback. Please file a GitHub issue for bugs, feature requests, or suggestions. Or reach out to us on Cloud Foundry Slack in #cf-for-k8s.

Coming Next

You can see our upcoming prioritized work in our CF Release Integration tracker project.

Resources

tools from k14s - ytt, kapp, kbld


--
Saikiran Yerram


Chip Childers <cchilders@...>
 

This is awesome news. Well done to the RelInt team!

Have the KubeCF and RelInt considered creating a document somewhere that folks can reference to know what the "current state" differences between KubeCF and cf-for-k8s are? IMO, that will help people navigate what will be an ever-changing set of differences/similarities when deciding which project to start with.

Chip Childers
Executive Director
Cloud Foundry Foundation


On Thu, Apr 9, 2020 at 7:17 PM Saikiran Yerram <syerram@...> wrote:

Release Notes

--------------------

Introducing the v0.1.0 alpha version of Cloud Foundry for Kubernetes

Installation

Follow the instructions in the How to Deploy document.

Background

The Release Integration team has been developing a Cloud Foundry deployment artifact to install the Cloud Foundry Foundation on a Kubernetes cluster. The deployment artifact contains the new Kubernetes-native CF components, which are built on top of popular Kubernetes projects like kpack, fluentd, and Istio.


The deployment artifact has been available to the community for some time with limited capabilities. The primary goal was to enable CF contributing projects to rapidly iterate on their components.


With the recent integration of buildpacks support, we are excited to release the first version, 0.1, of this product "Cloud Foundry for Kubernetes" (aka "cf-for-k8s"). We will continue to create 0.X releases as new capabilities are added and we improve stability of cf-for-k8s. We plan to establish a release cadence.

Highlights

App staging with kpack

With the 0.1 release, users can now push an app with source code. In the Cloud Foundry for Bosh, the Cloud Controller issues a staging request to Diego, which detects and builds a droplet with the right Cloud Foundry build packs. Once the droplet is built, it then schedules the app on one or more Diego cells.  


In cf-for-k8s, CAPI issues the request to kpack, which uses cloud-native buildpacks to detect the app language and then build the app image. Once the app image is available, the image is pushed to the app registry and a request is sent to Eirini to schedule the app workloads, which are scheduled as one or more K8s pod deployments. Once the app workloads are available, users can curl the app.

Encrypted communication

The v0.1 release comes with Istio, which enforces encrypted communication between components, app workloads, and ingress gateway. In the Cloud Foundry for Bosh, each component owned the responsibility of managing and enforcing encrypted communication. All of this responsibility is now delegated to Istio. 


Istio uses sidecar, which is deployed to every pod, to encrypt communication between all CF components, app workloads and shared resources like the database. In addition, Istio will rotate certificates automatically without requiring any intervention from the component teams or platform engineers.

Manage cf-for-k8s lifecycle with kapp

In the Cloud Foundry for Bosh, Platform engineers and Contributing teams relied on bosh deploy command to install, upgrade or remove Cloud Foundry foundation on VMs. 


Kapp provides a similar experience where users can install, upgrade or remove Cloud Foundry on Kubernetes. Unlike kubectl apply command that exits before resources are created in the cluster, kapp waits until all resources are created and continuously provides status updates on the resource availability. In addition, kapp can delete all cf-for-k8s resources in one swoop.


Furthermore, kapp provides resource differences when upgrading to new versions of cf-for-k8s. Platform engineers can audit the differences (new resources, updates to existing resources) between their current foundation and the new version (e.g. new version of cf-for-k8s may bump cluster resource needs).

Templating with ytt 

ytt (pronounced spelled out) is a templating tool that understands YAML structure. Product delivery teams can use it to create reusable YAML templates that operators can use for product configuration.


Reusable configuration and built in full featured programming language help ease the burden of configuring complex software. The built in YAML structure helps reduce the mental overhead of YAML construction. You can reuse the same templates in different environments by injecting environment-specific values (via cf-install-values.yml) at deploy time. For example, configuring app registry, your domain certificates and so on. 


Furthermore, with the custom validations, and fast and deterministic execution, you can take advantage of faster feedback loops when creating, testing, and deploying templates.

ytt ‘s “overlay” functionality helps users manage the customization of complex software configuration by providing advanced configuration. Using an overlay, you can replace parts or whole of cf-for-k8s templates. For e.g. see `remove-resource-requirements.yml`, which reduces needs for matching resources, so cf-for-k8s can be installed on smaller environments.


Documentation

The main documentation page for cf-for-k8s contains a variety of resources to help get you started. You can find instructions on deploying CF, guidelines for contributors, and other helpful resources. We eagerly accept PRs if you have corrections, suggestions, etc.

Configuration options

Platform operators define their configuration using a cf-for-k8s “values” file. See the sample-cf-install-values.yml file as suggested by the deploy documentation.


  • cf-for-k8s has been shown to run on multiple distributions of Kubernetes, including GKE, PKS, AKS, EKS, Minikube and Kind. 

  • Both Docker Hub and Google’s Container Registry can be used as the App Registry.


If there are any missing configuration options, we recommend you create a feature request issue in the cf-for-k8s repository. We would like to know more about your usecases. 

Compatibility

Kubernetes

  • 1.15 or 1.16

Known Issues

For a list of known issues with this release, please visit the issues page in the repository. A few notable issues are listed below,


  1. cf push does not stream app staging logs.

  2. Upgrading cf-for-k8s is not yet supported

  3. Custom buildpacks and cf cli buildpacks related commands are not supported.

Feedback

We love feedback. Please file a GitHub issue for bugs, feature requests, or suggestions. Or reach out to us on Cloud Foundry Slack in #cf-for-k8s.

Coming Next

You can see our upcoming prioritized work in our CF Release Integration tracker project.

Resources

tools from k14s - ytt, kapp, kbld


--
Saikiran Yerram


Krannich, Bernd
 

Congrats to Sai and the Pivotal team!

 

Regards,

Bernd

 

From: <cf-dev@...> on behalf of Saikiran Yerram <syerram@...>
Reply-To: "cf-dev@..." <cf-dev@...>
Date: Friday, 10. April 2020 at 01:17
To: "cf-dev@..." <cf-dev@...>
Subject: [cf-dev] Announcing Cloudfoundry for Kubernetes 0.1.0 release

 

Release Notes

--------------------

Introducing the v0.1.0 alpha version of Cloud Foundry for Kubernetes

Installation

Follow the instructions in the How to Deploy document.

Background

The Release Integration team has been developing a Cloud Foundry deployment artifact to install the Cloud Foundry Foundation on a Kubernetes cluster. The deployment artifact contains the new Kubernetes-native CF components, which are built on top of popular Kubernetes projects like kpack, fluentd, and Istio.

 

The deployment artifact has been available to the community for some time with limited capabilities. The primary goal was to enable CF contributing projects to rapidly iterate on their components.

 

With the recent integration of buildpacks support, we are excited to release the first version, 0.1, of this product "Cloud Foundry for Kubernetes" (aka "cf-for-k8s"). We will continue to create 0.X releases as new capabilities are added and we improve stability of cf-for-k8s. We plan to establish a release cadence.

Highlights

App staging with kpack

With the 0.1 release, users can now push an app with source code. In the Cloud Foundry for Bosh, the Cloud Controller issues a staging request to Diego, which detects and builds a droplet with the right Cloud Foundry build packs. Once the droplet is built, it then schedules the app on one or more Diego cells.  

 

In cf-for-k8s, CAPI issues the request to kpack, which uses cloud-native buildpacks to detect the app language and then build the app image. Once the app image is available, the image is pushed to the app registry and a request is sent to Eirini to schedule the app workloads, which are scheduled as one or more K8s pod deployments. Once the app workloads are available, users can curl the app.

Encrypted communication

The v0.1 release comes with Istio, which enforces encrypted communication between components, app workloads, and ingress gateway. In the Cloud Foundry for Bosh, each component owned the responsibility of managing and enforcing encrypted communication. All of this responsibility is now delegated to Istio. 

 

Istio uses sidecar, which is deployed to every pod, to encrypt communication between all CF components, app workloads and shared resources like the database. In addition, Istio will rotate certificates automatically without requiring any intervention from the component teams or platform engineers.

Manage cf-for-k8s lifecycle with kapp

In the Cloud Foundry for Bosh, Platform engineers and Contributing teams relied on bosh deploy command to install, upgrade or remove Cloud Foundry foundation on VMs. 

 

Kapp provides a similar experience where users can install, upgrade or remove Cloud Foundry on Kubernetes. Unlike kubectl apply command that exits before resources are created in the cluster, kapp waits until all resources are created and continuously provides status updates on the resource availability. In addition, kapp can delete all cf-for-k8s resources in one swoop.

 

Furthermore, kapp provides resource differences when upgrading to new versions of cf-for-k8s. Platform engineers can audit the differences (new resources, updates to existing resources) between their current foundation and the new version (e.g. new version of cf-for-k8s may bump cluster resource needs).

Templating with ytt 

ytt (pronounced spelled out) is a templating tool that understands YAML structure. Product delivery teams can use it to create reusable YAML templates that operators can use for product configuration.

 

Reusable configuration and built in full featured programming language help ease the burden of configuring complex software. The built in YAML structure helps reduce the mental overhead of YAML construction. You can reuse the same templates in different environments by injecting environment-specific values (via cf-install-values.yml) at deploy time. For example, configuring app registry, your domain certificates and so on. 

 

Furthermore, with the custom validations, and fast and deterministic execution, you can take advantage of faster feedback loops when creating, testing, and deploying templates.

ytt ‘s “overlay” functionality helps users manage the customization of complex software configuration by providing advanced configuration. Using an overlay, you can replace parts or whole of cf-for-k8s templates. For e.g. see `remove-resource-requirements.yml`, which reduces needs for matching resources, so cf-for-k8s can be installed on smaller environments.

 

Documentation

The main documentation page for cf-for-k8s contains a variety of resources to help get you started. You can find instructions on deploying CF, guidelines for contributors, and other helpful resources. We eagerly accept PRs if you have corrections, suggestions, etc.

Configuration options

Platform operators define their configuration using a cf-for-k8s “values” file. See the sample-cf-install-values.yml file as suggested by the deploy documentation.

 

  •  
  • cf-for-k8s has been shown
  • to run on multiple distributions of Kubernetes, including GKE, PKS, AKS, EKS, Minikube and Kind. 
  •  
  •  
  • Both Docker Hub and Google’s
  • Container Registry can be used as the App Registry.
  •  

 

If there are any missing configuration options, we recommend you create a feature request issue in the cf-for-k8s repository. We would like to know more about your usecases. 

Compatibility

Kubernetes

  •  
  • 1.15 or 1.16
  •  

Known Issues

For a list of known issues with this release, please visit the issues page in the repository. A few notable issues are listed below,

 

  1.  
  2. cf
  3. push does not stream app staging logs.
  4.  
  5.  
  6. Upgrading
  7. cf-for-k8s is not yet supported
  8.  
  9.  
  10. Custom
  11. buildpacks and cf cli buildpacks related commands are not supported.
  12.  

Feedback

We love feedback. Please file a GitHub issue for bugs, feature requests, or suggestions. Or reach out to us on Cloud Foundry Slack in #cf-for-k8s.

Coming Next

You can see our upcoming prioritized work in our CF Release Integration tracker project.

Resources

tools from k14s - ytt, kapp, kbld

 

--

Saikiran Yerram


Saikiran Yerram
 

Release Notes

--------------------

Introducing the v0.1.0 alpha version of Cloud Foundry for Kubernetes

Installation

Follow the instructions in the How to Deploy document.

Background

The Release Integration team has been developing a Cloud Foundry deployment artifact to install the Cloud Foundry Foundation on a Kubernetes cluster. The deployment artifact contains the new Kubernetes-native CF components, which are built on top of popular Kubernetes projects like kpack, fluentd, and Istio.


The deployment artifact has been available to the community for some time with limited capabilities. The primary goal was to enable CF contributing projects to rapidly iterate on their components.


With the recent integration of buildpacks support, we are excited to release the first version, 0.1, of this product "Cloud Foundry for Kubernetes" (aka "cf-for-k8s"). We will continue to create 0.X releases as new capabilities are added and we improve stability of cf-for-k8s. We plan to establish a release cadence.

Highlights

App staging with kpack

With the 0.1 release, users can now push an app with source code. In the Cloud Foundry for Bosh, the Cloud Controller issues a staging request to Diego, which detects and builds a droplet with the right Cloud Foundry build packs. Once the droplet is built, it then schedules the app on one or more Diego cells.  


In cf-for-k8s, CAPI issues the request to kpack, which uses cloud-native buildpacks to detect the app language and then build the app image. Once the app image is available, the image is pushed to the app registry and a request is sent to Eirini to schedule the app workloads, which are scheduled as one or more K8s pod deployments. Once the app workloads are available, users can curl the app.

Encrypted communication

The v0.1 release comes with Istio, which enforces encrypted communication between components, app workloads, and ingress gateway. In the Cloud Foundry for Bosh, each component owned the responsibility of managing and enforcing encrypted communication. All of this responsibility is now delegated to Istio. 


Istio uses sidecar, which is deployed to every pod, to encrypt communication between all CF components, app workloads and shared resources like the database. In addition, Istio will rotate certificates automatically without requiring any intervention from the component teams or platform engineers.

Manage cf-for-k8s lifecycle with kapp

In the Cloud Foundry for Bosh, Platform engineers and Contributing teams relied on bosh deploy command to install, upgrade or remove Cloud Foundry foundation on VMs. 


Kapp provides a similar experience where users can install, upgrade or remove Cloud Foundry on Kubernetes. Unlike kubectl apply command that exits before resources are created in the cluster, kapp waits until all resources are created and continuously provides status updates on the resource availability. In addition, kapp can delete all cf-for-k8s resources in one swoop.


Furthermore, kapp provides resource differences when upgrading to new versions of cf-for-k8s. Platform engineers can audit the differences (new resources, updates to existing resources) between their current foundation and the new version (e.g. new version of cf-for-k8s may bump cluster resource needs).

Templating with ytt 

ytt (pronounced spelled out) is a templating tool that understands YAML structure. Product delivery teams can use it to create reusable YAML templates that operators can use for product configuration.


Reusable configuration and built in full featured programming language help ease the burden of configuring complex software. The built in YAML structure helps reduce the mental overhead of YAML construction. You can reuse the same templates in different environments by injecting environment-specific values (via cf-install-values.yml) at deploy time. For example, configuring app registry, your domain certificates and so on. 


Furthermore, with the custom validations, and fast and deterministic execution, you can take advantage of faster feedback loops when creating, testing, and deploying templates.

ytt ‘s “overlay” functionality helps users manage the customization of complex software configuration by providing advanced configuration. Using an overlay, you can replace parts or whole of cf-for-k8s templates. For e.g. see `remove-resource-requirements.yml`, which reduces needs for matching resources, so cf-for-k8s can be installed on smaller environments.


Documentation

The main documentation page for cf-for-k8s contains a variety of resources to help get you started. You can find instructions on deploying CF, guidelines for contributors, and other helpful resources. We eagerly accept PRs if you have corrections, suggestions, etc.

Configuration options

Platform operators define their configuration using a cf-for-k8s “values” file. See the sample-cf-install-values.yml file as suggested by the deploy documentation.


  • cf-for-k8s has been shown to run on multiple distributions of Kubernetes, including GKE, PKS, AKS, EKS, Minikube and Kind. 

  • Both Docker Hub and Google’s Container Registry can be used as the App Registry.


If there are any missing configuration options, we recommend you create a feature request issue in the cf-for-k8s repository. We would like to know more about your usecases. 

Compatibility

Kubernetes

  • 1.15 or 1.16

Known Issues

For a list of known issues with this release, please visit the issues page in the repository. A few notable issues are listed below,


  1. cf push does not stream app staging logs.

  2. Upgrading cf-for-k8s is not yet supported

  3. Custom buildpacks and cf cli buildpacks related commands are not supported.

Feedback

We love feedback. Please file a GitHub issue for bugs, feature requests, or suggestions. Or reach out to us on Cloud Foundry Slack in #cf-for-k8s.

Coming Next

You can see our upcoming prioritized work in our CF Release Integration tracker project.

Resources

tools from k14s - ytt, kapp, kbld


--
Saikiran Yerram