implemented gitops scaffolding and migrated docker compose to new folder
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
provider "talos" {}
|
||||
|
||||
provider "kubernetes" {
|
||||
host = data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.host
|
||||
client_certificate = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.client_certificate)
|
||||
client_key = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.client_key)
|
||||
cluster_ca_certificate = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.ca_certificate)
|
||||
}
|
||||
|
||||
provider "helm" {
|
||||
kubernetes {
|
||||
host = data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.host
|
||||
client_certificate = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.client_certificate)
|
||||
client_key = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.client_key)
|
||||
cluster_ca_certificate = base64decode(data.talos_cluster_kubeconfig.cluster.kubernetes_client_configuration.ca_certificate)
|
||||
}
|
||||
}
|
||||
|
||||
resource "talos_machine_secrets" "cluster" {
|
||||
talos_version = var.talos_version
|
||||
}
|
||||
|
||||
data "talos_machine_configuration" "control_plane" {
|
||||
cluster_name = var.cluster_name
|
||||
cluster_endpoint = var.cluster_endpoint
|
||||
machine_type = "controlplane"
|
||||
talos_version = var.talos_version
|
||||
kubernetes_version = var.kubernetes_version
|
||||
machine_secrets = talos_machine_secrets.cluster.machine_secrets
|
||||
}
|
||||
|
||||
data "talos_machine_configuration" "worker" {
|
||||
cluster_name = var.cluster_name
|
||||
cluster_endpoint = var.cluster_endpoint
|
||||
machine_type = "worker"
|
||||
talos_version = var.talos_version
|
||||
kubernetes_version = var.kubernetes_version
|
||||
machine_secrets = talos_machine_secrets.cluster.machine_secrets
|
||||
}
|
||||
|
||||
resource "talos_machine_configuration_apply" "control_plane" {
|
||||
client_configuration = talos_machine_secrets.cluster.client_configuration
|
||||
machine_configuration_input = data.talos_machine_configuration.control_plane.machine_configuration
|
||||
node = var.control_plane_ip
|
||||
}
|
||||
|
||||
resource "talos_machine_configuration_apply" "worker" {
|
||||
client_configuration = talos_machine_secrets.cluster.client_configuration
|
||||
machine_configuration_input = data.talos_machine_configuration.worker.machine_configuration
|
||||
node = var.worker_ip
|
||||
}
|
||||
|
||||
resource "talos_machine_bootstrap" "cluster" {
|
||||
node = var.control_plane_ip
|
||||
client_configuration = talos_machine_secrets.cluster.client_configuration
|
||||
depends_on = [talos_machine_configuration_apply.control_plane]
|
||||
}
|
||||
|
||||
data "talos_cluster_kubeconfig" "cluster" {
|
||||
client_configuration = talos_machine_secrets.cluster.client_configuration
|
||||
node = var.control_plane_ip
|
||||
endpoints = [var.control_plane_ip]
|
||||
depends_on = [talos_machine_bootstrap.cluster, talos_machine_configuration_apply.worker]
|
||||
}
|
||||
|
||||
resource "helm_release" "argocd" {
|
||||
name = "argocd"
|
||||
namespace = "argocd"
|
||||
create_namespace = true
|
||||
repository = "https://argoproj.github.io/argo-helm"
|
||||
chart = "argo-cd"
|
||||
version = var.argocd_chart_version
|
||||
|
||||
values = [yamlencode({
|
||||
server = {
|
||||
service = {
|
||||
type = "ClusterIP"
|
||||
}
|
||||
}
|
||||
controller = {
|
||||
replicas = 1
|
||||
}
|
||||
repoServer = {
|
||||
replicas = 1
|
||||
}
|
||||
applicationSet = {
|
||||
replicas = 1
|
||||
}
|
||||
})]
|
||||
|
||||
depends_on = [data.talos_cluster_kubeconfig.cluster]
|
||||
}
|
||||
|
||||
resource "kubernetes_secret_v1" "gitea" {
|
||||
metadata {
|
||||
name = "gitea-repository"
|
||||
namespace = "argocd"
|
||||
labels = {
|
||||
"argocd.argoproj.io/secret-type" = "repository"
|
||||
}
|
||||
}
|
||||
|
||||
type = "Opaque"
|
||||
|
||||
data = {
|
||||
type = "git"
|
||||
url = var.gitea_repository_url
|
||||
username = var.gitea_username
|
||||
password = var.gitea_password
|
||||
}
|
||||
|
||||
depends_on = [helm_release.argocd]
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
output "kubeconfig" {
|
||||
description = "Kubeconfig for the bootstrapped Talos cluster."
|
||||
value = data.talos_cluster_kubeconfig.cluster.kubeconfig_raw
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
output "argocd_repository_secret_name" {
|
||||
description = "Argo CD repository credential Secret name."
|
||||
value = kubernetes_secret_v1.gitea.metadata[0].name
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
cluster_name = "home-services"
|
||||
talos_version = "v1.14.0"
|
||||
kubernetes_version = "<supported-kubernetes-version>"
|
||||
control_plane_ip = "10.0.0.99"
|
||||
worker_ip = "10.0.0.246"
|
||||
cluster_endpoint = "https://<control-plane-vip>:6443"
|
||||
gitea_repository_url = "https://git.sorells.me/whentimeslows/home-services.git"
|
||||
gitea_username = "<gitea-user>"
|
||||
gitea_password = "<gitea-token>"
|
||||
@@ -0,0 +1,58 @@
|
||||
variable "cluster_name" {
|
||||
type = string
|
||||
description = "Talos cluster name."
|
||||
default = "home-services"
|
||||
}
|
||||
|
||||
variable "talos_version" {
|
||||
type = string
|
||||
description = "Talos version used to generate machine configuration."
|
||||
default = "v1.14.0"
|
||||
}
|
||||
|
||||
variable "kubernetes_version" {
|
||||
type = string
|
||||
description = "Kubernetes version supported by the selected Talos version."
|
||||
}
|
||||
|
||||
variable "control_plane_ip" {
|
||||
type = string
|
||||
description = "Control-plane node address."
|
||||
default = "10.0.0.99"
|
||||
}
|
||||
|
||||
variable "worker_ip" {
|
||||
type = string
|
||||
description = "Worker node address."
|
||||
default = "10.0.0.246"
|
||||
}
|
||||
|
||||
variable "cluster_endpoint" {
|
||||
type = string
|
||||
description = "Stable HTTPS endpoint for the Talos and Kubernetes APIs."
|
||||
}
|
||||
|
||||
variable "gitea_repository_url" {
|
||||
type = string
|
||||
description = "Git URL Argo CD uses for the GitOps repository."
|
||||
default = "https://git.sorells.me/whentimeslows/home-services.git"
|
||||
}
|
||||
|
||||
variable "gitea_username" {
|
||||
type = string
|
||||
description = "Username for HTTPS Gitea repository access."
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "gitea_password" {
|
||||
type = string
|
||||
description = "Token or password for HTTPS Gitea repository access."
|
||||
sensitive = true
|
||||
default = ""
|
||||
}
|
||||
|
||||
variable "argocd_chart_version" {
|
||||
type = string
|
||||
description = "Pinned Argo CD chart version."
|
||||
default = "7.7.16"
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
terraform {
|
||||
required_version = ">= 1.6.0"
|
||||
|
||||
required_providers {
|
||||
talos = {
|
||||
source = "siderolabs/talos"
|
||||
version = "~> 0.7"
|
||||
}
|
||||
kubernetes = {
|
||||
source = "hashicorp/kubernetes"
|
||||
version = "~> 2.35"
|
||||
}
|
||||
helm = {
|
||||
source = "hashicorp/helm"
|
||||
version = "~> 2.16"
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user