我正在创建一个 kubernetes 集群来托管服务,并添加一个内部负载均衡器来在我的 VM 实例和 kubernetes 集群之间路由流量。我想向负载均衡器前端添加服务标签,以便我可以使用 dns 名称而不是 IP 地址。但我不知道用于添加服务标签的注释?我的 terraform 配置如下所示
知道在哪里可以找到支持的注释列表
resource "kubernetes_manifest" "service_ilb" {
provider = kubernetes-alpha
manifest = {
"apiVersion" = "v1"
"kind" = "Service"
"metadata" = {
"name" = "ilb-service"
"namespace" = var.namespace
"annotations" = {
"cloud.google.com/load-balancer-type" = "Internal"
"networking.gke.io/internal-load-balancer-allow-global-access" = "true"
"networking.gke.io/internal-load-balancer-subnet" = var.subnetwork
# Does not work
"networking.gke.io/internal-load-balancer-service-label" = "my-dns-name"
}
"labels" = {
"app.kubernetes.io/component" = "rabbitmq-server"
"app.kubernetes.io/name" = "rabbitmq-instance"
}
}
"spec" = {
"type" = "LoadBalancer"
"ports" = [
{ …Run Code Online (Sandbox Code Playgroud) kubernetes google-kubernetes-engine terraform terraform-provider-kubernetes
我有一个用于冗余的区域集群。在此集群中,我想在该区域的 1 个区域中创建一个节点池。这个配置可以吗?我尝试这样做的原因是,我想在 1 个区域中运行像 RabbitMQ 这样的服务以避免分裂,并且我的应用程序服务在该区域的所有区域上运行以实现冗余。
我正在使用 terraform 创建集群和节点池,下面是我用于创建区域集群和区域节点池的配置
resource "google_container_cluster" "regional_cluster" {
provider = google-beta
project = "my-project"
name = "my-cluster"
location = "us-central1"
node_locations = ["us-central1-a", "us-central1-b", "us-central1-c"]
master_auth {
username = ""
password = ""
client_certificate_config {
issue_client_certificate = false
}
}
}
resource "google_container_node_pool" "one_zone" {
project = google_container_cluster.regional_cluster.project
name = "zone-pool"
location = "us-central1-b"
cluster = google_container_cluster.regional_cluster.name
node_config {
machine_type = var.machine_type
image_type = var.image_type
disk_size_gb = 100
disk_type = "pd-standard"
}
}
Run Code Online (Sandbox Code Playgroud)
这会引发错误消息 …
我正在使用 K8s ManagedCertificate 在 GCE 上创建证书。我想向我的证书添加一个新的子域,因此更新 yaml 文件并应用 kubectl。我尝试描述我的证书以查看是否一切正常,但发现错误
Warning BackendError 16m (x144 over 36h) managed-certificate-controller googleapi: Error 400: The ssl_certificate resource '< redated >' is already being used by '< redated >', resourceInUseByAnotherResource
Run Code Online (Sandbox Code Playgroud)
另外,在描述中,我没有看到我尝试添加为活动状态的新子域。
Spec:
Domains:
web.sub1.domain1.com
web.sub1.domain2.com
web.newsub.domain2.com
web.sub2.domain2.com
web.sub1.domain3.com
Status:
Certificate Name: < redated >
Certificate Status: Active
Domain Status:
Domain: web.sub1.domain1.com
Status: Active
Domain: web.sub1.domain2.com
Status: Active
Domain: web.sub2.domain2.com
Status: Active
Domain: web.sub1.domain3.com
Status: Active
Expire Time: 2021-07-30T00:54:02.000-07:00
Run Code Online (Sandbox Code Playgroud) 我正在使用 terraform 0.13.0 并尝试使用 kubernetes-alpha 提供程序(https://github.com/hashicorp/terraform-provider-kubernetes-alpha)。我下载了 Mac 的插件并将插件复制到 ~/.terraform.d/plugins 目录
当我运行 terraform init 时,它没有找到本地插件,而是试图从 hashicorp 站点找到
terraform init
2020/08/21 16:42:58 [WARN] Log levels other than TRACE are currently unreliable, and are supported only for backward compatibility.
Use TF_LOG=TRACE to see Terraform's internal logs.
----
2020/08/21 16:42:58 [INFO] Terraform version: 0.13.0
2020/08/21 16:42:58 [INFO] Go runtime version: go1.14.2
2020/08/21 16:42:58 [INFO] CLI args: []string{"<$HOME>/bin/terraform", "init"}
2020/08/21 16:42:58 [DEBUG] Attempting to open CLI config file: <$HOME>/.terraformrc
2020/08/21 16:42:58 Loading CLI …Run Code Online (Sandbox Code Playgroud) macos kubernetes terraform terraform-provider-gcp terraform-provider-kubernetes
我的 bash 脚本kubectl有时会在更改上下文时引起麻烦。运行脚本后,用户可能会意外地在错误的集群中进行更改。我想探讨一下您在处理脚本中的上下文方面的智慧。
脚本是否可以保存旧上下文并在完成后恢复旧上下文?(我考虑过运行kubectl config get-contexts查找当前上下文并在脚本完成后将其设置回来。但是如果用户尚未保存上下文,这可能会失败)
我想到的其他方法是保存 KUBECONFIG env var 的值,将其更改为临时文件,获取凭据并在脚本完成时恢复该值。
在我重新发明轮子之前,我想了解一下高级用户是如何处理这样的情况的?你能分享你的想法/想法吗?