如何设置对Jenkins管道中Linode Kubernetes Engine集群的访问权限?

ppcbkaq5  于 2023-03-29  发布在  Jenkins
关注(0)|答案(1)|浏览(121)

所以我有这个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集群

rhfm7lfc

rhfm7lfc1#

首先需要声明一个outputs.tf文件,并在Terraform完成集群设置后将kubeconfig文件输出到Jenkins主机上。This是一篇关于如何编写此文件的好文章,并使用与您相同的Linode用例。而不是将文件写入.kube文件夹,您可以将其放置在其他地方,并在每次要对群集执行某些操作时引用它。例如:

environment {
    KUBECONFIG = "--kubeconfig='path/to/kubeconfig'"
}
...
sh "kubectl get po -A $KUBECONFIG"
...
sh "kubectl apply -f deployment.yaml $KUBECONFIG"

这将在正确的集群上运行kubectl命令。
如果你在同一台机器上运行.tf文件和Jenkins,那么上面的步骤应该可以工作。但是,如果运行.tf文件的机器与Jenkins机器是分开的,你将不得不在运行Terraform的机器上创建output.tf,并使用类似ssh-copy的东西将kubeconfig复制到运行Jenkins的机器上。

相关问题