4 Environments and Modules

Important:

The software described in this documentation is either in Extended Support or Sustaining Support. See Oracle Open Source Support Policies for more information.

We recommend that you upgrade the software described by this documentation as soon as possible.

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. The Istio module deployment requires a Helm module.

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

  • Oracle Cloud Infrastructure Cloud Controller Manager module

  • MetalLB module
  • Gluster Container Storage Interface module

  • Operator Lifecycle Manager module

  • Istio module

  • Helm module

  • Prometheus module

  • Grafana module

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.

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.

The Oracle Cloud Infrastructure Cloud Controller Manager module is deployed by the Helm module into a Kubernetes cluster.

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.

The MetalLB module is deployed by the Helm module into a Kubernetes cluster.

Gluster Container Storage Interface Module

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.

The Gluster Container Storage Interface module is deployed by the Helm module into a Kubernetes cluster.

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.

The Operator Lifecycle Manager module is deployed by the Helm module into a Kubernetes cluster.

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), and uses a Helm module to perform the deployment.

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.

Figure 4-4 Istio module


This figure shows how the Istio module is deployed to the nodes in the Kubernetes cluster. The Istio module requires the Helm module.

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

Helm Module

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.

The Helm module for Oracle Cloud Native Environment installs Helm into a Kubernetes module (cluster). The Helm module is used by the Platform API Server to install additional modules such as the Istio module.

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 deployed by the Helm module into 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 deployed by the Helm module into a Kubernetes cluster. 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.