SlideShare une entreprise Scribd logo
1  sur  48
Télécharger pour lire hors ligne
November 2017
Seungkyu Ahn /
Taeil choi (Robert Choi)
From Kubernetes to OpenStack
Index
▪ TACO Overview (SKT All Container OpenStack)
▪ Why Kubernetes?
▪ Software stack
▪ Demo (Installing OpenStack)
▪ Kubespray
▪ Kolla
▪ Helm
▪ OpenStack-Helm
▪ Deployment profiles
▪ Deploy OpenStack
▪ Challenges
▪ What’s missing
▪ TACO Milestone & Future Plan
 OpenStack Helm + Continuous Integration/Deployment
 OpenStack Lifecycle Management on Kubernetes
• Easy version upgrade
• Minimize service impact on deployment (Rolling update)
• Scale out and simply add a Compute server
• Self-Healing (Automatic recovery in process down)
TACO (SKT All Container OpenStack)
Why Kubernetes?
▪ Automatic binpacking (Managing container)
▪ Horizontal scaling
▪ Automated rollouts and rollbacks
▪ Self-healing
▪ Service discovery and load balancing
▪ Secret and configuration management
Software stack
Chart
Kubespray
Demo System
deploy
node
k1-master01 k1-master02 k1-master03
k1-node01 k1-node02 k1-node03
k1-node04
Label : openstack-control-plane=enabled
openvswitch=enabled
Label : openstack-compute-node=enabled
openvswitch=enabled
k1-node05
Why Kubernetes?
Demo
Installation order
1. Installing Kubernetes using kubespray
2. Creating ceph user secret and storageclass
3. Setting the label on nodes
4. Building OpenStack docker images using Kolla
5. Packaging OpenStack helm charts
6. Deploying OpenStack
Kubespray
• Kubernetes incubator project
• Ansible
• Latest version support
✓ Kubernetes: v1.8.0
✓ Calico: v2.5.0 or Flannel: v0.8.0 or Weave: 2.0.1
✓ Helm: v2.6.1
✓ EFK (Elastic Search, Fluentd, Kibana) : v5.4.0, 1.22, v5.4.0
• Added features in TACO (SKT All Container OpenStack)
✓ CI / CD
✓ Prometheus for monitoring
Kubespray
• Should be changed files
✓ inventory/inventory.example
✓ inventory/group_vars/k8s-cluster.yml
• Install Kubernetes
✓ ansible-playbook -u taco -b -i inventory/inventory.example cluster.yml
• scale.yml : Adding nodes
• upgrade-cluster.yaml : Upgrading kubernetes
• reset.yaml : Uninstalling kubernetes cluster
Kubespray
• Should be changed files
✓ inventory/inventory.example
✓ inventory/group_vars/k8s-cluster.yml
• Install Kubernetes
✓ ansible-playbook -u taco -b -i inventory/inventory.example cluster.yml
Inventory example
k1-master01 ansible_port=22 ansible_host=k1-master01 ip=192.168.30.13
k1-master02 ansible_port=22 ansible_host=k1-master02 ip=192.168.30.14
k1-master03 ansible_port=22 ansible_host=k1-master03 ip=192.168.30.15
k1-node01 ansible_port=22 ansible_host=k1-node01 ip=192.168.30.12
k1-node02 ansible_port=22 ansible_host=k1-node02 ip=192.168.30.17
k1-node03 ansible_port=22 ansible_host=k1-node03 ip=192.168.30.18
k1-node04 ansible_port=22 ansible_host=k1-node04 ip=192.168.30.21
[etcd]
k1-master01
k1-master02
k1-master03
[kube-master]
k1-master01
k1-master02
k1-master03
[kube-node]
k1-node01
k1-node02
k1-node03
k1-node04
[k8s-cluster:children]
kube-master
kube-node
Kubespray
• Should be changed files
✓ inventory/inventory.example
✓ inventory/group_vars/k8s-cluster.yml
• Install Kubernetes
✓ ansible-playbook -u taco -b -i inventory/inventory.example cluster.yml
k8s-cluster.yml example
kube_version: v1.8.0
kube_network_plugin: calico
kube_service_addresses: 10.96.0.0/16
kube_pods_subnet: 172.16.0.0/16
etcd_deployment_type: docker
kubelet_deployment_type: host
etcd_memory_limit: 8192M
dashboard_enabled: true
efk_enabled: true
helm_enabled: true
Kubespray
• Should be changed files
✓ inventory/inventory.example
✓ inventory/group_vars/k8s-cluster.yml
• Install Kubernetes
✓ ansible-playbook -u taco -b -i inventory/inventory.example cluster.yml
Storage - PV and PVC (w/ Ceph)
• Secret files (openstack namespace) - user
✓ ceph-secret-user.yml
• Storage class
✓ ceph-storageclass.yml
• Secret files (kube-system namespace) - admin, user
✓ ceph-secret-admin.yml
✓ ceph-secret-user.yml
Kubernetes storage (w/ ceph)
• Static Provosioning
✓ rbd manual creation
PV manual creation : Setting rbd and storageclass
PVC manual creation : Connect with PV (PV Name or PV
Selector), Setting Storageclass (if not exist, using default
storageclass)
• Dynamic Provisioning
✓ Manual creation of PVC (Storageclass) : PV, rbd are
automatically generated
✓ Automatic generation : Stateful (volumeClaimTemplates)
Storage - PV and PVC (w/ Ceph)
• Secret files (openstack namespace) - user
✓ ceph-secret-user.yml
• Storage class
✓ ceph-storageclass.yml
• Secret files (kube-system namespace) - admin, user
✓ ceph-secret-admin.yml
✓ ceph-secret-user.yml
Secret file - ceph-secret-admin.yml
apiVersion: v1
kind: Secret
metadata:
name: "ceph-secret-admin"
namespace: "kube-system"
type: "kubernetes.io/rbd"
data:
key: ”xxxxxxx=="
grep key /etc/ceph/ceph.client.admin.keyring | awk '{printf "%s", $NF}' | base64
Storage - PV and PVC (w/ Ceph)
• Secret files (openstack namespace) - user
✓ ceph-secret-user.yml
• Storage class
✓ ceph-storageclass.yml
• Secret files (kube-system namespace) - admin, user
✓ ceph-secret-admin.yml
✓ ceph-secret-user.yml
Secret file - ceph-secret-user.yml
apiVersion: v1
kind: Secret
metadata:
name: "ceph-secret-user"
namespace: "kube-system"
type: "kubernetes.io/rbd"
data:
key: ”xxxxxx=="
grep key /etc/ceph/ceph.client.kube.keyring | awk '{printf "%s", $NF}' | base64
• Secret files (openstack namespace) - user
✓ ceph-secret-user.yml
• Storage class
✓ ceph-storageclass.yml
• Secret files (kube-system namespace) - admin, user
✓ ceph-secret-admin.yml
✓ ceph-secret-user.yml
Storage - PV and PVC (w/ Ceph)
Storage class file - ceph-storageclass.yml
apiVersion: storage.k8s.io/v1beta1
kind: StorageClass
metadata:
name: "ceph"
annotations:
storageclass.beta.kubernetes.io/is-default-class: "true"
provisioner: kubernetes.io/rbd
parameters:
monitors: "192.168.30.23:6789,192.168.30.24:6789,192.168.30.25:6789"
adminId: "admin"
adminSecretName: "ceph-secret-admin"
adminSecretNamespace: "kube-system"
pool: "kube"
userId: "kube"
userSecretName: "ceph-secret-user"
• Secret files (openstack namespace) - user
✓ ceph-secret-user.yml
• Storage class
✓ ceph-storageclass.yml
• Secret files (kube-system namespace) - admin, user
✓ ceph-secret-admin.yml
✓ ceph-secret-user.yml
Storage - PV and PVC (w/ Ceph)
Secret file - ceph-secret-user.yml
apiVersion: v1
kind: Secret
metadata:
name: "ceph-secret-user"
namespace: ”openstack"
type: "kubernetes.io/rbd"
data:
key: ”xxxxxx=="
grep key /etc/ceph/ceph.client.kube.keyring | awk '{printf "%s", $NF}' | base64
Label
kubectl label node k1-node01 openstack-control-plane=enabled
kubectl label node k1-node01 openvswitch=enabled
kubectl label node k1-node02 openstack-control-plane=enabled
kubectl label node k1-node02 openvswitch=enabled
kubectl label node k1-node03 openstack-control-plane=enabled
kubectl label node k1-node03 openvswitch=enabled
kubectl label node k1-node04 openstack-compute-node=enabled
kubectl label node k1-node04 openvswitch=enabled
Kolla
● OpenStack project 로 OpenStack service 들의 docker image 를 생성 및 관리하는 Tool
● OpenStack 서비스들 뿐만 아니라 다양한 관련 application들의 docker image 제공
Kolla - Dockerfile example
Kolla Dockerfile.j2
Kolla build
• kolla-build -b ubuntu -t source --template-override template-overrides.j2 keystone
override
template-override.j2
• Automation tool for managing Kubernetes applications.
• Helm Charts helps you define, install, and upgrade Kubernetes application.
(Server)
(client)
- Helm Architecture -
Helm chart structure
Helm chart structure
Kubernetes manifest format
• Manifest file for deploying minio pod
kind: Deployment
metadata:
name: minio
labels:
app: minio
spec:
replicas: 1
template:
metadata:
labels:
app: minio
spec:
affinity:
nodeAffinity:
…
containers:
- name: minio
image: minio/minio:latest
imagePullPolicy: Always
args:
- server
- /storage
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: {{ template "minio.fullname" . }}
labels:
app: {{ template "minio.fullname" . }}
spec:
{{- if eq .Values.mode "shared" }}
replicas: {{ .Values.replicas }}
{{- end }}
template:
metadata:
name: {{ template "minio.fullname" . }}
labels:
app: {{ template "minio.fullname" . }}
spec:
volumes:
- name: export
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ template "minio.fullname" . }}
{{- else }}
emptyDir: {}
{{- end }}
- name: minio-server-config
configMap:
name: {{ template "minio.fullname" . }}-config-cm
- name: minio-user
secret:
secretName: {{ template "minio.fullname" . }}-user
containers:
- name: minio
image: {{ .Values.image }}:{{ .Values.imageTag }}
…
• Rendering: actual values are
assigned from separate values file
• Rendered manifest is passed to k8s
API (where is rendering done?)
replicas: 1
image: "minio/minio:latest"
imagePullPolicy: "Always“
…
Values.yaml
Helm Chart Template
35
OpenStack-Helm
• Collection of charts for managing most openstack services.
• Since November 2016 by AT&T
(https://github.com/openstack/openstack-helm)
36
Openstakc-helm > Keystone chart structure
Launches keystone pod
Test pod
Contains values
Keystone config
37
SKT’s pipeline > Wrapper Chart
• Customize values for target environment.
• Don’t touch original chart and the wrapper only has values to override.
• Values merged -> SKT chart generated -> Pushed into internal repository.
Deployment Profiles
• Necessary to deploy openstack cluster into various environments
• Charts URLs + configuration overrides
(Eg, network conf, repository URL and so on)
• Open-source orchestration tools
• Landscaper
• Started on Nov 2016 by Eneco.
• Each conf file is for single chart -> Many small configs
• Pretty stable, but only provides basic functionality.
• Armada
• Started on Feb 2017 by AT&T.
• One global big conf file for all charts
• Not as stable as Landscaper yet, but has extra functionality.
(Pre/post actions, undeploy, chart grouping, and so on.)
• We’re trying to migrate from Landscaper to Armada.
Deployment Profiles (cont.)
• Charts URL + env-specific configuration overrides
Deployment Profiles (cont.)
• Profile: Templates + original values + wrapper values + env-specific values
• To apply: “$ armada apply PROFILE_NAME”
templates
original values
values by wrapper
values
for
‘dev’
values
values
for
‘stg’
values
for
‘stg’
Keystone
templates
original values
values by wrapper
values
for
‘dev’
values
values
for
‘stg’
values
for
‘stg’
Glance
…
‘dev’ profile
SKT
Wrapper
Chart
Deployment Profiles (cont.)
• Profile: Templates + original values + wrapper values + env-specific values
• To apply: “$ armada apply PROFILE_NAME”
templates
original values
values by wrapper
values
for
‘dev’
values
values
for
‘stg’
values
for
‘stg’
Keystone
templates
original values
values by wrapper
values
for
‘dev’
values
values
for
‘stg’
values
for
‘stg’
Glance
…
‘stg’ profile
SKT
Wrapper
Chart
Challenges > Summary (#1)
▪ Too many artifacts to track or manage
▪ Tools (binary)
▪ Docker, Kubernetes, Helm, Landscaper or Armada, …
▪ Docker images & sources
▪ Base OS images & Kolla images
▪ Wrapper images
▪ Helm charts & source
▪ Openstack-helm charts
▪ Wrapper charts: Additional template, Override SKT-specific values
▪ Deployment profiles
▪ For various environments ( Eg, ‘dev’, ‘stg’, ‘prod’, … )
▪ Versioning and promotion policies for the above artifacts
▪ Isolated environment for each build job
▪ Eg) daemonset conflicts for OVS or libvirt
▪ Etc
Challenges > Summary (#2)
▪ Too many artifacts to track or manage
▪ Tools (binary)
▪ Docker, Kubernetes, Helm, Landscaper or Armada, …
▪ Docker images & sources
▪ Base OS images & Kolla images
▪ Wrapper images
▪ Helm charts & source
▪ Openstack-helm charts
▪ Wrapper charts: Additional template, Override SKT-specific values
▪ Deployment profiles
▪ For various environments ( Eg, ‘dev’, ‘stg’, ‘prod’, … )
▪ Versioning and promotion policies for the above artifacts
▪ Isolated environment for each build job
▪ Eg) daemonset conflicts for OVS or libvirt
▪ Etc
Challenge > Track upstream changes
▪ Problems: too many things to track
▪ Version upgrade of tools
▪ K8s, helm upgrade -> broken build!
▪ Openstack source, kolla source (trivial)
▪ Openstack-helm project (major one)
▪ Fast and actively moving target
▪ Hard to track upstream changes immediately by hand
▪ Periodic sync/merge -> too many change -> broken build (painful to fix it)
▪ Solution: Automation (on Jenkins)
▪ Fetch hourly -> Build SKT chart -> Test -> Merge if the test passes
▪ If test fails, create ticket and notify developers about the failure
▪ Jira plugin for create the ticket
▪ Slack plugin for the notification
Challenge > Versioning and Promotion
▪ Problems
▪ Should be able to identify relationship between related artifacts
(Eg, kolla image <-> Helm chart)
▪ Solution
▪ Consistent versioning
▪ Dev: after build stage
▪ Stage: after daily integration test
▪ Release: on demand by hand
Dev (hourly) Stage (daily) Release (manual)
Artifact
Kolla
Image
0.1.0 yy.mm.dd 1.0.0 -> … -> 1.0.x
Helm chart
& profile
0.1.0 yy.mm.dd 1.0.0 -> … -> 1.0.x
Source
Code
Branch Master stage ReleaseX
Tag N/A yy.mm.dd 1.0.0 -> … -> 1.0.x
What’s missing
▪ CI for Kubernetes itself
▪ Track kubernetes version upgrade
▪ Apply new version ASAP with some validation tests
▪ Resiliency Test (like chaos-monkey)
▪ Make sure the openstack cluster tolerate node failure
▪ Randomly terminate resources such as pod, daemonset in the cluster at specified
interval & duration
▪ TACO Client Tool
▪ CLI Tool with which users can use most functions of TACO easily.
▪ Deploy/undeploy/patch/upgrade openstack services
▪ Adding/removing openstack node (usually compute node)
TACO Milestone
• Current Status
• Currently beta release
• Upstream-related work
• Cooperating closely with members of OpenStack-Helm project (e.g., AT&T, Intel)
• 3rd place in code contribution ranking in the OpenStack-Helm (as of 11/02/17)
• OpenStack-Helm is now official project: Join us!
• Future plan
• Once Missing part is done -> Production-Ready Release!
• Release Plan
• 2018: Greenfield Production Deployment (SKT Internal Private Cloud)
• 2018: Feasibility Test and PoC for Telco Infra (e.g., dataplane acceleration,
security, etc)
• 2019~ : Production Deployment for Telco Infra
• TBD: Infra Service that provides both VM and Containers & Container-Based SW
Delivery Platform
Q & A
Question?

Contenu connexe

Tendances

Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introductionDongwon Kim
 
Clocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerClocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerAndrew Kennedy
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker, Inc.
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지충섭 김
 
Setup 3 Node Kafka Cluster on AWS - Hands On
Setup 3 Node Kafka Cluster on AWS - Hands OnSetup 3 Node Kafka Cluster on AWS - Hands On
Setup 3 Node Kafka Cluster on AWS - Hands Onhkbhadraa
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and dockerFabio Fumarola
 
Orchestrating Redis & K8s Operators
Orchestrating Redis & K8s OperatorsOrchestrating Redis & K8s Operators
Orchestrating Redis & K8s OperatorsDoiT International
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Hyun-Mook Choi
 
[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network TroubleshootingOpen Source Consulting
 
Container & kubernetes
Container & kubernetesContainer & kubernetes
Container & kubernetesTed Jung
 
An intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECSAn intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECSYevgeniy Brikman
 
Docker 1.5
Docker 1.5Docker 1.5
Docker 1.5rajdeep
 
Docker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmDocker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmMario IC
 
CloudStack Automated Integration Testing with Marvin
CloudStack Automated Integration Testing with Marvin CloudStack Automated Integration Testing with Marvin
CloudStack Automated Integration Testing with Marvin NetApp
 
Microservices blue-green-deployment-with-docker
Microservices blue-green-deployment-with-dockerMicroservices blue-green-deployment-with-docker
Microservices blue-green-deployment-with-dockerKidong Lee
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyJoe Kutner
 
Guaranteeing CloudStack Storage Performance
Guaranteeing CloudStack Storage Performance Guaranteeing CloudStack Storage Performance
Guaranteeing CloudStack Storage Performance NetApp
 
DockerCon 18 docker storage
DockerCon 18 docker storageDockerCon 18 docker storage
DockerCon 18 docker storageDaniel Finneran
 

Tendances (20)

Kubernetes introduction
Kubernetes introductionKubernetes introduction
Kubernetes introduction
 
Clocker - The Docker Cloud Maker
Clocker - The Docker Cloud MakerClocker - The Docker Cloud Maker
Clocker - The Docker Cloud Maker
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지CoreOS : 설치부터 컨테이너 배포까지
CoreOS : 설치부터 컨테이너 배포까지
 
Docker n co
Docker n coDocker n co
Docker n co
 
Setup 3 Node Kafka Cluster on AWS - Hands On
Setup 3 Node Kafka Cluster on AWS - Hands OnSetup 3 Node Kafka Cluster on AWS - Hands On
Setup 3 Node Kafka Cluster on AWS - Hands On
 
Develop with linux containers and docker
Develop with linux containers and dockerDevelop with linux containers and docker
Develop with linux containers and docker
 
Orchestrating Redis & K8s Operators
Orchestrating Redis & K8s OperatorsOrchestrating Redis & K8s Operators
Orchestrating Redis & K8s Operators
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting[오픈소스컨설팅] Linux Network Troubleshooting
[오픈소스컨설팅] Linux Network Troubleshooting
 
Container & kubernetes
Container & kubernetesContainer & kubernetes
Container & kubernetes
 
An intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECSAn intro to Docker, Terraform, and Amazon ECS
An intro to Docker, Terraform, and Amazon ECS
 
Docker 1.5
Docker 1.5Docker 1.5
Docker 1.5
 
Docker Compose to Production with Docker Swarm
Docker Compose to Production with Docker SwarmDocker Compose to Production with Docker Swarm
Docker Compose to Production with Docker Swarm
 
CloudStack Automated Integration Testing with Marvin
CloudStack Automated Integration Testing with Marvin CloudStack Automated Integration Testing with Marvin
CloudStack Automated Integration Testing with Marvin
 
Microservices blue-green-deployment-with-docker
Microservices blue-green-deployment-with-dockerMicroservices blue-green-deployment-with-docker
Microservices blue-green-deployment-with-docker
 
Async and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRubyAsync and Non-blocking IO w/ JRuby
Async and Non-blocking IO w/ JRuby
 
Guaranteeing CloudStack Storage Performance
Guaranteeing CloudStack Storage Performance Guaranteeing CloudStack Storage Performance
Guaranteeing CloudStack Storage Performance
 
Docker up and running
Docker up and runningDocker up and running
Docker up and running
 
DockerCon 18 docker storage
DockerCon 18 docker storageDockerCon 18 docker storage
DockerCon 18 docker storage
 

Similaire à From Kubernetes to OpenStack in Sydney

Cutting through the fog of cloud
Cutting through the fog of cloudCutting through the fog of cloud
Cutting through the fog of cloudKyle Rames
 
Pro2516 10 things about oracle and k8s.pptx-final
Pro2516   10 things about oracle and k8s.pptx-finalPro2516   10 things about oracle and k8s.pptx-final
Pro2516 10 things about oracle and k8s.pptx-finalMichel Schildmeijer
 
CERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sCERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sBelmiro Moreira
 
Bdc from bare metal to k8s
Bdc   from bare metal to k8sBdc   from bare metal to k8s
Bdc from bare metal to k8sChris Adkin
 
Artem Zhurbila - docker clusters (solit 2015)
Artem Zhurbila - docker clusters (solit 2015)Artem Zhurbila - docker clusters (solit 2015)
Artem Zhurbila - docker clusters (solit 2015)Artem Zhurbila
 
Microservices with containers in the cloud
Microservices with containers in the cloudMicroservices with containers in the cloud
Microservices with containers in the cloudEugene Fedorenko
 
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 Cloud-native applications with Java and Kubernetes - Yehor Volkov Cloud-native applications with Java and Kubernetes - Yehor Volkov
Cloud-native applications with Java and Kubernetes - Yehor VolkovKuberton
 
Deploying on Kubernetes - An intro
Deploying on Kubernetes - An introDeploying on Kubernetes - An intro
Deploying on Kubernetes - An introAndré Cruz
 
OSS Japan 2019 service mesh bridging Kubernetes and legacy
OSS Japan 2019 service mesh bridging Kubernetes and legacyOSS Japan 2019 service mesh bridging Kubernetes and legacy
OSS Japan 2019 service mesh bridging Kubernetes and legacySteve Wong
 
Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Anthony Dahanne
 
Serverless Multi Region Cache Replication
Serverless Multi Region Cache ReplicationServerless Multi Region Cache Replication
Serverless Multi Region Cache ReplicationSanghyun Lee
 
Containerizing Distributed Pipes
Containerizing Distributed PipesContainerizing Distributed Pipes
Containerizing Distributed Pipesinside-BigData.com
 
K8s is not for App Developers
K8s is not for App DevelopersK8s is not for App Developers
K8s is not for App DevelopersQAware GmbH
 
Istio Playground
Istio PlaygroundIstio Playground
Istio PlaygroundQAware GmbH
 
Kubernetes Boston — Custom High Availability of Kubernetes
Kubernetes Boston — Custom High Availability of KubernetesKubernetes Boston — Custom High Availability of Kubernetes
Kubernetes Boston — Custom High Availability of KubernetesMike Splain
 
K8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingK8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingPiotr Perzyna
 
Kubernetes meetup 102
Kubernetes meetup 102Kubernetes meetup 102
Kubernetes meetup 102Jakir Patel
 
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...Tobias Schneck
 

Similaire à From Kubernetes to OpenStack in Sydney (20)

CKA_1st.pptx
CKA_1st.pptxCKA_1st.pptx
CKA_1st.pptx
 
Cutting through the fog of cloud
Cutting through the fog of cloudCutting through the fog of cloud
Cutting through the fog of cloud
 
Pro2516 10 things about oracle and k8s.pptx-final
Pro2516   10 things about oracle and k8s.pptx-finalPro2516   10 things about oracle and k8s.pptx-final
Pro2516 10 things about oracle and k8s.pptx-final
 
CERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8sCERN OpenStack Cloud Control Plane - From VMs to K8s
CERN OpenStack Cloud Control Plane - From VMs to K8s
 
Bdc from bare metal to k8s
Bdc   from bare metal to k8sBdc   from bare metal to k8s
Bdc from bare metal to k8s
 
Artem Zhurbila - docker clusters (solit 2015)
Artem Zhurbila - docker clusters (solit 2015)Artem Zhurbila - docker clusters (solit 2015)
Artem Zhurbila - docker clusters (solit 2015)
 
Microservices with containers in the cloud
Microservices with containers in the cloudMicroservices with containers in the cloud
Microservices with containers in the cloud
 
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 Cloud-native applications with Java and Kubernetes - Yehor Volkov Cloud-native applications with Java and Kubernetes - Yehor Volkov
Cloud-native applications with Java and Kubernetes - Yehor Volkov
 
Deploying on Kubernetes - An intro
Deploying on Kubernetes - An introDeploying on Kubernetes - An intro
Deploying on Kubernetes - An intro
 
OSS Japan 2019 service mesh bridging Kubernetes and legacy
OSS Japan 2019 service mesh bridging Kubernetes and legacyOSS Japan 2019 service mesh bridging Kubernetes and legacy
OSS Japan 2019 service mesh bridging Kubernetes and legacy
 
Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !Get you Java application ready for Kubernetes !
Get you Java application ready for Kubernetes !
 
Serverless Multi Region Cache Replication
Serverless Multi Region Cache ReplicationServerless Multi Region Cache Replication
Serverless Multi Region Cache Replication
 
Containerizing Distributed Pipes
Containerizing Distributed PipesContainerizing Distributed Pipes
Containerizing Distributed Pipes
 
K8s is not for App Developers
K8s is not for App DevelopersK8s is not for App Developers
K8s is not for App Developers
 
Istio Playground
Istio PlaygroundIstio Playground
Istio Playground
 
kubernetes practice
kubernetes practicekubernetes practice
kubernetes practice
 
Kubernetes Boston — Custom High Availability of Kubernetes
Kubernetes Boston — Custom High Availability of KubernetesKubernetes Boston — Custom High Availability of Kubernetes
Kubernetes Boston — Custom High Availability of Kubernetes
 
K8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals TrainingK8s in 3h - Kubernetes Fundamentals Training
K8s in 3h - Kubernetes Fundamentals Training
 
Kubernetes meetup 102
Kubernetes meetup 102Kubernetes meetup 102
Kubernetes meetup 102
 
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
Kubermatic How to Migrate 100 Clusters from On-Prem to Google Cloud Without D...
 

Dernier

%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburgmasabamasaba
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...Health
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfayushiqss
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdfPearlKirahMaeRagusta1
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfVishalKumarJha10
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrandmasabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationShrmpro
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is insideshinachiaurasa2
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...harshavardhanraghave
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️Delhi Call girls
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...masabamasaba
 

Dernier (20)

%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
%in Lydenburg+277-882-255-28 abortion pills for sale in Lydenburg
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdfThe Top App Development Trends Shaping the Industry in 2024-25 .pdf
The Top App Development Trends Shaping the Industry in 2024-25 .pdf
 
Define the academic and professional writing..pdf
Define the academic and professional writing..pdfDefine the academic and professional writing..pdf
Define the academic and professional writing..pdf
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
SHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions PresentationSHRMPro HRMS Software Solutions Presentation
SHRMPro HRMS Software Solutions Presentation
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
Reassessing the Bedrock of Clinical Function Models: An Examination of Large ...
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Atlanta Psychic Readings, Attraction spells,Brin...
 

From Kubernetes to OpenStack in Sydney

  • 1. November 2017 Seungkyu Ahn / Taeil choi (Robert Choi) From Kubernetes to OpenStack
  • 2. Index ▪ TACO Overview (SKT All Container OpenStack) ▪ Why Kubernetes? ▪ Software stack ▪ Demo (Installing OpenStack) ▪ Kubespray ▪ Kolla ▪ Helm ▪ OpenStack-Helm ▪ Deployment profiles ▪ Deploy OpenStack ▪ Challenges ▪ What’s missing ▪ TACO Milestone & Future Plan
  • 3.  OpenStack Helm + Continuous Integration/Deployment  OpenStack Lifecycle Management on Kubernetes • Easy version upgrade • Minimize service impact on deployment (Rolling update) • Scale out and simply add a Compute server • Self-Healing (Automatic recovery in process down) TACO (SKT All Container OpenStack)
  • 4. Why Kubernetes? ▪ Automatic binpacking (Managing container) ▪ Horizontal scaling ▪ Automated rollouts and rollbacks ▪ Self-healing ▪ Service discovery and load balancing ▪ Secret and configuration management
  • 6. Demo System deploy node k1-master01 k1-master02 k1-master03 k1-node01 k1-node02 k1-node03 k1-node04 Label : openstack-control-plane=enabled openvswitch=enabled Label : openstack-compute-node=enabled openvswitch=enabled k1-node05
  • 8. Installation order 1. Installing Kubernetes using kubespray 2. Creating ceph user secret and storageclass 3. Setting the label on nodes 4. Building OpenStack docker images using Kolla 5. Packaging OpenStack helm charts 6. Deploying OpenStack
  • 9. Kubespray • Kubernetes incubator project • Ansible • Latest version support ✓ Kubernetes: v1.8.0 ✓ Calico: v2.5.0 or Flannel: v0.8.0 or Weave: 2.0.1 ✓ Helm: v2.6.1 ✓ EFK (Elastic Search, Fluentd, Kibana) : v5.4.0, 1.22, v5.4.0 • Added features in TACO (SKT All Container OpenStack) ✓ CI / CD ✓ Prometheus for monitoring
  • 10. Kubespray • Should be changed files ✓ inventory/inventory.example ✓ inventory/group_vars/k8s-cluster.yml • Install Kubernetes ✓ ansible-playbook -u taco -b -i inventory/inventory.example cluster.yml • scale.yml : Adding nodes • upgrade-cluster.yaml : Upgrading kubernetes • reset.yaml : Uninstalling kubernetes cluster
  • 11. Kubespray • Should be changed files ✓ inventory/inventory.example ✓ inventory/group_vars/k8s-cluster.yml • Install Kubernetes ✓ ansible-playbook -u taco -b -i inventory/inventory.example cluster.yml
  • 12. Inventory example k1-master01 ansible_port=22 ansible_host=k1-master01 ip=192.168.30.13 k1-master02 ansible_port=22 ansible_host=k1-master02 ip=192.168.30.14 k1-master03 ansible_port=22 ansible_host=k1-master03 ip=192.168.30.15 k1-node01 ansible_port=22 ansible_host=k1-node01 ip=192.168.30.12 k1-node02 ansible_port=22 ansible_host=k1-node02 ip=192.168.30.17 k1-node03 ansible_port=22 ansible_host=k1-node03 ip=192.168.30.18 k1-node04 ansible_port=22 ansible_host=k1-node04 ip=192.168.30.21 [etcd] k1-master01 k1-master02 k1-master03 [kube-master] k1-master01 k1-master02 k1-master03 [kube-node] k1-node01 k1-node02 k1-node03 k1-node04 [k8s-cluster:children] kube-master kube-node
  • 13. Kubespray • Should be changed files ✓ inventory/inventory.example ✓ inventory/group_vars/k8s-cluster.yml • Install Kubernetes ✓ ansible-playbook -u taco -b -i inventory/inventory.example cluster.yml
  • 14. k8s-cluster.yml example kube_version: v1.8.0 kube_network_plugin: calico kube_service_addresses: 10.96.0.0/16 kube_pods_subnet: 172.16.0.0/16 etcd_deployment_type: docker kubelet_deployment_type: host etcd_memory_limit: 8192M dashboard_enabled: true efk_enabled: true helm_enabled: true
  • 15. Kubespray • Should be changed files ✓ inventory/inventory.example ✓ inventory/group_vars/k8s-cluster.yml • Install Kubernetes ✓ ansible-playbook -u taco -b -i inventory/inventory.example cluster.yml
  • 16. Storage - PV and PVC (w/ Ceph) • Secret files (openstack namespace) - user ✓ ceph-secret-user.yml • Storage class ✓ ceph-storageclass.yml • Secret files (kube-system namespace) - admin, user ✓ ceph-secret-admin.yml ✓ ceph-secret-user.yml
  • 17. Kubernetes storage (w/ ceph) • Static Provosioning ✓ rbd manual creation PV manual creation : Setting rbd and storageclass PVC manual creation : Connect with PV (PV Name or PV Selector), Setting Storageclass (if not exist, using default storageclass) • Dynamic Provisioning ✓ Manual creation of PVC (Storageclass) : PV, rbd are automatically generated ✓ Automatic generation : Stateful (volumeClaimTemplates)
  • 18. Storage - PV and PVC (w/ Ceph) • Secret files (openstack namespace) - user ✓ ceph-secret-user.yml • Storage class ✓ ceph-storageclass.yml • Secret files (kube-system namespace) - admin, user ✓ ceph-secret-admin.yml ✓ ceph-secret-user.yml
  • 19. Secret file - ceph-secret-admin.yml apiVersion: v1 kind: Secret metadata: name: "ceph-secret-admin" namespace: "kube-system" type: "kubernetes.io/rbd" data: key: ”xxxxxxx==" grep key /etc/ceph/ceph.client.admin.keyring | awk '{printf "%s", $NF}' | base64
  • 20. Storage - PV and PVC (w/ Ceph) • Secret files (openstack namespace) - user ✓ ceph-secret-user.yml • Storage class ✓ ceph-storageclass.yml • Secret files (kube-system namespace) - admin, user ✓ ceph-secret-admin.yml ✓ ceph-secret-user.yml
  • 21. Secret file - ceph-secret-user.yml apiVersion: v1 kind: Secret metadata: name: "ceph-secret-user" namespace: "kube-system" type: "kubernetes.io/rbd" data: key: ”xxxxxx==" grep key /etc/ceph/ceph.client.kube.keyring | awk '{printf "%s", $NF}' | base64
  • 22. • Secret files (openstack namespace) - user ✓ ceph-secret-user.yml • Storage class ✓ ceph-storageclass.yml • Secret files (kube-system namespace) - admin, user ✓ ceph-secret-admin.yml ✓ ceph-secret-user.yml Storage - PV and PVC (w/ Ceph)
  • 23. Storage class file - ceph-storageclass.yml apiVersion: storage.k8s.io/v1beta1 kind: StorageClass metadata: name: "ceph" annotations: storageclass.beta.kubernetes.io/is-default-class: "true" provisioner: kubernetes.io/rbd parameters: monitors: "192.168.30.23:6789,192.168.30.24:6789,192.168.30.25:6789" adminId: "admin" adminSecretName: "ceph-secret-admin" adminSecretNamespace: "kube-system" pool: "kube" userId: "kube" userSecretName: "ceph-secret-user"
  • 24. • Secret files (openstack namespace) - user ✓ ceph-secret-user.yml • Storage class ✓ ceph-storageclass.yml • Secret files (kube-system namespace) - admin, user ✓ ceph-secret-admin.yml ✓ ceph-secret-user.yml Storage - PV and PVC (w/ Ceph)
  • 25. Secret file - ceph-secret-user.yml apiVersion: v1 kind: Secret metadata: name: "ceph-secret-user" namespace: ”openstack" type: "kubernetes.io/rbd" data: key: ”xxxxxx==" grep key /etc/ceph/ceph.client.kube.keyring | awk '{printf "%s", $NF}' | base64
  • 26. Label kubectl label node k1-node01 openstack-control-plane=enabled kubectl label node k1-node01 openvswitch=enabled kubectl label node k1-node02 openstack-control-plane=enabled kubectl label node k1-node02 openvswitch=enabled kubectl label node k1-node03 openstack-control-plane=enabled kubectl label node k1-node03 openvswitch=enabled kubectl label node k1-node04 openstack-compute-node=enabled kubectl label node k1-node04 openvswitch=enabled
  • 27. Kolla ● OpenStack project 로 OpenStack service 들의 docker image 를 생성 및 관리하는 Tool ● OpenStack 서비스들 뿐만 아니라 다양한 관련 application들의 docker image 제공
  • 30. Kolla build • kolla-build -b ubuntu -t source --template-override template-overrides.j2 keystone override template-override.j2
  • 31. • Automation tool for managing Kubernetes applications. • Helm Charts helps you define, install, and upgrade Kubernetes application. (Server) (client) - Helm Architecture - Helm chart structure
  • 33. Kubernetes manifest format • Manifest file for deploying minio pod kind: Deployment metadata: name: minio labels: app: minio spec: replicas: 1 template: metadata: labels: app: minio spec: affinity: nodeAffinity: … containers: - name: minio image: minio/minio:latest imagePullPolicy: Always args: - server - /storage
  • 34. apiVersion: extensions/v1beta1 kind: Deployment metadata: name: {{ template "minio.fullname" . }} labels: app: {{ template "minio.fullname" . }} spec: {{- if eq .Values.mode "shared" }} replicas: {{ .Values.replicas }} {{- end }} template: metadata: name: {{ template "minio.fullname" . }} labels: app: {{ template "minio.fullname" . }} spec: volumes: - name: export {{- if .Values.persistence.enabled }} persistentVolumeClaim: claimName: {{ template "minio.fullname" . }} {{- else }} emptyDir: {} {{- end }} - name: minio-server-config configMap: name: {{ template "minio.fullname" . }}-config-cm - name: minio-user secret: secretName: {{ template "minio.fullname" . }}-user containers: - name: minio image: {{ .Values.image }}:{{ .Values.imageTag }} … • Rendering: actual values are assigned from separate values file • Rendered manifest is passed to k8s API (where is rendering done?) replicas: 1 image: "minio/minio:latest" imagePullPolicy: "Always“ … Values.yaml Helm Chart Template
  • 35. 35 OpenStack-Helm • Collection of charts for managing most openstack services. • Since November 2016 by AT&T (https://github.com/openstack/openstack-helm)
  • 36. 36 Openstakc-helm > Keystone chart structure Launches keystone pod Test pod Contains values Keystone config
  • 37. 37 SKT’s pipeline > Wrapper Chart • Customize values for target environment. • Don’t touch original chart and the wrapper only has values to override. • Values merged -> SKT chart generated -> Pushed into internal repository.
  • 38. Deployment Profiles • Necessary to deploy openstack cluster into various environments • Charts URLs + configuration overrides (Eg, network conf, repository URL and so on) • Open-source orchestration tools • Landscaper • Started on Nov 2016 by Eneco. • Each conf file is for single chart -> Many small configs • Pretty stable, but only provides basic functionality. • Armada • Started on Feb 2017 by AT&T. • One global big conf file for all charts • Not as stable as Landscaper yet, but has extra functionality. (Pre/post actions, undeploy, chart grouping, and so on.) • We’re trying to migrate from Landscaper to Armada.
  • 39. Deployment Profiles (cont.) • Charts URL + env-specific configuration overrides
  • 40. Deployment Profiles (cont.) • Profile: Templates + original values + wrapper values + env-specific values • To apply: “$ armada apply PROFILE_NAME” templates original values values by wrapper values for ‘dev’ values values for ‘stg’ values for ‘stg’ Keystone templates original values values by wrapper values for ‘dev’ values values for ‘stg’ values for ‘stg’ Glance … ‘dev’ profile SKT Wrapper Chart
  • 41. Deployment Profiles (cont.) • Profile: Templates + original values + wrapper values + env-specific values • To apply: “$ armada apply PROFILE_NAME” templates original values values by wrapper values for ‘dev’ values values for ‘stg’ values for ‘stg’ Keystone templates original values values by wrapper values for ‘dev’ values values for ‘stg’ values for ‘stg’ Glance … ‘stg’ profile SKT Wrapper Chart
  • 42. Challenges > Summary (#1) ▪ Too many artifacts to track or manage ▪ Tools (binary) ▪ Docker, Kubernetes, Helm, Landscaper or Armada, … ▪ Docker images & sources ▪ Base OS images & Kolla images ▪ Wrapper images ▪ Helm charts & source ▪ Openstack-helm charts ▪ Wrapper charts: Additional template, Override SKT-specific values ▪ Deployment profiles ▪ For various environments ( Eg, ‘dev’, ‘stg’, ‘prod’, … ) ▪ Versioning and promotion policies for the above artifacts ▪ Isolated environment for each build job ▪ Eg) daemonset conflicts for OVS or libvirt ▪ Etc
  • 43. Challenges > Summary (#2) ▪ Too many artifacts to track or manage ▪ Tools (binary) ▪ Docker, Kubernetes, Helm, Landscaper or Armada, … ▪ Docker images & sources ▪ Base OS images & Kolla images ▪ Wrapper images ▪ Helm charts & source ▪ Openstack-helm charts ▪ Wrapper charts: Additional template, Override SKT-specific values ▪ Deployment profiles ▪ For various environments ( Eg, ‘dev’, ‘stg’, ‘prod’, … ) ▪ Versioning and promotion policies for the above artifacts ▪ Isolated environment for each build job ▪ Eg) daemonset conflicts for OVS or libvirt ▪ Etc
  • 44. Challenge > Track upstream changes ▪ Problems: too many things to track ▪ Version upgrade of tools ▪ K8s, helm upgrade -> broken build! ▪ Openstack source, kolla source (trivial) ▪ Openstack-helm project (major one) ▪ Fast and actively moving target ▪ Hard to track upstream changes immediately by hand ▪ Periodic sync/merge -> too many change -> broken build (painful to fix it) ▪ Solution: Automation (on Jenkins) ▪ Fetch hourly -> Build SKT chart -> Test -> Merge if the test passes ▪ If test fails, create ticket and notify developers about the failure ▪ Jira plugin for create the ticket ▪ Slack plugin for the notification
  • 45. Challenge > Versioning and Promotion ▪ Problems ▪ Should be able to identify relationship between related artifacts (Eg, kolla image <-> Helm chart) ▪ Solution ▪ Consistent versioning ▪ Dev: after build stage ▪ Stage: after daily integration test ▪ Release: on demand by hand Dev (hourly) Stage (daily) Release (manual) Artifact Kolla Image 0.1.0 yy.mm.dd 1.0.0 -> … -> 1.0.x Helm chart & profile 0.1.0 yy.mm.dd 1.0.0 -> … -> 1.0.x Source Code Branch Master stage ReleaseX Tag N/A yy.mm.dd 1.0.0 -> … -> 1.0.x
  • 46. What’s missing ▪ CI for Kubernetes itself ▪ Track kubernetes version upgrade ▪ Apply new version ASAP with some validation tests ▪ Resiliency Test (like chaos-monkey) ▪ Make sure the openstack cluster tolerate node failure ▪ Randomly terminate resources such as pod, daemonset in the cluster at specified interval & duration ▪ TACO Client Tool ▪ CLI Tool with which users can use most functions of TACO easily. ▪ Deploy/undeploy/patch/upgrade openstack services ▪ Adding/removing openstack node (usually compute node)
  • 47. TACO Milestone • Current Status • Currently beta release • Upstream-related work • Cooperating closely with members of OpenStack-Helm project (e.g., AT&T, Intel) • 3rd place in code contribution ranking in the OpenStack-Helm (as of 11/02/17) • OpenStack-Helm is now official project: Join us! • Future plan • Once Missing part is done -> Production-Ready Release! • Release Plan • 2018: Greenfield Production Deployment (SKT Internal Private Cloud) • 2018: Feasibility Test and PoC for Telco Infra (e.g., dataplane acceleration, security, etc) • 2019~ : Production Deployment for Telco Infra • TBD: Infra Service that provides both VM and Containers & Container-Based SW Delivery Platform