Upgrade to Pro — share decks privately, control downloads, hide ads and more …

20190924_Kubernetes_Meetup_Osaka__1_KubernetesのマニフェストをHCLで書く.pdf

2e2c49f6f3fa33b8f5aad5841774c211?s=47 nezumisannn
September 24, 2019

 20190924_Kubernetes_Meetup_Osaka__1_KubernetesのマニフェストをHCLで書く.pdf

2e2c49f6f3fa33b8f5aad5841774c211?s=128

nezumisannn

September 24, 2019
Tweet

Transcript

  1. k8sのマニフェストをHCLで書く Kubernetes Meetup Osaka #1 2019/09/18 株式会社ビヨンド 寺岡 佑樹

  2. 自己紹介 resource “my_profile” “nezumisannn” { name = “Yuki.Teraoka” nickname =

    “ねずみさん家。” company = “beyond” job = “Site Reliability Engineer” twitter = “@yktr_sre” skills = [“terraform”,”packer”] }
  3. マニフェストとYAML ・マニフェストと言えばYAML ・1部分が違うだけでもひたすらコピペ作業 ・そのまま書いていると一瞬でYAMLだらけになる(

  4. 他のやり方ないかな? ・Helm ・Chartと呼ばれるテンプレートを作る ・ただしChartも元を正せばYAMLで書くことになる ・YAML以外の言語でマニフェストを書けないのかという疑問と好奇心

  5. HCLとは? ・Hashicorp Configuration Language ・Hashicorp社の製品で利用されている独自言語 ・マニフェストもHCLで書ける

  6. HCLで書くメリット ・設定反映前のドライラン ・マニフェスト内での変数の利用 ・マニフェストのモジュール化 ・Terraform + HCLでk8sのマニフェストを書いてみた (今回の本題)

  7. 今回作成するマニフェスト ・Nginxのpodを立ち上げるためのDeployment ・Service LoadBalancerも書けますが今回は省略します( ・今回はTerraformのversion 0.12を使っています ・version 0.11と若干記述が違う部分があるのでご注意ください

  8. apiVersion: apps/v1 kind: Deployment metadata: name: k8s-meetup-sample spec: selector: matchLabels

    : app: nginx-app replicas: 3 template: metadata: labels: app: nginx-app spec: containers: - name: nginx image: nginx:latest ports: - containerPort : 80
  9. module "k8s-meetup-sample" { source = "./modules/k8s-meetup-sample" replicas = 3 }

    template { metadata { labels = { app = "nginx-app" } } spec { container { name = "nginx" image = "nginx:latest" port { container_port = 80 } } } } } } variable "replicas" { type = "string" } resource "kubernetes_deployment" "k8s-meetup-sample" { metadata { name = "k8s-meetup-sample" } spec { selector { match_labels = { app = "nginx-app" } } replicas = "${var.replicas}"
  10. HCLを書いたら ・Terraform init (初期化) ・Terraform plan (ドライラン) ・Terraform apply (反映)

    ・Terraform destroy (削除)
  11. まとめ ・k8sのマニフェストはHCLでも書ける ・YAMLではなくHCLで書くことも検討してみてはいかがでしょうか

  12. END