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
640
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
380
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
日本語に強いオープンな大規模言語モデル「LLM-jp」
odashi
3
670
TinyGoでオブザーバビリティ?OpenTelemetryはTinyGoで使えるのか / Is OpenTelemetry available in TinyGo environment?
ymotongpoo
2
140
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
180
ゲームのリアルタイム通信から見た QUIC と MoQ
segadevtech
0
110
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.5k
子育てエンジニアの可処分時間が減っても成長を諦めない戦い方
sudoakiy
6
4.5k
無理せず続ける、子育てエンジニアの学び
codmoninc
PRO
0
710
パッチ更新でterraform initが落ちた日
grimoh
1
120
Datadog の学び方 - あるいは、オブザーバビリティを学ぶとは何か
mananyuki
1
560
Kiro Crewをはじめよう
kizawa2020
1
150
Classmethod Company Deck
satoshi7
0
130
事業成長とデータ活用を止めないためのマネジメントへ挑戦
hiracky16
0
320
Featured
See All Featured
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.3k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
The agentic SEO stack - context over prompts
schlessera
0
970
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3.1k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
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