2018年9月13日木曜日

Apple Special Event 2018 を見ました

自分用メモ
ツイートしながら見たのでまとめました

https://togetter.com/li/1266228

Rancher2.0 をインストールしてみた

概要

過去に 1.6 を触ったのですが 2.0 が登場したので触ってみました
とりあえず環境を構築するところまでです

環境

サーバ

  • rancher/rancher (2.0.8)
  • macOS 10.13.6

ワーカ

  • Ubuntu 16.04
  • docker 18.03.1-ce
  • rancher/rancher-agent:v2.0.8

Rancher 起動

今回はサーバは Mac 上で起動します

  • docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

https://172.28.128.1/ で管理画面を表示します (vboxnet0)
admin パスワードの設定と URL の設定をします

クラスタ作成

Rancher はクラスタを作成するのインフラとなるサービスをいろいろと選択できます
今回は VirtualBox をインフラとするので CUSTOM を選択します
Cluster Options でいろいろ設定できますがとりあえずそのままいきます
rancher2_1.png

ワーカとして登録するノードで実行するコマンドが表示されるのでコピーしておきます
etcd, Control Plane, Worker すべてにチェックを入れておきます
rancher2_2.png

ワーカノードの登録

VirtualBox で適当に VM を作成します
今回は Ubuntu16.04 を作成しました
あとは docker もインストールします
そして以下のコマンドを登録してノードをワーカとして登録します

sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.0.8 --server https://172.28.128.1 --token 6q8j6x969mzwdh8929vb5gkjkq7fjstxsvklqmvc7qtmbtlc8zpchf --ca-checksum 4b443b81b26d0c70a9a832544dd7eb4ae40f39a7147410d9220a547148386eda --etcd --controlplane --worker

必要なノードは worker, etcd, Control Plane になります
それぞれ別のコンテナで起動しても良いですが面倒なので今回は 1 つのコンテナとして起動しています
初めにエージェントが起動しその後 kubernetes に必要なコンテナ (dns, ingress, canal etc) が次々と起動します
rancher2_3.png

上記のようにクラスタの作成が完了したらワーカノード上で docker ps でも実行してみるとわかると思います

kubectl でクラスタにアクセスしてみる

クラスタの画面から kubernetes 用の config ファイルが取得できるのでダウンロードしましょう
あとは kubectl コマンドでファイルを指定すればアクセスできます

  • kubectl --kubeconfig=kubeconfig get nodes
NAME            STATUS    ROLES                      AGE       VERSION
ubuntu-xenial   Ready     controlplane,etcd,worker   1h        v1.11.2

最後に

Rancher を使って k8s 環境を構築してみました
今回はノードが 1 台しかなく etcd, Control Plane, worker がすべて 1 台のマシン上で動作している環境にしました
これでも問題なくコンテナは動作します

しかし実際は etcd, Control Plane は別ノードで動かしましょう
そして worker も別ノードとして動かしてコンテナは worker ノードだけで動作させます
なので本来は最低でも 2 ノード必要になります
(Rancher サーバ自体が動作しているノードも含めると 3 台)
k8s 自体そうなっているのでまぁ当然かなと思います

参考サイト

2018年9月12日水曜日

Nexus7 に FactoryImage をインストールして復活させる方法

概要

間違って /system などを削除してブートローダ以降 Android が起動しなくなったりすることがあります
そんな場合に Factory Image をインストールし直すことで復活することがあります

環境

  • macOS 10.13.6
  • Nexus7 (2012)
  • Factory Image (5.1.1 nakashi)

やり方

  • wget https://dl.google.com/dl/android/aosp/nakasi-lmy47v-factory-5a0bb059.zip
  • unzip nakasi-lmy47v-factory-5a0bb059.zip
  • cd nakasi-lmy47v
  • ./flash-all.sh

全ログ

