Add docs.
This commit is contained in:
119
docs/k3s_class_diagram.puml
Normal file
119
docs/k3s_class_diagram.puml
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
@startuml K3s Infrastructure Class Diagram
|
||||||
|
skinparam classAttributeIconSize 0
|
||||||
|
|
||||||
|
title K3s Kubernetes Cluster - Terraform Resource Relationships
|
||||||
|
|
||||||
|
package "Terraform Infrastructure" {
|
||||||
|
class "Development Environment" as dev {
|
||||||
|
+ server_ip: string
|
||||||
|
+ worker_ips: list(string)
|
||||||
|
+ ssh_user: string
|
||||||
|
+ ssh_private_key: string
|
||||||
|
+ replace_url: string
|
||||||
|
+ domain: string
|
||||||
|
+ ssl_cert_path: string
|
||||||
|
+ ssl_key_path: string
|
||||||
|
+ install_argocd: bool
|
||||||
|
+ enable_traefik_dashboard: bool
|
||||||
|
+ enable_ssh_tunnel: bool
|
||||||
|
}
|
||||||
|
|
||||||
|
class "K3s Install Module" as k3s_module {
|
||||||
|
+ server_ip: string
|
||||||
|
+ worker_ips: list(string)
|
||||||
|
+ ssh_user: string
|
||||||
|
+ ssh_private_key: string
|
||||||
|
+ replace_url: string
|
||||||
|
+ apply()
|
||||||
|
+ destroy()
|
||||||
|
}
|
||||||
|
|
||||||
|
class "null_resource.setup_ssh_config" as ssh_config {
|
||||||
|
+ triggers: map
|
||||||
|
- local-exec: create SSH config
|
||||||
|
}
|
||||||
|
|
||||||
|
class "null_resource.install_k3s_server" as server_install {
|
||||||
|
+ depends_on: [setup_ssh_config]
|
||||||
|
+ triggers: map
|
||||||
|
- remote-exec: install K3s server
|
||||||
|
- remote-exec: uninstall on destroy
|
||||||
|
}
|
||||||
|
|
||||||
|
class "null_resource.get_k3s_config" as get_config {
|
||||||
|
+ depends_on: [install_k3s_server, setup_ssh_config]
|
||||||
|
- remote-exec: copy kubeconfig
|
||||||
|
- local-exec: download kubeconfig
|
||||||
|
- local-exec: update server URL
|
||||||
|
}
|
||||||
|
|
||||||
|
class "null_resource.get_k3s_token" as get_token {
|
||||||
|
+ depends_on: [install_k3s_server, setup_ssh_config]
|
||||||
|
- remote-exec: extract node token
|
||||||
|
- local-exec: download token
|
||||||
|
}
|
||||||
|
|
||||||
|
class "null_resource.copy_token_to_workers" as copy_token {
|
||||||
|
+ depends_on: [get_k3s_token]
|
||||||
|
+ count: length(worker_ips)
|
||||||
|
- file: upload token to worker
|
||||||
|
}
|
||||||
|
|
||||||
|
class "null_resource.install_k3s_worker" as worker_install {
|
||||||
|
+ depends_on: [copy_token_to_workers]
|
||||||
|
+ count: length(worker_ips)
|
||||||
|
+ triggers: map
|
||||||
|
- remote-exec: install K3s agent
|
||||||
|
- remote-exec: uninstall on destroy
|
||||||
|
}
|
||||||
|
|
||||||
|
class "Output" as output {
|
||||||
|
+ kubeconfig_path: string
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
package "External Resources" {
|
||||||
|
class "Server Node" as server {
|
||||||
|
+ hostname: string
|
||||||
|
+ K3s server
|
||||||
|
+ Control plane components
|
||||||
|
+ Node token
|
||||||
|
+ Kubeconfig
|
||||||
|
}
|
||||||
|
|
||||||
|
class "Worker Node" as worker {
|
||||||
|
+ hostname: string
|
||||||
|
+ K3s agent
|
||||||
|
+ Container runtime
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dev --> k3s_module : uses
|
||||||
|
k3s_module --> ssh_config : creates
|
||||||
|
k3s_module --> server_install : creates
|
||||||
|
k3s_module --> get_config : creates
|
||||||
|
k3s_module --> get_token : creates
|
||||||
|
k3s_module --> copy_token : creates
|
||||||
|
k3s_module --> worker_install : creates
|
||||||
|
k3s_module --> output : provides
|
||||||
|
|
||||||
|
ssh_config ..> server : configures access
|
||||||
|
ssh_config ..> worker : configures access
|
||||||
|
server_install ..> server : provisions
|
||||||
|
get_config ..> server : extracts config
|
||||||
|
get_token ..> server : extracts token
|
||||||
|
copy_token ..> worker : transfers token
|
||||||
|
worker_install ..> worker : provisions
|
||||||
|
|
||||||
|
note bottom of k3s_module
|
||||||
|
The K3s Install Module orchestrates the provisioning of a K3s Kubernetes cluster
|
||||||
|
by creating and managing the necessary resources in sequence:
|
||||||
|
1. Set up SSH configuration
|
||||||
|
2. Install K3s on server node
|
||||||
|
3. Retrieve kubeconfig and node token
|
||||||
|
4. Copy token to worker nodes
|
||||||
|
5. Install K3s agents on worker nodes
|
||||||
|
end note
|
||||||
|
|
||||||
|
footer K3s Infrastructure Class Diagram - Version 1.0
|
||||||
|
@enduml
|
||||||
56
docs/k3s_component_diagram.puml
Normal file
56
docs/k3s_component_diagram.puml
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
@startuml K3s Infrastructure Component Diagram
|
||||||
|
!include <C4/C4_Component>
|
||||||
|
|
||||||
|
title K3s Kubernetes Cluster Infrastructure - Component Diagram
|
||||||
|
|
||||||
|
AddElementTag("module", $bgColor="#85BBF0", $fontColor="black", $borderColor="#78A8D8")
|
||||||
|
AddElementTag("resource", $bgColor="#85E0A3", $fontColor="black", $borderColor="#78D096")
|
||||||
|
AddElementTag("data", $bgColor="#F5DA81", $fontColor="black", $borderColor="#E8CD74")
|
||||||
|
AddElementTag("provider", $bgColor="#F08585", $fontColor="black", $borderColor="#D87878")
|
||||||
|
|
||||||
|
Person(client, "DevOps Engineer", "Infrastructure Administrator")
|
||||||
|
|
||||||
|
System_Boundary(terraform, "Terraform Infrastructure") {
|
||||||
|
Component(providers, "Terraform Providers", "null, local", "Required providers for infrastructure management", $tags="provider")
|
||||||
|
|
||||||
|
Component_Ext(dev_env, "Development Environment", "terraform/infra/dev", "Main entry point for infrastructure deployment", $tags="module")
|
||||||
|
|
||||||
|
Component(k3s_module, "K3s Install Module", "terraform/modules/k3s-install", "Module for K3s Kubernetes cluster deployment", $tags="module")
|
||||||
|
|
||||||
|
Component(null_resources, "Null Resources", "terraform", "Various operations performed by null_resource blocks", $tags="resource")
|
||||||
|
|
||||||
|
Component(variables, "Variables Configuration", "terraform/infra/dev/terraform.tfvars", "Infrastructure configuration parameters", $tags="data")
|
||||||
|
|
||||||
|
Component(env_file, "Environment File", ".env", "Environment-specific variables", $tags="data")
|
||||||
|
}
|
||||||
|
|
||||||
|
System_Boundary(infrastructure, "K3s Kubernetes Cluster") {
|
||||||
|
Component(server_node, "K3s Server Node", "Kubernetes Control Plane", "Main server managing the Kubernetes cluster", $tags="resource")
|
||||||
|
|
||||||
|
Component(worker1, "Worker Node 1", "Kubernetes Worker", "Node running containerized workloads", $tags="resource")
|
||||||
|
Component(worker2, "Worker Node 2", "Kubernetes Worker", "Node running containerized workloads", $tags="resource")
|
||||||
|
|
||||||
|
Component(kubeconfig, "Kubeconfig", "YAML Configuration", "Authentication and connection details", $tags="data")
|
||||||
|
|
||||||
|
Component(node_token, "Node Token", "Authentication Token", "Used by workers to join the cluster", $tags="data")
|
||||||
|
}
|
||||||
|
|
||||||
|
Rel(client, dev_env, "Runs terraform apply/destroy")
|
||||||
|
Rel(dev_env, variables, "Reads configuration from")
|
||||||
|
Rel(dev_env, env_file, "Reads environment data")
|
||||||
|
Rel_Right(dev_env, k3s_module, "Uses")
|
||||||
|
Rel(k3s_module, null_resources, "Creates and manages")
|
||||||
|
Rel(k3s_module, providers, "Uses")
|
||||||
|
|
||||||
|
Rel(null_resources, server_node, "Provisions and configures")
|
||||||
|
Rel_Right(server_node, node_token, "Generates")
|
||||||
|
Rel_Right(server_node, kubeconfig, "Generates")
|
||||||
|
Rel(null_resources, node_token, "Retrieves")
|
||||||
|
Rel(null_resources, worker1, "Provisions and configures")
|
||||||
|
Rel(null_resources, worker2, "Provisions and configures")
|
||||||
|
Rel_Up(worker1, node_token, "Uses for authentication")
|
||||||
|
Rel_Up(worker2, node_token, "Uses for authentication")
|
||||||
|
Rel(client, kubeconfig, "Uses to access cluster")
|
||||||
|
|
||||||
|
footer K3s Infrastructure Components - Version 1.0
|
||||||
|
@enduml
|
||||||
78
docs/k3s_deployment_diagram.puml
Normal file
78
docs/k3s_deployment_diagram.puml
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
@startuml K3s Infrastructure Deployment Diagram
|
||||||
|
!include <kubernetes/k8s-sprites-unlabeled-25pct>
|
||||||
|
|
||||||
|
skinparam linetype ortho
|
||||||
|
skinparam rectangle {
|
||||||
|
BackgroundColor<<Server>> #C0FFFF
|
||||||
|
BackgroundColor<<Worker>> #F0FFC0
|
||||||
|
BackgroundColor<<Config>> #FFE0C0
|
||||||
|
BackgroundColor<<Terraform>> #C0C0FF
|
||||||
|
}
|
||||||
|
|
||||||
|
title K3s Kubernetes Cluster - Deployment Architecture
|
||||||
|
|
||||||
|
rectangle "Infrastructure Administrator's Machine" as client {
|
||||||
|
rectangle "Terraform CLI" as terraform <<Terraform>> {
|
||||||
|
rectangle "terraform.tfvars" as tfvars
|
||||||
|
rectangle "main.tf" as main
|
||||||
|
rectangle "variables.tf" as vars
|
||||||
|
rectangle ".env file" as env
|
||||||
|
}
|
||||||
|
rectangle "SSH Keys" as ssh_keys
|
||||||
|
rectangle "Local Kubeconfig" as local_kubeconfig <<Config>>
|
||||||
|
}
|
||||||
|
|
||||||
|
rectangle "Kubernetes Cluster" {
|
||||||
|
rectangle "Server Node\n(reg.benadis.org)" as server <<Server>> {
|
||||||
|
rectangle "<$node>\nK3s Server" as k3s_server
|
||||||
|
rectangle "Control Plane Components" as control_plane
|
||||||
|
rectangle "/etc/rancher/k3s/k3s.yaml" as kubeconfig <<Config>>
|
||||||
|
rectangle "Node Token" as token <<Config>>
|
||||||
|
}
|
||||||
|
|
||||||
|
rectangle "Worker Node 1\n(worker1.benadis.org)" as worker1 <<Worker>> {
|
||||||
|
rectangle "<$pod>\nK3s Agent" as k3s_agent1
|
||||||
|
rectangle "Container Runtime" as container1
|
||||||
|
}
|
||||||
|
|
||||||
|
rectangle "Worker Node 2\n(worker2.benadis.org)" as worker2 <<Worker>> {
|
||||||
|
rectangle "<$pod>\nK3s Agent" as k3s_agent2
|
||||||
|
rectangle "Container Runtime" as container2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
' Client connections
|
||||||
|
client -- server : SSH
|
||||||
|
client -- worker1 : SSH
|
||||||
|
client -- worker2 : SSH
|
||||||
|
|
||||||
|
' Internal cluster connections
|
||||||
|
server -- worker1 : HTTPS (6443)
|
||||||
|
server -- worker2 : HTTPS (6443)
|
||||||
|
|
||||||
|
' Configuration flows
|
||||||
|
terraform ..> server : provisions
|
||||||
|
terraform ...> worker1 : provisions
|
||||||
|
terraform ...> worker2 : provisions
|
||||||
|
|
||||||
|
ssh_keys ....> server : authenticates
|
||||||
|
ssh_keys ....> worker1 : authenticates
|
||||||
|
ssh_keys ....> worker2 : authenticates
|
||||||
|
|
||||||
|
kubeconfig -[dashed]-> local_kubeconfig : copied & modified
|
||||||
|
token -[dashed]-> worker1 : used for joining
|
||||||
|
token -[dashed]-> worker2 : used for joining
|
||||||
|
|
||||||
|
note as N1
|
||||||
|
The K3s deployment uses Terraform to provision a lightweight
|
||||||
|
Kubernetes cluster consisting of one server node and two worker nodes.
|
||||||
|
|
||||||
|
Key features:
|
||||||
|
- Uses SSH for secure provisioning
|
||||||
|
- Retrieves kubeconfig file for cluster access
|
||||||
|
- Transfers node token to worker nodes for authentication
|
||||||
|
- Creates a secure and robust Kubernetes environment
|
||||||
|
end note
|
||||||
|
|
||||||
|
footer K3s Infrastructure Deployment Architecture - Version 1.0
|
||||||
|
@enduml
|
||||||
84
docs/k3s_infrastructure_activity_diagram.puml
Normal file
84
docs/k3s_infrastructure_activity_diagram.puml
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
@startuml K3s Infrastructure Deployment Workflow
|
||||||
|
skinparam ConditionEndStyle hline
|
||||||
|
|
||||||
|
title K3s Kubernetes Cluster Deployment Workflow
|
||||||
|
|
||||||
|
|#AntiqueWhite|Client|
|
||||||
|
|#LightBlue|Terraform|
|
||||||
|
|#PaleGreen|Server Node|
|
||||||
|
|#LightSalmon|Worker Nodes|
|
||||||
|
|
||||||
|
|Client|
|
||||||
|
start
|
||||||
|
:Prepare SSH Authentication;
|
||||||
|
note right: SSH key pair must be available at the specified path
|
||||||
|
|
||||||
|
|Terraform|
|
||||||
|
:Read Input Variables (Dev Environment);
|
||||||
|
note right: server_ip, worker_ips, ssh_user, ssh_private_key, and other parameters
|
||||||
|
|
||||||
|
:Setup SSH Config;
|
||||||
|
note right: Creates temporary SSH config for secure connections
|
||||||
|
|
||||||
|
|Server Node|
|
||||||
|
:Install K3s Server;
|
||||||
|
note right
|
||||||
|
Uses curl to download and run K3s installer
|
||||||
|
Configures node as a Kubernetes server
|
||||||
|
end note
|
||||||
|
|
||||||
|
:Store Kubeconfig;
|
||||||
|
:Generate Node Token;
|
||||||
|
note right: Required for worker nodes to join the cluster
|
||||||
|
|
||||||
|
|Terraform|
|
||||||
|
:Retrieve K3s Kubeconfig;
|
||||||
|
note right
|
||||||
|
Gets k3s.yaml configuration
|
||||||
|
Makes it accessible locally
|
||||||
|
Updates server URL in config
|
||||||
|
end note
|
||||||
|
|
||||||
|
:Retrieve Node Token;
|
||||||
|
note right: Securely transfer the token to local environment
|
||||||
|
|
||||||
|
|Worker Nodes|
|
||||||
|
fork
|
||||||
|
:Worker Node 1;
|
||||||
|
note right: For each worker node in parallel
|
||||||
|
fork again
|
||||||
|
:Worker Node 2;
|
||||||
|
end fork
|
||||||
|
|
||||||
|
|Terraform|
|
||||||
|
:Copy Node Token to Workers;
|
||||||
|
note right: Securely transfer the join token to each worker
|
||||||
|
|
||||||
|
|Worker Nodes|
|
||||||
|
fork
|
||||||
|
:Install K3s Agent (Worker 1);
|
||||||
|
note right
|
||||||
|
Installs K3s in agent mode
|
||||||
|
Connects to server using token
|
||||||
|
Registers as a worker node
|
||||||
|
end note
|
||||||
|
fork again
|
||||||
|
:Install K3s Agent (Worker 2);
|
||||||
|
end fork
|
||||||
|
|
||||||
|
|Terraform|
|
||||||
|
:Cluster is Ready;
|
||||||
|
note right
|
||||||
|
All nodes are provisioned
|
||||||
|
Kubeconfig is available locally
|
||||||
|
Cluster can be accessed via kubectl
|
||||||
|
end note
|
||||||
|
|
||||||
|
|Client|
|
||||||
|
:Access Kubernetes Cluster;
|
||||||
|
note right: Using generated kubeconfig at ~/.kube/config or as specified
|
||||||
|
|
||||||
|
stop
|
||||||
|
|
||||||
|
footer Infrastructure Deployment Process - Version 1.0
|
||||||
|
@enduml
|
||||||
97
docs/k3s_sequence_diagram.puml
Normal file
97
docs/k3s_sequence_diagram.puml
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
@startuml K3s Infrastructure Sequence Diagram
|
||||||
|
skinparam sequenceMessageAlign center
|
||||||
|
skinparam responseMessageBelowArrow true
|
||||||
|
|
||||||
|
title K3s Kubernetes Cluster Deployment - Sequence Diagram
|
||||||
|
|
||||||
|
actor "DevOps Engineer" as client
|
||||||
|
participant "Terraform CLI" as terraform
|
||||||
|
participant "K3s Install Module" as module
|
||||||
|
participant "SSH Connection" as ssh
|
||||||
|
participant "Server Node" as server
|
||||||
|
participant "Worker Node 1" as worker1
|
||||||
|
participant "Worker Node 2" as worker2
|
||||||
|
|
||||||
|
== Infrastructure Initialization ==
|
||||||
|
client -> terraform: terraform init
|
||||||
|
terraform -> client: Providers initialized
|
||||||
|
|
||||||
|
== Deployment Planning ==
|
||||||
|
client -> terraform: terraform plan
|
||||||
|
terraform -> module: Parse variables
|
||||||
|
module -> terraform: Show planned resources
|
||||||
|
terraform -> client: Display execution plan
|
||||||
|
|
||||||
|
== Infrastructure Deployment ==
|
||||||
|
client -> terraform: terraform apply
|
||||||
|
terraform -> module: Execute installation
|
||||||
|
|
||||||
|
== SSH Configuration ==
|
||||||
|
module -> module: Create temporary SSH config
|
||||||
|
note right: Creates secure SSH configuration for all nodes
|
||||||
|
|
||||||
|
== Server Provisioning ==
|
||||||
|
module -> ssh: Establish connection to server
|
||||||
|
ssh -> server: Connect
|
||||||
|
module -> server: Install K3s server component
|
||||||
|
note right
|
||||||
|
Uses curl to download K3s installer
|
||||||
|
Configures K3s as server node
|
||||||
|
end note
|
||||||
|
server --> module: Installation complete
|
||||||
|
|
||||||
|
== Kubeconfig Retrieval ==
|
||||||
|
module -> server: Request kubeconfig
|
||||||
|
server -> server: Copy k3s.yaml to /tmp
|
||||||
|
server --> module: Kubeconfig available
|
||||||
|
module -> module: Download kubeconfig
|
||||||
|
module -> module: Update server URL in config
|
||||||
|
note right: Replaces 127.0.0.1 with actual server address
|
||||||
|
|
||||||
|
== Node Token Handling ==
|
||||||
|
module -> server: Request node token
|
||||||
|
server -> server: Extract node token
|
||||||
|
server --> module: Node token available
|
||||||
|
module -> module: Download node token
|
||||||
|
|
||||||
|
== Worker Node Provisioning ==
|
||||||
|
group Worker Node Installation [Parallel execution]
|
||||||
|
module -> ssh: Connect to Worker Node 1
|
||||||
|
ssh -> worker1: Connect
|
||||||
|
module -> worker1: Transfer node token
|
||||||
|
module -> worker1: Install K3s agent
|
||||||
|
note right
|
||||||
|
Installs K3s in agent mode
|
||||||
|
Uses token to join the cluster
|
||||||
|
end note
|
||||||
|
worker1 --> module: Installation complete
|
||||||
|
|
||||||
|
module -> ssh: Connect to Worker Node 2
|
||||||
|
ssh -> worker2: Connect
|
||||||
|
module -> worker2: Transfer node token
|
||||||
|
module -> worker2: Install K3s agent
|
||||||
|
worker2 --> module: Installation complete
|
||||||
|
end
|
||||||
|
|
||||||
|
== Completion ==
|
||||||
|
module --> terraform: All resources provisioned
|
||||||
|
terraform --> client: Infrastructure deployment complete
|
||||||
|
|
||||||
|
== Cluster Usage ==
|
||||||
|
client -> server: Access Kubernetes via kubeconfig
|
||||||
|
note right: Uses kubectl with the generated configuration
|
||||||
|
|
||||||
|
== Destruction (Optional) ==
|
||||||
|
client -> terraform: terraform destroy
|
||||||
|
terraform -> module: Initiate cleanup
|
||||||
|
module -> worker1: Run agent uninstall script
|
||||||
|
worker1 --> module: Agent uninstalled
|
||||||
|
module -> worker2: Run agent uninstall script
|
||||||
|
worker2 --> module: Agent uninstalled
|
||||||
|
module -> server: Run server uninstall script
|
||||||
|
server --> module: Server uninstalled
|
||||||
|
module --> terraform: All resources cleaned up
|
||||||
|
terraform --> client: Infrastructure destroyed
|
||||||
|
|
||||||
|
footer K3s Infrastructure Sequence Diagram - Version 1.0
|
||||||
|
@enduml
|
||||||
69
docs/prompt.md
Normal file
69
docs/prompt.md
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# K3s Kubernetes Infrastructure Generation Prompt
|
||||||
|
|
||||||
|
This document contains the prompt that can be used to regenerate the entire K3s Kubernetes infrastructure project based on the PlantUML diagrams provided in this directory.
|
||||||
|
|
||||||
|
## Prompt for Project Generation
|
||||||
|
|
||||||
|
```
|
||||||
|
Please generate a complete Terraform project for deploying a K3s Kubernetes cluster based on the following PlantUML diagrams:
|
||||||
|
|
||||||
|
1. The activity diagram (k3s_infrastructure_activity_diagram.puml) shows the workflow and sequence of operations for setting up the K3s infrastructure.
|
||||||
|
2. The component diagram (k3s_component_diagram.puml) illustrates the main components and their relationships.
|
||||||
|
3. The sequence diagram (k3s_sequence_diagram.puml) details the interaction between different components during deployment.
|
||||||
|
4. The deployment diagram (k3s_deployment_diagram.puml) shows the physical architecture of the Kubernetes cluster.
|
||||||
|
5. The class diagram (k3s_class_diagram.puml) depicts the relationships between Terraform resources.
|
||||||
|
|
||||||
|
Based on these diagrams, create a complete Terraform project with the following structure:
|
||||||
|
|
||||||
|
- terraform/
|
||||||
|
- modules/
|
||||||
|
- k3s-install/
|
||||||
|
- main.tf (K3s installation logic)
|
||||||
|
- variables.tf (Module variables)
|
||||||
|
- outputs.tf (Module outputs)
|
||||||
|
- infra/
|
||||||
|
- dev/
|
||||||
|
- main.tf (Main entry point)
|
||||||
|
- variables.tf (Variable definitions)
|
||||||
|
- terraform.tfvars (Variable values)
|
||||||
|
- env.tf (Environment file handling)
|
||||||
|
- providers.tf (Provider configurations)
|
||||||
|
- .env (Environment variables - empty template)
|
||||||
|
|
||||||
|
The project should implement the following functionality:
|
||||||
|
1. Setup SSH configuration for secure connections to server and worker nodes
|
||||||
|
2. Install K3s server on the main node
|
||||||
|
3. Retrieve kubeconfig and node token from the server
|
||||||
|
4. Copy the node token to worker nodes
|
||||||
|
5. Install K3s agents on worker nodes
|
||||||
|
6. Provide proper cleanup/uninstallation on terraform destroy
|
||||||
|
7. Handle any potential errors gracefully
|
||||||
|
|
||||||
|
Use only null and local providers for this infrastructure. All operations should be performed using SSH connections and local-exec/remote-exec provisioners.
|
||||||
|
|
||||||
|
Please implement each file with complete, working code that follows Terraform best practices.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Modifying the Infrastructure
|
||||||
|
|
||||||
|
To modify the infrastructure, you can:
|
||||||
|
|
||||||
|
1. Edit the PlantUML diagrams to reflect your desired changes
|
||||||
|
2. Provide a prompt like the following:
|
||||||
|
|
||||||
|
```
|
||||||
|
Based on the modified PlantUML diagram [diagram_name.puml], please update the corresponding Terraform files to implement these changes:
|
||||||
|
|
||||||
|
[List specific changes here]
|
||||||
|
|
||||||
|
Ensure that the changes maintain the overall integrity of the infrastructure and follow Terraform best practices.
|
||||||
|
```
|
||||||
|
|
||||||
|
## Additional Considerations
|
||||||
|
|
||||||
|
- The diagrams contain detailed comments and notes that explain the functionality and purpose of each component
|
||||||
|
- The activity diagram shows the exact flow of operations needed for proper deployment
|
||||||
|
- The class diagram maps directly to Terraform resources and their relationships
|
||||||
|
- The sequence diagram provides timing information critical for understanding dependencies
|
||||||
|
|
||||||
|
By following these diagrams, you can generate a fully functional Terraform project for deploying a K3s Kubernetes cluster on any compatible infrastructure.
|
||||||
Reference in New Issue
Block a user