著者は、寄付プログラムの一環としてフリー・オープンソース基金を受け取ることを選択しました。
はじめに
開発者ツールがクラウドに移行する中、クラウドIDE(統合開発環境)プラットフォームの作成と採用が増えています。クラウドIDEは、ウェブブラウザからあらゆる種類のモダンデバイスからアクセス可能であり、リアルタイムの共同作業シナリオに多くの利点を提供します。クラウドIDEで作業することは、チーム全体のために統一された開発およびテスト環境を提供し、プラットフォームの互換性の問題を最小限に抑えます。クラウド技術をベースにしているため、クラスターを利用してタスクを実行することができ、これにより単一の開発コンピュータのパワーと信頼性を大幅に上回ることが可能です。
Eclipse Theiaは、リモートサーバー上で実行され、ウェブブラウザからアクセス可能な拡張可能なクラウドIDEです。外観上は、Microsoft Visual Studio Codeと類似した見た目と振る舞いに設計されており、多くのプログラミング言語をサポートし、柔軟なレイアウト、統合ターミナルを備えています。Eclipse Theiaを他のクラウドIDEソフトウェアから区別するのは、その拡張性です。カスタム拡張機能を使用して変更でき、ニーズに合ったクラウドIDEを作成することができます。
このチュートリアルでは、デジタルオーシャンのKubernetesクラスターにEclipse TheiaクラウドIDEプラットフォームのデフォルトバージョンをセットアップし、Let’s Encrypt証明書で保護し、訪問者に認証を要求してドメインで公開します。最終的には、KubernetesクラスターでHTTPS経由でEclipse Theiaを実行し、訪問者にログインする必要があります。
前提条件
- A DigitalOcean Kubernetes cluster with your connection configured as the
kubectl
default. Instructions on how to configurekubectl
are shown under the Connect to your Cluster step when you create your cluster. To create a Kubernetes cluster on DigitalOcean, read the Kubernetes Quickstart. - ローカルマシンにHelm 3パッケージマネージャーがインストールされていること。Helm 3パッケージマネージャーを使用したKubernetesクラスターにソフトウェアをインストールする方法のステップ1を完了してください。
- 外部DNSをIngressリソースで使用するために、Helmを使用してクラスターにNginx Ingress Controllerをインストールする必要があります。これを行うには、デジタルオーシャンKubernetesでHelmを使用してNginx Ingressをセットアップする方法に従ってください。
- A fully registered domain name. This tutorial will use
theia.your_domain
throughout. You can purchase a domain name on Namecheap, get one for free on Freenom, or use the domain registrar of your choice.
ステップ1 — Eclipse Theiaのインストールと公開
Eclipse TheiaをDigitalOcean Kubernetesクラスターにインストールします。次に、Nginx Ingressを使用して、希望のドメインに公開します。
前提条件として2つの例のデプロイメントとリソースを作成したので、次のコマンドを実行して自由に削除できます:
このチュートリアルでは、デプロイメント構成をローカルマシンに保存し、eclipse-theia.yaml
という名前のファイルに保存します。次のコマンドを使用して作成します:
ファイルに以下の行を追加します:
この構成は、Namespace、Deployment、Service、およびIngressを定義しています。Namespaceはtheia
と呼ばれ、Eclipse Theiaに関連するすべてのKubernetesオブジェクトをクラスターの残りから分離して含みます。 Deploymentには、コンテナーでポート3000
が公開されたTheia Dockerイメージの1つのインスタンスが含まれています。 Serviceは、Deploymentを検索し、コンテナーポートを通常のHTTPポートである80
にリマップし、クラスター内でEclipse Theiaへのアクセスを許可します。
Ingressには、外部ポート80
でServiceを提供するルールが含まれています。その注釈では、リクエスト処理にNginx Ingress Controllerを使用するように指定されています。theia.your_domain
をクラスターのロードバランサーにポイントした希望のドメインで置き換えて、ファイルを保存して閉じてください。
ファイルを保存して閉じます。
次に、次のコマンドを実行してKubernetesで構成を作成します:
出力は次のようになります:
Outputnamespace/theia created
ingress.networking.k8s.io/theia-next created
service/theia-next created
deployment.apps/theia-next created
Eclipse TheiaのPodの作成を観察するには、次を実行します:
出力は次のようになります:
OutputNAME READY STATUS RESTARTS AGE
theia-next-6f6b98dd4f-qknhb 1/1 Running 0 2m30s
しばらくすると、ステータスがRUNNING
に変わります。これは、Eclipse Theiaがクラスタに正常にインストールされたことを意味します。
ブラウザでドメインに移動してください。デフォルトのEclipse TheiaエディタGUIが表示されます:
あなたはEclipse TheiaをDigitalOcean Kubernetesクラスタに展開し、それを希望のドメインでIngressで公開しました。次に、Eclipse Theiaデプロイメントへのアクセスをセキュリティで保護します。
ステップ2 — ドメインのログイン認証の有効化
このステップでは、Eclipse Theiaデプロイメントのユーザー名とパスワード認証を有効にします。まず、htpasswd
ユーティリティを使用して有効なログインの組み合わせのリストを作成します。次に、そのリストを含むKubernetesシークレットを作成し、Ingressをそれに従って訪問者を認証するように構成します。最終的には、訪問者が有効なユーザー名とパスワードの組み合わせを入力した場合にのみ、ドメインにアクセスできるようになります。これにより、ゲストや他の不要な訪問者がEclipse Theiaにアクセスするのを防ぎます。
まず、パッケージマネージャーキャッシュを更新します:
次に、次のコマンドを実行してシステムに htpasswd
をインストールします:
リストを auth
という名前のファイルに保存します。次のコマンドを実行して作成します:
このファイルは auth
という名前である必要があります。なぜなら、Nginx Ingress Controllerはシークレットに data.auth
というキーを含むことを期待しているからです。欠落している場合、コントローラーはHTTP 503 Service Unavailable
ステータスを返します。
auth
にユーザー名とパスワードの組み合わせを追加するには、次のコマンドを実行します:
希望するユーザー名で username
を置き換えてください。関連するパスワードを入力するように求められ、その組み合わせが auth
ファイルに追加されます。これを追加したいユーザー数だけ繰り返すことができます。
注意: システムに htpasswd
がインストールされていない場合は、代わりにDocker化されたバージョンを使用できます。
マシンにDockerがインストールされている必要があります。その手順については、公式ドキュメントを参照してください。
次のコマンドを実行して、Docker化されたバージョンを実行します:
<username>
を使用したいユーザー名に置き換えてください。パスワードが求められます。ハッシュ化されたログインの組み合わせがコンソールに書き出され、手動でそれをauth
ファイルの末尾に追加する必要があります。このプロセスを追加するログイン数だけ繰り返してください。
完了したら、次のコマンドを実行してファイルの内容でKubernetes内に新しいシークレットを作成します:
シークレットは次のコマンドで確認できます:
出力は次のようになります:
次に、シークレットを使用するようにIngressを編集する必要があります。編集用にデプロイメント構成を開きます:
ファイルに次の行を追加します:
最初に、auth-type
アノテーションで認証タイプがbasic
であることを指定します。これは、Nginxがユーザーにユーザー名とパスワードの入力を要求することを意味します。次に、auth-secret
で、有効な組み合わせのリストを含むシークレットがtheia-basic-auth
であることを指定します。これは、さきほど作成したものです。残りのauth-realm
アノテーションでは、ユーザーに認証が必要な理由の説明として表示されるメッセージが指定されます。このフィールドに含まれるメッセージはお好みで変更できます。
ファイルを保存して閉じます。
変更をクラスタに伝播するには、次のコマンドを実行します:
出力は次のようになります:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
ブラウザでドメインに移動すると、ログインを求められるようになります。
Ingressに基本的なログイン認証を有効にし、ハッシュ化されたユーザー名とパスワードの組み合わせを含むシークレットを使用するように構成しました。次のステップでは、TLS証明書を追加してアクセスをさらに保護し、自分とEclipse Theiaデプロイメント間のトラフィックが暗号化されるようにします。
ステップ3 — Let’s Encrypt HTTPS証明書の適用
次に、IngressにLet’s Encrypt証明書を適用して、Cert-Managerが自動的にプロビジョニングします。このステップを完了すると、Eclipse TheiaインストールにHTTPS経由でアクセスできるようになります。
eclipse-theia.yaml
を編集します:
以下の強調表示された行をファイルに追加し、プレースホルダードメインをご自身のものに置き換えてください:
まず、先行条件の一環として作成したletsencrypt-prod
ClusterIssuerを、このIngressの証明書をプロビジョニングするために使用する発行者として指定します。次に、tls
セクションで、セキュリティが確保される必要のある正確なドメインと、それらの証明書を保持するシークレットの名前を指定します。
ファイルを保存して終了します。
次のコマンドを実行して、クラスターに変更を適用します:
出力は次のようになります:
Outputnamespace/theia unchanged
ingress.networking.k8s.io/theia-next configured
service/theia-next unchanged
deployment.apps/theia-next unchanged
証明書のプロビジョニングと完全な適用には数分かかります。次のコマンドの出力を観察することで進捗状況を追跡できます:
終了すると、出力の最後は次のようになります:
Output...
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal GeneratedKey 42m cert-manager Generated a new private key
Normal Requested 42m cert-manager Created new CertificateRequest resource "theia-prod-3785736528"
Normal Issued 42m cert-manager Certificate issued successfully
ブラウザでドメインを更新してください。アドレスバーの左端には、接続が安全であることを示す緑の南京錠が表示されます。
Let’s Encrypt証明書を使用するようにIngressを構成しましたので、Eclipse Theiaの展開がより安全になりました。これで、デフォルトのEclipse Theiaユーザーインターフェイスを確認できます。
ステップ4 — Eclipse Theia インターフェースの使用
このセクションでは、Eclipse Theiaインターフェースの機能のいくつかを探ります。
IDEの左側には、サイドパネルで最もよく使用される機能を開く4つのボタンの垂直列があります。
このバーはカスタマイズ可能ですので、これらのビューを異なる順序に移動したり、バーから削除したりすることができます。デフォルトでは、最初のビューがエクスプローラーパネルを開き、プロジェクトの構造をツリー状にナビゲートします。ここで、フォルダやファイルを作成、削除、移動、名前変更することができます。
ファイルメニューを通じて新しいファイルを作成すると、新しいタブで空のファイルが開きます。保存すると、エクスプローラーサイドパネルにファイルの名前が表示されます。フォルダを作成するには、エクスプローラーサイドバーを右クリックし、新しいフォルダをクリックします。フォルダを展開するには、その名前をクリックしたり、ファイルやフォルダを階層の上部にドラッグアンドドロップして新しい場所に移動させることもできます。
次のオプションでは、検索と置換機能にアクセスできます。その次に、Gitなどの使用しているソースコントロールシステムの表示が提供されます。
次の表示は、デバッガーオプションであり、パネル内のデバッグに関するすべての一般的なアクションが提供されます。デバッグ構成はlaunch.json
ファイルに保存できます。
最後のオプションでは、拡張機能を表示およびインストールできます:
GUIの中心部はエディタであり、コード編集用のタブで分割できます。編集ビューをグリッドシステムに変更したり、サイドバイサイドのファイルに変更したりできます。Eclipse Theiaは、すべての現代のIDEと同様に、コードのシンタックスハイライトをサポートしています。
ターミナルにアクセスするには、CTRL+SHIFT+`
を入力するか、上部メニューのターミナルをクリックして新しいターミナルを選択します。ターミナルは下部パネルに開き、その作業ディレクトリはプロジェクトのワークスペースに設定されます。ワークスペースにはエクスプローラーサイドパネルに表示されるファイルとフォルダが含まれています。
クラスター上のEclipse Theiaデプロイメントを破棄する場合は、次のコマンドを実行してください:
あなたはEclipse Theiaのインターフェースの高レベルな概要を探索し、最も一般的に使用される機能のいくつかを見直しました。
結論
今、あなたはDigitalOcean KubernetesクラスターにEclipse Theia、多機能なクラウドIDEをインストールしました。それを無料のLet’s Encrypt TLS証明書でセキュリティで保護し、訪問者からのログインを必要とするようにインスタンスを設定しました。個別にソースコードやドキュメントで作業したり、チームと共同作業したりできます。また、追加の機能が必要な場合は、独自のEclipse Theiaのバージョンをビルドすることもできます。その方法の詳細については、Theiaドキュメントをご覧ください。