4 Environments and Modules

This chapter introduces the concepts of environments and modules in Oracle Cloud Native Environment.

Environments

An environment is a namespace that encapsulates the software installed and managed by Oracle Cloud Native Environment. Each environment contains at least the Kubernetes module.

The Platform CLI allows you to create and manage multiple deployments. Each deployment contains an environment, and each environment may potentially contain multiple modules. This allows you to create multiple Kubernetes clusters using the same Oracle Cloud Native Environment installation. Each Kubernetes cluster must have dedicated nodes, that is, a server cannot be used in two clusters, or environments.

Figure 4-1 Environments


This figure shows an environment, which contains two Kubernetes clusters, one of which also has an Istio module deployment.

Modules

A module is a curated unit of software that can be installed and managed by Oracle Cloud Native Environment. A module fulfills at least one specific role in a deployment. Modules that fulfill the same roles may be swapped out in a managed way. Modules may encapsulate other modules.

The available modules are:

  • Kubernetes module

  • Calico module

  • Multus module

  • Oracle Cloud Infrastructure Cloud Controller Manager module

  • MetalLB module
  • Gluster Container Storage Interface module

  • Operator Lifecycle Manager module

  • Istio module

  • Prometheus module

  • Grafana module

Helm is used by the Platform API Server to install additional modules. Helm is a package manager for Kubernetes. Helm simplifies the task of deploying and managing software inside Kubernetes clusters. Helm uses charts to manage the packages that it can deploy. A chart is a collection of files that describe a related set of Kubernetes resources.

Kubernetes Module

The core module in Oracle Cloud Native Environment is the Kubernetes module. The Kubernetes module is used to deploy a Kubernetes cluster in an environment.

Figure 4-2 Kubernetes module


This figure shows a Kubernetes module deployed to nodes.

The Kubernetes module installs and configures Kubernetes on the nodes and sets up the cluster.

Figure 4-3 Kubernetes cluster


This figure shows how the Kubernetes cluster is deployed to the nodes.

The Kubernetes module includes sub-components, such as:

  • Flannel: The default overlay network for a Kubernetes cluster.

  • CoreDNS: The DNS server for a Kubernetes cluster.

  • CRI-O: Manages the container runtime for a Kubernetes cluster.

  • runC: The default lightweight, portable container runtime for a Kubernetes cluster.

  • Kata Containers: An optional lightweight virtual machine runtime for a Kubernetes cluster.

For more information about installing and using the Kubernetes module, see Container Orchestration.

Calico Module

The Calico module installs Calico into a Kubernetes cluster. This allows you to use Calico as the CNI for the Kubernetes data plane.

Multus Module

The Multus module installs Multus into a Kubernetes cluster. This allows you to use Multus to create a network bridge to pods. Multus can be used with either Calico or Flannel as the CNI for the Kubernetes data plane.

Oracle Cloud Infrastructure Cloud Controller Manager Module

The Oracle Cloud Infrastructure Cloud Controller Manager module is used to set up dynamically provisioned persistent storage and application load balancers using Oracle Cloud Infrastructure.

Oracle Cloud Infrastructure block volumes provide reliable, high-performance block storage designed to work with a range of Oracle Cloud Infrastructure virtual machines and bare metal instances. With built-in redundancy, block volumes are persistent and durable beyond the lifespan of a virtual machine and can scale to 1 PB per compute instance. The Oracle Cloud Infrastructure Cloud Controller Manager module creates a Kubernetes StorageClass provisioner to access Oracle Cloud Infrastructure storage.

The Oracle Cloud Infrastructure Flexible Network Load Balancing service (Oracle Cloud Infrastructure load balancer) provides automated traffic distribution from one entry point to multiple backend servers in a Virtual Cloud Network (VCN). It operates at the connection level and load balances incoming client connections to healthy backend servers based on Layer 3/Layer 4 (IP protocol) data.

The Oracle Cloud Infrastructure load balancer provides network load balancers for Kubernetes applications running on Oracle Cloud Infrastructure.

MetalLB Module

MetalLB is a network load balancer for Kubernetes applications running on bare metal hosts. MetalLB allows you to use Kubernetes LoadBalancer services, which traditionally make use of a cloud provider network load balancer, in a bare metal environment.

The MetalLB module is used to set up network load balancers for Kubernetes applications using MetalLB.

Gluster Container Storage Interface Module

Important:

The Gluster Container Storage Interface module, used to install Gluster and set up Glusterfs, is deprecated. The Gluster Container Storage Interface module may be removed in a future release.

The Gluster Container Storage Interface module is used to set up dynamically provisioned persistent storage using Gluster Storage for Oracle Linux. Gluster is a scalable, distributed file system that aggregates disk storage resources from multiple servers into a single global namespace. The Gluster Container Storage Interface module creates a Kubernetes StorageClass provisioner to access Gluster storage.

Operator Lifecycle Manager Module

The Operator Lifecycle Manager module manages the installation and lifecycle management of Kubernetes operators in a Kubernetes cluster.

A Kubernetes operator is a design pattern that allows you to write code to automate tasks and extend Kubernetes. It is a set of concepts you can use to define a service for Kubernetes and helps to automate administrative services in Kubernetes.

Istio Module

Istio is a fully featured service mesh for microservices in Kubernetes clusters. Istio can handle most aspects of microservice management, for example, identity, authentication, transport security, metric scraping, and so on.

The Istio module for Oracle Cloud Native Environment installs Istio into a Kubernetes module (cluster).

The Istio module installs a number of components that are used exclusively by Istio:

  • Egress gateway

  • Ingress gateway

  • Istiod

  • Prometheus (installed by the Prometheus module)

  • Grafana (installed by the Grafana module)

When you deploy the Istio module, Prometheus is also deployed as a supporting module. Prometheus is used to monitor and gather metrics about the Kubernetes cluster. Another supporting module that is deployed with Istio is Grafana. Grafana is a monitoring and visualization tool for time-series data stored in a database, which in this case, is Prometheus. Grafana enables you to visually query and monitor the network traffic and services in your Kubernetes cluster. Grafana includes browser-based dashboards to visualize the cluster metrics gathered from Prometheus.

For more information about installing and using the Istio module, see Service Mesh.

Prometheus Module

Prometheus is a systems monitoring and alerting toolkit that collects and stores metrics and other time series data from various sources and presents it in an easily retrievable manner.

The Prometheus module for Oracle Cloud Native Environment is pre-configured with rich monitoring of important systems inside a Kubernetes cluster.

The Prometheus module is required by the Istio module and is used to create an embedded instance of Prometheus for use by Istio.

Note:

In this release, the Prometheus module should only be used in the context of an Istio module deployment.

Grafana Module

Grafana is a monitoring and visualization tool that allows you to query the time-series data in Prometheus and create dashboards to visualize that data. You can visually monitor your Kubernetes cluster, the services that are running, and network traffic.

The Grafana module for Oracle Cloud Native Environment is pre-configured to connect to and read data from Prometheus.

The Grafana module is required by the Istio module and is used to create an instance of Grafana for use by Istio.

Note:

In this release, the Grafana module should only be used in the context of an Istio module deployment.