Terraform
April 22, 2023
YC Kubernetes 1.24
Зональные мастера с двумя группами. Масштабируемой и фиксированной.
Создадим фолдер kubernetes и в нём три файла.
Здесь предполагается, что сеть и подсети уже созданы. Также создан SA, SG и KMS ключ.
variable "cloudID" { //cloud-id default = "b1gig0ogqtnk75jde2q8" } variable "folderID" { //folder-id default = "b1g62iqs14tk7mu0faun" } variable "tokenName" { //token that should be created by 'yc iam create-token' type = string default = "t1.9euelZqczJaZzoucns_JzsiMlZWMte3rnpWazcqLj4yOkZSQnoHcnJuez5fl8PdyGgxi-e8tSkCM5fT3Mm0KXvnvLUPAjA.it-O02jXSamhoOriXKtwtl2npBUPAmyaxal9MDbJi0EANfj-gGWolV6DmG1df0BxuJ0Pr3PigzxDfVZWOWkaBQ" } variable "zoneName" { //default zone default = "ru-central1-a" } variable "networkID" { //default network default = "enpblgntu48fhohf30ml" } variable "subnetID" { //default subnet default = "e9b16nenl5a52h6o9djb" } variable "versionNum" { //cluster version default = "1.24" } variable "serviceAccountID" { //SA default = "ajedb6f0dbffqnuukokd" } variable "SG_ID" { //SG default = "enpauibqifvmvss6balo" } variable "KMS_ID" { //KMS key default = "abjesk4gh0vo91lm3ia6" } variable "LogID" { //Kubernetes log group default = "e23h969s0kq6fttqoe6v" }
terraform { required_providers { yandex = { source = "yandex-cloud/yandex" version = ">=0.85" } } } provider "yandex" { token = var.tokenName cloud_id = var.cloudID folder_id = var.folderID zone = var.zoneName }
Кластер с cilium и KMS ключом. Логи мастера выгружаются в лог группу.
resource "yandex_kubernetes_cluster" "k8s-zonal" { name = "cam-prod" description = "Cameda production cluster" folder_id = var.folderID network_id = var.networkID cluster_ipv4_range = "10.30.0.0/16" service_ipv4_range = "10.31.0.0/16" node_ipv4_cidr_mask_size = "24" master { version = var.versionNum zonal { zone = var.zoneName subnet_id = var.subnetID } public_ip = true security_group_ids = [var.SG_ID] maintenance_policy { auto_upgrade = true maintenance_window { start_time = "07:00" duration = "3h" } } master_logging { enabled = true log_group_id = var.LogID kube_apiserver_enabled = true cluster_autoscaler_enabled = true events_enabled = true } } service_account_id = var.serviceAccountID node_service_account_id = var.serviceAccountID labels = { env = "prod" } release_channel = "RAPID" #network_policy_provider = "CALICO" network_implementation { cilium {} } kms_provider { key_id = var.KMS_ID } }