Today we are proud to announce Kontena Pharos 1.1.0, the latest release of our Kubernetes distribution, now with user definable add-ons and an OpenEBS add-on. See the Kontena Pharos 1.1.0 release notes for the full list of changes.

User Definable Add-ons

Kontena Pharos includes most common functionality via built-in add-ons, like Ingress NGINX and Cert Manager.

Quite often these built-in add-ons are not enough which means that the cluster admin needs to use kubectl and shell scripts to automate the last few steps in the Kontena Pharos cluster setup. We thought that there is room for improvement here so we've addressed it in this latest release.

With Kontena Pharos 1.1, adding extra spices to a Kontena Pharos cluster is easy via user definable add-ons (external). In practice this means that users can write their own extensions and configure them via cluster.yml. These might be custom cloud controllers, log/monitoring etc. services that can be installed on top of Kubernetes. We have also added the possibility to pass values from Terraform to these add-ons so that setting up infra/cluster level services is as smooth as possible.

For more information and usage see the Add-on docs.

The OpenEBS add-on

One of the things that is a bit hard difficult with Kubernetes, or rather on any container environment, is storing persistent data. On Kubernetes this actually means a bit of complexity on two different aspects: setting up some persistent storage and using it in your applications running on top of Kubernetes. In some cloud environments you could "just" configure the platform so that you're able to use whatever storage the cloud provider has. But that's not really an option in many cases, especially where we need to run the platform in an on-premises type of setup.

With Pharos 1.1.0 we provide the option out-of-the-box to have in-cluster storage, OpenEBS. OpenEBS provides containerized block storage which means the storage itself is managed as a set of containers within the cluster. OpenEBS itself manages all the clustering and replication of the storage, making it highly available and scalable out-of-the-box.

Stateful apps with OpenEBS

With the add-on we've tried to make setting up in-cluster storage really easy for both the cluster administrator and from the application developer points of view.

Create Kontena Pharos Cluster with OpenEBS

As with all add-ons, we've made it super simple to set up OpenEBS on top of a Kontena Pharos cluster.

hosts:
  ...
addons:
  ...
  openebs:
    enabled: true

Yes, it's really that simple. Of course you can, if you need to, customize many aspects of the setup but the add-on logic itself tries to make very good defaults e.g. for replication etc. configurations. Go and check the docs for the configurable options.

Using OpenEBS provided volumes

One thing that the add-on also creates is a thing called StorageClass. This acts as an abstraction between the actual storage and applications using it. So given the default StorageClass named openebs-standard, your applications can use in-cluster replicated and persistent volumes like so:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: redis-standalone
spec:
  serviceName: redis-standalone
  replicas: 1
  selector:
    matchLabels:
      app: redis-standalone
  template:
    metadata:
      name: redis-standalone
      labels:
        app: redis-standalone
    spec:
      containers:
      - name: redis
        image: docker.io/redis:latest
        args: [ "--appendonly", "yes" ]
        ports:
        - containerPort: 6379
        volumeMounts:
        - name: redis-data
          mountPath: /data
  volumeClaimTemplates:
  - metadata:
      name: redis-data
      annotations:
        volume.beta.kubernetes.io/storage-class: openebs-standard
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 10G

Note that in the volumeClaimTemplates we just need to tell Kubernetes that it should request the actual volumes from OpenEBS using the openebs-standard storage class.

Improvements for Air-gapped Setups

Air-gapped installations (environments without direct internet access) are always quite complex to set up. With 1.1 it's possible to define a proxy address (per host) that configures the host to use a HTTP/HTTPS proxy for all outside communication during install. It also configures container runtime to pull images via proxy. This makes installation behind proxies a somewhat painless experience.

Latest Stable Kubernetes

Last but not least, Kontena Pharos 1.1.0 ships with the latest upstream Kubernetes version (1.10.3).

Get Started

It's easy to get started with Kontena Pharos. Enjoy!

About Kontena Inc.

Kontena Inc. is specialized in creating the most developer friendly solutions for running containers. Kontena's products are built on open source technology developed and maintained by Kontena. Kontena was founded in 2015 and has offices in Helsinki, Finland and New York, USA. More information: www.kontena.io.


Image Credits: White lighthouse view by Nicolai Dürbaum on Unsplash.