- 投稿日:2019-07-08T23:03:54+09:00
brew installしたJenkinsから、docker-desktop上のKubernetesへアクセスする
動機
Kubernetesは便利だけれど結構作り直したり、マルチクラスタ管理してるので、Jenkinsはクラスタの外に立ててる。ローカルの開発環境を作っておくと、捗る。
準備
Install Docker-Desktop
公式からインストーラーに従ってインストールする。
https://www.docker.com/products/docker-desktopインストールしたら、設定→KubernetesからKubernetesを有効にする。
Install Java
Javaが入っていない人は、Javaから入れる。
ちなみに、いきなりJenkinsから入れようとしたら、まずはJavaをインストールしなよってインストールコマンド教えてくれた。親切。$ brew cask install homebrew/cask-versions/adoptopenjdk8Install Jenkins
$ brew install jenkinsChange listening port
デフォルトだと、localhostからしかアクセスできないので、Kubernetes上のPodからアクセスできるようにする。listenしてるアドレスを、0.0.0.0に変えるだけです。
この変更を行うと、同じネットワーク上の任意のマシンからアクセスが可能になるので、Jenkins adminのパスワード管理はしっかりしましょう。$ sudo vi /usr/local/opt/jenkins/homebrew.mxcl.jenkins.plist 17c17 < <string>--httpListenAddress=127.0.0.1</string> --- > <string>--httpListenAddress=0.0.0.0</string>Initialize Jenkins
$ brew services start jenkins
Jenkins立ち上げたら、http://localhost:8080 をブラウザで開き、初期化パスワードを入力して、オススメのPluginsをインストールする。
5分ほどかかるので、小休止する。
余談
今後、困ったらとりあえず再起動する http://localhost:8080/safeRestart
Jenkinsがハングしたとしても、落ち着いてサービスを再起動する
$ brew services restart jenkins
Integrate with a Kubernetes
Permit Agent → Jenkins Master
特に理由がなければ、Randomで大丈夫です。
http://localhost:8080/configureSecurity/
Install Kubernetes plugin
kubernetes何ちゃら等々ヒットすると思いますが、そのものズバリ
kubernetes
ってのをインストールしてください。
http://localhost:8080/pluginManager/availableConfigure Kubernetes info
一番下に、クラウドの追加というボタンが増えていると思うので、そこからKubernetesを選択する。
http://localhost:8080/configureひとまず、下記の3つを埋めておけば良いです。
Kubernetes URL
$ kubectl config view --flatten -o jsonpath='{.clusters[?(@.name=="docker-desktop")].cluster.server}' https://127.0.0.1:6443もしくは
$ kubectl config view --flatten -o jsonpath='{.clusters[?(@.name=="docker-for-desktop-cluster")].cluster.server}' https://127.0.0.1:6443Kubernetes server certificate key
$ kubectl config view --flatten -o jsonpath='{.users[?(@.name=="docker-desktop")].user.client-certificate-data}' | base64 --decode -----BEGIN CERTIFICATE----- xxx xxx xxx -----END CERTIFICATE-----もしくは
$ kubectl exec -it kube-apiserver-docker-for-desktop -n kube-system -- cat /run/config/pki/ca.crt -----BEGIN CERTIFICATE----- xxx xxx xxx -----END CERTIFICATE-----Jenkins URL
127.0.0.1だと、KubernetesのPodからJenkins Masterに繋ぎこみができなくなるので注意。
$ ip addr show en0
お疲れ様です、準備完了です。
小休止する。テスト
Kubernetes pluginのgithubに、いくつかサンプルがあるので、適当に選んで実行する。
https://github.com/jenkinsci/kubernetes-plugin/tree/master/examples新規ジョブを、Pipelineとして作成する。
http://localhost:8080/view/all/newJobScriptに下記のコードをコピペする。
pipeline { agent { kubernetes { //cloud 'kubernetes' label 'mypod' yaml """ apiVersion: v1 kind: Pod spec: containers: - name: maven image: maven:3.3.9-jdk-8-alpine command: ['cat'] tty: true """ } } stages { stage('Run maven') { steps { container('maven') { sh 'mvn -version' } } } } }初回実行時は、maven imageのダウンロード等で多少時間がかかりますが、2回目以降はすぐ終わりますのでご安心を。
成功した場合は、このような出力になるはずです。
Started by user takitake.job@gmail.com Running in Durability level: MAX_SURVIVABILITY [Pipeline] Start of Pipeline [Pipeline] podTemplate [Pipeline] { [Pipeline] node Still waiting to schedule task ‘mypod-br97w-6pr07’ is offline Agent mypod-br97w-6pr07 is provisioned from template Kubernetes Pod Template Agent specification [Kubernetes Pod Template] (mypod): yaml: apiVersion: v1 kind: Pod spec: containers: - name: maven image: maven:3.3.9-jdk-8-alpine command: ['cat'] tty: true Running on mypod-br97w-6pr07 in /home/jenkins/workspace/maven [Pipeline] { [Pipeline] stage [Pipeline] { (Run maven) [Pipeline] container [Pipeline] { [Pipeline] sh + mvn -version Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-10T16:41:47+00:00) Maven home: /usr/share/maven Java version: 1.8.0_121, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-1.8-openjdk/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.9.125-linuxkit", arch: "amd64", family: "unix" [Pipeline] } [Pipeline] // container [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // node [Pipeline] } [Pipeline] // podTemplate [Pipeline] End of Pipeline Finished: SUCCESS失敗した場合は、ログを見てみましょう。
エラーメッセージでググれば、大抵は解決方法が見つかります。
http://localhost:8080/log/all終わりに
Kubernetesクラスタを作り直した場合やPCを再起動した場合に、KubernetesやJenkinsのIPが変わることがあるので、その都度更新する必要があるのが玉に瑕ですが、やはりローカルで試せるとフィードバックサイクルが圧倒的に早いのでお試しくださいませ。
- 投稿日:2019-07-08T15:42:20+09:00
Mac OSXでHTTP Proxy経由でSSH
はじめに
インターネットに出るためにHTTP Proxyを経由しないといけないネットワーク上からパブリッククラウド上の任意インスタンスにSSHしたいがOSXの場合に少しハマったので備忘録。
うまくいくやり方
xx.xx.xx.xxがProxyのIP。FQDNでも可のはず。
$ brew install nmap $ ssh -o ProxyCommand='ncat --proxy-type http --proxy xx.xx.xx.xx:3128 %h %p' -i ~/.ssh/id_rsa ubuntu@vm1普通のやり方
Linuxだとこれでうまく行くはず。
$ ssh ProxyCommand='nc -X connect -x xx.xx.xx.xx:3128 %h %p' -i ~/.ssh/id_rsa ubuntu@vm1なぜかエラー
nc: Proxy error: "HTTP/1.1 200 Connection established" ssh_exchange_identification: Connection closed by remote host蛇足
以下のnetcatでもダメだった。こちらは-vvvでデバッグした限りProxyオプションがない?
$ brew install netcat $ ssh ProxyCommand='nc -X connect -x xx.xx.xx.xx:3128 %h %p' -i ~/.ssh/id_rsa ubuntu@vm1
- 投稿日:2019-07-08T10:53:01+09:00
閲覧専用のGoogle CalendarをMacのカレンダーに表示させたい!!!
Qiitaに書くほどでもないしょーもない話ですが、結構悩んだので。
何に困ったか
Google CalendarをMacのカレンダーに表示するためには、普通にGoogleアカウントを追加してやればOKです。
しかし自分以外のユーザーが作ったGoogle Calendarを追加すると、
WebのGoogle Calendar見ると見られるんですが、Macのカレンダーアプリには表示されません。
これはデフォルト設定だと、Google Calendarは「マイカレンダー」に登録されてるやつしか表示しない仕様だからみたいです。
Appleの縛りなのか、Googleの縛りなのかわかりませんが、まあまあ不便です。どうしたら表示できるか
Google Calendarの設定ページを割と隅から隅まで探したんですが、表示する項目はないように見えます。
ただググってみたら、直接下記のリンクに飛ぶと、同期設定を変更することが可能でした。古めのデザインのページなので、Googleのアップデートが追いついてない画面なのかもしれません。
ちょっとした隠しコマンドみたいになってますね。。。参考
- 投稿日:2019-07-08T00:35:07+09:00
【初学者向け】MacでDockerを使うための最低限の事
はじめに
今更ですがDockerの魅力を知ったので、
ローカル環境(Mac)にインストールしてみました。その際に行った初期設定などを、備忘録を含めてまとめます。
ローカル環境でMacOSを使用している前提とします。
また、dockerをインストールした後の操作などは対象外です。開発環境
- Macbook Pro (Core i5)
- MacOS
DockerをMacで使う
macにアプリケーションをインストールするだけです。
(カップラーメンを作るより早く終わります。)Dockerのインストール
1.Docker for MacのDL & Install
https://hub.docker.com/editions/community/docker-ce-desktop-mac
上記のdockerhubより、Get Dockerをクリックし、Docker Desktop for MacをDLする。
(dockerhubにログインしないとDL出来ません。登録&ログインを済ませておいてください。)
DLしたdocker.dmgファイルを開き、Docker.appをApplicationsへ追加する。
その後は流れに沿ってインストールしてください。
2.Dockerの動作確認
MacのTerminalより下記のコマンドでバージョンを確認する。
$ docker --version Docker version 18.09.2, build 6247962 $ docker-compose --version docker-compose version 1.24.0, build 0aa59064 $ docker-machine --version docker-machine version 0.16.1, build cce350d7上記のような出力がされれば、dockerが正常作動しているのでOK!
まとめ
これだけで、macでdockerを使用出来ます。
今回は本当に最低限の事のみを記事にしました。
docker,docker-composeの操作などは、別記事にて更新予定です。