成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

Terraform與Kubernetes

solocoder / 1130人閱讀

看到Terraform可以替代kubectl管理k8s資源的生命周期,于是調(diào)研了下它的使用場景,并對(duì)比Terraform和Helm的區(qū)別

一.Terraform介紹

Terraform是一款開源工具,出自HashiCorp公司,著名的Vagrant、Consul也出自于該公司。其主要作用是:讓用戶更輕松地管理、配置任何基礎(chǔ)架構(gòu),管理公有和私有云服務(wù),也可以管理外部服務(wù),如GitHub,Nomad。

區(qū)別于ansible和puppet等傳統(tǒng)的配置管理工具,Terraform趨向于更上層的一個(gè)組裝者。

Terraform使用模板來定義基礎(chǔ)設(shè)施,通過指令來實(shí)現(xiàn)資源創(chuàng)建/更新/銷毀的全生命周期管理,實(shí)現(xiàn)“基礎(chǔ)設(shè)施即代碼”,具體示例如下:

resource "alicloud_instance" "web" {
    # cn-beijing
    availability_zone = "cn-beijing-b"
    image_id = "ubuntu_140405_32_40G_cloudinit_20161115.vhd"

    system_disk_category = "cloud_ssd"

    instance_type = "ecs.n1.small"
    internet_charge_type = "PayByBandwidth"
    security_groups = ["${alicloud_security_group.tf_test_foo.id}"]
    instance_name = "test_foo"
    io_optimized = "optimized"
}

這是阿里云的一個(gè)Terraform邏輯,執(zhí)行terraform apply,就可以創(chuàng)建一個(gè)ECS實(shí)例

Terraform AliCloud provider: terraform-provider

二.Terraform支持K8S

17年9月,Terraform官方宣布支持Kubernetes,提供Kubernetes應(yīng)用程序的完整生命周期管理,包含Pod的創(chuàng)建、刪除以及副本控制等功能(通過調(diào)用API)。

以下是操作示例:

1.安裝kubernete集群

當(dāng)前k8s的installer列表,已經(jīng)很多了...

使用Terraform在阿里云上安裝k8s集群:kubernetes-examples

2.創(chuàng)建應(yīng)用:

1.初始化k8s-provider

