JFrog Japan Blog

DevOpsを加速する、JFrog日本法人メンバーによるブログです。

JFrog ArtifactoryやXrayといった自社ツールはもちろん、CI/CDやコンテナ技術(DockerやKubernetes)などDevOpsの一般的な内容も扱います。その他、日本でのDevOps事例紹介やお楽しみコンテンツも掲載予定です。 JFrogならではの面白くて役に立つブログを目指しますので、お楽しみに!

JFrog Artifactoryを使ってDocker Hubのdownload rate limit (ダウンロード回数の制限) を回避する

Docker Hubのdownload rate limitとは?

blog.jfrog.co.jp

以前この記事で詳しく紹介した(翻訳ですが…)とおり、みんな大好きDocker Hubを無料で使っていると次のような利用制限がかかります。

ダウンロードの制限
イメージのプルが制限され、匿名ユーザーは6時間あたり100回、無料アカウントだと6時間あたり200回までとなります。

今日はダウンロードの際、JFrog Artifactory(クラウド版)をプロキシとして間に挟むことでこの回数をなるべく消費せずにDockerイメージを取得する方法を見ていきます。他のメリット含め、詳細は先ほど紹介した記事をご覧ください!

https://cdn-ak.f.st-hatena.com/images/fotolife/i/ihcomega/20200915/20200915055858.png

Artifactoryの設定をする

Artifactoryのアカウントを作成する

jfrog.com

ここからクラウド版の無料アカウントを作成します。もちろん有料アカウントをお持ちの方はそちらをお使いいただけます。
サーバー名(Server Name)はお好きなものを指定してください。 <サーバー名>.jfrog.ioにアクセスすればJFrog Platformが使えるようになります。なお、既に他のサーバーで使われている名前は指定できません。

リモートリポジトリを作成する

リポジトリにはいくつか種類がありますが、Docker Hubのように別のリポジトリと接続するときはリモートリポジトリを使います。

f:id:ihcomega:20210705164604p:plain
「New Remote Repository」をクリックする

f:id:ihcomega:20210705165425p:plain
パッケージの種類として「Docker」を選択する

f:id:ihcomega:20210705165457p:plain
リポジトリ作成に必要な情報を入力する

  • リポジトリ名は何でも良いですが、<特徴(アプリ名、サービス名など)>-<パッケージの種類>-<リポジトリの種類>とするのが分かりやすくてオススメです。ここでは example-docker-remoteとしました
  • URLにはイメージの取得先としてDocker Hub https://registry-1.docker.io/ を指定します(デフォルトで入力されています)。
  • Docker Hubにログインした状態でイメージを取得するには、ログイン情報も入力します

Save & Finishをクリックするとリポジトリが作成され、次のような画面が表示されます。ログインなどの操作をコマンドラインで行うのに便利です。

f:id:ihcomega:20210705184940p:plain
作成したリポジトリを操作するためのヒント

Dockerイメージをpullする

例としてGradleのイメージを取得することとします。普通にDocker Hubからダウンロードする場合、 docker pull gradleとやる操作です。
Artifactoryを介してDocker Hubにアクセスできるよう、まずはログインします(Docker for Mac / Windowsを使っている場合はsudoが要りません)。 *1

sudo docker login <サーバー名>.jfrog.io

続いて、必要なイメージをArtifactory経由でpullします。 *2

docker pull <サーバー名>.jfrog.io/example-docker-remote/gradle:latest

これで初回のみDocker Hubへアクセスしますが、1度コンテナイメージを取得したらArtifactoryにキャッシュされるので、2回目以降はそこから取得するようになります。
取得済みのアーティファクトはArtifactoryのUI上でも確認することができます。

f:id:ihcomega:20210705173910p:plain

ちなみに

自分のダウンロード回数の確認

残り何回ダウンロードできるかは Download rate limit | Docker Documentation に記載されている方法で調べることが可能です。

f:id:ihcomega:20210705160759p:plain
ダウンロード回数の上限と残り (あと92/200)

リモートリポジトリへの操作のコマンド確認

上で紹介したリポジトリ作成直後に表示されるコマンドは、後からも確認できます。ArtifactsのビューでSet Me Upをクリックしてください。

f:id:ihcomega:20210705185059p:plain
右上の「Set Me Up」をクリックする