(bootloader) Bootloader is already unlocked
OKAY [  0.018s]
Finished. Total time: 0.020s
Erasing 'boot'                                     OKAY [  0.171s]
Finished. Total time: 0.216s
******** Did you mean to fastboot format this ext4 partition?
Erasing 'cache'                                    OKAY [  0.130s]
Finished. Total time: 0.175s
Erasing 'recovery'                                 OKAY [  0.025s]
Finished. Total time: 0.070s
******** Did you mean to fastboot format this ext4 partition?
Erasing 'system'                                   OKAY [  0.166s]
Finished. Total time: 0.211s
******** Did you mean to fastboot format this ext4 partition?
Erasing 'userdata'                                 OKAY [  3.510s]
Finished. Total time: 3.556s
Sending 'bootloader' (2100 KB)                     OKAY [  0.278s]
Writing 'bootloader'                               OKAY [  1.227s]
Finished. Total time: 1.550s
rebooting into bootloader                          OKAY [  0.020s]
Finished. Total time: 0.020s
extracting android-info.txt (0 MB) to RAM...
--------------------------------------------
Bootloader Version...: 4.23
Baseband Version.....: N/A
Serial Number........: 015d3f1889401e0a
--------------------------------------------
Checking product                                   OKAY [  0.030s]
Checking version-bootloader                        OKAY [  0.020s]
extracting boot.img (5 MB) to disk... took 0.026s
archive does not contain 'boot.sig'
archive does not contain 'dtbo.img'
archive does not contain 'dt.img'
archive does not contain 'odm.img'
archive does not contain 'product.img'
extracting recovery.img (5 MB) to disk... took 0.022s
archive does not contain 'recovery.sig'
extracting system.img (634 MB) to disk... took 4.725s
archive does not contain 'system.sig'
archive does not contain 'vbmeta.img'
archive does not contain 'vendor.img'
mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 3557120 4k blocks and 889440 inodes
Filesystem UUID: 38a9d4ae-bd16-4304-8491-43451e8518a3
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208

Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done

mke2fs 1.43.3 (04-Sep-2016)
Creating filesystem with 113408 4k blocks and 113408 inodes
Filesystem UUID: dc58664c-1964-4c17-b029-bb11c10581c2
Superblock backups stored on blocks:
        32768, 98304

Allocating group tables: done
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done

Sending 'boot' (5184 KB)                           OKAY [  0.650s]
Writing 'boot'                                     OKAY [  0.319s]
Sending 'recovery' (5738 KB)                       OKAY [  0.734s]
Writing 'recovery'                                 OKAY [  0.396s]
Sending 'system' (649455 KB)                       OKAY [ 81.857s]
Writing 'system'                                   OKAY [ 49.607s]
Erasing 'userdata'                                 OKAY [  2.268s]
Sending 'userdata' (4288 KB)                       OKAY [  0.568s]
Writing 'userdata'                                 OKAY [  2.622s]
Erasing 'cache'                                    OKAY [  0.087s]
Sending 'cache' (292 KB)                           OKAY [  0.063s]
Writing 'cache'                                    OKAY [  0.171s]
Rebooting                                          
Finished. Total time: 144.729s

これで unfortunately supersu has stopped も出なくなります

2018年9月11日火曜日

Nexus7 (2012) を Root 化してみた

概要

タイトルの通りやってみました
2012 と古いバージョンの Nexus7 になります
作業は自己責任でお願いします

環境

  • macOS 10.13.6
  • Nexus7 (2012)
  • TWRP
  • SuperSU

ADK (fastboot) のインストール

  • brew cask install android-platform-tools

SuperSU をダウンロードして Nexus7 に転送する

まずは電源 ON で普通に Android を起動します

ここから「SR5-SuperSU-v2.82-SR5-20171001224502.zip」をダウンロードします
ダウンロードしたファイルを Android file transfer などを使って Nexus7 に配置します
パスはどこでも OK ですが今回は /Android/data/SR5-SuperSU-v2.82-SR5-20171001224502.zip に配置しました

zip が Nexus7 にあればいいので Nexus7 で直接ファイルをダウンロードしても大丈夫かと思います
ただしその場合はパスがダウンロード用のパスになるので SuperSU をインストールする際にファイルを探す必要があります

カスタムリカバリイメージをインストールする

ここから Android っぽい作業になります
Android にはリカバリツールが標準でインストールされています
ただしそれだと SuperSU をインストールすることができません
なので zip を直接実行してインストールすることができるカスタムリカバリイメージをインストールします
ここから「openrecovery-twrp-2.8.5.1-grouper.img」をダウンロードしましょう

