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
660
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
190
Kubernetes入門#5 The pod resource and QoS / Kubernetes Getting Started#5
hirose39
1
390
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
320
Other Decks in Technology
See All in Technology
ポケモン対戦を自動で記録して振り返ろう
fufufukakaka
0
410
Microsoft のサポート ライフサイクルを理解する
murachiakira
PRO
0
220
契約で守るコンパウンドプロダクトのデザインシステム
yug1224
1
1.6k
あなたのDartコードは丸見えかもしれない ~reFlutterで暴くFlutterアプリの中身と多層防御~
zozotech
PRO
0
550
素人でもできた!AIを使った短編小説創作入門
delhi09
PRO
0
150
Claude for Google Workspaces ポン出し/claude-for-google-workspace-slide-conversion
emiki
0
13k
外国人エンジニアがVueプロトタイプで仕様を合わせている話 / Vue Fes Japan 2026 LT
eluwing
0
280
LLMの知識とAIエージェント
happysamurai294
0
110
「作れる」と「リリースできる」の間にあったもの── PdMを外して見えた、PdMがやるべき仕事/Buildable ≠ Shippable: What Removing the PM Taught Me About the PM’s Job
yappli_developers
0
340
AIコーディングエージェント開発_全体像
happysamurai294
0
110
cdk deployとcdkd deploy、実際にデプロイして5倍速近くの差を実測した
yama3133
1
110
AI時代のエンジニアの情報発信〜個人の発信を組織の力に変える〜
ryo_kawamata
0
250
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
290
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
860
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
580
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.8k
Crafting Experiences
bethany
1
390
Marketing to machines
jonoalderson
1
5.9k
Designing for Timeless Needs
cassininazir
1
530
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
860
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
530
Large-scale JavaScript Application Architecture
addyosmani
516
110k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
900
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