すると、さっきみたいな画面がまた表示されます。

f:id:ihcomega:20210705185115p:plain

バーチャルリポジトリの利用

今回はリモートリポジトリ経由での操作を紹介しましたが、リモートリポジトリと紐付いたバーチャルリポジトリを使うことも可能です。
バーチャルリポジトリって何?という記事はまた書く予定がありますのでそちらにて!


以上、この簡単なステップだけでDocker Hubの制限に悩まされることも減るはずです。無料でお気軽に始められるのでぜひお試しあれ😋

*1:Artifactoryのバージョンが古い場合、リポジトリにログインする必要があるかもしれません。その場合は docker login <サーバー名>-example-docker-remote.jfrog.io を試してみてください

*2:Artifactoryのバージョンによっては docker pull <サーバー名>-example-docker-remote.jfrog.io/gradle とする必要があります

ふだん実践しているインフォーマルコミュニケーションのポイント #devsumi

デベロッパーアドボケイトのよこなです。2月にデブサミ(Developers Summit)に登壇した際、「フォーマルコミュニケーションとインフォーマルコミュニケーションの使い分けについて意識していることはあるか」といったご質問をいただいたのですが、面白いテーマだなと思ったので今更ながらブログ記事にしてみます。

speakerdeck.com

資料はこちらです。JFrogとしてのスポンサーセッションでしたが製品ネタはナシで、周りの人を巻き込みながらDevOpsを少しずつ実践していこうというお話をしました。人の協力を得るからにはコミュニケーションは不可欠で、だからこそ関連する質問をいただいたということですね。
コミュニケーションがフォーマルかインフォーマルか、どういうコミュニケーションを取るかといったことはあまり意識したことがなかったので、自分の行動をふりかえって「インフォーマルコミュニケーションにおいて(無意識に)実践していること」を書いてみます。なんとなく習慣や癖として身についている思考を言葉にしてみるという記事になります。

ちなみにコミュニケーションとか人の心理とかマネジメントとか…技術ネタとかと比べるとふわっとして言語化が難しいものを語るときは何か参考文献を用意するようにしているのですが、今回は以下をヒントとして使いました。

(フォーマルコミュニケーション、インフォーマルコミュニケーションについての書籍が意外と見つからなかったのですが、私の探し方のせい?)


インフォーマルコミュニケーションは仕事の一部

はじめに私のインフォーマルコミュニケーションに対しての考え方をお伝えしておくと、仕事上の関係や状況を良くするために使うアイテムと捉えています。雑談や世間話とはいえプライベートでのそれとは異なりますし、だからこそこのような記事が書けるんだなぁと改めて考えると気付かされます。
まぁただ本当に間抜けな発言をしたり趣味でダジャレ(すごく面白い)を言ったりすることもあるので、私と一緒に働いたことのある方が見たら笑っちゃうかもしれません。そんなちゃんと考えてないでしょ、本能のまま喋ってるだけでしょ、と…。もちろんまったく頭を使っていなくてそういう時も多々あります。ハハハ。

意識しているポイント3選

ということで漸く本題ですが、仕事にプラスの影響を与えればいいなという「インフォーマルコミュニケーション」とか「オフとは違う雑談」をしている際、実践していることたち3選です。

1. 課題と目的を意識する

そもそも頭を使ってインフォーマルコミュニケーションを取りたいのはちょっとした困りごと、より良くしたい状況があるときです。

  • ◯◯さんが元気ないな
  • △△さんが最近何を思っているか謎だな
  • チームの雰囲気が良くないな
  • 連休明けで皆ポケポケしてるな

など。こうした小さな気付きをもとに、話の内容や相手、タイミング、手段などを考えてから人とコミュニケーションを取ることはよくあります。
例えば「◯◯さんが元気ないな」ということが気になったとしても、どういったアプローチを取るかは様々です。

【相手と内容】

  • ◯◯さんの話を聞いてなんで元気がないのか探ってみる
  • ◯◯さんに持ちネタを披露して元気づける
  • 今はそっとしておいてとにかく観察する
  • ムードメーカーの□□さんに話しかけて明るい雰囲気を作る

【タイミングや手段】

  • 一緒にランチしたときさりげなく
  • ミーティング前のスキマ時間に
  • 1on1で
  • チャットで

