electron Chromium(Chrome ブラウザのエンジン)と Node.js がランタイムになる Visual Studio Code(Microsoft)や Atom(GitHub),Slack,Skype の開発に採用されている その他の採用事例はawesome-electronに掲載されている Install 最新版で学ぶ Electron 入門 – HTML5 で PC アプリを開発する利点と手順 Environment $ npm -v 5.8.0 $ node -v v9.8.0 npm init $ npm init (all enter) npm install $ npm i --save-dev electron $ mkdir src create entry point $ vi src/package.json { "main": "main.js" } create app $ vi src/main.
GitLab gitlab/gitlab-ce コンテナイメージを使う場合は、イメージ内にデータベース(postgres)も含まれている docker デプロイ
https://yoshinorin.net/2017/04/08/gitlab-using-by-docker/ https://docs.gitlab.com/omnibus/docker/ $ docker run -d --name mygitlab --hostname 192.168.0.5 -p 8000:80 --restart always -v /Users/tsujimitsu/Docker/gitlab/config:/etc/gitlab -v /Users/tsujimitsu/Docker/gitlab/logs:/var/log/gitlab -v /Users/tsujimitsu/Docker/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest ※以下のコマンドで起動するとgitlabへ接続できない $ docker run -d --name mygitlab --hostname 192.168.0.5 --env GITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.0.5:8000/'" -p 8000:80 --restart always -v /Users/tsujimitsu/Docker/gitlab/config:/etc/gitlab -v /Users/tsujimitsu/Docker/gitlab/logs:/var/log/gitlab -v /Users/tsujimitsu/Docker/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest ログイン
http://localhost:8000 パスワード変更後は root ユーザと変更後パスワードでログインできる ログ
$ docker logs mygitlab $ docker logs mygitlab -f
Jenkins jenkins はデータベースと連携しない(ファイル DB) 全てのデータは /var/jenkins_home に保存されるため、persistent volume にマウントして永続化する。 plugin, workspace も含まれる docker デプロイ
https://hub.docker.com/_/jenkins/ https://qiita.com/momoham/items/bf69c623c8968dc4f9da $ docker run -d --name myjenkins --restart always -p 8080:8080 -p 50000:50000 -v /Users/tsujimitsu/Docker/jenkins:/var/jenkins_home jenkins:2.60.3 ログイン
http://localhost:8080/ 初期設定の入力項目は全て入力していないと次のページへ遷移できないので注意する ログ
$ docker logs myjenkins $ docker logs myjenkins -f プラグイン Role-based Authorization Strategy [GitLab]() その他 CI ツールとしては Drone.
https://store.docker.com/editions/community/docker-ce-desktop-mac Get Docker CE for Mac (Edge)
Preference > Kubernetes Enable Kubernetes
入門 Kubernetes 可用性を保ちながら素早くリリースをし続けるために必要なもの
immutability(イミュータブル) 一度リリースした物件には変更を加えない。変更する場合は別のリリース物件として出す apt-getでパッケージをアップデートしてシステムを最新化していくやり方はミュータブル declarative configuration(宣言的設定) あるべき状態を定義する。システムがその状態を維持するように動く 宣言的設定の反対は命令的設定 online self-healing system(自己回復するシステム) 絶えず「宣言的設定」で定義された状態であり続けられるように動く コンテナの利点
依存性の管理 カプセル化 kubectlバージョン
kubenertesのツールはマイナーバージョン2つまではkubernetes APIのバージョンと後方互換性、前方互換性がある Pod
Pod内のコンテナは同一サーバ上で起動する Podは同一IPとポートを持つ Podのデプロイ情報はPodマニフェストに記述する.通常は読みやすくコメント付与できるYAML形式で作成する $ cat kuard-pod.yaml apiVersion: v1 kind: Pod metadata: name: kuard spec: containers: - image: gcr.io/kuar-demo/kuard-amd64:1 name: kuard ports: - containerPort: 8080 name: http protocol: TCP ※以下のコマンドはほぼ同義 $ docker run -d --name kuard --publish 8080:8080 gcr.
Kubernetes Meetup Tokyo #11 KubeConのrecap セキュリティ関連 Ian Lewis (Google) Secure Pods
これからk8sに組み込みたい コンテナはカーネル上で基本動くのでカーネルにバグがあるとホストが乗っ取られる可能性がある ホストを乗っ取られないようにカーネル以外にも壁を作り2層にする Sandbox Podsを噛ませてセキュリティをあげる どうやってk8sに組み込むかはこれから(まだデザインフェーズ) Container Isolation at Scale (Introducing gVisor)
Googleは始めコンテナをrootユーザで動かしていた 割とすぐに一般ユーザで実行するようにしたらしい ユーザからのデータがコンテナ内に流入してくるとコンテナのセキュリティは落ちる VMで実行するとVMに割り当てるリソースが他に回せない。また一度メモリを増やすと基本減らせない VMだとゲストOSが丸々動いてオーバーヘッドがある Lightweightな環境を維持できなくなる gVisorはSentryを使う。Sentryはユーザスペースで動くLinuxカーネルといった位置付け ユーザスペースで動いているのでできることが限定される ファイルシステムにはGoferが代理でアクセスする Performance and Scale @ Istio Service Mesh (CyberAgent) IstioはC++で書かれたEnvoyを通信フローの間に挟まってトラフィック操作する 通信のレイテンシやサービスの依存関係などを知ることができる Envoyを挟んでいるので処理スピードは多少遅くなる adtech領域で使うにはまだレイテンシの面で厳しい バージョンが上がるにつれてqpsは良くなっていっている 性能はVMの時と比較してk8s上だとnginxの処理性能は半分ぐらいになった k8sのロードバランサはiptablesを使ったがipvsになると性能あがるかも SIG API Machinery Deep Dive by Aya Igarashi @ladicle (Z Lab) CustomResourceを使うと自由にResourceを定義できる Continuous Delivery Meets Custom Kubernetes Controller: A Declarative Configuration Approach by nasa9084 (日本仮想化技術株式会社) これまではCI/CDやるとき、Jenkinsがハブになってコンテナレジストリやk8sをコントロールしていた k8sのアクセス権をjenkinsに与える必要があり少し問題 jenkinsではなくtravis ciなど使ってもこれは同じ weave fluxを使えばある程度解決する。が一長一短ある cvmanagerというCustomeResourceで全てのci/cdをk8s上で完結させることを目的にしている ci/cdパイプラインからk8s、その逆も無いのでセキュリティがある程度上がる Kubernetes Multi-Cluster Operations without Federation by Junichi Yoshise @jyoshise (Hewlett Packard Enterprise) エンタープライズだと5−10クラスタは持つようなイメージ tectonicはcluster registryとpolicyを全クラスタで同期し、federationを実現する kubernetes federationは本体にまだ組み込まれていない OperatorをCRDで定義する