SlideShare a Scribd company logo
1 of 23
Download to read offline
2019년 07월
홍석용 (Dennis Hong) / 박광열 (Theodore Park)
dennis.hong@kakaocorp.com / theodore.park@kakaomobility.com
카카오 T 택시 사례를 통해 살펴보는
카카오 클라우드의 Kubernetes as a Service
Open Infrastructure & Cloud Native Days Korea 2019
발표자 소개
Works
- OpenStack 기반 LG 그룹사 Public, Private Cloud 개발/운영
- OpenStack Ironic(Bare Metal) Inhouse Driver 개발
- Mesos as a Service, DKOSv2 운영
- Kubernetes as a Service, DKOSv3 개발/운영
Community Activity
- 2017 OpenStack Day: 하이브리드 클라우드를 위한 OpenStack AWS Plugin (VM Migration)
- 2018 OpenInfra Day: Mesos to Kubernetes, Cloud Native 서비스를 위한 여정
- Kubernetes Comics 한글화: https://goo.gl/5mTvtm
홍석용 (Dennis Hong)
오늘 공유할 내용은..
1. 카카오는 Kubernetes를 어떻게 쓰고 있나요?
2. Kubernetes 를 도입하면 뭐가 좋아지나요?
3. Private Cloud 에서의 Kubernetes as a Service 운영
§ 멀티 클러스터 인증 통합, 사용자 ACL : kubectl Plugin
§ 자동화된 클러스터 라이프사이클 : Immutable Server Pattern
§ 물리 인프라 자원 통합 : Custom Controller, Custom Resource Definition
4. 카카오 T 택시 Kubernetes 적용 사례 소개 (자료 별첨)
카카오는 Kubernetes를
어떻게 쓰고 있나요?
카카오의 Kubernetes as a Service, DKOSv3
개발자가스스로카카오프라이빗클라우드에쿠버네티스클러스터를생성해서사용합니다.
#개인/조직/서비스별
#개별클러스터제공
#학습/개발/서비스용도
#프라이빗클라우드
#셀프서비스
#수백개의클러스터
#어느새오픈1주년
카카오의 Kubernetes as a Service
다양한실서비스시스템에 쿠버네티스를활용하고있습니다.
오늘은카카오T택시서비스적용사례에대해공유하고자합니다.
카카오 T 택시
카카오맵멜론카카오톡 카카오
주문하기
Kubernetes 를 도입하면
뭐가 좋아지나요?
Kubernetes 를 도입하면 뭐가 좋아지나요?
1)컨테이너화된Application을수천대의서버에자동배포/실행해줍니다.
#auto-binpacking
#배포자동화
#request/limit설정필수
#pod-scale-out
#pod-scale-in
#auto-scaling
Kubernetes 를 도입하면 뭐가 좋아지나요?
2)Application이죽으면건강한다른서버에자동으로살려줍니다.
#auto-healing
#운영자숙면
#개발자숙면
Kubernetes 를 도입하면 뭐가 좋아지나요?
3)서비스중단없이새로운버전의Application으로업데이트해줍니다.
#무중단배포
#배포날의평화
#롤백도쉬워요
#Rolling-update
#canary-deploy
#blue-green-deploy
무중단 서비스 배포(카카오 기술 블로그) : http://tech.kakao.com/2018/12/24/kubernetes-deploy/
Kubernetes 를 도입하면 뭐가 좋아지나요?
4)KaaS를이용하면클러스터에서버추가/삭제도손쉽게할수있습니다.
#Kubernetes-as-a-Service
#node-scale-out
#node-scale-in
#cluster-auto-scaling
Private Cloud 에서의
Kubernetes as a Service 운영
멀티 클러스터 인증 통합, 사용자 ACL
로그인만하면권한이있는멀티클러스터에편리하게접근할수있습니다.
처음에는 Web UI 만 제공하면 될 줄 알았습니다..
멀티 클러스터 인증 통합, 사용자 ACL
$ kubectl login
LDAP ID : dennis.hong
LDAP PW :
Login success. hi! dennis.hong
$ kubectl cluster
접근 가능한 클러스터를 검색/선택 합니다.
그래서 준비 했습니다. kubectl login !
로그인만하면권한이있는멀티클러스터에편리하게접근할수있습니다.
그러나… kube-dashboard에서 봐도 yaml yaml..
“yaml 파일 텍스트 편집 작업과 스크립팅(자동화)는 터미널이 더 편해요”
많은 DevOps 분들이 터미널에서 kubectl 사용을 선호!
멀티 클러스터 인증 통합, 사용자 ACL
$ kubectl cluster chart-repo
User "dennis.hong" set.
Cluster "chart-repo-cluster" set.
Context "chart-repo-context" modified.
Switched to context "dns-dev-context
클러스터 이름을 직접 입력해도 됩니다. (scripting 용)
로그인만하면권한이있는멀티클러스터에편리하게접근할수있습니다.
#!/usr/bin/env bash
set -e
while read -r line
do
kubectl cluster "$line" > /dev/null 2>&1 # 클러스터 스위칭
kubectl set image daemonset/fluentd fluentd:v2.0.0 # 리소스 조회, 이미지 교체 등 kubectl 명령어
done < clusterlist
모든 클러스터에 현황을 파악한다거나 App을 일괄 업데이트하는 스크립트를 간단하게 짤 수 있습니다.
멀티 클러스터 인증 통합, 사용자 ACL
§ 처음에는 OpenStack Keystone 과 kubernetes 인증을 직접 통합을 했으나..
§ K8s keystone-auth 자체가 Deprecated 됨 -> Webhook Mode 인증 사용을 권장
§ OpenStack Keystone 계정 = 사내 LDAP 계정인데.. 아이디/패스워드를 .kube/config 에 평문으로 저장해야함
§ 많은 수의 API 를 처리하기에는 속도가 느림
구현은?Keystone인증을backend로하는멀티클러스터인증개발
kubectl get pod
Keystone
(LDAP 연동)
4) Keystone token,
K8s 사용자 토큰 전달 DKOSv3 (KaaS)
2) 사내 계정 확인,
토큰 발급
1) 로그인, 클러스터 접근
권한 확인
3) 클러스터별
사용자 토큰 조회
5) kubernetes API 사용
kubectl login
멀티 클러스터 인증 통합, 사용자 ACL
구현은?kubectlplugin을통한기능추가,인증서버별도개발
kubectl 이 설치된 동일 path 에 kubectl-<내명령어> 파일명을 가진 실행가능한 파일을 넣어두기만 하면 끝
*상세 설명 블로그 : https://dennis.k8s.kr/1
*공식 문서 : https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/
kubectl plugin 등록 확인
플러그인 사용자 설치는 어떻게? Private tap repo 추가하고 brew install 로 설치 할 수 있게 배포!
$ brew tap dkos/dkosctl https://${private_git_repo}/DKOS/homebrew-dkosctl
$ brew install dkos/dkosctl
자동화된 클러스터 라이프사이클
Node추가/삭제/Rebuild을통한복구self-service
OpenStack Quota 한도 내에서 개발자가 자유롭게 서버 추가 / 삭제. 일시적 단순 에러는 Node Rebuild를 통해 해결.
서버 삭제/재생성이 아니라 IP 를 유지하고 Rebuild 하는 것이 중요함! 기존 시스템들에 IP ACL 과 Domain 들이 설정되어 때문에!
1) Master / Worker Node 서버 OS Image 를 매주 build/upload하는 pipeline 자동화 : packer, Jenkins, ansible 활용
2) OS golden Image 에 Master/ worker Kubernetes 설치에 필요한 이미지와 바이너리를 미리 설치, 매주 Build (최신 OS 세팅과 보안 패치 반영)
3) 보안 패치/커널 업그레이드 등은 running 중인 서버를 직접 수정하지 않고 , OS Image 를 빌드하는 pipeline 에 패치 내용을 적용한 뒤 신규 OS image
를 빌드하고 해당 Node 를 1 대 씩 drain & rebuild 해서 node rolling update.
자동화된 클러스터 라이프사이클
ImmutableServerPattern을활용한serverupdate/securitypatch
물리 인프라 자원 통합
CustomController,CustomResource를이용해서물리인프라자원을k8s로통합
Kube-dns 를 사용하지 않고 자체 개발한 inhouse-dns-controller 를 통해 사내 물리 DNS 와 연동하여 성능과 가용성 확보
Before After
물리 인프라 자원 통합
CustomController,CustomResource를이용해서물리인프라자원을k8s로통합
K8s에서 Service 나 Ingress 를 만들면,
Inhouse DNS 에 도메인 자동 등록,
InhouseDomain 라는 Custom
Resource 생성되어 관리
물리 인프라 자원 통합
CustomController,CustomResource를이용해서물리인프라자원을k8s로통합
1) On-premise 환경에서 쿠버네티스 자체 만으로는
대규모 실 서비스를 하기에는 부족한 부분들이 있음
(Storage, LoadBalancer, DNS 등)
2) 안정성 및 성능이 검증된 데이터센터의 기존 물리
인프라 자원을 Kubernetes 와 연동하기 위해
CustomController를개발해서Custom Resource
로 관리.
3) Operator-SDK 를 사용하면 CustomController를
비교적쉽게개발할수있음.
*Operator-SDK : https://github.com/operator-framework/operator-sdk/