いずれも元気のない◯◯さんを思っての行動だとしても、コミュニケーションの取り方は異なります。
そして、臨機応変にこうした切り替えが出来ると良いもののなかなか難しいこともあるので、予め行動を決めておくのです。
「今日16時からミーティングあるし、◯◯さんはいつも早めに来てるから自分も早めに言って話しかけてみよう」とかですね。

手段の決め方は

  • 相手が好む方法か? (例えば、相手がいつもご飯の時おしゃべりならご飯に誘ってみたらいい)
  • 自分がうまくやれる方法か? (例えば、自分はテキストコミュニケーションが苦手だと思うなら避ければいい)
  • 実現可能か? (例えば、そもそも滅多に会えないのに「次会ったら言おう」というタイミングの計り方ではチャンスを逃すかもしれない)

といったことから自分なりにベストだと思う方法を選べば良い(慎重に考えすぎなくて良い)と思います。

2. よく聞き、相手の反応から情報を得る

当たり前じゃんと思うかもしれませんが、意外と出来ていないことも多いのがこれです。
何かを良くしたい人は、多かれ少なかれアツい思いを持っていて、それを発信することで周りを動機付けたりパワーを与えたりすることが得意だったりします。
ただ、そればかりになってしまうと相手から得られたはずの情報を見落としかねません。上に書いた、「ベストなコミュニケーションの取り方を自分なりに考える」ということも難しくなります。

ぐっと我慢して口を噤んでおき、かわりに目や耳をフル稼働させるのもコミュニケーションスキルのひとつだと言える気がします。

3. 振り返る

これは目的があってこそ出来る行動ですが、やろうと思っていたコミュニケーションを終えたら自分なりに上手く出来たかふりかえります。
もちろん全然思い通りにいかないことも多々ありますが、自分の行動も相手の反応も覚えておいて次どうするかをぼんやり考えます。

以上が意識している3つのポイントでした!要は、無計画に望まないということですね。しかしコミュニケーションって難しいよね・・・失敗もたくさんしながら磨いていきたいものです💪
この記事がネットの海を泳いで、いつか質問してくださった方にも届いたら嬉しいな!(そう思うならもっと早く書きましょう)

Jenkins PipelineでJFrog Artifactoryを使えるよう設定する

お、お久しぶりです…デベロッパーアドボケイトのよこなです。

登壇で使うデモで得た知見を少しずつブログ記事にしていきます。今回はJenkinsからArtifactoryへアーティファクトをプッシュするのに必要な設定です。
なおJenkinsには「フリースタイルジョブ」といってGUIを使って設定できるジョブもありますが、定義をJenkinsfileという設定ファイルでで書ける「Jenkins Pipeline」を使っていきます。
そうすると設定ファイルをSCM(Gitとかですね)で管理できるので設定の管理や再現が比較的楽になるというメリットがありますよ〜。
ところで素朴な疑問…フリースタイルは片仮名、Pipelineはアルファベットで表記することが多い気がします。なぜだろう。

まぁそれはいいとして、やっていくぞ〜

Artifactoryのプラグインをインストールする

まずはJenkinsでArtifactoryを使えるよう設定します。専用のプラグインがあるので簡単!

plugins.jenkins.io

左側のメニューにある「Jenkinsの設定」から「プラグインの管理」を開いて…

f:id:ihcomega:20210415213030p:plain
f:id:ihcomega:20210415214127p:plain

「利用可能」タブでArtifactoryを検索すれば出てくるのでインストールします。

f:id:ihcomega:20210415231753p:plain
※この操作は他とは別環境のまっさらなJenkinsで行ったので、スクショ内のJenkinsのバージョンが異なってUIも違います、すみません(バージョン違いでも大まかには同じです!)

プラグインの反映にはJenkinsの再起動が必要なので、止めて良いタイミング(≒ジョブの実行および実行予定がない時間帯)で忘れずに行ってくださいね。

Artifactoryと接続できるよう設定する

次はJenkinsの設定画面から「システムの設定」を開き、Artifactoryの認証情報を設定していきます。

f:id:ihcomega:20210415214055p:plain

プラグインをインストールしてあると、JFrogの設定エリアが登場します🎉

f:id:ihcomega:20210415232430p:plain

Add Artifactory Server をクリックすると以下のような入力欄が表示されるので、Artifactoryのサーバーを指定してクレデンシャルを入力すれば完了です。

