Self-service Cloud Resources with Kubernetes
Appvia.io
About Appvia
Page 2
Kubernetes for Teams
700+
Developers
500+
applications
5+ years
Kubernetes
experience
70% cost
reduction
Today’s expert
Lewis Marshall
SRE, Tech Evangelist,
Appvia
Appvia.io
Self-service Cloud Resources
with Kubernetes
Lewis Marshall, Tech Evangelist, SRE, Kore Developer
May 27, 2020
Appvia.io
Agenda
Self-service cloud resources with Kubernetes
Page 5
01 Intro - Why it isn’t easy!
02 Problem and Developer Experience
03 Developer Self-Service
04 Self service in Practice
05 Demo Custom Resources
06 Industry Summary
07 Appvia Approach
08 Summary
09 Questions
Intro - Why it isn’t easy!
Appvia.io
● Lots of products in the industry around cloud infrastructure
● Not many are developer focused
● Developer focused solutions seem to be being replaced with:
○ Operations heavy solutions
○ Domain / Cloud specific solutions
● We had to implement a custom solution around the industry to get a
good outcome
What we learnt from doing self-service
Page 7
The industry is moving
Problem and Developer
Experience
Appvia.io
● Local container focused development
● Fast to iterate and test when local
● Dependencies are libraries and containers and not
directly cloud
● Velocity drops as cloud services get introduced
● Cloud consumption is brokered and gated and
requires specialist domain knowledge
How it is for a Developer
Page 9
Developer Mindset
Appvia.io
● Application in a Kubernetes Cluster
● Cloud provider managed services:
○ Operational overhead removed from team
○ Reliability
○ Simplicity?
What the developer need is
Page 10
Applications consume cloud services via libraries
Application DatabaseCode Library
Appvia.io
What’s the Problem?
Page 11
Provisioning Applications and Dependant Services
Application Database
Developer Operations
Appvia.io
What’s the Problem?
Page 12
Developers
● Create Containerized Applications
● Deliver to Kubernetes
Operations
● Automation Tools
● Deliver Cloud Resources
Delivery Tools
Developer Self-Service
Appvia.io
● Reduce lead times
○ No separate team
○ No manual intervention
○ Nothing to approve
● Reliability of updates
○ Application
○ Cloud
● Enables an Agile process
○ Reduces cost
Why Self Service?
Cloud Services
Page 14
Appvia.io
● Cost
○ Trust
○ Agility and Reliability
● Security
○ Enables Best Practice
○ Products over Human Error
● Best Practice
○ Simplify Choice e.g. Backups,
Cost, Encryption...
Self Service
Limiting Risk with Informed Choice
Page 15
Appvia.io
Developer Self Service
Ideal Flow per Application Instance
Page 16
Application
? Any Cloud Provider
Service
Description
Name & Plan
2. Access
Configuration
E.g. endpoint &
credentials
1. Request
Self Service In Practice
Appvia.io
Industry Assumptions
● Native Kubernetes
○ Documentation
○ Resource handling
○ Application domain
● Extended Kubernetes
○ Not simple
○ Domain specific
■ Cloud / Ops knowledge
■ What’s the Dev benefit?
Kubernetes Resources
Page 18
Reconcile Intended State
Appvia.io
Custom Resources for Cloud Services
Page 19
apiVersion: sql.cnrm.cloud.google.com/v1beta1
kind: SQLInstance
metadata:
name: storedb-instance-001
spec:
databaseVersion: MYSQL_5_7
region: europe-west2
settings:
tier: db-f1-micro
kubectl get SQLInstance
# find configured databases
kubectl edit SQLInstance/storedb-instance-001
# manually change some settings
A Kubernetes resource like any other:
A Cloud Resource
Use familiar tools and deployment systems
apiVersion: service-operator.aws/v1alpha1
kind: SQSQueue
metadata:
name: example-sqs-queue-name
spec:
contentBasedDeduplication: true
delaySeconds: 5
maximumMessageSize: 262144
messageRetentionPeriod: 345600
visibilityTimeout: 30
Appvia.io
Scaling custom resources
Page 20
Unique specs for each service
● Different specs for each cloud
● Domain knowledge expected on each service
● No consistency between cloud providers for the Developer
● No guidance on security and best practice
● No high level abstraction
Appvia.io
Provides:
● Reuse Service Brokers from CloudFoundry
● Provides Custom Resources
Service Catalog
Open Service Broker API on Kubernetes
kubernetes-sigs/service-catalog
svc-cat.io
Production Ready Amber
Page 21
Appvia.io
Simplify delivery of Cloud Services
● Provide default parameters for
services
○ Best Practice
● What is published in a system
○ Vetted Services
Service Broker Plans
Page 22
Appvia.io
Request Flow
Application
Service Catalogue
Service Broker(s)
1. Request
Service
2. Request
Cloud Provider
Developer
6. Access
Configuration
Publish Plans
Page 23
5. Status
3. 4.
Open Service Broker API
Appvia.io
Request Flow Concrete Example
Application
Service Catalogue
RDS Production
and
Development
Plans
AWS
Service Broker
1. Request
Production
RDS
2. Service Instance
Requested
Cloud Provider
Developer
6. Place RDS Secret
in namespace
(Create service
binding)
Page 24
5. Status
3.
Open Service Broker API
4.
Service instance
created
Demo of Custom Resources
Appvia.io
Demo of Cloud Resources
Service Catalog
Page 26
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceInstance
metadata:
name: my-latest-bucket
spec:
clusterServiceClassExternalName: s3
clusterServicePlanExternalName: production
parameters:
---
apiVersion: servicecatalog.k8s.io/v1beta1
kind: ServiceBinding
metadata:
name: my-latest-bucket
spec:
instanceRef:
name: my-latest-bucket
secretName: my-latest-bucket
Application
Service Catalogue
1. Request
Service (Plan
and Binding)Developer
2. Configuration
● Use of Plans
● Consume Application Configuration
Industry Summary
Appvia.io
Product Comparison
Product Application
Services
Time Investment Production Ready Developer Self Service
AWS Service Broker 22 High - Cloudformation Amber - Future Good - Plans
AWS Service Operator 0 NA Red - MVP Unknown
Azure Open Service Broker 3 Amber - No Recent Updates Good - Plans
GCP Service Broker 3 High Amber - Not supported
direction
Good - Plans
GCP Config Connector 7 High Amber - PSP Required Infrastructure Focus
Implied Config
Crosplane ~4 / Cloud High Green Infrastructure Focus
Terraform K8 All High Alpha Infrastructure Focus
Terraform Controller All High Experimental Infrastructure Focus
Page 29
Self Service For Developers?
Self Service For Developers
Appvia.io
Cloud Vendors Direction
Page 32
● Commercial
● Support many customers
○ Reliability at scale
○ Self support
● NOT multi-cloud
● Save customers time and money?
Motives
Appvia’s Approach
Appvia.io
Kore
Service Plans
Kore Architecture for Cloud Resource
Page 34
Kore
Application
Service Broker(s)
1. Request
service from
plan
Cloud
Provider(s)
Developer
2. Service
credentials secret
created in
namespace
Service Operator(s)
Appvia.io
● Self Service
○ Plans
○ Simplicity
● Running Application
○ Consuming Cloud Resources
Demo Appvia Approach
Demo Cloud Resources
Page 35
Summary
Appvia.io
Summary
Page 38
● Current Solutions for Operations
○ Enable Complexity
○ Not Agility
● Plans Provide
○ Simplicity for Developers
■ Agile
○ Best Practice
■ Oversight
■ Audit
■ Compliance
Cloud Resources with
Kubernetes - Questions?
Contact Us
Contact us
info@appvia.io
https://appvia.io
Lewis Marshall
SRE, Tech
Evangelist,
Appvia
Appendix - Products
Appvia.io
AWS Service Broker
Summary
Page 42
awslabs/aws-servicebroker
Application Services 22
Production Ready Amber
Time Investment High
Developer Experience Good
● Provides
○ Plans
○ Application Configuration
● Single Cloud
● Complex
○ Multi tenancy configuration
○ Cloud Dependencies
■ Dynamo DB
■ S3 (Plans)
■ Cloudformation
● Uncertain Future
Appvia.io
AWS Service Operator
Page 43
AWS Service Operator for Kubernetes
This repo contains the next generation AWS Service Operator for Kubernetes (ASO).
Status
As of end of 2019 we are in the early stages of planning the redesign of ASO. Check the issues list
for descriptions of work items. We invite any and all feedback and contributions, so please don't
hesitate to submit an issue, a pull request or comment on an existing issue.
Summary
aws/aws-service-operator-k8s
Design Phase MVP on branch
Application Services None yet...
Production Ready Red
“
● No releases yet
Appvia.io
● Limited Stable Services:
○ Azure Database for MySQL
○ Azure Database for PostgreSQL v9.6
○ Azure SQL Database
● Single Cloud
Azure Open Service Broker
Summary
Page 44
Azure/open-service-broker
-azure
Application Services 3
Production Ready Amber
Appvia.io
● Infrastructure Focus
○ E.g. as an alternative to
CloudFormation
● Only Database, Cache and Object /
Storage
Crossplane
Summary
Page 45
crossplane/crossplane
Application Services 4 AWS, 3 GCP, 4 Azure...
Production Ready Amber - Maybe
Time Investment High
Multi-cloud AWS, GCP, Azure, Alibaba
Appvia.io Page 46
Terraform K8
● Provided by Hashicorp
● Requires a Cloud Services Account
● Experimental
Summary
hashicorp/terraform-k8s
Application Services Any
Production Ready Red
Time Investment High
Multi-cloud AWS, GCP...
Terraform + Kubernetes (terraform-k8s)
This experimental repository contains software which is still being developed and in the alpha
testing stage. It is not ready for production use.
“
Appvia.io Page 47
Terraform Controller
Summary
rancher/terraform-controller
Application Services Any
Production Ready Red
Time Investment High
Multi-cloud AWS, GCP...
[EXPERIMENTAL] terraform-controller
Use K8s to Run Terraform
NOTE: We are actively experimenting with this in the open. Consider this ALPHA software and
subject to change.
● Provided by Rancher
● Terraform DSL operations focus
● Experimental
“
Appvia.io
GCP Service Broker
Page 48
GoogleCloudPlatform/gcp-
service-broker
Application Services 3
Production Ready Amber
“
Appvia.io
● Focus CloudFoundry?
● Not actively supported for
Kubernetes Service catalog
● Config Connector...
GCP Service Broker
Summary
Page 49
GoogleCloudPlatform/gcp-
service-broker
Application Services 3
Production Ready Amber
Appvia.io Page 50
Google Cloud Platform Config Connector
● Support
○ Detailed Documentation
○ Examples
● Intended direction
● Infrastructure Focus
GCP Config Connector
Features
GoogleCloudPlatform/k8s-config-
connector
Application Services 7
Production Ready Amber
Time Investment High
Appvia.io Page 51
● Install GCP Config Connector
● Understand
○ Approach
○ Limitations
GCP Config Connector
Demo
GoogleCloudPlatform/k8s-config-
connector
Application Services 7
Production Ready Amber
Time Investment High
Appvia.io Page 52
● Infrastructure Focus
● Limitations
○ No PSP’s
○ Resource Naming
○ Secrets First
○ No Application Configuration
● Intended direction
GCP Config Connector
Summary
GoogleCloudPlatform/k8s-config-
connector
Application Services 7
Production Ready Amber
Time Investment High

