takmnagayaのブログ

メモ、書きたくなったことなど思うがままに残す

kubernetes 準備編

kubernetesを学び始める前にやっておきたいことをメモしておきます。

kubernetesの書籍の準備

基本的にはkubernetesの公式ドキュメントを読めば全て理解できるはずです。しかし自分は英語が弱いので、日本語の書籍をあらかじめ読んでおいたほうが理解が早いと思います。

僕はとりあえず「Docker/Kubernetes 実践コンテナ開発入門」を購入し、kubernetesの章を読んで手を動かすことで、かなり理解が深まりました。

https://www.amazon.co.jp/dp/B07GP1Q3VT/www.amazon.co.jp

ダッシュボードの準備

書籍または公式のドキュメントを読む準備ができたら、kubernetesダッシュボードを用意し、kubernetesのリソースを可視化すると良いと思います。

手順

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml

:warning: v1.10.1はバージョンに応じて変わってくるので、インストールする際は公式ドキュメントを参照してください。

  • ダッシュボードにアクセスできるようにする
kubectl proxy
open http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/

f:id:takmnagaya:20190101151119p:plain
Kubernetesダッシュボード ログイン画面

ログインするためのトークンを取得する必要がある1

  • ログインユーザの作成
    • yamlファイルに下記のように設定を記載manifest-dashboard-user.yaml
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin-user
  namespace: kube-system
kubectl apply -f manifest-dashboard-user.yaml
kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep admin-user | awk '{print $1}')

f:id:takmnagaya:20190101151438j:plain
トークンが出力される

  • トークンを入力画面に貼り付けて、ログイン

kubectlコマンド補完設定

kubectlコマンドの補完が効くと、コマンド実行速度が格段にあがります。 ぜひ設定しておきましょう。2

zshの場合は、下記のように設定します。

source <(kubectl completion zsh) 
echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc

f:id:takmnagaya:20190101154145p:plain
kubectlコマンド補完が効きます

2018年のKPT

2018年を振り返り、来たる2019年をより良いものにするためにKPTを残しておきます。 雑です。

Keep

AWSの知識を深めることができました

2018年の頭からAWSでのインフラ構築の仕事を割り当てられました。当初は未熟だった自分もAWSのドキュメントを深く読み、知識を身につけることで、最適な構成を提案するなど、期待された役割以上のことを達成できたと思います。

また、AWS SummitやAWS Innovate、AWS DevDay、AWS Loftセミナーにも積極的に参加し、知識を取り入れることに貪欲になりました。

さらにAWS認定のソリューションアーキテクトアソシエイト、デベロッパーアソシエイトにも合格し、客観的にもAWSのプロフェッショナル(?)であることが示せました。

serverless frameworkでサーバレスアプリケーションに親しむことができました

Lambdaに興味ありつつ、なんかパッケージ化とかデプロイとかわかんねえなと思っていたところ、ちょうど2018年の元日にserverless frameworkについての記事を見つけ、勉強するきっかけができました。 設定なども全てコード化でき、このOSSスゲーなって心の底から思いました。

社内でもserverless frameworkの布教を進め、本番環境のワークロードをserverless frameworkで運用することができました。

terraformでAWSリソースを作成し、管理を効率化できました

terraformも2018年に始めて触れました。それまでAWSコンソールやCLIでちまちまやってましたが、terraformによって効率的にリソースを作成することができ、管理が容易になりました。

最近はAWSのリソースはサーバレス関連のリソースを除いて、ほとんどterraformで作成しています。

エンジニアとして、通常業務以外のところでも多角的に活動できました

エンジニアとしてプログラムを書くだけでなく、会社の技術ブログの編集部のメンバーになってブログを書いたり、会社の採用イベントに参加してきたり、通常業務以外のところでも活躍することができました。 社内のLT会で初めて登壇しました。

Problem

AWS認定SysOpsアドミニストレータ合格できませんでした

2回も受けたのに落ちてしまいました。。

OSSへの貢献がまだ

serverless framework、terraformなど、貢献したいOSSはたくさんあるのですが、未だに参加できておらず。

LT会などで登壇できていません

社外での登壇で、情報を発信できませんでした。

kubernetesを深く理解できませんでした

書籍も購入したのですが、年内ではkubernetesをよく触り、利点、欠点を理解することができませんでした。

ユーザーコミュニティへの積極的な参加

勉強会などは参加するのですが、懇親会など、人との関わりに積極的になれませんでした。

Try

AWS認定ソリューションアーキテクトプロフェッショナルに合格します

今年合格できなかった、AWS認定SysOpsアドミニストレータに加え、ソリューションアーキテクトプロフェッショナルに合格し、プロフェッショナルとして、さらなる高みを目指します

OSSに5つ以上プルリク出します

OSSに積極的に貢献します。serverless frameworkとterraformに貢献するのが目標。OSSへの貢献からOSSユーザーコミュニティにも参加できたらと思います。

外部の勉強会での登壇を2つ以上経験する

AWSの知見もためってきたので、JAWS UGで登壇するのが目標。これを契機にユーザーコミュニティにも参加できたらと思います。

kubernetesを本番環境で運用できるレベルの知識を身につけます

ちょうど会社でもkubernetesの本番環境運用を検討しているので、この機会を逃さず、知識を身につけていきます。

Pythonをpyenvを使ってMacにインストールする

Mac内で、Pythonのバージョンを管理できるようにしておくと、バージョンの違いを気にせず作業できるため、pyenv(GitHub - yyuu/pyenv: Simple Python version management )を使ってPythonをインストールする。

環境

下記環境で設定。

  • MacOS Sierra バージョン10.12.2
  • homebrewインストール済み
  • シェル zsh

pyenvインストール

参考 https://github.com/yyuu/pyenv#homebrew-on-mac-os-x

