サイドバーのmoniteringをクリック これでmoniteringに関する情報だけを表示する
-
dockerの中に入る
docker run -it -v $(pwd):/app ruby:2.3 sh
-
gemのインストール
gem install travis --no-document
rubygems/heroku-buildpack-bundler2#1 -
travis
コマンドtravis
-
travis CIにログインする
dockerの中に入った状態で、travis login
username, password, 2段階認証の情報を入力する。 -
サービスアカウントを作成する
GCP「IAMと管理 → サービスアカウント」でサービスアカウントを作成する。
キーを作成したら、自動的にjsonファイルがダウンロオードされる。 -
暗号化
GCPからダウンロードしたjsonファイルを暗号化する。
travis encrypt-file service-account.json -r sanoyo/kubernetes-sample-app
このコマンドにより、 service-account.json.enc ファイルが作成される。 また、opensslのコマンドも返って来るので、それは.travis.yamlに書き込んでおく。 -
travis CIのファイルにgcpの設定を書き込む
-
travis CIに環境変数を設定する
書くリポジトリの設定ページで環境変数を設定する -
travisファイル実装
- helmインストール
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-role --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
helm init --service-account tiller --upgrade
- ingress-nginxの設定
helm install stable/nginx-ingress --name my-nginx --set rbac.create=true
# エラー内容
「Error: Get https://35.232.72.126/api/v1/namespaces/kube-system/pods?labelSelector=app%3Dhelm%2Cname%3Dtiller: dial tcp 35.232.72.126:443: i/o timeout」
# 対応方法
helm resetで再度試す
これが完了したら、Kubernetesのワークロードにingress-controllerが作成されている。
https://helm.sh/docs/using_helm/#from-script https://helm.sh/docs/using_helm/#quickstart-guide
L7ロードバランシングを提供するリソースです。
- Cluster IP
- Exteernal IP
- Node P0tt
- Load Balancer
- レイヤー7で負荷分散が可能です。 (URLやHTTPヘッダーで負荷分散が可能)
- 10Mbps〜2Gbpsの帯域から選択可能です。
- サーバー上に構築いただくソフトウエアロードバランサーとなります。
Github
https://github.com/kubernetes/ingress-nginx
チュートリアル
https://kubernetes.github.io/ingress-nginx/deploy/#minikube
-
apply
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml
-
ingressをminikubeで使えるようにする
minikube addons enable ingress
- Kubernetes
- Docker
- TravisCI
- GCP
例えば下記のDeploymentを作成したいとします。 Deploymentで3つのpodを作成します。
その場合の実装は下記のようになります。 毎回下記のように書くのが面倒なので、VSCodeの補間機能使っています。
apiVersion: apps/v1 kind: Deployment metadata: name: client-deployment spec: replicas: 3 selector: # Labelとマッチ matchLabels: component: web # Podのtemplate template: metadata: # ラベルを指定 labels: component: web spec: containers: - name: client image: docker-hubのimage ports: - containerPort: 3000このtemplateをもとにPodの調整・管理を行います。
Kubernetes道場 8日目 - ReplicaSet / Deploymentについて
クラスタの内部からアクセスできるようにする仕組みのことです。-
name
ポートの名前を指定する。 -
port
Serviceで公開しておくportを指定する。 -
targetPort
Serviceで転送する先のportを指定する。
https://cstoku.dev/posts/2018/k8sdojo-09/
kubeのよさそうな情報源 https://cstoku.dev/posts/2018/k8sdojo-09/ kubeカレンダー https://qiita.com/advent-calendar/2018/k8s-dojo 義テュBソース https://github.com/kubernetes/kubernetes