Self service cloud resources

  • 1.
  • 2.
    Appvia.io About Appvia Page 2 Kubernetesfor Teams 700+ Developers 500+ applications 5+ years Kubernetes experience 70% cost reduction
  • 3.
    Today’s expert Lewis Marshall SRE,Tech Evangelist, Appvia
  • 4.
    Appvia.io Self-service Cloud Resources withKubernetes Lewis Marshall, Tech Evangelist, SRE, Kore Developer May 27, 2020
  • 5.
    Appvia.io Agenda Self-service cloud resourceswith Kubernetes Page 5 01 Intro - Why it isn’t easy! 02 Problem and Developer Experience 03 Developer Self-Service 04 Self service in Practice 05 Demo Custom Resources 06 Industry Summary 07 Appvia Approach 08 Summary 09 Questions
  • 6.
    Intro - Whyit isn’t easy!
  • 7.
    Appvia.io ● Lots ofproducts in the industry around cloud infrastructure ● Not many are developer focused ● Developer focused solutions seem to be being replaced with: ○ Operations heavy solutions ○ Domain / Cloud specific solutions ● We had to implement a custom solution around the industry to get a good outcome What we learnt from doing self-service Page 7 The industry is moving
  • 8.
  • 9.
    Appvia.io ● Local containerfocused development ● Fast to iterate and test when local ● Dependencies are libraries and containers and not directly cloud ● Velocity drops as cloud services get introduced ● Cloud consumption is brokered and gated and requires specialist domain knowledge How it is for a Developer Page 9 Developer Mindset
  • 10.
    Appvia.io ● Application ina Kubernetes Cluster ● Cloud provider managed services: ○ Operational overhead removed from team ○ Reliability ○ Simplicity? What the developer need is Page 10 Applications consume cloud services via libraries Application DatabaseCode Library
  • 11.
    Appvia.io What’s the Problem? Page11 Provisioning Applications and Dependant Services Application Database Developer Operations
  • 12.
    Appvia.io What’s the Problem? Page12 Developers ● Create Containerized Applications ● Deliver to Kubernetes Operations ● Automation Tools ● Deliver Cloud Resources Delivery Tools
  • 13.
  • 14.
    Appvia.io ● Reduce leadtimes ○ No separate team ○ No manual intervention ○ Nothing to approve ● Reliability of updates ○ Application ○ Cloud ● Enables an Agile process ○ Reduces cost Why Self Service? Cloud Services Page 14
  • 15.
    Appvia.io ● Cost ○ Trust ○Agility and Reliability ● Security ○ Enables Best Practice ○ Products over Human Error ● Best Practice ○ Simplify Choice e.g. Backups, Cost, Encryption... Self Service Limiting Risk with Informed Choice Page 15
  • 16.
    Appvia.io Developer Self Service IdealFlow per Application Instance Page 16 Application ? Any Cloud Provider Service Description Name & Plan 2. Access Configuration E.g. endpoint & credentials 1. Request
  • 17.
  • 18.
    Appvia.io Industry Assumptions ● NativeKubernetes ○ Documentation ○ Resource handling ○ Application domain ● Extended Kubernetes ○ Not simple ○ Domain specific ■ Cloud / Ops knowledge ■ What’s the Dev benefit? Kubernetes Resources Page 18 Reconcile Intended State
  • 19.
    Appvia.io Custom Resources forCloud Services Page 19 apiVersion: sql.cnrm.cloud.google.com/v1beta1 kind: SQLInstance metadata: name: storedb-instance-001 spec: databaseVersion: MYSQL_5_7 region: europe-west2 settings: tier: db-f1-micro kubectl get SQLInstance # find configured databases kubectl edit SQLInstance/storedb-instance-001 # manually change some settings A Kubernetes resource like any other: A Cloud Resource Use familiar tools and deployment systems apiVersion: service-operator.aws/v1alpha1 kind: SQSQueue metadata: name: example-sqs-queue-name spec: contentBasedDeduplication: true delaySeconds: 5 maximumMessageSize: 262144 messageRetentionPeriod: 345600 visibilityTimeout: 30
  • 20.
    Appvia.io Scaling custom resources Page20 Unique specs for each service ● Different specs for each cloud ● Domain knowledge expected on each service ● No consistency between cloud providers for the Developer ● No guidance on security and best practice ● No high level abstraction
  • 21.
    Appvia.io Provides: ● Reuse ServiceBrokers from CloudFoundry ● Provides Custom Resources Service Catalog Open Service Broker API on Kubernetes kubernetes-sigs/service-catalog svc-cat.io Production Ready Amber Page 21
  • 22.
    Appvia.io Simplify delivery ofCloud Services ● Provide default parameters for services ○ Best Practice ● What is published in a system ○ Vetted Services Service Broker Plans Page 22
  • 23.
    Appvia.io Request Flow Application Service Catalogue ServiceBroker(s) 1. Request Service 2. Request Cloud Provider Developer 6. Access Configuration Publish Plans Page 23 5. Status 3. 4. Open Service Broker API
  • 24.
    Appvia.io Request Flow ConcreteExample Application Service Catalogue RDS Production and Development Plans AWS Service Broker 1. Request Production RDS 2. Service Instance Requested Cloud Provider Developer 6. Place RDS Secret in namespace (Create service binding) Page 24 5. Status 3. Open Service Broker API 4. Service instance created
  • 25.
    Demo of CustomResources
  • 26.
    Appvia.io Demo of CloudResources Service Catalog Page 26 apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceInstance metadata: name: my-latest-bucket spec: clusterServiceClassExternalName: s3 clusterServicePlanExternalName: production parameters: --- apiVersion: servicecatalog.k8s.io/v1beta1 kind: ServiceBinding metadata: name: my-latest-bucket spec: instanceRef: name: my-latest-bucket secretName: my-latest-bucket Application Service Catalogue 1. Request Service (Plan and Binding)Developer 2. Configuration ● Use of Plans ● Consume Application Configuration
  • 28.
  • 29.
    Appvia.io Product Comparison Product Application Services TimeInvestment Production Ready Developer Self Service AWS Service Broker 22 High - Cloudformation Amber - Future Good - Plans AWS Service Operator 0 NA Red - MVP Unknown Azure Open Service Broker 3 Amber - No Recent Updates Good - Plans GCP Service Broker 3 High Amber - Not supported direction Good - Plans GCP Config Connector 7 High Amber - PSP Required Infrastructure Focus Implied Config Crosplane ~4 / Cloud High Green Infrastructure Focus Terraform K8 All High Alpha Infrastructure Focus Terraform Controller All High Experimental Infrastructure Focus Page 29
  • 30.
    Self Service ForDevelopers?
  • 31.
    Self Service ForDevelopers
  • 32.
    Appvia.io Cloud Vendors Direction Page32 ● Commercial ● Support many customers ○ Reliability at scale ○ Self support ● NOT multi-cloud ● Save customers time and money? Motives
  • 33.
  • 34.
    Appvia.io Kore Service Plans Kore Architecturefor Cloud Resource Page 34 Kore Application Service Broker(s) 1. Request service from plan Cloud Provider(s) Developer 2. Service credentials secret created in namespace Service Operator(s)
  • 35.
    Appvia.io ● Self Service ○Plans ○ Simplicity ● Running Application ○ Consuming Cloud Resources Demo Appvia Approach Demo Cloud Resources Page 35
  • 37.
  • 38.
    Appvia.io Summary Page 38 ● CurrentSolutions for Operations ○ Enable Complexity ○ Not Agility ● Plans Provide ○ Simplicity for Developers ■ Agile ○ Best Practice ■ Oversight ■ Audit ■ Compliance
  • 39.
  • 40.
  • 41.
  • 42.
    Appvia.io AWS Service Broker Summary Page42 awslabs/aws-servicebroker Application Services 22 Production Ready Amber Time Investment High Developer Experience Good ● Provides ○ Plans ○ Application Configuration ● Single Cloud ● Complex ○ Multi tenancy configuration ○ Cloud Dependencies ■ Dynamo DB ■ S3 (Plans) ■ Cloudformation ● Uncertain Future
  • 43.
    Appvia.io AWS Service Operator Page43 AWS Service Operator for Kubernetes This repo contains the next generation AWS Service Operator for Kubernetes (ASO). Status As of end of 2019 we are in the early stages of planning the redesign of ASO. Check the issues list for descriptions of work items. We invite any and all feedback and contributions, so please don't hesitate to submit an issue, a pull request or comment on an existing issue. Summary aws/aws-service-operator-k8s Design Phase MVP on branch Application Services None yet... Production Ready Red “ ● No releases yet
  • 44.
    Appvia.io ● Limited StableServices: ○ Azure Database for MySQL ○ Azure Database for PostgreSQL v9.6 ○ Azure SQL Database ● Single Cloud Azure Open Service Broker Summary Page 44 Azure/open-service-broker -azure Application Services 3 Production Ready Amber
  • 45.
    Appvia.io ● Infrastructure Focus ○E.g. as an alternative to CloudFormation ● Only Database, Cache and Object / Storage Crossplane Summary Page 45 crossplane/crossplane Application Services 4 AWS, 3 GCP, 4 Azure... Production Ready Amber - Maybe Time Investment High Multi-cloud AWS, GCP, Azure, Alibaba
  • 46.
    Appvia.io Page 46 TerraformK8 ● Provided by Hashicorp ● Requires a Cloud Services Account ● Experimental Summary hashicorp/terraform-k8s Application Services Any Production Ready Red Time Investment High Multi-cloud AWS, GCP... Terraform + Kubernetes (terraform-k8s) This experimental repository contains software which is still being developed and in the alpha testing stage. It is not ready for production use. “
  • 47.
    Appvia.io Page 47 TerraformController Summary rancher/terraform-controller Application Services Any Production Ready Red Time Investment High Multi-cloud AWS, GCP... [EXPERIMENTAL] terraform-controller Use K8s to Run Terraform NOTE: We are actively experimenting with this in the open. Consider this ALPHA software and subject to change. ● Provided by Rancher ● Terraform DSL operations focus ● Experimental “
  • 48.
    Appvia.io GCP Service Broker Page48 GoogleCloudPlatform/gcp- service-broker Application Services 3 Production Ready Amber “
  • 49.
    Appvia.io ● Focus CloudFoundry? ●Not actively supported for Kubernetes Service catalog ● Config Connector... GCP Service Broker Summary Page 49 GoogleCloudPlatform/gcp- service-broker Application Services 3 Production Ready Amber
  • 50.
    Appvia.io Page 50 GoogleCloud Platform Config Connector ● Support ○ Detailed Documentation ○ Examples ● Intended direction ● Infrastructure Focus GCP Config Connector Features GoogleCloudPlatform/k8s-config- connector Application Services 7 Production Ready Amber Time Investment High
  • 51.
    Appvia.io Page 51 ●Install GCP Config Connector ● Understand ○ Approach ○ Limitations GCP Config Connector Demo GoogleCloudPlatform/k8s-config- connector Application Services 7 Production Ready Amber Time Investment High
  • 52.
    Appvia.io Page 52 ●Infrastructure Focus ● Limitations ○ No PSP’s ○ Resource Naming ○ Secrets First ○ No Application Configuration ● Intended direction GCP Config Connector Summary GoogleCloudPlatform/k8s-config- connector Application Services 7 Production Ready Amber Time Investment High