一旦電源を OFF しましょう
そして「電源」+「音量を下げるボタン」を同時に押しながら Nexus7 を起動します
すると以下のようなブートローダの画面になります
supersu1.jpg

ここでターミナルを立ち上げてダウンロードしたカスタムリカバリイメージのあるパスに移動します
そしてカスタムリカバリイメージを書き込みます

  • fastboot flash recovery openrecovery-twrp-2.8.5.1-grouper.img
sending 'recovery' (9426 KB)...
OKAY [  1.205s]
writing 'recovery'...
OKAY [  0.735s]
finished. total time: 1.940s

これで書き込み完了です
Nexus7 で音量を上げるボタンを 2 回押すと「Recovery mode」になるので電源ボタンを押して決定しリカバリーモードで起動します
supersu2.jpg

しばらくすると今回インストールしたカスタムリカバリイメージの「Team Win Recovery Project (TWRP)」が立ち上がります
supersu3.jpg

SuperSU をインストールする

TWRP の画面で一番左上の「Install」を選択します
そして先程 Nexus7 に配置した /Android/data/SR5-SuperSU-v2.82-SR5-20171001224502.zip を探します
どうやら /sdcard 配下にあるようなのでそこに移動しましょう
すると「SR5-SuperSU-v2.82-SR5-20171001224502.zip」があるので選択します
supersu4.jpg

そして「Swipe to Confirm Flash」でスワイプしてインストールします
supersu5.jpg

インストール中は以下のような感じです
supersu6.jpg

完了したら「Reboot System」を選択しましょう
supersu7.jpg

動作確認

Nexus7 が起動するとアプリ一覧に「SuperSU」があると思います
supersu8.jpg

設定画面は以下のような感じになっています
supersu9.jpg

最後に

今更ですが Nexus7 を Root 化してみました
昔 ClockworkMod というカスタムリカバリイメージを使ってやってみましたができなかったので TWRP でやってみたらうまくできました

2018年9月10日月曜日

Google Cloud Shell を初期化する方法

概要

Google Cloud Shell 上でいろいろと作業しているファイルやディレクトリが増えていきます
ディスクのサイズも小さいのすぐに小さくなってしまうと思います
そんな場合に Google Cloud Shell の環境を 1 からやり直す方法を紹介します

環境

  • Google Cloud Shell (2018/08/28 時点)

方法

  • ls -a $HOME
  • sudo rm -rf $HOME

で Cloud Shell メニューから「歯車アイコン」->「Cloud Shell を再起動」 の順にクリックします
これで再起動すれば最初の状態に戻ります

そもそもシェル環境が使えなくなりコマンド自体が実行できない人は問い合わせるしかなさそうです

参考サイト

2018年9月9日日曜日

GKE 上で Jenkins を動かしてアプリの Canary デプロイを試してみた

概要

GKE 上で Jenkins を動かすことで Canary リリースを簡単に実現することができます
GKE で k8s クラスタを構築しそこに Jenkins をデプロイします
そして Cloud Source Repository 上でアプリのソースコードを管理して、Canary デプロイを実現します
今回は k8s + Jenkins の構築方法と実際にアプリを修正して Canary リリースまでやってみました
なお作業は Google Cloud Shell 上ですべて行います

環境

  • Google Kubernetes Engine (2018/09/04 時点)
  • Google Cloud Source Repository (2018/09/04 時点)
  • Google Cloud Shell
  • Jenkins 2.121.3

ディスク作成

  • gcloud config set compute/zone us-east1-d
  • gcloud compute disks create cd-jenkins

Jenkins の永続領域として使います

クラスタ作成

  • gcloud container clusters create jenkins-cd --num-nodes 2 --machine-type n1-standard-2 --scopes "https://www.googleapis.com/auth/projecthosting,cloud-platform"
  • gcloud container clusters get-credentials jenkins-cd
  • kubectl get pods

クラスタ内のノードは 2 台です
クラスタの認証情報を保存して kubectl でアクセスできることを確認します

サンプルアプリの取得

  • git clone https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes.git
  • cd continuous-deployment-on-kubernetes

ここに k8s 上にデプロイする Jenkins の定義やサンプルアプリの定義が含まれています
基本はこれを使っていきます

helm インストール

  • wget https://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
  • tar zxfv helm-v2.9.1-linux-amd64.tar.gz
  • cp linux-amd64/helm .

