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 lets you create and manage many deployments. Each deployment contains an environment, and each environment might contain many modules. This lets you create many Kubernetes clusters using the same Oracle Cloud Native Environment installation. Each Kubernetes cluster must have dedicated nodes, a server can't 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 can be swapped out in a managed way. Modules might encapsulate other modules.

The available modules are:

  • Kubernetes module

  • Calico module

  • Multus module

  • Oracle Cloud Infrastructure Cloud Controller Manager module

  • MetalLB module

  • Rook module

  • KubeVirt module

  • Operator Lifecycle Manager module

  • Istio module

  • Prometheus module

  • Grafana module

Helm is used by the Platform API Server to install optional 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:

  • 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 Kubernetes Module.

Calico Module

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

For information about installing and using the Calico module, see Calico Module.

Multus Module

The Multus module installs Multus into a Kubernetes cluster. This lets you 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.

For information about installing and using the Multus module, see Multus Module.

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 and file storage provide reliable, high-performance storage designed to work with a range of Oracle Cloud Infrastructure virtual machines and bare metal instances. With built-in redundancy, storage is persistent, and durable beyond the lifespan of a virtual machine. 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 many 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.

For information about installing and using the Oracle Cloud Infrastructure Cloud Controller Manager module, see Oracle Cloud Infrastructure Cloud Controller Manager Module.

MetalLB Module

MetalLB is a network load balancer for Kubernetes applications running on bare metal hosts. MetalLB lets you use Kubernetes LoadBalancer services, which traditionally use 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.

For information about installing and using the MetalLB module, see MetalLB Module.

Rook Module

The Rook module is used to set up dynamically provisioned persistent storage using Ceph. Rook is a container storage platform built on Ceph. Rook is deployed as a Kubernetes operator inside a Kubernetes cluster and automates the work required to provision Ceph-backed persistent storage using the Kubernetes Container Storage Interface.

For information about installing and using the Rook module, see Rook Module.

KubeVirt Module

The KubeVirt module installs KubeVirt. KubeVirt is a virtualization technology that can create and manage virtual machines in a Kubernetes cluster. KubeVirt leverages the benefits of Kubernetes orchestration and management to virtual machines, enabling you to run virtual machines and containers in a unified infrastructure. It simplifies the management of mixed workloads, provides better resource usage, and enhances the overall flexibility and scalability of Kubernetes clusters.

For information about installing and using the KubeVirt module, see KubeVirt Module.

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 lets you write code to automate tasks and extend Kubernetes. An operator is a set of concepts you can use to define a service for Kubernetes and helps to automate administrative services in Kubernetes.

For information about installing and using the Operator Lifecycle Manager module, see Operator Lifecycle Manager Module.

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 components that are used solely 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's 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 lets you to visually query and monitor the network traffic and services in a Kubernetes cluster. Grafana includes browser-based dashboards to visualize the cluster metrics gathered from Prometheus.

For information about installing and using the Istio module, see 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 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 is only used in the context of an Istio module deployment.

Grafana Module

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

The Grafana module for Oracle Cloud Native Environment is 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 is only used in the context of an Istio module deployment.