Slide 1

Slide 1 text

Copyright © 2020 HashiCorp Terraform Operator for Kubernetes May 13, 2020 | St. Louis HUG

Slide 2

Slide 2 text

PUBLIC CLOUD STAGING STAGING QUEUE STAGING DEAD LETTER QUEUE PRODUCTION PRODUCTION QUEUE PRODUCTION DEAD LETTER QUEUE

Slide 3

Slide 3 text

“I don’t want to learn Terraform.”

Slide 4

Slide 4 text

“Why should you?” Infrastructure should be self-service.

Slide 5

Slide 5 text

Rosemary Wang (She/Her) Developer Advocate at HashiCorp joatmon08.github.io @joatmon08 joatmon08 linkedin.com/in/rosemarywang/

Slide 6

Slide 6 text

⁄ Self-Service Infrastructure with Kubernetes

Slide 7

Slide 7 text

Service Catalog PUBLIC CLOUD APPLICATION QUEUE DEAD LETTER QUEUE SERVICE BROKER SERVICE CATALOG SERVICE INSTANCE CREATE READ UPDATE DELETE kubernetes.io/docs/concepts/extend-kubernetes/service-catalog/

Slide 8

Slide 8 text

“An Operator extends Kubernetes to automate the management of the entire lifecycle of a particular application.” Kubernetes Operators by Jason Dobies & Joshua Wood

Slide 9

Slide 9 text

Operator Pattern ▪ Bullet One ▪ Bullet Two ▪ Bullet Three ▪ Bullet Four ▪ Bullet Five ▪ Bullet Six FRONTEND PERSISTENT VOLUME BACKEND OPERATOR MYAPP CUSTOM RESOURCE DAY 1-2 API: V1 KIND: MYAPP SPEC: FRONTEND: REPLICAS: 1 (OR 2) IMAGE: FRONTEND BACKEND: REPLICAS: 1 IMAGE: BACKEND VOLUME_SIZE: 1G DAY 3 SNAPSHOT PERSISTENT VOLUME LIST METADATA FOR SNAPSHOTS kubernetes.io/docs/concepts/extend-kubernetes/operator/

Slide 10

Slide 10 text

PUBLIC CLOUD MYAPP QUEUE DEAD LETTER QUEUE OPERATOR MYAPP CUSTOM RESOURCE DAY 1-2 API: V1 KIND: MYAPP-INFRA SPEC: QUEUE: NAME: MYAPP DLQ: NAME: MYAPP-DLQ TYPE: FIFO MESSAGES: 10 DAY 3 ADD MESSAGES TO STAGING QUEUE FOR TESTING UPDATE QUEUES

Slide 11

Slide 11 text

PRIVATE DATACENTER MYAPP LOAD BALANCER DATABASE OPERATOR MYAPP CUSTOM RESOURCE DAY 1-2 API: V1 KIND: MYAPP-INFRA SPEC: LB: NAME: MYAPP DATABASE: NAME: MYAPP-DLQ SIZE: 1G TYPE: MYSQL DAY 3 REGISTER NEW INSTANCES OF APP TO LOAD BALANCER DB TEST CORPUS

Slide 12

Slide 12 text

⁄ Terraform Operator for Kubernetes

Slide 13

Slide 13 text

PUBLIC CLOUD MYAPP OPERATOR MYAPP CUSTOM RESOURCE DAY 1-2 API: V1 KIND: MYAPP-INFRA SPEC: MODULE: SOURCE: QUEUES VERSION: 1.0.0 VARIABLES: NAME: MYAPP DAY 3 ENFORCE TAGS FOR QUEUES ADD QUEUE ENCRYPTION TERRAFORM CLOUD REGISTRY “QUEUEAPP-INFRA” MODULE QUEUE DEAD LETTER QUEUE MYAPP-QUEUE MYAPP-DLQ WORKSPACE “MYAPP-INFRA” SENTINEL POLICY PLAN APPLY

Slide 14

Slide 14 text

MYAPP OPERATOR MYAPP CUSTOM RESOURCE DAY 1-2 API: V1 KIND: MYAPP-INFRA SPEC: MODULE: SOURCE: QUEUES VERSION: 1.0.0 VARIABLES: NAME: MYAPP DAY 3 TUNE LOAD BALANCER UPDATE DATABASE ROLES TERRAFORM ENTERPRISE REGISTRY “WEBAPP-INFRA” MODULE MYAPP-LB MYAPP-DB WORKSPACE “MYAPP-INFRA” PLAN APPLY SENTINEL POLICY PRIVATE DATACENTER LOAD BALANCER DATABASE

Slide 15

Slide 15 text

Self-Service Configure infrastructure required by application using Kubernetes interface (Should I bundle infrastructure code with application?) Common Architecture Use modules to enable common architecture. (How do I build a queue / database?) Security & Compliance Ensure all provisioned infrastructure is secure and compliant. (Is this infrastructure configuration secure and compliant?)

Slide 16

Slide 16 text

OPERATIONS TERRAFORM MODULE NEW MODULE VERSION TERRAFORM WORKSPACE DEVELOPER WORKSPACE CUSTOM RESOURCE OPERATOR RUN ID, STATUS VARIABLES, MODULE RUN ID, STATUS WORKSPACE VARIABLES CONFIGURATION UPDATE TO USE NEW MODULE VERSION PLAN APPLY

Slide 17

Slide 17 text

“I don’t want to learn Terraform HCL.”

Slide 18

Slide 18 text

“You can use Kubernetes instead.”

Slide 19

Slide 19 text

Terraform as Platform Choose your interface.

Slide 20

Slide 20 text

Resources ▪ hashicorp.com/blog/creating-workspaces-with- the-hashicorp-terraform-operator-for- kubernetes/ ▪ github.com/hashicorp/terraform-helm ▪ app.terraform.io/signup

Slide 21

Slide 21 text

Thank you! joatmon08.github.io