Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) provides enterprise-grade Kubernetes clusters with deep integration into OCI’s native services. This comprehensive guide explores advanced OKE configurations, focusing on network security policies, observability integration, and automated deployment strategies that enterprise teams need for production workloads.
OKE Architecture Deep Dive
OKE operates on a managed control plane architecture where Oracle handles the Kubernetes master nodes, etcd, and API server components. This design eliminates operational overhead while providing high availability across multiple availability domains.
The service integrates seamlessly with OCI’s networking fabric, allowing granular control over pod-to-pod communication, ingress traffic management, and service mesh implementations. Unlike managed Kubernetes services from other providers, OKE provides native integration with Oracle’s enterprise security stack, including Identity and Access Management (IAM), Key Management Service (KMS), and Web Application Firewall (WAF).
Worker nodes run on OCI Compute instances, providing flexibility in choosing instance shapes, including bare metal, GPU-enabled, and ARM-based Ampere processors. The networking layer supports both flannel and OCI VCN-native pod networking, enabling direct integration with existing network security policies.
Advanced Networking Configuration
OKE’s network architecture supports multiple pod networking modes. The VCN-native pod networking mode assigns each pod an IP address from your VCN’s CIDR range, enabling direct application of network security lists and route tables to pod traffic.
This approach provides several advantages over traditional overlay networking. Security policies become more granular since you can apply network security lists directly to pod traffic. Network troubleshooting becomes simpler as pod traffic flows through standard OCI networking constructs. Integration with existing network monitoring tools works seamlessly since pod traffic appears as regular VCN traffic.
Load balancing integrates deeply with OCI’s Load Balancing service, supporting both Layer 4 and Layer 7 load balancing with SSL termination, session persistence, and health checking capabilities.
Production-Ready Implementation Example
Here’s a comprehensive example that demonstrates deploying a highly available OKE cluster with advanced security and monitoring configurations:
Terraform Configuration for OKE Cluster
# OKE Cluster with Enhanced Security
resource "oci_containerengine_cluster" "production_cluster" {
compartment_id = var.compartment_id
kubernetes_version = var.kubernetes_version
name = "production-oke-cluster"
vcn_id = oci_core_vcn.oke_vcn.id
endpoint_config {
is_public_ip_enabled = false
subnet_id = oci_core_subnet.oke_api_subnet.id
nsg_ids = [oci_core_network_security_group.oke_api_nsg.id]
}
cluster_pod_network_options {
cni_type = "OCI_VCN_IP_NATIVE"
}
options {
service_lb_subnet_ids = [oci_core_subnet.oke_lb_subnet.id]
kubernetes_network_config {
pods_cidr = "10.244.0.0/16"
services_cidr = "10.96.0.0/16"
}
add_ons {
is_kubernetes_dashboard_enabled = false
is_tiller_enabled = false
}
admission_controller_options {
is_pod_security_policy_enabled = true
}
}
kms_key_id = oci_kms_key.oke_encryption_key.id
}
# Node Pool with Mixed Instance Types
resource "oci_containerengine_node_pool" "production_node_pool" {
cluster_id = oci_containerengine_cluster.production_cluster.id
compartment_id = var.compartment_id
kubernetes_version = var.kubernetes_version
name = "production-workers"
node_config_details {
placement_configs {
availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
subnet_id = oci_core_subnet.oke_worker_subnet.id
}
placement_configs {
availability_domain = data.oci_identity_availability_domains.ads.availability_domains[1].name
subnet_id = oci_core_subnet.oke_worker_subnet.id
}
size = 3
nsg_ids = [oci_core_network_security_group.oke_worker_nsg.id]
is_pv_encryption_in_transit_enabled = true
}
node_shape = "VM.Standard.E4.Flex"
node_shape_config {
ocpus = 2
memory_in_gbs = 16
}
node_source_details {
image_id = data.oci_containerengine_node_pool_option.oke_node_pool_option.sources[0].image_id
source_type = "IMAGE"
boot_volume_size_in_gbs = 100
}
initial_node_labels {
key = "environment"
value = "production"
}
ssh_public_key = var.ssh_public_key
}
# Network Security Group for API Server
resource "oci_core_network_security_group" "oke_api_nsg" {
compartment_id = var.compartment_id
vcn_id = oci_core_vcn.oke_vcn.id
display_name = "oke-api-nsg"
}
resource "oci_core_network_security_group_security_rule" "oke_api_ingress" {
network_security_group_id = oci_core_network_security_group.oke_api_nsg.id
direction = "INGRESS"
protocol = "6"
source = "10.0.0.0/16"
source_type = "CIDR_BLOCK"
tcp_options {
destination_port_range {
max = 6443
min = 6443
}
}
}
# Network Security Group for Worker Nodes
resource "oci_core_network_security_group" "oke_worker_nsg" {
compartment_id = var.compartment_id
vcn_id = oci_core_vcn.oke_vcn.id
display_name = "oke-worker-nsg"
}
# Allow pod-to-pod communication
resource "oci_core_network_security_group_security_rule" "worker_pod_communication" {
network_security_group_id = oci_core_network_security_group.oke_worker_nsg.id
direction = "INGRESS"
protocol = "all"
source = oci_core_network_security_group.oke_worker_nsg.id
source_type = "NETWORK_SECURITY_GROUP"
}
# KMS Key for Cluster Encryption
resource "oci_kms_key" "oke_encryption_key" {
compartment_id = var.compartment_id
display_name = "oke-cluster-encryption-key"
key_shape {
algorithm = "AES"
length = 256
}
management_endpoint = oci_kms_vault.oke_vault.management_endpoint
}
resource "oci_kms_vault" "oke_vault" {
compartment_id = var.compartment_id
display_name = "oke-vault"
vault_type = "DEFAULT"
}
Kubernetes Manifests with Network Policies
# Network Policy for Application Isolation
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: webapp-network-policy
namespace: production
spec:
podSelector:
matchLabels:
app: webapp
policyTypes:
- Ingress
- Egress
ingress:
- from:
- namespaceSelector:
matchLabels:
name: ingress-nginx
- podSelector:
matchLabels:
app: webapp-frontend
ports:
- protocol: TCP
port: 8080
egress:
- to:
- podSelector:
matchLabels:
app: database
ports:
- protocol: TCP
port: 5432
- to: []
ports:
- protocol: TCP
port: 443
- protocol: TCP
port: 53
- protocol: UDP
port: 53
---
# Pod Security Policy
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
name: restricted-psp
spec:
privileged: false
allowPrivilegeEscalation: false
requiredDropCapabilities:
- ALL
volumes:
- 'configMap'
- 'emptyDir'
- 'projected'
- 'secret'
- 'downwardAPI'
- 'persistentVolumeClaim'
runAsUser:
rule: 'MustRunAsNonRoot'
seLinux:
rule: 'RunAsAny'
fsGroup:
rule: 'RunAsAny'
---
# Deployment with Security Context
apiVersion: apps/v1
kind: Deployment
metadata:
name: secure-webapp
namespace: production
spec:
replicas: 3
selector:
matchLabels:
app: webapp
template:
metadata:
labels:
app: webapp
spec:
securityContext:
runAsNonRoot: true
runAsUser: 65534
fsGroup: 65534
containers:
- name: webapp
image: nginx:1.21-alpine
ports:
- containerPort: 8080
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop:
- ALL
resources:
limits:
cpu: 500m
memory: 512Mi
requests:
cpu: 250m
memory: 256Mi
volumeMounts:
- name: tmp-volume
mountPath: /tmp
- name: cache-volume
mountPath: /var/cache/nginx
volumes:
- name: tmp-volume
emptyDir: {}
- name: cache-volume
emptyDir: {}
Monitoring and Observability Integration
OKE integrates natively with OCI Monitoring, Logging, and Logging Analytics services. This integration provides comprehensive observability without requiring additional third-party tools or complex configurations.
The monitoring integration automatically collects cluster-level metrics including CPU utilization, memory consumption, network throughput, and storage IOPS across all worker nodes. Custom metrics can be published using the OCI Monitoring SDK, enabling application-specific dashboards and alerting rules.
Logging integration captures both system logs from Kubernetes components and application logs from pods. The unified logging agent automatically forwards logs to OCI Logging service, where they can be searched, filtered, and analyzed using structured queries.
Security Best Practices Implementation
Enterprise OKE deployments require multiple layers of security controls. Network-level security starts with proper subnet segmentation, placing API servers in private subnets accessible only through bastion hosts or VPN connections.
Pod Security Policies enforce runtime security constraints, preventing privileged containers and restricting volume types. Network policies provide microsegmentation within the cluster, controlling pod-to-pod communication based on labels and namespaces.
Image security scanning integrates with OCI Container Registry’s vulnerability scanning capabilities, automatically checking container images for known vulnerabilities before deployment.
Automated CI/CD Integration
OKE clusters integrate seamlessly with OCI DevOps service for automated application deployment pipelines. The integration supports GitOps workflows, blue-green deployments, and automated rollback mechanisms.
Pipeline configurations can reference OCI Vault secrets for secure credential management, ensuring sensitive information never appears in deployment manifests or pipeline configurations.
Performance Optimization Strategies
Production OKE deployments benefit from several performance optimization techniques. Node pool configurations should match application requirements, using compute-optimized instances for CPU-intensive workloads and memory-optimized instances for data processing applications.
Pod disruption budgets ensure application availability during cluster maintenance operations. Horizontal Pod Autoscaling automatically adjusts replica counts based on CPU or memory utilization, while Cluster Autoscaling adds or removes worker nodes based on resource demands.
This comprehensive approach to OKE deployment provides enterprise-grade container orchestration with robust security, monitoring, and automation capabilities, enabling organizations to run production workloads confidently in Oracle Cloud Infrastructure.