Euer managed Kubernetes Cluster in der OCI könnte eine kleine Anzeige besitzen, die besagt, dass eine “Migration erforderlich” ist. Das liegt daran, dass in früheren Releases (vor dem 16. März die der Kubernetes API-Endpunkt von der Container Engine zwar bereitgestellt, aber nicht in das eigene VCN integriert wurde (oracle doc).
Die Ausgangssituation
Bei der Bereitstellung des managed Kubernetes Clusters können benutzerdefinierte VCNs, Subnets und Netzwerkregeln für Resourcen wie Container-Engine und Nodepools festgelegt werden, allerdings wurde der API-Endpunkt vom OCI-Anbieter separat bereitgestellt. Dieser Endpunkt war öffentlich zugänglich und wird zur Erstellung von Ressourcen in Kubernetes verwendet (z. B. mit kubectl zur Erstellung von Pods). Durch die Migration dieses Endpunkts in den eigenen VCN ist es nun zusätzlich möglich, den Zugriff auf den Endpunkt zu konfigurieren und einzuschränken (z. B. Bereitstellung des Endpunkts in einem privaten Subnet und Zugriff nur für Clients, die sich innerhalb eines VPNs befinden).
Migration des Clusters mit Terraform
Die Migration kann ganz einfach über die Web Konsole erfolgen, aber in diesem Beitrag würde ich gerne zeigen, wie dieses Unterfangen mit (bereits existierendem) Terraform Code funktioniert. Prinzupiell ist das möglich, indem die subnet_id im Code konfiguriert wird.
resource "oci_containerengine_cluster" "hungsblog_k8scluster" {
compartment_id = var.compartment_id
kubernetes_version = var.cluster_kubernetes_version
name = var.cluster_name
vcn_id = var.vcn_id
# https://registry.terraform.io/providers/oracle/oci/latest/docs/resources/containerengine_cluster
# placing the endpoint in the specified subnet (public or private)
endpoint_config {
subnet_id = var.subnet_id
}
}
Der Vorgang dauert etwa 15 Minuten. Nach einer erfolgreichen Migration kann festgestellt werden, dass nun zwei API-Endpunkte vorhanden sind. Der alte, von OCI verwaltete Endpunkt wird nach 30 Tagen außer Betrieb genommen, kann aber innerhalb dieses Zeitraums noch verwendet werden.
Anmerkung bei Migration in ein privates Subnet
Wenn der Endpunkt in ein privates Subnet verlegt wurde, müssen die entsprechenden security rules festgelegt und dem Subnet zugewiesen werden, damit die Clients im privaten Netzwerk auf die API zugreifen können (siehe OCI-seclist).
Weitere Referenzen
https://foggykitchen.com/2021/07/05/private-oke-vcn-native-in-ociwith-terraform/