helm を使って Jenkins をデプロイするために使います

RBAC 設定

  • kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=$(gcloud config get-value account)
  • kubectl create serviceaccount tiller --namespace kube-system
  • kubectl create clusterrolebinding tiller-admin-binding --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
  • ./helm init --service-account=tiller
  • ./helm update
  • ./helm version

helm を使ってクラスタにアクセスするサービスアカウントを作成します
アカウント名などは変更しても OK ですがそのままでも OK です

Jenkins デプロイ

  • ./helm install -n cd stable/jenkins -f jenkins/values.yaml --version 0.16.6 --wait
  • kubectl get pods
NAME                          READY     STATUS    RESTARTS   AGE
cd-jenkins-7c786475dd-smknn   1/1       Running   0          1h

Jenkins 用の Pod が Running になるまで待ちましょう
もしうまく Pod が上がらない場合は一旦削除して再度試してみてください

  • ./helm del --purge cd

Jenkins ログイン

  • export POD_NAME=$(kubectl get pods -l "component=cd-jenkins-master" -o jsonpath="{.items[0].metadata.name}")
  • kubectl port-forward $POD_NAME 8080:8080 >> /dev/null &
  • kubectl get svc

8080 で LISTEN していることを確認します
Google Cloud Shell のプレビュー機能を使って Jenkins を開きます

  • printf $(kubectl get secret cd-jenkins -o jsonpath="{.data.jenkins-admin-password}" | base64 --decode);echo

これで admin ユーザのパスワードが表示できるのでログインしましょう

サンプルアプリのデプロイ

とりあえず手動でデプロイします

  • cd sample-app
  • kubectl create ns production
  • kubectl --namespace=production apply -f k8s/production
  • kubectl --namespace=production apply -f k8s/canary
  • kubectl --namespace=production apply -f k8s/services
  • kubectl --namespace=production scale deployment gceme-frontend-production --replicas=4
  • kubectl --namespace=production get service gceme-frontend

これでアプリにアクセスするための EXTERNAL-IP を確認しましょう
LoadBalancer を作成しているので有効になるのに少々時間がかかります

NAME             TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
gceme-frontend   LoadBalancer   10.59.255.179   35.193.81.133   80:31835/TCP   58m

これでブラウザでアクセスすると青色のアプリの画面が確認できると思います

  • export FRONTEND_SERVICE_IP=$(kubectl get -o jsonpath="{.status.loadBalancer.ingress[0].ip}" --namespace=production services gceme-frontend)
  • while true; do curl http://$FRONTEND_SERVICE_IP/version; sleep 1; done

この 2 つのコマンドはアプリを Canary リリースしたときに確認するコマンドなのでまだ実行しないで大丈夫です

Cloud Source Repository にアプリをコミットする

  • cd sample-app
  • git init
  • git config credential.helper gcloud.sh
  • gcloud source repos create gceme
  • git remote add origin https://source.developers.google.com/p/your-project-id/r/gceme
  • git config --global user.email "your-mail-address@domain.com"
  • git config --global user.name "your-name"
  • git add .
  • git commit -m "Initial commit"
  • git push origin master

とりあえず現在のソースを Cloud Resource Repository をプッシュします
ここに変更を加えてブランチを作成しブランチを Canary デプロイします

Jenkins に Credential を登録する

GKE 上にアクセスするための Credential を登録します

  1. 左メニュー認証情報を選択
  2. global を選択
  3. 認証情報の追加を選択
  4. 種類 -> Google Service Account from metadata を選択
  5. OK

gke_with_jenkins1.png

Jenkins にデプロイジョブの作成

Cloud Resource Repository から GKE にブランチをデプロイするためのジョブを作成します

  1. Jenkins のトップに戻る
  2. 「新しいジョブを作成」を選択
  3. 「Multibranch Pipeline」を選択して名前を「sample-app」で入力しジョブを作成
  4. Branch Sources -> Add source -> Git -> https://source.developers.google.com/p/your-project-id/r/gceme
  5. 認証情報はプロジェクト ID を選択
  6. Scan Multibranch Pipeline Triggers -> 他のビルドが起動していなければ定期的に起動 -> 間隔 -> 1 minute に設定

gke_with_jenkins2.png

