Kubernetesの作成

AlibabaCloudの基本プロダクトサービスであるResource Access Managementの作成方法を解説します。

1. Kubernetes

  Kubernetesは自動デプロイ、スケーリング、アプリ・コンテナの運用自動化のために設計されたオープンソースのプラットフォームです。Kubernetesによって、以下のことが要求に迅速かつ効率良く対応ができます。

  Kubernetesのゴールは、下記の様なアプリの運用負担を軽減するためのエコシステムのコンポーネントとツールを整備することです。

  2014年にプロジェクトが開始され、運用経験を基に、本番のワークロードを大規模に実行し、コミュニティのベストプラクティスのアイデアやプラクティスと組み合わせています。 Kubernetesの事例は https://kubernetes.io/case-studies/ にあります。

  またAlibabaのKubernetesサービスは非常に便利な上、Container Clustor、kubernetes managed、Container Registryと各方面へ進化段階なので、随時チェックするといいでしょう。


2. コンポーネント

  Container Service for Kubernetes はネイティブの Kubernetes をベースに構成、拡張されています。 このサービスは、クラスターの作成および拡張を容易に行うことができ、Alibaba Cloud の機能である、仮想化、ストレージ、ネットワーク、セキュリティ、およびKubernetes コンテナー化したアプリケーションの高品質な実行環境を統合することができます。

図 1

3. KubernetesのTerraformについて

  本題、Kubernetesクラスタ作成に移ります。AZシングルゾーンのKubernetesクラスタを生成するだけの簡単なソースを作ってみます。

resource "alicloud_cs_kubernetes" "main" {
  name_prefix = "my-first-k8s"
  availability_zone = "${data.alicloud_zones.default.zones.0.id}"
  new_nat_gateway = true
  master_instance_types = ["ecs.n4.small"]
  worker_instance_types = ["ecs.n4.small"]
  worker_numbers = [3]
  password = "password1234"
  pod_cidr = "192.168.1.0/16"
  service_cidr = "192.168.2.0/24"
  enable_ssh = true
  install_cloud_monitor = true
}

alicloud_cs_kubernetes

alicloud_cs_kubernetesリソースを実行することにより、以下の属性情報が出力されます。

» ブロックノード

» ブロック接続

他に入力パラメータ、出力パラメータがいくつかありますので、こちらも是非参照してみてください。 https://www.terraform.io/docs/providers/alicloud/r/cs_kubernetes.html

4. マネージドKubernetesのTerraformについて

  上記、alicloud_cs_kubernetesでkubernetesクラスタを生成しました。 一方、Managed Kubernetesがありますので、今度はalicloud_cs_managed_kubernetes で Managed Kubernetesを作ってみます。

※ Managed Kubernetesはコンテナ一元管理をマネージドで使えるのでメリットがあります。ただしロードバランサなどを自分で対応しないといけないなど色々制約はありますが、構成が比較的シンプルで、扱うコンテナの種類が少なければ便利なサービスです。

variable "name" {
    default = "my-first-k8s"
}
data "alicloud_zones" main {
  available_resource_creation = "VSwitch"
}

data "alicloud_instance_types" "default" {
    availability_zone = "${data.alicloud_zones.main.zones.0.id}"
    cpu_core_count = 1
    memory_size = 2
}

resource "alicloud_cs_managed_kubernetes" "k8s" {
  name = "${var.name}"
  availability_zone = "${data.alicloud_zones.main.zones.0.id}"
  new_nat_gateway = true
  worker_instance_types = ["${data.alicloud_instance_types.default.instance_types.0.id}"]
  worker_numbers = [2]
  password = "password1234"
  pod_cidr = "172.20.0.0/16"
  service_cidr = "172.21.0.0/20"
  install_cloud_monitor = true
  slb_internet_enabled = true
  worker_disk_category  = "cloud_efficiency"
}

alicloud_cs_managed_kubernetes

alicloud_cs_managed_kubernetesリソースを実行することにより、以下の属性情報が出力されます。

» ブロックノード

他に入力パラメータ、出力パラメータがいくつかありますので、こちらも是非参照してみてください。 https://www.terraform.io/docs/providers/alicloud/r/cs_managed_kubernetes.html


以下にKubernetesの実際のサンプルを入れていますので、こちらも参照してみてください。

example: Kubernetesの構築と設定