In this video, I'll show you how to deploy Oracle Cloud Native Environment version 1.2
We'll describe the Oracle Cloud Native Environment.
We'll describe both the Platform Architecture and the Deployment Architecture.
And finally, we'll demonstrate the deployment of Oracle Cloud Native Environment version
1.2
Oracle Cloud Native Environment is a curated set of open source Cloud Native Computing
Foundation (CNCF) projects that can be easily deployed, have been tested for interoperability,
and for which enterprise-grade support is offered.
It provides the features for customers to develop microservices-based applications that
can be deployed in environments that support open standards and specifications.
And it provides a command line user interface to select and install specific components.
The Platform Architecture has number of components.
The Platform API Server is responsible for managing all entities, from hosts to microservices,
and is also responsible for managing the state of the environment.
The Platform command-line-interface (CLI) is a simple application called olcnectl which
is used to communicate with the Platform API Server.
The required software for modules, such as CRI-O, runC, Kata Containers, CoreDNS and
Flannel, is configured by the Platform CLI.
The Platform Agent runs on each Kubernetes node to proxy requests from the Platform API
Server to small worker applications.
The agent is a lightweight process that forwards the work to Worker Binaries which then work
with RPMs and validate firewall settings.
For the Deployment Architecture, Environments are namespaces that encapsulates the software
that's installed and managed by Oracle Cloud Native Environment.
Each environment contains at least the Kubernetes module, which is the core module.
The Kubernetes module provides container orchestration services and automates and simplifies the
deployment of multi-container applications.
Helm is the package manager for Kubernetes and helps you manage Kubernetes applications.
Istio is a fully featured service mesh for deploying microservices into Kubernetes clusters.
Istio can handle most aspects of microservice management, including identity, authentication,
transport security, and metric scraping.
The Istio module includes embedded instances of the Prometheus monitoring and Grafana graphing
tools.
Under Features and Use Cases, Oracle Cloud Native Environment delivers a simplified framework
for installations, updates, upgrades, and configuration of key features for orchestrating
microservices.
The cluster installation includes a module install command that automatically installs
and configures any required RPM packages and services.
For cluster upgrades, the module update command can update module components.
For cluster scaling, again the module update command can add and remove both control plane
nodes and worker nodes in a running cluster.
For Kubernetes deployment use cases, you can deploy a single control plane node Kubernetes
cluster, which we will deploy in our demonstration.
Or for high availability, you can deploy a multi-control plane node Kubernetes cluster.
The multi-control plane node cluster requires either an external load balancer or you can
use the built-in ngnix-based load balancer.
For the deployment demonstration, we'll use 2 Oracle Linux 8 systems.
The system named "crm-mo" is configured as the control plane node.
A 2nd Oracle Linux 8 system, named “crm-wo”, is configured as the Kubernetes worker node.
We still need an operator node, which can be a separate system, or it can be one of
the nodes in the cluster, which is the case for our demonstration.
So our control plane node, "crm-mo", will also configured as the operator node.
We'll first set up the Operator Node.
This node contains the Platform CLI and will also function as a platform API server so
we'll install 3 packages, olcnectl, olcne-api-server, and olcne-utils.
We'll clear the screen and then we need to enable the olcne-api-server service by using
the systemctl command.
Next we'll set up the Kubernetes Nodes, starting with the Control Plane Node.
Our operator node is also functioning as our Kubernetes Control Plane node so we'll install
the olcne-agent package on this node.
We'll clear the screen and then we need to enable the olcne-agent service by using the
systemctl command.
In this demonstration, we're using a proxy server so we need to configure it with CRI-O.
I'll make the /etc/systemd/system/crio.service.d directory and the create a file named proxy.conf
in that directory and provide the proxy server information.
I'll then run the systemctl daemon-reload command to ensure the changes are loaded.
Next we'll set up the Kubernetes Worker Node, which in this tutorial is a system named crm-wo.
On our Kubernetes Worker node we'll install the olcne-agent and olcne-utils packages.
We'll clear the screen and then we need to enable the olcne-agent service by using the
systemctl command.
We'll configure the proxy server with CRI-O like we did on the Kubernetes Control Plane
Node.
So I'll make the directory and the create a file named proxy.conf in that directory
and provide the proxy server information.
I'll then run the systemctl daemon-reload command to ensure the changes are loaded.
Next we'll switch back to our operator/control plane node and generate and transfer X.509
Private Certificates.
From the operator/control plane node, run the gen-certs-helper shell script from the
/etc/olcne directory.
I'll provide cert-request information.
For the --cert-request-common-name option, provide the appropriate DNS Domain Name for
your environment.
For the --nodes option value, provide the fully qualified domain name of your nodes.
A script is generated which you can run to transfer the certificates but you need ssh
passwordless access to your nodes.
You can then just run the script to transfer the certificates.
Next we'll configure the Platform API Server, which is the operator node in this demonstration,
to use the Certificates.
Run the bootstrap-olcne shell script from the /etc/olcne directory.
Provide the options and arguments as shown.
For the --olcne-component option, specify api-server as the argument.
You then see that the olcne-api-server service is started.
Next we'll configure Platform Agents, which run on the Kubernetes control plane and worker
nodes, to use the Certificates.
Since in our environment, our operator/control plane node is the same system, I'll just recall
the previous command and change the api-server argument to agent.
You then see that the olcne-agent service is started on the Kubernetes control plane
node.
We also need to configure the Platform Agent on the worker node.
I'll switch to the worker node terminal and run the same command that I just ran on the
control plan node.
You then see that the olcne-agent service is started on the Kubernetes worker node.
I'll switch back to the operator/control plane node and set up x.509 Certifications for the
externalIPs Kubernetes service.
This step is new for Oracle Cloud Native Environment releases 1.2.2 and 1.1.10 or later.
If you are deploying an earlier version, this step is not required.
We'll complete this step by running the gen-certs-helper script from the /etc/olcne directory.
I'll provide cert-request information.
The --nodes option must be set to the name of the Kubernetes service, as shown.
Use the --one-cert option to save the certificates for the two service names to a single file.
I'll clear the screen.
We then need to make sure the permissions of the output directory where the certificates
are located can be read by the user on the operator node, which in our demonstration
is opc.
Now we can create the Oracle Cloud Native Environment from the operator/control plane
node.
I'll run the olcnectl command shown to create the environment.
This and all subsequent olcnectl commands are run as a regular, non-root, user.
In this demonstration, our environment is named "myenvironment".
Provide the options and argument shown, and our environment gets created.
I'll clear the screen and now we can list the available modules for the environment.
This command provides information only and is not required to complete the deployment.
You see that helm, istio, kubernetes, and prometheus modules are available for you to
deploy into your environment.
First we'll add the Kubernetes Module to the Environment.
Run the olcnectl command as shown.
Provide our environment name.
In this demonstration, our Kubernetes cluster is named mycluster
Provide the Oracle container registry.
If this was a multi-control plane node configuration, you would use either the --virtual-ip option,
or the --load-balancer option.
Provide the fully qualified name of the control plane and worker nodes as shown, and include
port number 8090 for each node.
For releases 1.2.2 and 1.1.10 or later, include the --restrict-service-externalip options
and provide the location of the CA certificate, the node certificate, and the node key.
We can now validate the Kubernetes Module.
This command performs checks to ensure that the nodes are configured correctly to deploy
the Kubernetes module.
If there are any validation errors, the commands required to fix the ndoes are provided.
In our demonstration, there are some firewall rules that need to be applied.
So I will become the root user and then just copy and paste to run each of these commands.
Now I'll exit the root shell and re-run the validation command.
And now the validation passes.
Now we can deploy the Kubernetes Module.
I'll just recall the previous command, and change validate to install.
This takes a few minutes, I've cut out some time for this demonstration.
Our Kubernetes module is now successfully installed.
Now we'll add the Helm and Istio Modules.
We can do this in a single olcnectl command.
Provide the environment name, the istio container registry, and the Kubernetes cluster name.
In this demonstration, our istio module is named myistio, and our helm module is named
myhelm.
Now we'll deploy the Helm Module.
We'll use the olcnectl module install command, and provide the environment and our helm module
name.
And lastly, we'll deploy the Istio Module.
Again, we'll use the olcnectl module install command, and provide the environment and our
istio module name.
This completes our Oracle Cloud Native Environment deployment.
To verify the deployment, I'll first run an olcnectl command to create a file.
Then I'll export an environment variable.
This allows me to run the kubectl commands as a regular user on the Kubernetes control
plane node.
Now I can run kubectl commands to view the nodes, to view the pods in the istio-system
namespace, and to view all deployments.
This concludes the demonstration portion of this video.
Oracle provides an extensive number of resources which you can use to learn more about this
subject and others.
For further information about Oracle Cloud Environment Training, you can visit the URL
shown on this slide.
There is a comprehensive Oracle Linux 8 learning path available to support a full range of
Linux administration skills for cloud, on-premise and hybrid users.
And follow the URL to the Oracle Learning Library for more videos on Oracle Linux.
This concludes this presentation.
Thank you for watching.