20190708のMacに関する記事は4件です。

brew installしたJenkinsから、docker-desktop上のKubernetesへアクセスする

動機

Kubernetesは便利だけれど結構作り直したり、マルチクラスタ管理してるので、Jenkinsはクラスタの外に立ててる。ローカルの開発環境を作っておくと、捗る。

準備

Install Docker-Desktop

公式からインストーラーに従ってインストールする。
https://www.docker.com/products/docker-desktop

インストールしたら、設定→KubernetesからKubernetesを有効にする。
Screen Shot 2019-07-08 at 21.55.50.png

Install Java

Javaが入っていない人は、Javaから入れる。
ちなみに、いきなりJenkinsから入れようとしたら、まずはJavaをインストールしなよってインストールコマンド教えてくれた。親切。

$ brew cask install homebrew/cask-versions/adoptopenjdk8

Install Jenkins

$ brew install jenkins

Change 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/
Screen Shot 2019-07-08 at 22.17.01.png

Install Kubernetes plugin

kubernetes何ちゃら等々ヒットすると思いますが、そのものズバリkubernetesってのをインストールしてください。
http://localhost:8080/pluginManager/available

Configure 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:6443
Kubernetes 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/newJob

Scriptに下記のコードをコピペする。

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が変わることがあるので、その都度更新する必要があるのが玉に瑕ですが、やはりローカルで試せるとフィードバックサイクルが圧倒的に早いのでお試しくださいませ。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Mac OSXでHTTP Proxy経由でSSH

はじめに

インターネットに出るためにHTTP Proxyを経由しないといけないネットワーク上からパブリッククラウド上の任意インスタンスにSSHしたいがOSXの場合に少しハマったので備忘録。

参考)
Macで HTTP Proxy 経由のSSH

うまくいくやり方

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
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

閲覧専用のGoogle CalendarをMacのカレンダーに表示させたい!!!

Qiitaに書くほどでもないしょーもない話ですが、結構悩んだので。

何に困ったか

Google CalendarをMacのカレンダーに表示するためには、普通にGoogleアカウントを追加してやればOKです。
しかし自分以外のユーザーが作ったGoogle Calendarを追加すると、
WebのGoogle Calendar見ると見られるんですが、Macのカレンダーアプリには表示されません。
これはデフォルト設定だと、Google Calendarは「マイカレンダー」に登録されてるやつしか表示しない仕様だからみたいです。
Appleの縛りなのか、Googleの縛りなのかわかりませんが、まあまあ不便です。

どうしたら表示できるか

Google Calendarの設定ページを割と隅から隅まで探したんですが、表示する項目はないように見えます。
ただググってみたら、直接下記のリンクに飛ぶと、同期設定を変更することが可能でした。

同期設定

古めのデザインのページなので、Googleのアップデートが追いついてない画面なのかもしれません。
ちょっとした隠しコマンドみたいになってますね。。。

参考

他のユーザーと共有したGoogleカレンダーをMacやiPhoneの「Appleカレンダー」で同期する方法

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【初学者向け】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出来ません。登録&ログインを済ませておいてください。)
dockerhub_docker_for_mac.png

DLしたdocker.dmgファイルを開き、Docker.appApplicationsへ追加する。
install_docker_for_mac.png

その後は流れに沿ってインストールしてください。

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の操作などは、別記事にて更新予定です。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む