f:id:ihcomega:20210415222623p:plain

Server IDはArtifactoryのサーバーを識別できるよう自分で設定しましょう。この値はJenkinsfile内でも使います。

Jenkins側の設定はこれだけです。

Jenkinsfileの記載

Jenkinsfile内で行えるArtifactoryの操作一覧はJenkinsのプラグインページにあります。ただ、ここで見られるのは取れるパラメーターとその型の情報のみなので、参考情報にしかなりませんね…。 www.jenkins.io

JFrogのwikiの方が詳細な使い方を知るのには便利です。
www.jfrog.com

Javaのパッケージマネージャー「Gradle」を例に用いますが、例えば使用するリモートリポジトリ・ローカルリポジトリを設定する際は以下のように書きます。

// リモートリポジトリ(依存関係の解決先)を指定する
rtGradleResolver(
  id: 'my-resolver', // Server IDと同じようにリポジトリを識別するために設定する
  serverId: 'my-artifactory-server', // 上で設定したServer IDはこのように使う
  repo: 'maven' // バーチャルリポジトリでもOK
)

// ローカルリポジトリ(アーティファクトの保管先)を指定する
rtGradleDeployer(
  id: 'my-deployer', // Server IDと同じようにリポジトリを識別するために設定する
  serverId: 'my-artifactory-server', // これも上で設定したServer ID
  repo: 'local-repo' // バーチャルリポジトリでもOK
)

こんな感じでJenkins越しにArtifactoryをじゃんじゃん使えるようになりました。

参考までに私がデモで使っていたJenkinsfileも貼っておきますが、 「Jenkinsfileどうやって書くの?」というブログ記事もまた書きたいと思います。
github.com

あとさらっと出てきたバーチャルリポジトリって何ぞや?とか。

ということで久々すぎる投稿になってしまいました…2021年からは技術ネタもエモい話も色々出していくので本ブログをよろしくおねがいします😤💦

2021年度 Q2(4〜6月)JFrog DevSecOps Platform ウェビナー予定

JFrog DevOps Acceleration Engineer 三宅です。

JFrog Japan では定期的に DevSecOps 関連のウェビナーを私と Developer Advocate の横田で担当してお届けしています。2021年度 Q2(4〜6月)の私担当分は JFrog 製品とソリューションを広く知っていただく期間とするべく「JFrog DevSecOps Platform」をテーマに下記計3回お届けする予定です(分量の配分などにより内容やスケジュールを変更する可能性がありますが、その場合は本ブログエントリーをアップデートします)。

  • 第1回 (2021/04/15 11:00): はじめての JFrog Platform (Getting Started with JFrog Platform)
  • 第2回 (2021/05/13 11:00): はじめての JFrog Artifactory (Getting Started with JFrog Artifactory)
  • 第3回 (2021/06/10 11:00): はじめての JFrog Xray (Getting Started with JFrog Xray)

多くの日本企業が新年度を迎えるこの4月から新たな気持ちでご参加いただければと思います!

また、ご質問やご要望などあればどしどしお寄せください。

それでは、また次回お会いできることを楽しみにしております!

CloudNative Days Spring 2021 Online でのキーノート発表資料(とお箸の御礼)

f:id:kirasoa:20210331012939j:plain

JFrog DevOps Acceleration Engineer 三宅です。

2021/03/11 に実施された CloudNative Days Spring 2021 Online に参加し、キーノートセッションで「Artifact Driven CI/CD」というタイトルでお話をしてきました。「アーティファクトを中心とした CI/CD とはどのようなものか?」という内容だったのですが、出来るだけ具体的な実装方法を通してご紹介したくデモを中心にしました。20 分の限られた時間の中で半分以上をデモに費やすというキーノートらしからぬチャレンジングな内容でしたが、多くの皆様に視聴いただいたようで本当にありがとうございました。

というわけでスライドだけ見てもあまり内容は伝わらないかと思うのですが、下記が発表スライドです。

speakerdeck.com

2021/03/30 現在まだビデオのアーカイブ視聴ができるみたいなので、デモ内容が気になった方は https://event.cloudnativedays.jp/cndo2021/talks/1021 よりご視聴ください。

また運営の皆様、素敵なお箸をどうもありがとうございました!