因?yàn)槭钦{(diào)用apiserver,所以需要指定k8s集群的連接方式

provider "kubernetes" {} // 默認(rèn)~/.kube/config
或:
provider "kubernetes" {
  host = "https://104.196.242.174"

  client_certificate     = "${file("~/.kube/client-cert.pem")}"
  client_key             = "${file("~/.kube/client-key.pem")}"
  cluster_ca_certificate = "${file("~/.kube/cluster-ca-cert.pem")}"
}

2.初始化terraform

$ terraform init

Initializing provider plugins...
- Downloading plugin for provider "kubernetes"...

Terraform has been successfully initialized!

You may now begin working with Terraform. Try running "terraform plan" to see
any changes that are required for your infrastructure. All Terraform commands
should now work.

If you ever set or change modules or backend configuration for Terraform,
rerun this command to reinitialize your working directory. If you forget, other
commands will detect it and remind you to do so if necessary.

3.創(chuàng)建RC

// Terraform不支持Deployment
// issue:https://github.com/terraform-providers/terraform-provider-kubernetes/issues/3

resource "kubernetes_replication_controller" "nginx" {
  metadata {
    name = "scalable-nginx-example"
    labels {
      App = "ScalableNginxExample"
    }
  }

  spec {
    replicas = 2
    selector {
      App = "ScalableNginxExample"
    }
    template {
      container {
        image = "nginx:1.7.8"
        name  = "example"

        port {
          container_port = 80
        }

        resources {
          limits {
            cpu    = "0.5"
            memory = "512Mi"
          }
          requests {
            cpu    = "250m"
            memory = "50Mi"
          }
        }
      }
    }
  }
}

4.創(chuàng)建service

resource "kubernetes_service" "nginx" {
  metadata {
    name = "nginx-example"
  }
  spec {
    selector {
      App = "${kubernetes_replication_controller.nginx.metadata.0.labels.App}"
    }
    port {
      port = 80
      target_port = 80
    }

    type = "LoadBalancer"
  }
}

4.查看和執(zhí)行

以上的步驟均為執(zhí)行計(jì)劃的定義
執(zhí)行操作:terraform apply
查看當(dāng)前執(zhí)行幾乎:terraform plan
三.為什么使用Terraform

1.如果你的基礎(chǔ)設(shè)施(虛機(jī)、BLB等)是用Terraform來管理,那么你無需任何成本,可以用同樣的配置語言,來管理k8s集群

2.完整的生命周期管理

3.每個(gè)執(zhí)行的同步反饋

4.關(guān)系圖譜:比如PVC和PV,如果PV創(chuàng)建失敗,則不會(huì)去執(zhí)行PVC的流程

四.與Helm的對(duì)比

如果是對(duì)K8S做上層的資源管理,大多數(shù)人會(huì)想到用Helm:參考

以下是Helm與Terraform都創(chuàng)建一個(gè)APP的操作對(duì)比:https://dzone.com/articles/te...

Terraform的優(yōu)勢:

1.如果你的基礎(chǔ)設(shè)施已經(jīng)用了Terraform,那么k8s集群管理也可以直接用這個(gè),沒有學(xué)習(xí)成本

2.Terraform不需要在k8s集群中安裝任何組件,它通過APISERVER管理資源

Terraform的缺點(diǎn):

1.對(duì)K8S的支持還比較弱,而且17年9月才開始支持,項(xiàng)目還在初期

2.嚴(yán)重依賴Terraform的基礎(chǔ)設(shè)施provider,比如外部磁盤、consul等沒有支持的話,k8s中無法使用

2.不支持beta資源,這個(gè)是硬傷,如:Deployment/StatefulSet/Daemonset不支持

3.沒有生態(tài)和市場的概念,比如helm中的倉庫,共享大家的應(yīng)用倉庫

五.吐槽

對(duì)于Terraform,不支持Deployment這一條,足以讓很多人放棄這個(gè)方案,而issue中對(duì)于這個(gè)的討論,也有點(diǎn)不太樂觀

必須在v1中的資源才會(huì)支持。對(duì)于Deployment大家只能用RC代替、或者kube exec加進(jìn)去(尬

但對(duì)于kubernetes而言,beta階段的很多資源,已經(jīng)被大家廣泛使用(Deployment、Daemonset),而且新版本的Deployment已經(jīng)變成了apps/v1。

k8s各種版本(v1、apps/v1)的區(qū)別:參考文章

不知道后續(xù)Terraform有沒有更多的支持,觀望下~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/25288.html

相關(guān)文章

  • TerraformKubernetes

    看到Terraform可以替代kubectl管理k8s資源的生命周期,于是調(diào)研了下它的使用場景,并對(duì)比Terraform和Helm的區(qū)別 一.Terraform介紹 Terraform是一款開源工具,出自HashiCorp公司,著名的Vagrant、Consul也出自于該公司。其主要作用是:讓用戶更輕松地管理、配置任何基礎(chǔ)架構(gòu),管理公有和私有云服務(wù),也可以管理外部服務(wù),如GitHub,Nomad。...

    mengera88 評(píng)論0 收藏0
  • 如何創(chuàng)建高效、經(jīng)濟(jì)的Kubernetes集群

    摘要:本文是介紹關(guān)于如何創(chuàng)建一個(gè)高效的集群,用于在上使用和的開發(fā)目的。單擊左下角的按鈕,忽略警告并強(qiáng)制訪問頁面。取而代之的,我們將在這里使用,在上創(chuàng)建代理,自動(dòng)設(shè)置這些由服務(wù)器管理的集群。 Kubernetes是我主要學(xué)習(xí)的主題之一。我知道不光是我,還有一定數(shù)量的人愿意在工作之余進(jìn)一步使用和研究它。 本文是介紹關(guān)于如何創(chuàng)建一個(gè)高效的Kubernetes集群,用于在Scaleway上使用Ter...

    BaronZhang 評(píng)論0 收藏0
  • 如何使用OPA實(shí)現(xiàn)多云策略和流程可移植性

    摘要:如何允許開發(fā)人員團(tuán)隊(duì)在多云和混合云環(huán)境中編寫和實(shí)施一致的策略和授權(quán)。使用跨云創(chuàng)建一致的策略和流程開放策略代理是一種流行的工具,正是因?yàn)樗c域無關(guān)。簡而言之,組織無需浪費(fèi)任何時(shí)間對(duì)應(yīng)用程序進(jìn)行逆向工程以實(shí)現(xiàn)多云可移植性。OpenPolicy Agent如何允許開發(fā)人員團(tuán)隊(duì)在多云和混合云環(huán)境中編寫和實(shí)施一致的策略和授權(quán)。 隨著多云戰(zhàn)略成為完全主流,公司和開發(fā)團(tuán)隊(duì)必須弄清楚如何在云環(huán)境中創(chuàng)建...

    BLUE 評(píng)論0 收藏0
  • 使用Kubernetes你需要知道的硬道理

    摘要:是谷歌內(nèi)部為解決這個(gè)問題所做的工作的產(chǎn)物,它為管理容器如何在整個(gè)集群中運(yùn)行提供了一個(gè)單一的框架。在云中使用服務(wù)在許多云中作為標(biāo)準(zhǔn)問題項(xiàng)提供,盡管它在谷歌云平臺(tái),中最突出地表現(xiàn)為本地特性。使用,運(yùn)行控制平面,將重點(diǎn)部署將用于所需配置的容器。每一項(xiàng)創(chuàng)新都會(huì)帶來新的復(fù)雜性。容器使以一種方便的、可移植的形式打包和運(yùn)行應(yīng)用程序成為可能,但至少要說以規(guī)模管理容器是一個(gè)挑戰(zhàn)。Kubernetes是谷歌內(nèi)部...

    fyber 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<