Canary ブランチをデプロイしてみる

少し修正を加えてそれを Canary デプロイしてみます

  • git checkout -b canary
  • vim Jenkinsfile

冒頭の project の部分を自分のプロジェクト ID に変更します

-def project = 'PROJECT_ID'
+def project = 'your-project-id'

続いて canary ブランチになったのがわかるように色を変更します

  • vim html.go
-<div class="card blue">
+<div class="card orange">

バージョンも変更します

  • vim main.go
-const version string = "1.0.0"
+const version string = "2.0.0"

上記の変更を push します

  • git add .
  • git commit -m "Version 2"
  • git push origin canary

push が完了したら Jenkins のジョブに戻って「Scan Multibranch Pipeline Now」をスタートしましょう
gke_with_jenkins3.png

ビルドが完了したあとでブラウザでアプリにアクセスし続けるとオレンジの画面がたまに表示されるようになります
Canary デプロイはすべてのアプリを切り替えるのではなく一部のアプリだけを切り替えることができます
gke_with_jenkins4.png

master にマージする

  • git checkout master
  • git merge canary
  • git push origin master

再度「Scan Multibranch Pipeline Now」をスタートしてビルドが完了したあとにアプリにアクセスするとすべてのアクセスが 2.0.0 のアプリになっています

お掃除

  • gcloud compute disks delete cd-jenkins
  • gcloud container clusters delete jenkins-cd
  • gcloud source repos delete gceme

最後に

GKE 上に Jenkins をデプロイしてアプリの CI/CD 環境を構築してみました
ほぼサンプルを試しただけなので Jenkins のパイプラインの詳細は追っていませんが GKE 上で CI/CD する流れは掴めたかなと思います

アプリをデプロイするときは Slave 用の pod が立ち上がりデプロイするようです
公式のやり方ではあるのでこれで問題はないですが、既存の Jenkins がある場合はそこからデプロイするための連携とかしたいかなと個人的には思っています
Jenkins の k8s のプラグインをうまく設定すればできると思いますが、なぜか k8s と Jenkins の連携をするサンプルのほとんどが k8s 上に Jenkins もデプロイする方法なのが気になりました

参考サイト

2018年9月8日土曜日

mineo の S プラン (Softbank プラン) に申し込んでみた

概要

mineo の S プランが 2018/9/4 から始まりました
申し込みをして実際に SIM が届いて使ってみたのでやり方などを紹介します
また、今回は事前登録をしたので専用 URL から申し込みしています (現在は受付を終了しています)
mineo_s_plan1.png

身分証明書の電子データが必要になるので事前に準備しておきましょう

環境

  • mineo (S プラン)
  • iPhone6 (Softbank ロック)

タイムライン

  • 9/4 エントリーパッケージ購入
  • 9/5 申し込み完了
  • 9/7 SIM 到着、テスト

申し込み

まずはエントリコードを入力します
mineo_s_plan2.png

どうやら S プランの申込みにもエントリコードが使えるので Amazon でエントリコードを購入しました
エントリコードを使ったほうが事務手数料 3,000 円が無料になるのでお得です

プランを選択します
今回選択したのは以下の通りです
ポイントは「ソフトバンクプラン」と「デュアルタイプ」になります
デュアルタイプでないとキャンペーンが受けれません
通話サービスはキャンペーン中なので 10 分かけ放題を選択しました
3 ヶ月だけなのでもし不要な場合は 3 ヶ月後には解約する必要があります
また、このページで表示される金額はキャンペーンやエントリーコード適用前の金額になります

  • プランを選ぶ・・・ソフトバンクプラン (S プラン)
  • タイプを選ぶ・・・デュアルタイプ (データ通信+音声通話)
  • コースを選ぶ・・・500 MB
  • 通話サービスを選ぶ・・・mineo でんわ 10 分かけ放題
  • 端末の購入を有無を選ぶ・・・SIM カードのみを購入する

mineo_s_plan3.png

SIM を選択します
会話形式で SIM のタイプを選択できます
iPhone6 は「nano SIM」になるので nano SIM になっていれば OK です
https://support.apple.com/ja-jp/HT202645
mineo_s_plan4.png