brew install pyenv
echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.zshrc
echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(pyenv init -)"' >> ~/.zshrc

Pythonインストール

pyenv install --list # インストール可能なPythonのバージョンが出力される
pyenv install 3.6.0 # 最新のバージョンを指定
pyenv global 3.6.0 # MacのPythonのバージョンを3.6.0に指定
pyenv rehash
python --version # Pythonのバージョンを確認
 Python 3.6.0

pyenvがインストールされたので、別のPythonのバージョンをインストールして、 バージョンを切り替えることができるようになる。

pyenv install 3.5.2
pyenv versions # 使用可能なPythonのバージョンを確認
  system
  3.5.2
* 3.6.0 (set by ~/.pyenv/version)
pyenv global 3.5.2
pyenv versions # 使用可能なPythonのバージョンを確認
  system
* 3.5.2 (set by ~/.pyenv/version)
  3.6.0
python --version # Pythonのバージョンを確認
 Python 3.5.2

TomcatをMacにインストールする

TomcatMacにインストールする際のメモ。

環境

下記環境で設定。

  • MacOS Sierra バージョン10.12.2
  • homebrewインストール済み
  • Javaインストール済み

Javaインストール takmnagaya.hatenablog.com

Tomcatインストール

homebrewでインストールする。brew searchコマンドでインストール可能なtomcatパッケージを確認する。

brew search tomcat
tomcat                    tomcat-native             tomcat@6                  tomcat@7                 tomcat@8.0 # インストール可能なパッケージ

今回はTomcatのバージョン7系をインストールする必要があったのでtomcat@7を選択。

brew install tomcat@7

インストールしたらcatalina startTomcatを起動。

catalina start
# http://localhost:8080/ にアクセスしてApache Tomcatのページが表示されれば、Tomcatが正しくインストールされたことが確認できる。

また、catalina versionコマンドで、Tomcatのバージョンが確認できる。

catalina version
Using CATALINA_BASE:   /usr/local/Cellar/tomcat@7/7.0.73/libexec
Using CATALINA_HOME:   /usr/local/Cellar/tomcat@7/7.0.73/libexec
Using CATALINA_TMPDIR: /usr/local/Cellar/tomcat@7/7.0.73/libexec/temp
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
Using CLASSPATH:       /usr/local/Cellar/tomcat@7/7.0.73/libexec/bin/bootstrap.jar:/usr/local/Cellar/tomcat@7/7.0.73/libexec/bin/tomcat-juli.jar
Server version: Apache Tomcat/7.0.73
Server built:   Nov 7 2016 21:27:23 UTC
Server number:  7.0.73.0
OS Name:        Mac OS X
OS Version:     10.12.2
Architecture:   x86_64
JVM Version:    1.7.0_80-b15
JVM Vendor:     Oracle Corporation

catalinacatalinaコマンドのヘルプを確認することができる。 ちなみにTomcatを停止するときはcatalina stop

とりあえず、インストールのためにすることはこれだけ。

Javaをjenvを使ってMacにインストールする

もともとRubyしかやってこなかったのに、所用でJavaの開発が必要になったので、急遽、MacJavaをインストールしてみた。
ただ、闇雲にインストールしてJavaのバージョンが違うとか言われたら面倒なので、
JavaにもRubyのバージョンパッケージ管理ツールrbenv的なのがないかと思ったら、jenvというのがあるみたいなので使ってみた。

環境

下記環境で開発環境を設定した。

  • MacOS Sierra バージョン10.12.2
  • homebrewインストール済み

Javaインストール

Javaバージョン管理ツールのインストール

今回はJava1.7をインストールする必要があったが、別のバージョンをインストールするときに既存のコードに影響を与えないようにJavaバージョン管理ツール、jenvを先にインストールする。

brew install jenv

使用しているシェルがZshの場合

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(jenv init -)"' >> ~/.zshrc

使用しているシェルがBashの場合

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(jenv init -)"' >> ~/.bash_profile

これでjenvの設定は完了。jenv versionsコマンドでjavaのバージョン情報が表示される。

jenv versions
# Javaはインストールしていないので、javaのバージョン情報は表示されない
* system (set by ~/.jenv/version)

Java1.7をインストール

brewでインストールできるjavaのパッケージがないか検索する。

brew search java
# いくつかjavaという名前の含まれるパッケージが表示される。
...
Caskroom/cask/java
Caskroom/versions/java6
Caskroom/versions/java7 # これが目的のパッケージ

Caskroom/versions/java7 が目的のパッケージなので、下記コマンドでインストールする。

brew cask install java7

再度jenv versionsコマンドで確認。

jenv versions
* system (set by ~/.jenv/version)
  1.7
  1.7.0.80
  oracle64-1.7.0.80

Java1.7.0.80を基本的に使用していくので、Mac全体で使用するJavaのバージョンを1.7.0.80に指定

jenv global 1.7.0.80
jenv versions       
  system
  1.7
* 1.7.0.80 (set by /Users/nagayatakumi/.jenv/version) # 1.7.0.80がデフォルトのバージョンになっている
  oracle64-1.7.0.80

通常のJavaのバージョン確認コマンドjava -versionで確認しても正しく1.7.0_80が指定されている。

java -version
java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)

この後、別のバージョンのJavaをインストールしても、Mac全体で使用するJavaのバージョンは変わらない。

brew cask install java 
jenv versons
  system
  1.7
* 1.7.0.80 (set by /Users/nagayatakumi/.jenv/version)
  1.8 # 1.8が新しくインストールされた。
  1.8.0.112
  oracle64-1.7.0.80
  oracle64-1.8.0.112

これでバージョンの違いとか気にせず、Javaの開発ができる! まあ、Javaのこと全然わからないのでこれから色々勉強しないといけないんですが...