初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト編
背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。
その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。
引用や参考と今回の自分の勉強用の書籍の紹介
技術評論社『Kubernetes実践入門』のサンプルコード
Kubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方
実際の学びについて
書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。
この章の勉強は本当に書籍の写経が主になるかもしれません・・・
勉強開始
-
マニュフェスト作成するところまで
-
マニュフェストに環境変数を設定するところまで
Deployment の YAML ファイルを書く
- 最初からサラで記述するのは大変
- 大変だから一旦
dry-run
でひな形を作成していく形で進める。
- だんだん覚えたら、サラで書くように自分に言い聞かせる
早速 Deployment のマニュフェストファイルの雛形作成してみます
Deploymentマニュフェストの雛形を作成
$ kubectl create deployment mattermost --image k8xpracticalguide/mattermost:4.10.2 -o yaml --dry-run > mattermost-deploy.yaml
$ vi mattermost-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mattermost
name: mattermost
spec:
replicas: 1
selector:
matchLabels:
app: mattermost
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mattermost
spec:
containers:
- image: k8xpracticalguide/mattermost:4.10.2
name: mattermost
resources: {}
status: {}
MySQL 用の雛形作成
DBのDeploymentマニュフェストの雛形を作成
$ kubectl create deployment db --image=k8spracticalguide/mysql:5.7.22 -o yaml --dry-run > db-deploy.yaml
$ vi db-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: db
name: db
spec:
replicas: 1
selector:
matchLabels:
app: db
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: db
spec:
containers:
- image: k8spracticalguide/mysql:5.7.22
name: mysql
resources: {}
status: {}
アプリケーションコードやコンテナイメージから設定を分離する
- デプロイする環境や構成によって変わりやすい値はコンテナイメージの中に埋め込むのはよろしくない
- 値が変更されたとしたらビルドし直す必要がある
- よってポータビリティが低下してしまう
Deployment マニュフェストの Pod テンプレートに環境変数を追加する
mattermost-deploy.yamlの環境変数設定(抜粋)
spec:
containers:
- image: k8xpracticalguide/mattermost:4.10.2
name: mattermost
env: #追加
- name: MM_USERNAME #追加
value: myuser #追加
- name: MM_PASSWORD #追加
value: mypassword #追加
- name: DB_NAME #追加
value: mattermost #追加
- name: DB_HOST #追加
value: "" #追加
db-deploy.yamlの環境変数設定(抜粋)
spec:
containers:
- image: k8spracticalguide/mysql:5.7.22
name: mysql
env: #追加
- name: MYSQL_ROOT_PASSWORD #追加
value: rootpassword #追加
- name: MYSQL_USER #追加
value: myuser #追加
- name: MYSQL_PASSWORD #追加
value: mypassword #追加
- name: MYSQL_DATABASE #追加
value: mattermost #追加
次は 3.4.2 章をやっていきます。
- ConfigMap を使って今回設定した設定値を管理する方法を学びます
最後に
マニュフェスト作成するところまで
マニュフェストに環境変数を設定するところまで
dry-run
でひな形を作成していく形で進める。$ kubectl create deployment mattermost --image k8xpracticalguide/mattermost:4.10.2 -o yaml --dry-run > mattermost-deploy.yaml
$ vi mattermost-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: mattermost
name: mattermost
spec:
replicas: 1
selector:
matchLabels:
app: mattermost
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: mattermost
spec:
containers:
- image: k8xpracticalguide/mattermost:4.10.2
name: mattermost
resources: {}
status: {}
$ kubectl create deployment db --image=k8spracticalguide/mysql:5.7.22 -o yaml --dry-run > db-deploy.yaml
$ vi db-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
creationTimestamp: null
labels:
app: db
name: db
spec:
replicas: 1
selector:
matchLabels:
app: db
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: db
spec:
containers:
- image: k8spracticalguide/mysql:5.7.22
name: mysql
resources: {}
status: {}
spec:
containers:
- image: k8xpracticalguide/mattermost:4.10.2
name: mattermost
env: #追加
- name: MM_USERNAME #追加
value: myuser #追加
- name: MM_PASSWORD #追加
value: mypassword #追加
- name: DB_NAME #追加
value: mattermost #追加
- name: DB_HOST #追加
value: "" #追加
spec:
containers:
- image: k8spracticalguide/mysql:5.7.22
name: mysql
env: #追加
- name: MYSQL_ROOT_PASSWORD #追加
value: rootpassword #追加
- name: MYSQL_USER #追加
value: myuser #追加
- name: MYSQL_PASSWORD #追加
value: mypassword #追加
- name: MYSQL_DATABASE #追加
value: mattermost #追加
設定値を今回は YAML マニュフェストで設定しましたが環境によって値が変わる場合にはどうしてもファイルを修正したりと色々あると思う。
だからこそ次の章の ConfigMap を使って値を管理する方法を学ぶんだなぁ〜と思うと次の章のイメージも付き学びにつながるのではと思いました。
Author And Source
この問題について(初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト編), 我々は、より多くの情報をここで見つけました https://qiita.com/nodokaodayaka/items/8d212a5f1eeb2685f51c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .