序章

開発者ツールがクラウドに移行するにつれ、クラウドIDE(統合開発環境)プラットフォームの作成と採用が拡大しています。 Cloud IDEを使用すると、開発者チーム間のリアルタイムコラボレーションが可能になり、非互換性を最小限に抑えて生産性を向上させる統合開発環境で作業できます。 WebブラウザからアクセスできるクラウドIDEは、あらゆるタイプの最新デバイスから利用できます。 クラウドIDEのもう1つの利点は、クラスターの能力を活用できることです。これは、単一の開発コンピューターの処理能力を大幅に超える可能性があります。

code-server は、 Microsoft Visual Studio Code であり、リモートサーバー上で実行され、ブラウザーから直接アクセスできます。 Visual Studio Codeは、統合されたGitサポート、コードデバッガー、スマートオートコンプリート、およびカスタマイズ可能で拡張可能な機能を備えた最新のコードエディターです。 つまり、さまざまなデバイスを使用し、さまざまなオペレーティングシステムを実行し、常に一貫した開発環境を手元に置くことができます。

このチュートリアルでは、DigitalOcean KubernetesクラスターにコードサーバークラウドIDEプラットフォームをセットアップし、Let’sEncrypt証明書で保護されたドメインで公開します。 最終的に、Microsoft Visual Studio CodeがKubernetesクラスターで実行され、HTTPS経由で利用可能になり、パスワードで保護されます。

前提条件

  • 接続が次のように構成されたDigitalOceanKubernetesクラスター kubectl デフォルト。 設定方法の説明 kubectl クラスターを作成すると、クラスターに接続ステップの下に表示されます。 DigitalOceanでKubernetesクラスタを作成するには、 KubernetesQuickstartを参照してください。
  • ローカルマシンにインストールされているHelm3パッケージマネージャー。 Helm 3 PackageManagerチュートリアルを使用してKubernetesクラスターにソフトウェアをインストールする方法のステップ1を完了します。
  • Ingressリソースを使用してコードサーバーを公開するために、Helmを使用してクラスターにインストールされたNginxIngressControllerとCert-Manager。 これを行うには、Helmを使用してDigitalOceanKubernetesでNginxIngressを設定する方法に従ってください。
  • Nginx Ingressによって使用されるロードバランサーを指す、ホストコードサーバーに完全に登録されたドメイン名。 このチュートリアルでは、 code-server.your_domain 全体を通して。 Namecheap でドメイン名を購入するか、 Freenom で無料でドメイン名を取得するか、選択したドメイン登録事業者を使用できます。 このドメイン名は、DigitalOceanKubernetes前提条件チュートリアルでNginxIngressを設定する方法で使用されているものとは異なる必要があります。

ステップ1—コードサーバーのインストールと公開

このセクションでは、コードサーバーをDigitalOcean Kubernetesクラスターにインストールし、NginxIngressコントローラーを使用してドメインで公開します。 また、アドミタンス用のパスワードを設定します。

Nginx Ingress Controllerの前提条件の一部として、サンプルのサービスとイングレスを作成しました。 このチュートリアルではそれらは必要ないため、次のコマンドを実行して削除できます。

  1. kubectl delete -f hello-kubernetes-first.yaml
  2. kubectl delete -f hello-kubernetes-second.yaml
  3. kubectl delete -f hello-kubernetes-ingress.yaml

kubectl delete コマンドは、渡されたときに削除するファイルを受け入れます -f パラメータ。

展開構成をローカルマシンの次の名前のファイルに保存します code-server.yaml. 次のコマンドを使用して作成します。

  1. nano code-server.yaml

次の行をファイルに追加します。

code-server.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: code-server
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: code-server
  namespace: code-server
spec:
  ingressClassName: nginx
  rules:
  - host: code-server.your_domain
    http:
      paths:
      - pathType: Prefix
        path: "/"
        backend:
          service:
            name: code-server
            port:
              number: 80
---
apiVersion: v1
kind: Service
metadata:
 name: code-server
 namespace: code-server
spec:
 ports:
 - port: 80
   targetPort: 8080
 selector:
   app: code-server
---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: code-server
  name: code-server
  namespace: code-server
spec:
  selector:
    matchLabels:
      app: code-server
  replicas: 1
  template:
    metadata:
      labels:
        app: code-server
    spec:
      containers:
      - image: codercom/code-server:latest
        imagePullPolicy: Always
        name: code-server
        env:
        - name: PASSWORD
          value: "your_password"

この構成は、名前空間、デプロイメント、サービス、および入力を定義します。 名前空間は呼ばれます code-server コードサーバーのインストールをクラスターの残りの部分から分離します。 展開は、の1つのレプリカで構成されます codercom/code-server Dockerイメージ、およびという名前の環境変数 PASSWORD アクセス用のパスワードを指定します。

The code-server サービスは、ポートでポッド(デプロイメントの一部として作成された)を内部的に公開します 80. ファイルで定義されているIngressは、IngressControllerが nginx、そしてそれは code-server.your_domain ドメインはサービスから提供されます。

交換することを忘れないでください your_password ご希望のパスワードを使用して、 code-server.your_domain 目的のドメインで、NginxIngressControllerのロードバランサーをポイントします。

ファイルを保存して閉じます。

次に、次のコマンドを実行して、Kubernetesで構成を作成します。

  1. kubectl apply -f code-server.yaml

次の出力が表示されます。

Output
namespace/code-server created ingress.networking.k8s.io/code-server created service/code-server created deployment.apps/code-server created

次のコマンドを実行すると、コードサーバーポッドが使用可能になるのを確認できます。

  1. kubectl get pods -w -n code-server

出力は次のようになります。

Output
NAME READY STATUS RESTARTS AGE code-server-6c4745497c-l2n7w 0/1 ContainerCreating 0 12s

ステータスが Running、code-serverはクラスターへのインストールを完了しました。

これで、ブラウザでドメインに移動できます。 code-serverのログインプロンプトが表示されます。

code-serverがパスワードを要求しています。 前の手順で設定したものを入力し、 EnterIDEを押します。 ここでcode-serverに入り、すぐにそのエディターGUIが表示されます。

コードサーバーをKubernetesクラスターにインストールし、ドメインで利用できるようにしました。 また、パスワードを使用してログインする必要があることも確認しました。 次に、Cert-Managerを使用して無料のLet’sEncrypt証明書で保護します。

ステップ2—コードサーバーの展開を保護する

このセクションでは、Cert-Managerが自動的に作成するIngressにLet’s Encrypt証明書を適用することにより、コードサーバーのインストールを保護します。 この手順を完了すると、コードサーバーのインストールにHTTPS経由でアクセスできるようになります。

開ける code-server.yaml 編集用:

  1. nano code-server.yaml

強調表示された行をファイルに追加し、サンプルドメインを独自のドメインに置き換えてください。

code-server.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: code-server
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: code-server
  namespace: code-server
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: nginx
  tls:
  - hosts:
    - code-server.your_domain
    secretName: codeserver-prod
  rules:
    - host: code-server.your_domain
    http:
      paths:
      - backend:
          service:
            name: code-server
            port:
              number: 80
...

まず、このIngressがクラスター発行者を使用することを指定します letsencrypt-prod 前提条件の一部として作成した証明書をプロビジョニングします。 次に、セキュリティで保護されるドメインを指定します。 tls セクション、およびあなたの名前 Secret それらを保持します。

ファイルを保存して閉じます。

次のコマンドを実行して、変更をKubernetesクラスターに適用します。

  1. kubectl apply -f code-server.yaml

Let’sEncryptが証明書をプロビジョニングするまで数分待つ必要があります。 それまでの間、次のコマンドの出力を確認することで、進行状況を追跡できます。

  1. kubectl describe certificate codeserver-prod -n code-server

終了すると、出力の終わりは次のようになります。

Output
Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Issuing 44m cert-manager Issuing certificate as Secret does not exist Normal Generated 44m cert-manager Stored new private key in temporary Secret resource "codeserver-prod-m7r8v" Normal Requested 44m cert-manager Created new CertificateRequest resource "codeserver-prod-sc7xm" Normal Issuing 44m cert-manager The certificate has been successfully issued

これで、ブラウザでドメインを更新できます。 ブラウザのアドレスバーの左側に、接続が安全であることを示す南京錠が表示されます。

このステップでは、コードサーバーのデプロイメントを保護するようにIngressを構成しました。 これで、コードサーバーのユーザーインターフェイスを確認できます。

ステップ3—コードサーバーインターフェイスの調査

このセクションでは、コードサーバーインターフェイスのいくつかの機能について説明します。 code-serverはクラウドで実行されるVisualStudioCodeであるため、スタンドアロンデスクトップエディションと同じインターフェイスを備えています。

IDEの左側には、アクティビティバーと呼ばれるサイドパネルで最も一般的に使用される機能を開く6つのボタンが縦に並んでいます。

このバーはカスタマイズ可能です。 これらのビューを並べ替えたり、バーから削除したりできます。 デフォルトでは、最初のビューは、プロジェクトの構造のツリーのようなナビゲーションを提供するエクスプローラーパネルを開きます。 ここでフォルダとファイルを管理できます—必要に応じて、それらの作成、削除、移動、および名前の変更を行います。 次のビューは、検索および置換機能へのアクセスを提供します。

これに続いて、デフォルトの順序で、Gitのようなソース管理システムのビューが表示されます。 Visual Studio Codeは、他のソース管理プロバイダーもサポートしています。このドキュメントで、エディターを使用したソース管理ワークフローの詳細な手順を確認できます。 現在空のプロジェクト(デフォルトで開かれている)はGitリポジトリとして初期化されていないため、VisualStudioCodeではそのように初期化することができます。

アクティビティバーのデバッガオプションは、パネルでデバッグするためのすべての一般的なアクションを提供します。 Visual Studio Codeには、Node.jsランタイムデバッガーとJavascriptに変換される任意の言語のサポートが組み込まれています。 他の言語の場合は、必要なデバッガーに拡張機能をインストールできます。 デバッグ構成をに保存できます launch.json ファイル。

アクティビティバーの最終ビューには、マーケットプレイスで利用可能な拡張機能にアクセスするためのメニューが表示されます。

GUIの中心部分はエディターであり、コード編集用にタブで区切ることができます。 編集ビューをグリッドシステムまたはサイドバイサイドファイルに変更できます。

ファイルメニューから新しいファイルを作成すると、空のファイルが新しいタブで開きます。 保存すると、ファイルの名前がエクスプローラーのサイドパネルに表示されます。 フォルダの作成は、エクスプローラのサイドバーを右クリックして新しいフォルダを選択することで実行できます。 フォルダの名前をクリックしたり、ファイルやフォルダを階層の上位にドラッグアンドドロップして新しい場所に移動したりすることで、フォルダを展開できます。

を押すと端末にアクセスできます CTRL+SHIFT+`、またはハンバーガーメニューの Terminal を押し、 NewTerminalを選択します。 ターミナルが下のパネルで開き、その作業ディレクトリがプロジェクトのワークスペースに設定されます。このワークスペースには、エクスプローラのサイドパネルに表示されるファイルとフォルダが含まれています。

クラスタ上のデプロイメントを破棄する場合は、次のコマンドを実行します。

  1. kubectl delete -f code-server.yaml

コードサーバーインターフェイスの概要を調べ、最も一般的に使用される機能のいくつかを確認しました。

結論

これで、DigitalOceanKubernetesクラスターにインストールされた多用途のクラウドIDEであるコードサーバーができました。 ソースコードとドキュメントを個別に処理することも、チームと協力することもできます。 クラスターでクラウドIDEを実行すると、テスト、ダウンロード、およびより徹底的または厳密なコンピューティングのためのより多くのパワーが提供されます。 詳細については、 Visual Studio Codeのドキュメントを参照して、コードサーバーの他のコンポーネントの追加機能と詳細な手順を確認してください。