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/
- ログインユーザの作成
- yamlファイルに下記のように設定を記載
manifest-dashboard-user.yaml
- 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}')
- トークンを入力画面に貼り付けて、ログイン
kubectlコマンド補完設定
kubectl
コマンドの補完が効くと、コマンド実行速度が格段にあがります。
ぜひ設定しておきましょう。2
zshの場合は、下記のように設定します。
source <(kubectl completion zsh) echo "if [ $commands[kubectl] ]; then source <(kubectl completion zsh); fi" >> ~/.zshrc
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をインストールする。
環境
下記環境で設定。
pyenvインストール
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にインストールする
環境
下記環境で設定。
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 start
でTomcatを起動。
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
catalina
でcatalina
コマンドのヘルプを確認することができる。
ちなみにTomcatを停止するときはcatalina stop
とりあえず、インストールのためにすることはこれだけ。
Javaをjenvを使ってMacにインストールする
もともとRubyしかやってこなかったのに、所用でJavaの開発が必要になったので、急遽、MacにJavaをインストールしてみた。
ただ、闇雲にインストールしてJavaのバージョンが違うとか言われたら面倒なので、
JavaにもRubyのバージョンパッケージ管理ツールrbenv的なのがないかと思ったら、jenvというのがあるみたいなので使ってみた。
環境
下記環境で開発環境を設定した。
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のこと全然わからないのでこれから色々勉強しないといけないんですが...