Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Kubernetes入門#3 About ConfigMap and Secret / Kub...
Search
hi-rose
March 22, 2019
Technology
630
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Kubernetes入門#3 About ConfigMap and Secret / Kubernetes Getting Started#3
hi-rose
March 22, 2019
More Decks by hi-rose
See All by hi-rose
20231118_過去の叡智から学ぶ効率的なアウトプット術
hirose39
0
180
Kubernetes入門#5 The pod resource and QoS / Kubernetes Getting Started#5
hirose39
1
370
Kubernetes入門#4 About Kubernetes Uses With GKE & EKS
hirose39
1
370
Kubernetes入門#2 CronJob / Kubernetes Getting Started#2 CronJob
hirose39
1
600
Kubernetes入門#1 運用例の紹介 / Kubernetes Getting Started#1 Case Introduction for k8ssa
hirose39
0
310
Other Decks in Technology
See All in Technology
ソフトウェアDNAとクラウドエージェントのススメ
cloudace
0
110
omasushiというライブラリを作った
polidog
PRO
0
230
LTのテーマ どうきめてる?〜5つの型と私のやり方〜
yama3133
1
110
Screen Lens - 今見てる画面を翻訳する
komagata
0
310
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
220
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
8
930
Railsのように考える: See through the Master
snoozer05
PRO
3
870
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
1.9k
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
8
4.1k
Omarchy Quattro の日本語設定周り
simosako
2
180
アプリログインとWeb認証基盤をつなぐ ASWebAuthenticationSession 作法
shimastripe
1
320
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
12k
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
520
The agentic SEO stack - context over prompts
schlessera
0
940
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
330
Darren the Foodie - Storyboard
khoart
PRO
4
3.9k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
2
280
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
46k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
280
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.2k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Between Models and Reality
mayunak
4
460
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Transcript
Kubernetes Sapporo for Beginners Kubernetes 入門 #3 ~ ハンズオン:設定をConfigMap/Secretとして登録しよう~
Kubernetes Sapporo for Beginners 自己紹介 廣瀬 亮輔(Ryosuke Hirose)/@hi-rose • 旭川高専卒業後、札幌で今の会社に就職してシステム開発 ◦
言語経験:C#、Java、delphiなど ◦ ミドルウェア経験:SQLServer、Oracle、Apache、Tomcatなど • 2017年4月からアーキテクト部署となりクラウドシステムのバックエンド系基盤機能開発に ◦ Kubernetesもそのころから利用 ▪ 普段GCPで使用しているため、 GCP実装ベースでの理解が中心となります ◦ データマイグレーション系サービスのプロジェクトリーダー 2
Kubernetes Sapporo for Beginners 事前準備 注意事項! コマンドは hands-onリポジトリをcloneした場所をカレントディレクトリとして記載しています。 3
Kubernetes Sapporo for Beginners 今日のゴール • ConfigMap/Secretがどんなものかわかるようになる • ConfigMap/Secretを動かして動作を理解する 4
Kubernetes Sapporo for Beginners ConfigMap/Secretについて ConfigMapとは Kubernetes上で設定情報を保持することを目的とするリソースとなります。 Key-Value形式やファイル形式で Kubernetesに登録することが可能です。 Secretとは
基本的な動作はConfigMapと同様ですが、接続情報や証明書ファイルのように、機密情報を取り扱う際に利 用します。 Kubernetes内部の動作として、kubectlを使った時に値が見えにくくなっていたり、 Podへの情報の受け渡し方 法がSSL/TLSを用いて転送されたりと、扱いが変わります。 ※今回はスキーマレスの Opaque Type(Generic)のみを取り扱います。 ConfigMap/Secret共通 1つの定義につき1MBまでという制限があります。 5
Kubernetes Sapporo for Beginners ConfigMap/Secretを使用する理由 ConfigMapやSecretを使用せずにコンテナに対して設定を記述する場合、 1. プログラム内にハードコーディング/設定ファイルとして保持する 2. Dockerビルド時に、設定ファイルや起動スクリプトとしてコンテナイメージに埋め込む
3. Deployment等のKubernetesワークロードのマニフェストファイル内に記述する といった手段が考えられますが、 1. 設定毎にプログラム管理が必要になる 2. 設定毎にコンテナイメージの作成が必要となる 3. 設定の違いによりマニフェストファイルの管理が必要となり煩雑化する といった問題が発生しますし、機密情報を扱うことには適していません。 そのため、環境毎・ワークロード毎に可変となる情報については ConfigMap/Secretで管理すべきと言えま す。 6
Kubernetes Sapporo for Beginners 今回のハンズオン構成 Kubernetesに対して登録したConfigMap/Secretをコンテナ内部の様子を見て確認していきます。 Pod内のコンテナへ情報を受け渡す方法として、環境変数として受け渡すパターンと、ファイルを Volumeとし てマウントするパターンがありますが、その動作の違いについても見ていきます。 7
ConfigMap Secret Kubernetes Master kubectl で反映 Kubernetes Node kubectlで デプロイ Pod 我々 Kubectl exec … echo! ls! Cat! rm! touch!
Kubernetes Sapporo for Beginners Let's ハンズオン1 STEP1.kubectl createコマンドでConfigMapおよび、SecretをKey-Value形式で登録します。 8 $
kubectl create configmap --save-config handson-configmap --from-literal=environment=develop --from-literal=domain=develop.example.jp configmap “handson-configmap” created $ kubectl create secret generic --save-config handson-secret --from-literal=mysql.host=127.0.0.1 --from-literal=mysql.password=p@ssword secret “handson-secret” created 以下の情報をConfigMap指定 environment=develop domain=develop.example.jp 以下の情報をSecret指定 mysql.host=127.0.0.1 mysql.password=p@ssword
Kubernetes Sapporo for Beginners Let's ハンズオン2 STEP2.登録内容を確認します。 9 $ kubectl
describe configmap/handson-configmap Name: handson-configmap Namespace: default Labels: <none> Annotations: (略) Data ==== environment: ---- develop domain: ---- develop.example.jp Events: <none> $ kubectl describe secret/handson-secret Name: handson-secret Namespace: default Labels: <none> Annotations: Type: Opaque Data ==== mysql.host: 9 bytes mysql.password: 8 bytes Secretは内容が 出ない
Kubernetes Sapporo for Beginners Let's ハンズオン3 STEP3.マニフェストファイルから登録します。( 登録内容) 10 $
kubectl apply -f ./Step4-ConfigMap-Secret/secret/handson-secret-file.yaml secret handson-secret-file created STEP4.登録内容を確認します。 $ kubectl get secrets -o json handson-secret-file 略
Kubernetes Sapporo for Beginners Let's ハンズオン4 STEP5.Podをデプロイします。( デプロイ定義) 11 $
kubectl apply -f ./Step4-ConfigMap-Secret/deployment/deployment-alpine.yaml Deployment.apps “alpine” created STEP6.POD名を確認し、EnvFromとして設定した環境変数を確認します。 $ kubectl get pod $ kubectl exec -it 【確認したPOD名】 -- env ~略~ environment=develop domain=develop.example.jp mysql.host=127.0.0.1 mysql.password=p@ssword ~略~ EnvFromに設定した環 境変数がセットされて いる。
Kubernetes Sapporo for Beginners Let's ハンズオン5 STEP7.VolumeマウントしたSecretファイルを確認する。 12 $ kubectl
exec -it 【確認したPOD名】 -- ls /config Base-path-name secret-file.yaml $ kubectl exec -it 【確認したPOD名】 -- cat /config/secret-file.yaml Username: sapporo Password: pass Base64が復号化された状態でマウントされてい る。
Kubernetes Sapporo for Beginners Let's ハンズオン6 STEP8.Volumeマウントされた場所が読み取り専用であることを確認する。 13 $ kubectl
exec -it 【確認したPOD名】 -- rm -rf /config/secret-file.yaml Rm: can’t remove ‘/config/secret-file.yaml’: Read-only file system Command terminated with exit code 1 ConfigMapやSecretでマウントされた場所は読 み取り専用となる。
Kubernetes Sapporo for Beginners Let's ハンズオン7 STEP9.Volumeマウントしているファイルを更新して、 POD内のファイルが更新されることを確認する。( 更新内 容)
14 $ kubectl apply -f ./Step4-ConfigMap-Secret/secret/handson-secret-file-modify.yaml Deployment.apps “alpine” configured $ kubectl exec -it 【確認したPOD名】 -- cat /config/secret-file.yaml Username: sapporo Password: modify 一定期間ごとの更新タイミング(デフォルト 60秒)が過ぎた後にファイルが更新されてい ることがわかる。 環境変数の方は起動時に指定され、 ConfigMap/Secretを更新しても途中更新され ないため注意。
Kubernetes Sapporo for Beginners 後片付け STEP10.以下を実行して作成したリソースを削除する 15 $ kubectl delete
deployment alpine $ kubectl delete configmap handson-configmap $ kubectl delete secret handson-secret handson-secret-file
Kubernetes Sapporo for Beginners 補足:Secretのマニフェストファイル管理について Secretをマニフェストファイルとして管理し、 Git等に登録する場合、デフォルトでは平文 (Base64)での保存とな り、リポジトリに権限がある 管理上問題がある場合、マニフェストファイルを暗号化するための
kubesecというツールを使うことで値部分を 暗号化してマニフェストファイルを管理することができます。 16 Kind: Secret : Data: Id: dXNlcg== Pass: cGFzcw== Kind: Secret : Data: Id: AAAbcC12… Pass: XXyz99… マニフェスト元ファ イル kubesecで暗号 化したファイル この状態で Git管理 Kind: Secret : Data: Id: dXNlcg== Pass: cGFzcw== : マニフェスト元ファ イル Gitから取得後、 Kubernetesに applyする際に kubesecで復号化
Kubernetes Sapporo for Beginners 質疑応答 お聞きいただきありがとうございました。 何でも気軽にご質問くださいませ! 17