云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

数据库服务器_域名网站建设_高性能

小七 141 0

用AKS和Terraform创建Kubernetes集群

最新消息:2018年6月13日,微软宣布Azure Kubernetes服务(AKS)全面可用。经过与微软工程师的密切合作,HashiCorp很高兴宣布HashiCorp Terraform对AKS的第零天支持。使用AKS,Terraform用户可以创建和管理Kubernetes集群,作为Terraform工作流的一部分。这个博客详细介绍了如何开始使用AKS和Terraform,并概述了正确配置的必要步骤。微软和HashiCorp一直在合作构建HashiCorp Terraform的Azure提供者,允许您使用HashiCorp配置语言(HCL)声明性地管理所有的Azure基础设施。最新的一个版本包含了azurekubernetes服务(AKS)的预览。AKS管理您的托管Kubernetes环境,使部署和管理容器化应用程序变得快速而容易,而无需容器编排专业知识。它还通过按需调配、升级和扩展资源,而无需让应用程序离线,从而消除了日常操作和维护的负担。用Terraform创建AKS资源非常简单,它只需要一个资源azurerm_kbernetes_集群,在本文中,我们将通过必要的步骤来创建Terraform。»安装程序第一步是配置Azure提供程序,我们使用provider节将该提供程序添加到配置中:提供商"azurerm"{版本="=1.5.0"}我们需要为提供程序配置订阅_id、client_id、client_secret和tenant_id。请使用与您的帐户对应的值设置以下环境变量。导出ARM_SUBSCRIPTION_ID=xxxxxxxx导出ARM_客户端_ID=xxxxxxx导出ARM_CLIENT_SECRET=xxxxxxx出口ARM租户_ID=xxxxxxxx如果您没有这些详细信息,可以使用az命令行工具来获取它们:$az ad sp create for rbac--role="Contributor"--scopes="/subscriptions/your_subscription_id"»创建资源在Azure中,所有基础设施元素(如虚拟机、存储和我们的Kubernetes集群)都需要附加到一个资源组。资源组还定义在其中创建资源的区域。要创建资源组,我们使用azure_resource_group节。下面的示例使用变量作为名称和位置。变量允许您创建动态配置并避免硬编码值。资源"azurerm_resource_group""k8s"{名称="${变量资源组名称}"位置="${可变位置}"}创建集群所需的资源是azurerm_kubernetes_cluster,可以在下面的示例中看到:资源"azurerm_kubernetes_cluster""k8s"{名称="${var.cluster_名称}"location="${azurerm_resource_group.k8s.location}"resource_group_name="${azurerm_resource_group.k8s.name}"dns前缀="${var.dns_前缀}"linux_配置文件{admin_username="ubuntu"ssh密钥{key_data="${file("${var.ssh_公钥}")}"}}逯池逖探员简介{name="默认值"计数="${变量代理计数}"vm_size="标准_A0"类型="Linux"操作系统磁盘大小gb=30}服务负责人{客户机号码="${变量客户机编号}"客户机密码="${变量客户机密钥}"}标签{环境="生产"}}我们正在设置标准属性、集群名称、位置和资源组名称。然后设置dns_前缀;dns_前缀构成用于访问集群的完全限定域名的一部分。linux_profile节允许我们配置允许使用ssh登录到工作节点的设置。使用AKS,您只需支付工作节点的费用,在下一个块代理程序池配置文件中,我们将配置这些节点的详细信息。此块包括我们要创建的工人数量和工人类型。如果以后需要放大或缩小集群,我们可以更改在这个块中定义的worker的计数。service_principal块允许我们设置Kubernetes在创建Azure负载平衡器时使用的client_id和client_secret,在本例中,我们可以将其设置为用于创建资源的主客户端_id和secret。在生产环境中运行时,我们通常会将其设置为特定的受限帐户。我们不想硬编码这些信息,所以我们从一个变量中获取这些值。要设置变量,您可以在运行terraform plan时传递信息:$terraform plan-var"client_id=您的_client_id"-var"client_secret=您的_client_secret"或者,我们可以像对提供程序和远程状态配置那样使用环境变量:export TF_VAR_client_id=${ARM_client_id}export TF_VAR_client_secret=${ARM_client_secret}通过HashiCorp配置输入变量-Terraform最后,我们可以设置一些输出变量,允许使用kubectl访问集群。输出"kube_config"{value="${azurerm_kubernetes_cluster.k8s.kube_config_raw}"}输出"主机"{value="${azurerm_kubernetes_cluster.k8s.kube_config.0.host}"}Azure资源管理器:azurerm_kubernetes_cluster-HashiCorp开发的Terraform一旦一切就绪,我们首先需要运行terraform init init init命令下载配置中定义的所需提供程序。$terraform初始化正在初始化提供程序插件。。。以下提供程序在配置中没有任何版本约束,所以安装了最新版本。防止自动升级到可能包含中断的新主要版本更改时,建议将version="…"约束添加到配置中相应的提供程序块,带有约束字符串建议如下。* 提供者.azurerm:version="~>1.4"地形已成功初始化!你现在可以开始使用Terraform了。试着运行"地形计划"看看基础架构所需的任何更改。所有地形命令现在应该有用了。如果您曾经为Terraform设置或更改模块或后端配置,重新运行此命令以重新初始化您的工作目录。如果你忘了,其他人命令将检测到它,并在必要时提醒您这样做。然后我们可以创建一个计划来定义将要创建、更新和销毁的基础设施元素。添加到计划中的元素是当前状态与当前配置之间的差异。$地形平面图运行计划正在刷新计划前内存中的地形状态。。。刷新的状态将用于计算此计划,但不会保存到本地或远程状态存储。------------------------------------------------------------------------已生成执行计划,如下所示。资源操作用以下符号表示:+创建Terraform将执行以下操作:+azurerm_kubernetes_cluster.k8sid:探员_pool_#档案。#:"1"#...计划:2表示添加,0表示更改,0表示销毁。------------------------------------------------------------------------此计划已保存到:运行计划要准确执行这些操作,请运行以下命令以应用:地形应用"运行计划"如果一切正常,我们应用计划并创建集群:$terraform应用"运行计划" ""azurerm_resource_group.k8s:2s后创建完成(ID:/subscriptions/c0a607b2-6372-4ef3-abdb-dbe52a7b56ba/resourceGroups/nic-k8svault)azurerm_kubernetes_cluster.k8s:正在创建。。。#...申请完成!资源:添加了2个,更改了0个,销毁了0个。»测试群集为了测试我们的集群,让我们看看Kubernetes仪表板。首先,我们需要从Terraform状态获取Kubernetes配置并将其存储在kubectl可以读取的文件中。$echo"$(terraform output kube_config)">~/.kube/azurek8s然后我们设置一个环境变量,以便kubectl获取正确的配置。$export KUBECONFIG=~/.kube/azurek8s首先,让我们检查一下集群的运行状况:$kubectl获取节点名称状态角色年龄版本aks-default-27881813-0就绪代理48m v1.9.6aks-default-27881813-1就绪代理48m v1.9.6aks-default-27881813-2就绪代理48m v1.9.6您应该看到工作节点的详细信息,并且它们都应该具有就绪状态。然后我们运行kubectl代理来访问仪表板。$kubectl代理127.0.0.1:8001开始服役最后,我们可以访问仪表板:$未结'http://localhost:8001/api/v1/namespaces/kube system/services/kubernetes dashboard/proxy/#!/概述?命名空间=默认'»使用Kubernetes Terraform提供商部署Pods除了能够利用kubectl与集群交互之外,还可以使用Kubernetes的Terraform提供者。在版本0.11.7中,我们通过使用来自资源的内插语法配置提供程序的功能,使这一点变得更加容易。下面的例子展示了如何使用我们简单示例中的输出来配置Kubernetes的提供者。供应商"kubernetes"{主机="${azurerm_kubernetes_cluster.main.kube_配置.0.主机}"用户名="${azurerm_kubernetes_cluster.main.kube_配置.0.用户名}"密码="${azurerm_kubernetes_cluster.main.kube_配置.0.密码}"客户端证书="${base64decode(azurerm_kubernetes_cluster.main.kube_配置.0.客户端证书)}"client_key="${base64decode(azurerm_kubernetes)客户机_cluster.main.kube_配置.0.客户端密钥)}"cluster_ca_certificate=${base64decode(azurerm_kubernetes)群集证书="${base64decode(azurerm_kubernetes_cluster.main.kube_配置.0.群集证书)}"}添加此提供程序配置并利用此pr中的资源