所以我有这个main.tf
terraform {
required_providers {
linode = {
source = "linode/linode"
}
}
}
provider "linode" {
token = var.api_token
}
resource "linode_lke_cluster" "my-cluster" {
label = "my-cluster"
k8s_version = "1.25"
region = "eu-central"
tags = ["prod"]
pool {
type = "g6-standard-1"
count = 3
}
}
我有这个管道
pipeline {
agent any
stages {
stage('Provision LKE cluster') {
environment {
LINODE_TOKEN = credentials('api_token')
}
steps {
dir('terraform') {
sh 'terraform init'
sh "terraform apply --auto-approve"
}
}
}
}
我想添加一个stage来访问lke集群(所以我想我需要将KUBECONFIG设置为kubeconfig.yaml),这样我就可以在集群中部署应用程序,但我不知道如何允许jenkins访问lke集群
1条答案
按热度按时间rhfm7lfc1#
首先需要声明一个
outputs.tf
文件,并在Terraform完成集群设置后将kubeconfig文件输出到Jenkins主机上。This是一篇关于如何编写此文件的好文章,并使用与您相同的Linode用例。而不是将文件写入.kube文件夹,您可以将其放置在其他地方,并在每次要对群集执行某些操作时引用它。例如:这将在正确的集群上运行kubectl命令。
如果你在同一台机器上运行.tf文件和Jenkins,那么上面的步骤应该可以工作。但是,如果运行.tf文件的机器与Jenkins机器是分开的,你将不得不在运行Terraform的机器上创建
output.tf
,并使用类似ssh-copy
的东西将kubeconfig复制到运行Jenkins的机器上。