MNP かどうかの選択になります
今回は新規で申し込みます
MNP の場合は予約番号などが必要になります
mineo に MNP で申し込む方法は過去に紹介しているのでこちらを御覧ください
mineo_s_plan5.png

オプションの申し込みになります
今回は特にオプションには申し込まないのでそのまま次にいきます
それにしてもオプションがかなりあってビックリです
mineo_s_plan6.png

契約内容の確認画面になります (SS 省略)
すでに eoID を持っていてログインしている場合はそれが表示されます
内容を確認して次にいきます
ちょくちょくオプションに加入するかどうかのダイアログが出ますが今回は申し込まないのでキャンセルしましょう

申込み内容を確認します
この画面もキャンペーン適用前の金額です
mineo_s_plan7.png

mineo おなじみの本人確認書類のアップロードになります
身分証明書を携帯で撮ったりスキャンして電子化しアップロードしてください

「提供条件のご確認-提供条件(重要事項)とサービスのご確認」になります
「同意する」を選択します
そして「お申込みを確定」で申し込みします

最後までキャンペーンの適用価格が確認できなかったのが怖いですが選択します
キャンペーン適用後の金額は申込み後に送付されてくる契約書で初めて確認できます、もしくは契約完了メールが送らてきたあと mineo のマイページから「ご契約内容照会」から確認できます
mineo_s_plan8.png

申込みの確認のメールが来ます
あとは SIM カードが来るまで待ちましょう

SIM 到着後、動作確認

まずは SIM を取り外します
mineo_s_plan9.jpg

そして iPhone6 に SIM を挿しましょう
mineo_s_plan10.jpg

プロファイルインストール

次にプロファイルをインストールします
Safari で https://mineo.jp/r/s/apn/ にアクセスしましょう
ここが罠ポイントなのですがプロファイルをダウンロードするのにインターネットへの接続が必要です
そしてまだ mineo SIM では通信できません
つまり Wi-Fi やテザリングを使ってインターネットに接続できる環境が必要になります
自分は Wi-Fi があるのでそれでダウンロードしましたが、代用できるものがない場合はフリーの Wi-Fi スポットなどに行きダウンロードする必要があります

設定ファイルをダウンロードする画面になったらリンクをクリックしてダウンロードします
iPhone6 以前のプロファイルをダウンロードしてください
mineo_s_plan11.PNG

するとプロファイルのインストール画面になるので iPhone6 のロックを解除するパスワードを入力してプロファイルをインストールしましょう
プロファイルのインストールが完了したら iPhone6 を再起動します

うまく繋がらない、、、

が、うまくインターネットに繋がりません
いろいろ試してみたいので結果を記載しておきます

試しにもともとあったソフトバンクのプロファイルを削除し再起動してみましたが結果は変わりませんでした

ダウンロードしたプロファイルがちゃんと iPhone6 以前用のプロファイルになっているか確認してください
自分は始め iPhone7 以降のプロファイルを使っていて繋がりませんでした

SIM の向きを確認する、抜き差ししてみる
これは結果的に関係なかったですが念の為確認してもいいと思います

自分が繋がらなかった最終的な原因は以下でした
設定 -> モバイル通信 -> オンになっていることを確認する
電波表示のところに 3G やら 4G という表記がない場合はオフになっています
設定アプリからオンにしましょう

その他

LINE のアカウントを取得するのに SMS を受け取る必要があるので SMS が受け取れるか試してみたのですが受け取れました
iPhone5 + mineo のときは受け取れなかったはずですが、iPhone6 だ大丈夫なようです

最後に

mineo の S プランに登録して Softbank 縛りの iPhone6 で使ってみました
基本は SIM を挿したあとでプロファイルをダウンロードするだけなので作業的には簡単なのですがやはり多少のハマりポイントはあったかなと思います

また申し込みに関してはもう事前登録のキャンペーンはやってませんがエントリーパッケージは使えるので使いましょう

あと気になってサポートに問い合わせてみたのですが A or D プランから S プランへのプラン変更は今回のキャンペーンの適用外となります
あくまでも新規 or MNP で S プランを新規契約した場合にキャンペーンが適用になります
プラン変更の場合はこれまで通り mineo のマイページから変更してください
参考 -> https://hawksnowlog.blogspot.com/2018/02/mineo-changes-to-dplan-from-aplan.html
その場合は事務手数料が別途かかります