mirror of
https://github.com/optim-enterprises-bv/terraform-talos.git
synced 2025-11-01 02:38:31 +00:00
update bootstrap
This commit is contained in:
@@ -37,12 +37,16 @@ create-templates:
|
|||||||
|
|
||||||
@yq eval -o=json '{"kubernetes": .}' _cfgs/tfstate.vars > terraform.tfvars.json
|
@yq eval -o=json '{"kubernetes": .}' _cfgs/tfstate.vars > terraform.tfvars.json
|
||||||
|
|
||||||
|
create-controlplane-bootstrap:
|
||||||
|
talosctl --talosconfig _cfgs/talosconfig config endpoint ${ENDPOINT}
|
||||||
|
talosctl --talosconfig _cfgs/talosconfig --nodes 172.16.1.11 bootstrap
|
||||||
|
|
||||||
create-controlplane: ## Bootstrap controlplane node
|
create-controlplane: ## Bootstrap controlplane node
|
||||||
terraform apply -auto-approve -target=oci_core_instance.controlplane
|
terraform apply -auto-approve -target=oci_core_instance.controlplane
|
||||||
|
|
||||||
create-kubeconfig: ## Download kubeconfig
|
create-kubeconfig: ## Download kubeconfig
|
||||||
talosctl --talosconfig _cfgs/talosconfig --nodes ${ENDPOINT} kubeconfig .
|
talosctl --talosconfig _cfgs/talosconfig --nodes 172.16.1.11 kubeconfig .
|
||||||
kubectl --kubeconfig=kubeconfig config set clusters.talos-k8s-openstack.server https://${ENDPOINT}:6443
|
kubectl --kubeconfig=kubeconfig config set clusters.talos-k8s-oracle.server https://${ENDPOINT}:6443
|
||||||
kubectl --kubeconfig=kubeconfig config set-context --current --namespace=kube-system
|
kubectl --kubeconfig=kubeconfig config set-context --current --namespace=kube-system
|
||||||
|
|
||||||
create-deployments:
|
create-deployments:
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ make create-config create-templates
|
|||||||
|
|
||||||
```tf
|
```tf
|
||||||
controlplane = {
|
controlplane = {
|
||||||
count = 1,
|
count = 1
|
||||||
type = "VM.Standard.E4.Flex"
|
type = "VM.Standard.E4.Flex"
|
||||||
ocpus = 1
|
ocpus = 1
|
||||||
memgb = 4
|
memgb = 4
|
||||||
|
|||||||
16
oracle/images/README.md
Normal file
16
oracle/images/README.md
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Upload images
|
||||||
|
|
||||||
|
Create the config file **terraform.tfvars** and add params.
|
||||||
|
|
||||||
|
```hcl
|
||||||
|
# Body of terraform.tfvars
|
||||||
|
```
|
||||||
|
|
||||||
|
```shell
|
||||||
|
wget https://github.com/siderolabs/talos/releases/download/v1.3.0/oracle-amd64.qcow2.xz
|
||||||
|
wget https://github.com/siderolabs/talos/releases/download/v1.3.0/oracle-arm64.qcow2.xz
|
||||||
|
xz -d oracle-amd64.qcow2.xz
|
||||||
|
xz -d oracle-arm64.qcow2.xz
|
||||||
|
|
||||||
|
terraform init && terraform apply -auto-approve
|
||||||
|
```
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
# openssl genrsa -out ~/.oci/oci_api_key.pem 2048
|
# openssl genrsa -out ~/.oci/oci_main_terraform.pem 2048
|
||||||
# chmod go-rwx ~/.oci/oci_api_key.pem
|
# chmod go-rwx ~/.oci/oci_main_terraform.pem
|
||||||
# openssl rsa -pubout -in ~/.oci/oci_api_key.pem -out ~/.oci/oci_api_key_public.pem
|
# openssl rsa -pubout -in ~/.oci/oci_main_terraform.pem -out ~/.oci/oci_main_terraform_public.pem
|
||||||
|
|
||||||
provider "oci" {
|
provider "oci" {
|
||||||
tenancy_ocid = var.tenancy_ocid
|
tenancy_ocid = var.tenancy_ocid
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ resource "random_id" "backet" {
|
|||||||
resource "oci_objectstorage_bucket" "images" {
|
resource "oci_objectstorage_bucket" "images" {
|
||||||
compartment_id = var.compartment_ocid
|
compartment_id = var.compartment_ocid
|
||||||
namespace = data.oci_objectstorage_namespace.ns.namespace
|
namespace = data.oci_objectstorage_namespace.ns.namespace
|
||||||
name = "talos-images-${random_id.backet.hex}"
|
name = "images-${random_id.backet.hex}"
|
||||||
access_type = "NoPublicAccess"
|
access_type = "NoPublicAccess"
|
||||||
auto_tiering = "Disabled"
|
auto_tiering = "Disabled"
|
||||||
|
versioning = "Enabled"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ resource "oci_core_image" "talos_amd64" {
|
|||||||
object_name = oci_objectstorage_object.talos_amd64.object
|
object_name = oci_objectstorage_object.talos_amd64.object
|
||||||
|
|
||||||
operating_system = "Talos"
|
operating_system = "Talos"
|
||||||
operating_system_version = "0.15.0"
|
operating_system_version = "1.3.0"
|
||||||
source_image_type = "QCOW2"
|
source_image_type = "QCOW2"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ resource "oci_core_image" "talos_arm64" {
|
|||||||
object_name = oci_objectstorage_object.talos_arm64.object
|
object_name = oci_objectstorage_object.talos_arm64.object
|
||||||
|
|
||||||
operating_system = "Talos"
|
operating_system = "Talos"
|
||||||
operating_system_version = "0.15.0"
|
operating_system_version = "1.3.0"
|
||||||
source_image_type = "QCOW2"
|
source_image_type = "QCOW2"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ variable "tenancy_ocid" {}
|
|||||||
variable "user_ocid" {}
|
variable "user_ocid" {}
|
||||||
variable "fingerprint" {}
|
variable "fingerprint" {}
|
||||||
variable "key_file" {
|
variable "key_file" {
|
||||||
default = "~/.oci/oci_main_terraform_public.pem"
|
default = "~/.oci/oci_main_terraform.pem"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "region" {
|
variable "region" {
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
oci = {
|
oci = {
|
||||||
source = "hashicorp/oci"
|
source = "hashicorp/oci"
|
||||||
version = "4.61.0"
|
version = "4.102.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
required_version = ">= 1.2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
oci = {
|
oci = {
|
||||||
source = "hashicorp/oci"
|
source = "hashicorp/oci"
|
||||||
version = "4.61.0"
|
version = "4.102.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
required_version = ">= 1.2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -83,7 +83,8 @@ resource "oci_core_instance" "contolplane" {
|
|||||||
shape_config,
|
shape_config,
|
||||||
defined_tags,
|
defined_tags,
|
||||||
create_vnic_details["defined_tags"],
|
create_vnic_details["defined_tags"],
|
||||||
launch_options["is_pv_encryption_in_transit_enabled"]
|
launch_options["is_pv_encryption_in_transit_enabled"],
|
||||||
|
metadata
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -16,13 +16,13 @@ resource "oci_core_instance_pool" "web" {
|
|||||||
|
|
||||||
load_balancers {
|
load_balancers {
|
||||||
backend_set_name = oci_load_balancer_backend_set.web.name
|
backend_set_name = oci_load_balancer_backend_set.web.name
|
||||||
load_balancer_id = oci_load_balancer.web.id
|
load_balancer_id = oci_load_balancer_load_balancer.web.id
|
||||||
port = 80
|
port = 80
|
||||||
vnic_selection = "primaryvnic"
|
vnic_selection = "primaryvnic"
|
||||||
}
|
}
|
||||||
load_balancers {
|
load_balancers {
|
||||||
backend_set_name = oci_load_balancer_backend_set.webs.name
|
backend_set_name = oci_load_balancer_backend_set.webs.name
|
||||||
load_balancer_id = oci_load_balancer.web.id
|
load_balancer_id = oci_load_balancer_load_balancer.web.id
|
||||||
port = 443
|
port = 443
|
||||||
vnic_selection = "primaryvnic"
|
vnic_selection = "primaryvnic"
|
||||||
}
|
}
|
||||||
@@ -37,7 +37,7 @@ resource "oci_core_instance_pool" "web" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
web_labels = "topology.kubernetes.io/region=${var.region},project.io/node-pool=web"
|
web_labels = "project.io/node-pool=web"
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "oci_core_instance_configuration" "web" {
|
resource "oci_core_instance_configuration" "web" {
|
||||||
@@ -68,7 +68,7 @@ resource "oci_core_instance_configuration" "web" {
|
|||||||
lbv4 = local.lbv4_local
|
lbv4 = local.lbv4_local
|
||||||
clusterDns = cidrhost(split(",", var.kubernetes["serviceSubnets"])[0], 10)
|
clusterDns = cidrhost(split(",", var.kubernetes["serviceSubnets"])[0], 10)
|
||||||
nodeSubnets = local.network_public[each.key].cidr_block
|
nodeSubnets = local.network_public[each.key].cidr_block
|
||||||
labels = "${local.web_labels},topology.kubernetes.io/zone=${split(":", each.key)[1]}"
|
labels = local.web_labels
|
||||||
})
|
})
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,19 @@
|
|||||||
|
|
||||||
resource "oci_load_balancer" "web" {
|
resource "oci_load_balancer_load_balancer" "web" {
|
||||||
compartment_id = var.compartment_ocid
|
compartment_id = var.compartment_ocid
|
||||||
display_name = "${local.project}-web-lb-l7"
|
display_name = "${local.project}-web-lb-l7"
|
||||||
defined_tags = merge(var.tags, { "Kubernetes.Type" = "infra" })
|
defined_tags = merge(var.tags, { "Kubernetes.Type" = "infra" })
|
||||||
shape = "flexible"
|
subnet_ids = [local.network_lb.id]
|
||||||
|
network_security_group_ids = [local.nsg_web]
|
||||||
|
|
||||||
|
is_private = false
|
||||||
|
|
||||||
|
shape = "flexible"
|
||||||
shape_details {
|
shape_details {
|
||||||
maximum_bandwidth_in_mbps = 10
|
maximum_bandwidth_in_mbps = 10
|
||||||
minimum_bandwidth_in_mbps = 10
|
minimum_bandwidth_in_mbps = 10
|
||||||
}
|
}
|
||||||
|
|
||||||
subnet_ids = [local.network_lb.id]
|
|
||||||
network_security_group_ids = [local.nsg_web]
|
|
||||||
|
|
||||||
lifecycle {
|
lifecycle {
|
||||||
ignore_changes = [
|
ignore_changes = [
|
||||||
defined_tags,
|
defined_tags,
|
||||||
@@ -20,7 +22,7 @@ resource "oci_load_balancer" "web" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resource "oci_load_balancer_listener" "web_http" {
|
resource "oci_load_balancer_listener" "web_http" {
|
||||||
load_balancer_id = oci_load_balancer.web.id
|
load_balancer_id = oci_load_balancer_load_balancer.web.id
|
||||||
name = "${local.project}-web-http"
|
name = "${local.project}-web-http"
|
||||||
default_backend_set_name = oci_load_balancer_backend_set.web.name
|
default_backend_set_name = oci_load_balancer_backend_set.web.name
|
||||||
port = 80
|
port = 80
|
||||||
@@ -28,7 +30,7 @@ resource "oci_load_balancer_listener" "web_http" {
|
|||||||
}
|
}
|
||||||
|
|
||||||
resource "oci_load_balancer_listener" "web_https" {
|
resource "oci_load_balancer_listener" "web_https" {
|
||||||
load_balancer_id = oci_load_balancer.web.id
|
load_balancer_id = oci_load_balancer_load_balancer.web.id
|
||||||
name = "${local.project}-web-https"
|
name = "${local.project}-web-https"
|
||||||
default_backend_set_name = oci_load_balancer_backend_set.webs.name
|
default_backend_set_name = oci_load_balancer_backend_set.webs.name
|
||||||
port = 443
|
port = 443
|
||||||
@@ -37,7 +39,7 @@ resource "oci_load_balancer_listener" "web_https" {
|
|||||||
|
|
||||||
resource "oci_load_balancer_backend_set" "web" {
|
resource "oci_load_balancer_backend_set" "web" {
|
||||||
name = "${local.project}-web-lb-l7"
|
name = "${local.project}-web-lb-l7"
|
||||||
load_balancer_id = oci_load_balancer.web.id
|
load_balancer_id = oci_load_balancer_load_balancer.web.id
|
||||||
policy = "ROUND_ROBIN"
|
policy = "ROUND_ROBIN"
|
||||||
|
|
||||||
health_checker {
|
health_checker {
|
||||||
@@ -51,7 +53,7 @@ resource "oci_load_balancer_backend_set" "web" {
|
|||||||
|
|
||||||
resource "oci_load_balancer_backend_set" "webs" {
|
resource "oci_load_balancer_backend_set" "webs" {
|
||||||
name = "${local.project}-webs-lb-l7"
|
name = "${local.project}-webs-lb-l7"
|
||||||
load_balancer_id = oci_load_balancer.web.id
|
load_balancer_id = oci_load_balancer_load_balancer.web.id
|
||||||
policy = "ROUND_ROBIN"
|
policy = "ROUND_ROBIN"
|
||||||
|
|
||||||
health_checker {
|
health_checker {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ locals {
|
|||||||
lbv4_local = local.lbv4_enable ? [for ip in oci_network_load_balancer_network_load_balancer.contolplane[0].ip_addresses : ip.ip_address if !ip.is_public][0] : cidrhost(local.network_public[0].cidr_block, 11)
|
lbv4_local = local.lbv4_enable ? [for ip in oci_network_load_balancer_network_load_balancer.contolplane[0].ip_addresses : ip.ip_address if !ip.is_public][0] : cidrhost(local.network_public[0].cidr_block, 11)
|
||||||
|
|
||||||
lbv4_web_enable = false
|
lbv4_web_enable = false
|
||||||
lbv4_web = local.lbv4_web_enable ? [for ip in oci_network_load_balancer_network_load_balancer.web[0].ip_addresses : ip.ip_address if ip.is_public][0] : oci_load_balancer.web.ip_addresses[0]
|
lbv4_web = local.lbv4_web_enable ? [for ip in oci_network_load_balancer_network_load_balancer.web[0].ip_addresses : ip.ip_address if ip.is_public][0] : oci_load_balancer_load_balancer.web.ip_address_details[0].ip_address
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "oci_dns_rrset" "lbv4_local" {
|
resource "oci_dns_rrset" "lbv4_local" {
|
||||||
@@ -69,7 +69,7 @@ resource "oci_network_load_balancer_backend_set" "contolplane" {
|
|||||||
protocol = "HTTPS"
|
protocol = "HTTPS"
|
||||||
port = 6443
|
port = 6443
|
||||||
url_path = "/readyz"
|
url_path = "/readyz"
|
||||||
return_code = 200
|
return_code = 401
|
||||||
interval_in_millis = 15000
|
interval_in_millis = 15000
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ variable "tenancy_ocid" {}
|
|||||||
variable "user_ocid" {}
|
variable "user_ocid" {}
|
||||||
variable "fingerprint" {}
|
variable "fingerprint" {}
|
||||||
variable "key_file" {
|
variable "key_file" {
|
||||||
default = "~/.oci/oci_main_terraform_public.pem"
|
default = "~/.oci/oci_main_terraform.pem"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "project" {
|
variable "project" {
|
||||||
|
|||||||
@@ -3,7 +3,8 @@ terraform {
|
|||||||
required_providers {
|
required_providers {
|
||||||
oci = {
|
oci = {
|
||||||
source = "hashicorp/oci"
|
source = "hashicorp/oci"
|
||||||
version = "4.61.0"
|
version = "4.102.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
required_version = ">= 1.2"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ machine:
|
|||||||
addresses:
|
addresses:
|
||||||
- 169.254.2.53/32
|
- 169.254.2.53/32
|
||||||
extraHostEntries:
|
extraHostEntries:
|
||||||
- ip: ${ipv4_local_vip}
|
- ip: ${lbv4_local}
|
||||||
aliases:
|
aliases:
|
||||||
- ${apiDomain}
|
- ${apiDomain}
|
||||||
install:
|
install:
|
||||||
@@ -59,7 +59,7 @@ cluster:
|
|||||||
id: ${clusterID}
|
id: ${clusterID}
|
||||||
secret: ${clusterSecret}
|
secret: ${clusterSecret}
|
||||||
controlPlane:
|
controlPlane:
|
||||||
endpoint: https://${lbv4_local}:6443
|
endpoint: https://${apiDomain}:6443
|
||||||
clusterName: ${clusterName}
|
clusterName: ${clusterName}
|
||||||
discovery:
|
discovery:
|
||||||
enabled: true
|
enabled: true
|
||||||
@@ -106,9 +106,9 @@ cluster:
|
|||||||
scheduler: {}
|
scheduler: {}
|
||||||
etcd:
|
etcd:
|
||||||
advertisedSubnets:
|
advertisedSubnets:
|
||||||
- ${nodeSubnets[0]}
|
- ${nodeSubnets}
|
||||||
listenSubnets:
|
listenSubnets:
|
||||||
- ${nodeSubnets[0]}
|
- ${nodeSubnets}
|
||||||
inlineManifests:
|
inlineManifests:
|
||||||
- name: cloud-provider.yaml
|
- name: cloud-provider.yaml
|
||||||
contents: |-
|
contents: |-
|
||||||
@@ -128,5 +128,6 @@ cluster:
|
|||||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/kubelet-serving-cert-approver.yaml
|
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/kubelet-serving-cert-approver.yaml
|
||||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/metrics-server.yaml
|
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/metrics-server.yaml
|
||||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/local-path-storage.yaml
|
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/local-path-storage.yaml
|
||||||
|
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/coredns-local.yaml
|
||||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/ingress-ns.yaml
|
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/ingress-ns.yaml
|
||||||
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/ingress_result.yaml
|
- https://raw.githubusercontent.com/sergelogvinov/terraform-talos/main/oracle/deployments/ingress_result.yaml
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ variable "tenancy_ocid" {}
|
|||||||
variable "user_ocid" {}
|
variable "user_ocid" {}
|
||||||
variable "fingerprint" {}
|
variable "fingerprint" {}
|
||||||
variable "key_file" {
|
variable "key_file" {
|
||||||
default = "~/.oci/oci_public.pem"
|
default = "~/.oci/oci_main_terraform.pem"
|
||||||
}
|
}
|
||||||
|
|
||||||
variable "project" {
|
variable "project" {
|
||||||
@@ -57,6 +57,7 @@ variable "kubernetes" {
|
|||||||
default = {
|
default = {
|
||||||
podSubnets = "10.32.0.0/12,fd40:10:32::/102"
|
podSubnets = "10.32.0.0/12,fd40:10:32::/102"
|
||||||
serviceSubnets = "10.200.0.0/22,fd40:10:200::/112"
|
serviceSubnets = "10.200.0.0/22,fd40:10:200::/112"
|
||||||
|
nodeSubnets = "192.168.0.0/16"
|
||||||
domain = "cluster.local"
|
domain = "cluster.local"
|
||||||
apiDomain = "api.cluster.local"
|
apiDomain = "api.cluster.local"
|
||||||
clusterName = "talos-k8s-oracle"
|
clusterName = "talos-k8s-oracle"
|
||||||
@@ -75,9 +76,9 @@ variable "controlplane" {
|
|||||||
type = map(any)
|
type = map(any)
|
||||||
default = {
|
default = {
|
||||||
count = 0,
|
count = 0,
|
||||||
type = "VM.Standard.E4.Flex"
|
type = "VM.Standard.A1.Flex"
|
||||||
ocpus = 1
|
ocpus = 2
|
||||||
memgb = 3
|
memgb = 8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,9 @@
|
|||||||
terraform {
|
terraform {
|
||||||
required_providers {
|
required_providers {
|
||||||
oci = {
|
oci = {
|
||||||
source = "oracle/oci"
|
source = "hashicorp/oci"
|
||||||
version = "4.73.0"
|
version = "4.102.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
required_version = ">= 1.2"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user