背景
個人的にインフラの知識以上にこれからのアプリケーションが動く環境を作ってデプロイしたりしてこれからの知識を身に着けたい。そしてより一層、自分の知識のアップデートをしたいと思いました。
その中でこの本に出会い、これから少しずつやったことを残し、未来の自分への手紙としてもあり、見つめ直せればと思いました。
引用や参考と今回の自分の勉強用の書籍の紹介
技術評論社『Kubernetes実践入門』のサンプルコード
Kubernetes実践入門 プロダクションレディなコンテナ&アプリケーションの作り方
実際の学びについて
書籍を読みながら、章ごとに少しずつ進めていきたいと思います。
GitHub のソースコードも使いながら学んで行きたいと思います。
この章の勉強は本当に書籍の写経が主になるかもしれません・・・
勉強開始
リポジトリ
https://github.com/kubernetes-practical-guide/examples/tree/master/ch7.3.1/manifests/mattermost
コンテナ内でプロセスを実行するユーザを設定する
- クラスタそのもののセキュリティのリスクとアプリケーション自体のセキュリティのリスクがある
- SecurityContext は Pod 全体、コンテナごとに権限を設定できる機能である
- その中で、今回は「コンテナ内でプロセスを実行するユーザを設定」する機能を使ってみる
spec:
+ securityContext:
+ runAsUser: 1000
+ fsGroup: 1000
containers:
- - image: k8spracticalguide/mattermost:4.10.2
+ - image: k8spracticalguide/mattermost:4.10.2-procps
name: mattermost
+ securityContext:
+ allowPrivilegeEscalation: false
env:
USER が 1000 で実行されていることを確認できます
$ kubectl apply -f mattermost-deploy.yaml
deployment.apps/mattermost configured
$ kubectl exec mattermost-6fcff795d6-kswk6 ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
1000 1 0.0 0.0 4292 744 ? Ss 08:59 0:00 /bin/sh -c /mm/mm_entrypoint.sh
1000 6 0.8 1.1 503792 45268 ? Sl 08:59 0:00 ./bin/platform --config=config/config.json
1000 18 1.0 0.0 36640 2664 ? Rs 09:00 0:00 ps aux
一般ユーザで動作するようにコンテナイメージを変更する
- コンテナイメージを編国して、一般ユーザで動作するようにします
WORKDIR /mm
COPY --from=downloader /mattermost /mm_entrypoint.sh ./
RUN apt-get update && apt-get install -y procps
-RUN chmod +x mm_entrypoint.sh
+RUN chmod +x mm_entrypoint.sh \
+ && groupadd -g 2000 mattermost \
+ && useradd -u 1000 -g mattermost mattermost \
+ && chown -R mattermost:mattermost ./
+USER mattermost
ENTRYPOINT /mm/mm_entrypoint.sh
spec:
- securityContext:
- runAsUser: 1000
- fsGroup: 1000
containers:
- - image: k8spracticalguide/mattermost:4.10.2-procps
+ - image: k8spracticalguide/mattermost:4.10.2-non-root
name: mattermost
securityContext:
allowPrivilegeEscalation: false
USER が mattermost で実行されていることを確認できます
$ kubectl apply -f mattermost-deploy.yaml
deployment.apps/mattermost configured
$ kubectl exec mattermost-5545c76765-hmw7t ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
matterm+ 1 0.0 0.0 4292 784 ? Ss 09:12 0:00 /bin/sh -c /mm/mm_entrypoint.sh
matterm+ 6 1.4 1.3 443476 52596 ? Sl 09:12 0:00 ./bin/platform --config=config/config.json
matterm+ 28 0.0 0.0 36640 2788 ? Rs 09:13 0:00 ps aux
次は 7.4 章をやっていきます。
**「ネットワークのセキュリティを強化する」**です。
最後に
セキュリティは大切なので、書籍を読みながら今回は写経ですが読み込んで本質を考えていきたいと思います。
この書籍に出会い、自分自身で気になることを改めて考えるきっかけをもらえました。
個人的に開発の学びなおしとして「アルゴリズムの再勉強」「React」を地道に別途まなんでおります。
アイディアがないのでなかなか学習のみすが・・・
React のDoc は一読した中でSOLID 等のエッセンスがぐっと凝縮されている感じがしました。
今回のマニュフェストについてもそういうエッセンスを入れながら作成できるようになっていきたいと思います。
今までの投稿
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Pod編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)NameSpace 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Label 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)ReplicaSet 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Deployment 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Service 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)ConfigMap 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Secret 編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)操作編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート2
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート3(Label操作)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)体感編パート3(OwnerReference 操作)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)マニュフェスト(ConfigMap)編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編 パート2
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編 パート3
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)通信編 パート4
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)公開編パート1(NodePort)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)公開編パート2(LoadBalancer)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)公開編パート3(Ingress)
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)外部ストレージ編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)外部ストレージ編パート2
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)StatefulSet編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)StatefulSet編 パート2
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)StatefulSet編 パート3
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)スケール編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Mattermost接続編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)Job編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)安定編
- 初心者のKubernetes入門(書籍 Kubernetes 実践入門の写経から学ぶ)安定編パート2