More Related Content

What's hot

デプロイメントパイプラインって何?
デプロイメントパイプラインって何?デプロイメントパイプラインって何?
デプロイメントパイプラインって何?ke-m kamekoopa
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Preferred Networks
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Amazon Web Services Japan
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーションMasahito Zembutsu
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみたKohei Tokunaga
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Kenjiro Kubota
 
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)NTT DATA Technology & Innovation
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengewhywaita
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけらAtsushi Nakamura
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」Masahito Zembutsu
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Henning Jacobs
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep DiveToru Makabe
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するKohei Tokunaga
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...Amazon Web Services Korea
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...Amazon Web Services Japan
 
GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理Shinya Sasaki
 

What's hot (20)

デプロイメントパイプラインって何?
デプロイメントパイプラインって何?デプロイメントパイプラインって何?
デプロイメントパイプラインって何?
 
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
Kubernetes Service Account As Multi-Cloud Identity / Cloud Native Security Co...
 
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた今話題のいろいろなコンテナランタイムを比較してみた
今話題のいろいろなコンテナランタイムを比較してみた
 
Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。Akkaとは。アクターモデル とは。
Akkaとは。アクターモデル とは。
 
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
 
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
限界性能試験を自動化するOperatorを作ってみた(Kubernetes Novice Tokyo #14 発表資料)
 
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallengeCyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
 
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら「関心の分離」と「疎結合」   ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
 
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
Optimizing Kubernetes Resource Requests/Limits for Cost-Efficiency and Latenc...
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
細かすぎて伝わらないかもしれない Azure Container Networking Deep Dive
 
OCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰するOCIランタイムの筆頭「runc」を俯瞰する
OCIランタイムの筆頭「runc」を俯瞰する
 
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
쿠키런: 킹덤 대규모 인프라 및 서버 운영 사례 공유 [데브시스터즈 - 레벨 200] - 발표자: 용찬호, R&D 엔지니어, 데브시스터즈 ...
 
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
20200422 AWS Black Belt Online Seminar Amazon Elastic Container Service (Amaz...
 
GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理GitOpsでKubernetesのManifest管理
GitOpsでKubernetesのManifest管理
 

Similar to Cloud Native Days Korea 2019 - kakao's k8s_as_a_service

[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center어형 이
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...OpenStack Korea Community
 
Cloud for Kubernetes : Session1
Cloud for Kubernetes : Session1Cloud for Kubernetes : Session1
Cloud for Kubernetes : Session1WhaTap Labs
 
EKS workshop 살펴보기
EKS workshop 살펴보기EKS workshop 살펴보기
EKS workshop 살펴보기Jinwoong Kim
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetesSangSun Park
 
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 KubernetesTommy Lee
 
Windows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsWindows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsJung Hyun Nam
 
OpenStack Horizon AWS Plugin For Hybrid Cloud
OpenStack Horizon AWS Plugin For Hybrid CloudOpenStack Horizon AWS Plugin For Hybrid Cloud
OpenStack Horizon AWS Plugin For Hybrid CloudDennis Hong
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container DayAmazon Web Services Korea
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례NAVER LABS
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptxssuserb8551e
 
User Story :: Cloudike with KT UCloud Biz
User Story :: Cloudike with KT UCloud BizUser Story :: Cloudike with KT UCloud Biz
User Story :: Cloudike with KT UCloud BizNalee Jang
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...Amazon Web Services Korea
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개Ian Choi
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기Ian Choi
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideChan Shik Lim
 

Similar to Cloud Native Days Korea 2019 - kakao's k8s_as_a_service (20)

[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
Toward kubernetes native data center
Toward kubernetes native data centerToward kubernetes native data center
Toward kubernetes native data center
 
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
[OpenInfra Days Korea 2018] K8s workshop: with containers & K8s on OpenStack ...
 
Cloud for Kubernetes : Session1
Cloud for Kubernetes : Session1Cloud for Kubernetes : Session1
Cloud for Kubernetes : Session1
 
EKS workshop 살펴보기
EKS workshop 살펴보기EKS workshop 살펴보기
EKS workshop 살펴보기
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
Spring cloud on kubernetes
Spring cloud on kubernetesSpring cloud on kubernetes
Spring cloud on kubernetes
 
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
제2회 난공불락 오픈소스 인프라 세미나 Kubernetes
 
Windows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and OperationsWindows Kubernetes Bootstrapping and Operations
Windows Kubernetes Bootstrapping and Operations
 
OpenStack Horizon AWS Plugin For Hybrid Cloud
OpenStack Horizon AWS Plugin For Hybrid CloudOpenStack Horizon AWS Plugin For Hybrid Cloud
OpenStack Horizon AWS Plugin For Hybrid Cloud
 
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
도커의 기초 - 김상필 솔루션즈 아키텍트 :: AWS Container Day
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptx
 
User Story :: Cloudike with KT UCloud Biz
User Story :: Cloudike with KT UCloud BizUser Story :: Cloudike with KT UCloud Biz
User Story :: Cloudike with KT UCloud Biz
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
쿠버네티스 오픈 소스와 클라우드 매니지드 서비스 접점 소개
 
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
[OpenStack] 공개 소프트웨어 오픈스택 입문 & 파헤치기
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 

Cloud Native Days Korea 2019 - kakao's k8s_as_a_service

  • 1. 2019년 07월 홍석용 (Dennis Hong) / 박광열 (Theodore Park) dennis.hong@kakaocorp.com / theodore.park@kakaomobility.com 카카오 T 택시 사례를 통해 살펴보는 카카오 클라우드의 Kubernetes as a Service Open Infrastructure & Cloud Native Days Korea 2019
  • 2. 발표자 소개 Works - OpenStack 기반 LG 그룹사 Public, Private Cloud 개발/운영 - OpenStack Ironic(Bare Metal) Inhouse Driver 개발 - Mesos as a Service, DKOSv2 운영 - Kubernetes as a Service, DKOSv3 개발/운영 Community Activity - 2017 OpenStack Day: 하이브리드 클라우드를 위한 OpenStack AWS Plugin (VM Migration) - 2018 OpenInfra Day: Mesos to Kubernetes, Cloud Native 서비스를 위한 여정 - Kubernetes Comics 한글화: https://goo.gl/5mTvtm 홍석용 (Dennis Hong)
  • 3. 오늘 공유할 내용은.. 1. 카카오는 Kubernetes를 어떻게 쓰고 있나요? 2. Kubernetes 를 도입하면 뭐가 좋아지나요? 3. Private Cloud 에서의 Kubernetes as a Service 운영 § 멀티 클러스터 인증 통합, 사용자 ACL : kubectl Plugin § 자동화된 클러스터 라이프사이클 : Immutable Server Pattern § 물리 인프라 자원 통합 : Custom Controller, Custom Resource Definition 4. 카카오 T 택시 Kubernetes 적용 사례 소개 (자료 별첨)
  • 5. 카카오의 Kubernetes as a Service, DKOSv3 개발자가스스로카카오프라이빗클라우드에쿠버네티스클러스터를생성해서사용합니다. #개인/조직/서비스별 #개별클러스터제공 #학습/개발/서비스용도 #프라이빗클라우드 #셀프서비스 #수백개의클러스터 #어느새오픈1주년
  • 6. 카카오의 Kubernetes as a Service 다양한실서비스시스템에 쿠버네티스를활용하고있습니다. 오늘은카카오T택시서비스적용사례에대해공유하고자합니다. 카카오 T 택시 카카오맵멜론카카오톡 카카오 주문하기
  • 8. Kubernetes 를 도입하면 뭐가 좋아지나요? 1)컨테이너화된Application을수천대의서버에자동배포/실행해줍니다. #auto-binpacking #배포자동화 #request/limit설정필수 #pod-scale-out #pod-scale-in #auto-scaling
  • 9.
  • 10. Kubernetes 를 도입하면 뭐가 좋아지나요? 2)Application이죽으면건강한다른서버에자동으로살려줍니다. #auto-healing #운영자숙면 #개발자숙면
  • 11. Kubernetes 를 도입하면 뭐가 좋아지나요? 3)서비스중단없이새로운버전의Application으로업데이트해줍니다. #무중단배포 #배포날의평화 #롤백도쉬워요 #Rolling-update #canary-deploy #blue-green-deploy 무중단 서비스 배포(카카오 기술 블로그) : http://tech.kakao.com/2018/12/24/kubernetes-deploy/
  • 12. Kubernetes 를 도입하면 뭐가 좋아지나요? 4)KaaS를이용하면클러스터에서버추가/삭제도손쉽게할수있습니다. #Kubernetes-as-a-Service #node-scale-out #node-scale-in #cluster-auto-scaling
  • 13. Private Cloud 에서의 Kubernetes as a Service 운영
  • 14. 멀티 클러스터 인증 통합, 사용자 ACL 로그인만하면권한이있는멀티클러스터에편리하게접근할수있습니다. 처음에는 Web UI 만 제공하면 될 줄 알았습니다..
  • 15. 멀티 클러스터 인증 통합, 사용자 ACL $ kubectl login LDAP ID : dennis.hong LDAP PW : Login success. hi! dennis.hong $ kubectl cluster 접근 가능한 클러스터를 검색/선택 합니다. 그래서 준비 했습니다. kubectl login ! 로그인만하면권한이있는멀티클러스터에편리하게접근할수있습니다. 그러나… kube-dashboard에서 봐도 yaml yaml.. “yaml 파일 텍스트 편집 작업과 스크립팅(자동화)는 터미널이 더 편해요” 많은 DevOps 분들이 터미널에서 kubectl 사용을 선호!
  • 16. 멀티 클러스터 인증 통합, 사용자 ACL $ kubectl cluster chart-repo User "dennis.hong" set. Cluster "chart-repo-cluster" set. Context "chart-repo-context" modified. Switched to context "dns-dev-context 클러스터 이름을 직접 입력해도 됩니다. (scripting 용) 로그인만하면권한이있는멀티클러스터에편리하게접근할수있습니다. #!/usr/bin/env bash set -e while read -r line do kubectl cluster "$line" > /dev/null 2>&1 # 클러스터 스위칭 kubectl set image daemonset/fluentd fluentd:v2.0.0 # 리소스 조회, 이미지 교체 등 kubectl 명령어 done < clusterlist 모든 클러스터에 현황을 파악한다거나 App을 일괄 업데이트하는 스크립트를 간단하게 짤 수 있습니다.
  • 17. 멀티 클러스터 인증 통합, 사용자 ACL § 처음에는 OpenStack Keystone 과 kubernetes 인증을 직접 통합을 했으나.. § K8s keystone-auth 자체가 Deprecated 됨 -> Webhook Mode 인증 사용을 권장 § OpenStack Keystone 계정 = 사내 LDAP 계정인데.. 아이디/패스워드를 .kube/config 에 평문으로 저장해야함 § 많은 수의 API 를 처리하기에는 속도가 느림 구현은?Keystone인증을backend로하는멀티클러스터인증개발 kubectl get pod Keystone (LDAP 연동) 4) Keystone token, K8s 사용자 토큰 전달 DKOSv3 (KaaS) 2) 사내 계정 확인, 토큰 발급 1) 로그인, 클러스터 접근 권한 확인 3) 클러스터별 사용자 토큰 조회 5) kubernetes API 사용 kubectl login
  • 18. 멀티 클러스터 인증 통합, 사용자 ACL 구현은?kubectlplugin을통한기능추가,인증서버별도개발 kubectl 이 설치된 동일 path 에 kubectl-<내명령어> 파일명을 가진 실행가능한 파일을 넣어두기만 하면 끝 *상세 설명 블로그 : https://dennis.k8s.kr/1 *공식 문서 : https://kubernetes.io/docs/tasks/extend-kubectl/kubectl-plugins/ kubectl plugin 등록 확인 플러그인 사용자 설치는 어떻게? Private tap repo 추가하고 brew install 로 설치 할 수 있게 배포! $ brew tap dkos/dkosctl https://${private_git_repo}/DKOS/homebrew-dkosctl $ brew install dkos/dkosctl
  • 19. 자동화된 클러스터 라이프사이클 Node추가/삭제/Rebuild을통한복구self-service OpenStack Quota 한도 내에서 개발자가 자유롭게 서버 추가 / 삭제. 일시적 단순 에러는 Node Rebuild를 통해 해결. 서버 삭제/재생성이 아니라 IP 를 유지하고 Rebuild 하는 것이 중요함! 기존 시스템들에 IP ACL 과 Domain 들이 설정되어 때문에!
  • 20. 1) Master / Worker Node 서버 OS Image 를 매주 build/upload하는 pipeline 자동화 : packer, Jenkins, ansible 활용 2) OS golden Image 에 Master/ worker Kubernetes 설치에 필요한 이미지와 바이너리를 미리 설치, 매주 Build (최신 OS 세팅과 보안 패치 반영) 3) 보안 패치/커널 업그레이드 등은 running 중인 서버를 직접 수정하지 않고 , OS Image 를 빌드하는 pipeline 에 패치 내용을 적용한 뒤 신규 OS image 를 빌드하고 해당 Node 를 1 대 씩 drain & rebuild 해서 node rolling update. 자동화된 클러스터 라이프사이클 ImmutableServerPattern을활용한serverupdate/securitypatch
  • 21. 물리 인프라 자원 통합 CustomController,CustomResource를이용해서물리인프라자원을k8s로통합 Kube-dns 를 사용하지 않고 자체 개발한 inhouse-dns-controller 를 통해 사내 물리 DNS 와 연동하여 성능과 가용성 확보 Before After
  • 22. 물리 인프라 자원 통합 CustomController,CustomResource를이용해서물리인프라자원을k8s로통합 K8s에서 Service 나 Ingress 를 만들면, Inhouse DNS 에 도메인 자동 등록, InhouseDomain 라는 Custom Resource 생성되어 관리
  • 23. 물리 인프라 자원 통합 CustomController,CustomResource를이용해서물리인프라자원을k8s로통합 1) On-premise 환경에서 쿠버네티스 자체 만으로는 대규모 실 서비스를 하기에는 부족한 부분들이 있음 (Storage, LoadBalancer, DNS 등) 2) 안정성 및 성능이 검증된 데이터센터의 기존 물리 인프라 자원을 Kubernetes 와 연동하기 위해 CustomController를개발해서Custom Resource 로 관리. 3) Operator-SDK 를 사용하면 CustomController를 비교적쉽게개발할수있음. *Operator-SDK : https://github.com/operator-framework/operator-sdk/