mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore(docs): update docs for correct use of shell and console and enforce linewidth (#9245)
This commit is contained in:
+38
-13
@@ -1,6 +1,10 @@
|
||||
# Amazon Web Services
|
||||
|
||||
This guide is designed to get you up and running with a Coder proof-of-concept VM on AWS EC2 using a [Coder-provided AMI](https://github.com/coder/packages). If you are familiar with EC2 however, you can use our [install script](../install/install.sh.md) to run Coder on any popular Linux distribution.
|
||||
This guide is designed to get you up and running with a Coder proof-of-concept
|
||||
VM on AWS EC2 using a [Coder-provided AMI](https://github.com/coder/packages).
|
||||
If you are familiar with EC2 however, you can use our
|
||||
[install script](../install/install.sh.md) to run Coder on any popular Linux
|
||||
distribution.
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -8,34 +12,48 @@ This guide assumes your AWS account has `AmazonEC2FullAccess` permissions.
|
||||
|
||||
## Launch a Coder instance from the from AWS Marketplace
|
||||
|
||||
We publish an Ubuntu 22.04 AMI with Coder and Docker pre-installed. Search for `Coder` in the EC2 "Launch an Instance" screen or [launch directly from the marketplace](https://aws.amazon.com/marketplace/pp/prodview-5gxjyur2vc7rg).
|
||||
We publish an Ubuntu 22.04 AMI with Coder and Docker pre-installed. Search for
|
||||
`Coder` in the EC2 "Launch an Instance" screen or
|
||||
[launch directly from the marketplace](https://aws.amazon.com/marketplace/pp/prodview-5gxjyur2vc7rg).
|
||||
|
||||

|
||||
|
||||
Be sure to keep the default firewall (SecurityGroup) options checked so you can connect over HTTP, HTTPS, and SSH.
|
||||
Be sure to keep the default firewall (SecurityGroup) options checked so you can
|
||||
connect over HTTP, HTTPS, and SSH.
|
||||
|
||||

|
||||
|
||||
We recommend keeping the default instance type (`t2.xlarge`, 4 cores and 16 GB memory) if you plan on provisioning Docker containers as workspaces on this EC2 instance. Keep in mind this platforms is intended for proof-of-concept deployments and you should adjust your infrastructure when preparing for production use. See: [Scaling Coder](../admin/scale.md)
|
||||
We recommend keeping the default instance type (`t2.xlarge`, 4 cores and 16 GB
|
||||
memory) if you plan on provisioning Docker containers as workspaces on this EC2
|
||||
instance. Keep in mind this platforms is intended for proof-of-concept
|
||||
deployments and you should adjust your infrastructure when preparing for
|
||||
production use. See: [Scaling Coder](../admin/scale.md)
|
||||
|
||||
Be sure to add a keypair so that you can connect over SSH to further [configure Coder](../admin/configure.md).
|
||||
Be sure to add a keypair so that you can connect over SSH to further
|
||||
[configure Coder](../admin/configure.md).
|
||||
|
||||
After launching the instance, wait 30 seconds and navigate to the public IPv4 address. You should be redirected to a public tunnel URL.
|
||||
After launching the instance, wait 30 seconds and navigate to the public IPv4
|
||||
address. You should be redirected to a public tunnel URL.
|
||||
|
||||
<video autoplay playsinline loop>
|
||||
<source src="https://github.com/coder/coder/blob/main/docs/images/platforms/aws/launch.mp4?raw=true" type="video/mp4">
|
||||
Your browser does not support the video tag.
|
||||
</video>
|
||||
|
||||
That's all! Use the UI to create your first user, template, and workspace. We recommend starting with a Docker template since the instance has Docker pre-installed.
|
||||
That's all! Use the UI to create your first user, template, and workspace. We
|
||||
recommend starting with a Docker template since the instance has Docker
|
||||
pre-installed.
|
||||
|
||||

|
||||
|
||||
## Configuring Coder server
|
||||
|
||||
Coder is primarily configured by server-side flags and environment variables. Given you created or added key-pairs when launching the instance, you can [configure your Coder deployment](../admin/configure.md) by logging in via SSH or using the console:
|
||||
Coder is primarily configured by server-side flags and environment variables.
|
||||
Given you created or added key-pairs when launching the instance, you can
|
||||
[configure your Coder deployment](../admin/configure.md) by logging in via SSH
|
||||
or using the console:
|
||||
|
||||
```sh
|
||||
```shell
|
||||
ssh ubuntu@<ec2-public-IPv4>
|
||||
sudo vim /etc/coder.d/coder.env # edit config
|
||||
sudo service coder restart # restart Coder
|
||||
@@ -43,15 +61,22 @@ sudo service coder restart # restart Coder
|
||||
|
||||
## Give developers EC2 workspaces (optional)
|
||||
|
||||
Instead of running containers on the Coder instance, you can offer developers full EC2 instances with the [aws-linux](https://github.com/coder/coder/tree/main/examples/templates/aws-linux) template.
|
||||
Instead of running containers on the Coder instance, you can offer developers
|
||||
full EC2 instances with the
|
||||
[aws-linux](https://github.com/coder/coder/tree/main/examples/templates/aws-linux)
|
||||
template.
|
||||
|
||||
Before you add the AWS template from the dashboard or CLI, you'll need to modify the instance IAM role.
|
||||
Before you add the AWS template from the dashboard or CLI, you'll need to modify
|
||||
the instance IAM role.
|
||||
|
||||

|
||||
|
||||
You must create or select a role that has `EC2FullAccess` permissions or a limited [Coder-specific permissions policy](https://github.com/coder/coder/tree/main/examples/templates/aws-linux#required-permissions--policy).
|
||||
You must create or select a role that has `EC2FullAccess` permissions or a
|
||||
limited
|
||||
[Coder-specific permissions policy](https://github.com/coder/coder/tree/main/examples/templates/aws-linux#required-permissions--policy).
|
||||
|
||||
From there, you can import the AWS starter template in the dashboard and begin creating VM-based workspaces.
|
||||
From there, you can import the AWS starter template in the dashboard and begin
|
||||
creating VM-based workspaces.
|
||||
|
||||

|
||||
|
||||
|
||||
+51
-19
@@ -9,23 +9,33 @@ This guide assumes you have full administrator privileges on Azure.
|
||||
|
||||
## Create An Azure VM
|
||||
|
||||
From the Azure Portal, navigate to the Virtual Machines Dashboard. Click Create, and select creating a new Azure Virtual machine .
|
||||
From the Azure Portal, navigate to the Virtual Machines Dashboard. Click Create,
|
||||
and select creating a new Azure Virtual machine .
|
||||
|
||||
<img src="../images/platforms/azure/azure1.jpg">
|
||||
|
||||
This will bring you to the `Create a virtual machine` page. Select the subscription group of your choice, or create one if necessary.
|
||||
This will bring you to the `Create a virtual machine` page. Select the
|
||||
subscription group of your choice, or create one if necessary.
|
||||
|
||||
Next, name the VM something relevant to this project using the naming convention of your choice. Change the region to something more appropriate for your current location. For this tutorial, we will use the base selection of the Ubuntu Gen2 Image and keep the rest of the base settings for this image the same.
|
||||
Next, name the VM something relevant to this project using the naming convention
|
||||
of your choice. Change the region to something more appropriate for your current
|
||||
location. For this tutorial, we will use the base selection of the Ubuntu Gen2
|
||||
Image and keep the rest of the base settings for this image the same.
|
||||
|
||||
<img src="../images/platforms/azure/azure2.png">
|
||||
|
||||
<img src="../images/platforms/azure/azure3.png">
|
||||
|
||||
Up next, under `Inbound port rules` modify the Select `inbound ports` to also take in `HTTPS` and `HTTP`.
|
||||
Up next, under `Inbound port rules` modify the Select `inbound ports` to also
|
||||
take in `HTTPS` and `HTTP`.
|
||||
|
||||
<img src="../images/platforms/azure/azure4.png">
|
||||
|
||||
The set up for the image is complete at this stage. Click `Review and Create` - review the information and click `Create`. A popup will appear asking you to download the key pair for the server. Click `Download private key and create resource` and place it into a folder of your choice on your local system.
|
||||
The set up for the image is complete at this stage. Click `Review and Create` -
|
||||
review the information and click `Create`. A popup will appear asking you to
|
||||
download the key pair for the server. Click
|
||||
`Download private key and create resource` and place it into a folder of your
|
||||
choice on your local system.
|
||||
|
||||
<img src="../images/platforms/azure/azure5.png">
|
||||
|
||||
@@ -33,13 +43,20 @@ Click `Return to create a virtual machine`. Your VM will start up!
|
||||
|
||||
<img src="../images/platforms/azure/azure6.png">
|
||||
|
||||
Click `Go to resource` in the virtual machine and copy the public IP address. You will need it to SSH into the virtual machine via your local machine.
|
||||
Click `Go to resource` in the virtual machine and copy the public IP address.
|
||||
You will need it to SSH into the virtual machine via your local machine.
|
||||
|
||||
Follow [these instructions](https://learn.microsoft.com/en-us/azure/virtual-machines/linux-vm-connect?tabs=Linux) to SSH into the virtual machine. Once on the VM, you can run and install Coder using your method of choice. For the fastest install, we recommend running Coder as a system service.
|
||||
Follow
|
||||
[these instructions](https://learn.microsoft.com/en-us/azure/virtual-machines/linux-vm-connect?tabs=Linux)
|
||||
to SSH into the virtual machine. Once on the VM, you can run and install Coder
|
||||
using your method of choice. For the fastest install, we recommend running Coder
|
||||
as a system service.
|
||||
|
||||
## Install Coder
|
||||
|
||||
For this instance, we will run Coder as a system service, however you can run Coder a multitude of different ways. You can learn more about those [here](https://coder.com/docs/coder-oss/latest/install).
|
||||
For this instance, we will run Coder as a system service, however you can run
|
||||
Coder a multitude of different ways. You can learn more about those
|
||||
[here](https://coder.com/docs/coder-oss/latest/install).
|
||||
|
||||
In the Azure VM instance, run the following command to install Coder
|
||||
|
||||
@@ -61,46 +78,61 @@ The following command will get you information about the Coder launch service
|
||||
journalctl -u coder.service -b
|
||||
```
|
||||
|
||||
This will return a series of logs related to running Coder as a system service. Embedded in the logs is the Coder Access URL.
|
||||
This will return a series of logs related to running Coder as a system service.
|
||||
Embedded in the logs is the Coder Access URL.
|
||||
|
||||
Copy the URL and run the following command to create the first user, either on your local machine or in the instance terminal.
|
||||
Copy the URL and run the following command to create the first user, either on
|
||||
your local machine or in the instance terminal.
|
||||
|
||||
```shell
|
||||
coder login <url***.try.coder.app>
|
||||
```
|
||||
|
||||
Fill out the prompts. Be sure to save use email and password as these are your admin username and password.
|
||||
Fill out the prompts. Be sure to save use email and password as these are your
|
||||
admin username and password.
|
||||
|
||||
You can now access Coder on your local machine with the relevant `***.try.coder.app` URL and logging in with the username and password.
|
||||
You can now access Coder on your local machine with the relevant
|
||||
`***.try.coder.app` URL and logging in with the username and password.
|
||||
|
||||
## Creating and Uploading Your First Template
|
||||
|
||||
First, run `coder template init` to create your first template. You’ll be given a list of possible templates to use. This tutorial will show you how to set up your Coder instance to create a Linux based machine on Azure.
|
||||
First, run `coder template init` to create your first template. You’ll be given
|
||||
a list of possible templates to use. This tutorial will show you how to set up
|
||||
your Coder instance to create a Linux based machine on Azure.
|
||||
|
||||
<img src="../images/platforms/azure/azure9.png">
|
||||
|
||||
Press `enter` to select `Develop in Linux on Azure` template. This will return the following:
|
||||
Press `enter` to select `Develop in Linux on Azure` template. This will return
|
||||
the following:
|
||||
|
||||
<img src="../images/platforms/azure/azure10.png">
|
||||
|
||||
To get started using the Azure template, install the Azure CLI by following the instructions [here](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=apt). Run `az login` and follow the instructions to configure the Azure command line.
|
||||
To get started using the Azure template, install the Azure CLI by following the
|
||||
instructions
|
||||
[here](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli-linux?pivots=apt).
|
||||
Run `az login` and follow the instructions to configure the Azure command line.
|
||||
|
||||
Coder is running as a system service, which creates the system user `coder` for handling processes. The Coder user will require access to the Azure credentials to initialize the template.
|
||||
Coder is running as a system service, which creates the system user `coder` for
|
||||
handling processes. The Coder user will require access to the Azure credentials
|
||||
to initialize the template.
|
||||
|
||||
Run the following commands to copy the Azure credentials and give the `coder` user access to them:
|
||||
Run the following commands to copy the Azure credentials and give the `coder`
|
||||
user access to them:
|
||||
|
||||
```shell
|
||||
sudo cp -r ~/.azure /home/coder/.azure
|
||||
sudo chown -R coder:coder /home/coder/.azure/
|
||||
```
|
||||
|
||||
Navigate to the `./azure-linux` folder where you created your template and run the following command to put the template on your Coder instance.
|
||||
Navigate to the `./azure-linux` folder where you created your template and run
|
||||
the following command to put the template on your Coder instance.
|
||||
|
||||
```shell
|
||||
coder templates create
|
||||
```
|
||||
|
||||
Congrats! You can now navigate to your Coder dashboard and use this Linux on Azure template to create a new workspace!
|
||||
Congrats! You can now navigate to your Coder dashboard and use this Linux on
|
||||
Azure template to create a new workspace!
|
||||
|
||||
## Next Steps
|
||||
|
||||
|
||||
+24
-13
@@ -6,8 +6,8 @@ Coder with Docker has the following advantages:
|
||||
- Workspace images are easily configured
|
||||
- Workspaces share resources for burst operations
|
||||
|
||||
> Note that the below steps are only supported on a Linux distribution.
|
||||
> If on macOS, please [run Coder via the standalone binary](../install//binary.md).
|
||||
> Note that the below steps are only supported on a Linux distribution. If on
|
||||
> macOS, please [run Coder via the standalone binary](../install//binary.md).
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -29,18 +29,23 @@ Coder with Docker has the following advantages:
|
||||
ghcr.io/coder/coder:latest
|
||||
```
|
||||
|
||||
> This will use Coder's tunnel and built-in database. See our [Docker documentation](../install/docker.md) for other configuration options such as running on localhost, using docker-compose, and external PostgreSQL.
|
||||
> This will use Coder's tunnel and built-in database. See our
|
||||
> [Docker documentation](../install/docker.md) for other configuration
|
||||
> options such as running on localhost, using docker-compose, and external
|
||||
> PostgreSQL.
|
||||
|
||||
1. In new terminal, [install Coder](../install/) in order to connect to your deployment through the CLI.
|
||||
1. In new terminal, [install Coder](../install/) in order to connect to your
|
||||
deployment through the CLI.
|
||||
|
||||
```console
|
||||
curl -L https://coder.com/install.sh | sh
|
||||
```
|
||||
|
||||
1. Run `coder login <access url>` and follow the
|
||||
interactive instructions to create your user.
|
||||
1. Run `coder login <access url>` and follow the interactive instructions to
|
||||
create your user.
|
||||
|
||||
1. Pull the "Docker" example template using the interactive `coder templates init`:
|
||||
1. Pull the "Docker" example template using the interactive
|
||||
`coder templates init`:
|
||||
|
||||
```console
|
||||
coder templates init
|
||||
@@ -49,8 +54,7 @@ Coder with Docker has the following advantages:
|
||||
|
||||
1. Push up the template with `coder templates create`
|
||||
|
||||
1. Open the dashboard in your browser to create your
|
||||
first workspace:
|
||||
1. Open the dashboard in your browser to create your first workspace:
|
||||
|
||||
<img src="../images/platforms/docker/login.png">
|
||||
|
||||
@@ -74,18 +78,25 @@ Coder with Docker has the following advantages:
|
||||
|
||||
You can use a remote Docker host in 2 ways.
|
||||
|
||||
1. Over SSH. See [here](https://registry.terraform.io/providers/kreuzwerker/docker/latest/docs#remote-hosts) for details.
|
||||
2. Over TCP. See [here](https://registry.terraform.io/providers/kreuzwerker/docker/latest/docs#certificate-information) for details.
|
||||
1. Over SSH. See
|
||||
[here](https://registry.terraform.io/providers/kreuzwerker/docker/latest/docs#remote-hosts)
|
||||
for details.
|
||||
2. Over TCP. See
|
||||
[here](https://registry.terraform.io/providers/kreuzwerker/docker/latest/docs#certificate-information)
|
||||
for details.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Docker-based workspace is stuck in "Connecting..."
|
||||
|
||||
Ensure you have an externally-reachable `CODER_ACCESS_URL` set. See [troubleshooting templates](../templates/index.md#Troubleshooting) for more steps.
|
||||
Ensure you have an externally-reachable `CODER_ACCESS_URL` set. See
|
||||
[troubleshooting templates](../templates/index.md#Troubleshooting) for more
|
||||
steps.
|
||||
|
||||
### Permission denied while trying to connect to the Docker daemon socket
|
||||
|
||||
See Docker's official documentation to [Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).
|
||||
See Docker's official documentation to
|
||||
[Manage Docker as a non-root user](https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user).
|
||||
|
||||
## Next Steps
|
||||
|
||||
|
||||
@@ -1,22 +1,31 @@
|
||||
# Google Cloud Platform
|
||||
|
||||
In this guide, you will learn how to deploy the Coder control plane instance and your first template.
|
||||
In this guide, you will learn how to deploy the Coder control plane instance and
|
||||
your first template.
|
||||
|
||||
## Requirements
|
||||
|
||||
This guide assumes you have `roles/compute.instanceAdmin.v1` access to your Google Cloud Platform project.
|
||||
This guide assumes you have `roles/compute.instanceAdmin.v1` access to your
|
||||
Google Cloud Platform project.
|
||||
|
||||
## Setting Up your VM
|
||||
|
||||
If this is the first time you’re creating a VM on this project, you will need to enable the `Compute Engine API`. On the Compute Engine API page, click `enable` and wait for the service to finish connecting.
|
||||
If this is the first time you’re creating a VM on this project, you will need to
|
||||
enable the `Compute Engine API`. On the Compute Engine API page, click `enable`
|
||||
and wait for the service to finish connecting.
|
||||
|
||||
<img src="../images/platforms/google-cloud-platform/gcp0.png">
|
||||
|
||||
This will pull up the `Create an Instance` page - name the instance something relevant to this project, following your naming convention of choice. In addition, select a region and zone that is close to your physical location. For this instance, we will use the base suggested image.
|
||||
This will pull up the `Create an Instance` page - name the instance something
|
||||
relevant to this project, following your naming convention of choice. In
|
||||
addition, select a region and zone that is close to your physical location. For
|
||||
this instance, we will use the base suggested image.
|
||||
|
||||
<img src="../images/platforms/google-cloud-platform/gcp1.png">
|
||||
|
||||
Under `Identity and API Access`, click `Allow full access to all Cloud APIs`. Scroll down to `Firewall` and click `Allow HTTPS traffic` and `Allow HTTP traffic`.
|
||||
Under `Identity and API Access`, click `Allow full access to all Cloud APIs`.
|
||||
Scroll down to `Firewall` and click `Allow HTTPS traffic` and
|
||||
`Allow HTTP traffic`.
|
||||
|
||||
<img src="../images/platforms/google-cloud-platform/gcp2.png">
|
||||
|
||||
@@ -26,7 +35,8 @@ Congrats you’ve created your VM instance!
|
||||
|
||||
## SSH-ing into the VM
|
||||
|
||||
On the Compute Engine Dashboard, click on the VM for this project. Under `Details`, click `SSH` and select `Open in browser window`.
|
||||
On the Compute Engine Dashboard, click on the VM for this project. Under
|
||||
`Details`, click `SSH` and select `Open in browser window`.
|
||||
|
||||
<img src="../images/platforms/google-cloud-platform/gcp3.png">
|
||||
|
||||
@@ -42,9 +52,12 @@ curl -fsSL https://coder.com/install.sh | sh
|
||||
|
||||
## Run Coder
|
||||
|
||||
For this tutorial, we will run Coder as a `systemd` service. You can run Coder in [a multitude of different ways](https://coder.com/docs/coder-oss/latest/install).
|
||||
For this tutorial, we will run Coder as a `systemd` service. You can run Coder
|
||||
in
|
||||
[a multitude of different ways](https://coder.com/docs/coder-oss/latest/install).
|
||||
|
||||
First, edit the `coder.env` file to enable `CODER_TUNNEL` by setting the value to true with the following command:
|
||||
First, edit the `coder.env` file to enable `CODER_TUNNEL` by setting the value
|
||||
to true with the following command:
|
||||
|
||||
```console
|
||||
sudo vim /etc/coder.d/coder.env
|
||||
@@ -58,7 +71,8 @@ Exit vim and run the following command to start Coder as a system service:
|
||||
sudo systemctl enable --now coder
|
||||
```
|
||||
|
||||
The following command shows the Coder service's logs, including the Access URL. The Access URL will be used to access the Coder control plane.
|
||||
The following command shows the Coder service's logs, including the Access URL.
|
||||
The Access URL will be used to access the Coder control plane.
|
||||
|
||||
```console
|
||||
journalctl -u coder.service -b
|
||||
@@ -66,7 +80,8 @@ journalctl -u coder.service -b
|
||||
|
||||
<img src="../images/platforms/google-cloud-platform/gcp5.png">
|
||||
|
||||
In this instance, Coder can be accessed at the URL `https://fcca2f3bfc9d2e3bf1b9feb50e723448.pit-1.try.coder.app`.
|
||||
In this instance, Coder can be accessed at the URL
|
||||
`https://fcca2f3bfc9d2e3bf1b9feb50e723448.pit-1.try.coder.app`.
|
||||
|
||||
Copy the URL and run the following command to create the workspace admin:
|
||||
|
||||
@@ -74,11 +89,16 @@ Copy the URL and run the following command to create the workspace admin:
|
||||
coder login <url***.try.coder.app>
|
||||
```
|
||||
|
||||
Fill out the prompts and be sure to save use email and password. This is your admin login. Now, you can now access Coder from your local machine by navigating to the `***.try.coder.app` URL and logging in with that same username and password.
|
||||
Fill out the prompts and be sure to save use email and password. This is your
|
||||
admin login. Now, you can now access Coder from your local machine by navigating
|
||||
to the `***.try.coder.app` URL and logging in with that same username and
|
||||
password.
|
||||
|
||||
## Creating and Uploading your First Template
|
||||
|
||||
First, run `coder template init` to create your first template. You’ll be given a list of prefabricated templates. This tutorial shows you how to create a Linux based template on GCP.
|
||||
First, run `coder template init` to create your first template. You’ll be given
|
||||
a list of prefabricated templates. This tutorial shows you how to create a Linux
|
||||
based template on GCP.
|
||||
|
||||
<img src="../images/platforms/google-cloud-platform/gcp6.png">
|
||||
|
||||
@@ -90,23 +110,34 @@ Run the following command:
|
||||
coder templates create
|
||||
```
|
||||
|
||||
It will ask for your `project-id`, which you can find on the home page of your GCP Dashboard.
|
||||
It will ask for your `project-id`, which you can find on the home page of your
|
||||
GCP Dashboard.
|
||||
|
||||
Given it’s your first time setting up Coder, it may give an error that will look like the following:
|
||||
Given it’s your first time setting up Coder, it may give an error that will look
|
||||
like the following:
|
||||
|
||||
<img src="../images/platforms/google-cloud-platform/gcp7.png">
|
||||
|
||||
In the error message will be a link. In this case, the URL is `https://console.developes.google.com/apis/api/iam.googles.com/overview:?project=1073148106645`. Copy the respective URL from your error message, and visit it via your browser. It may ask you to enable `Identity and Access Management (IAM) API`.
|
||||
In the error message will be a link. In this case, the URL is
|
||||
`https://console.developes.google.com/apis/api/iam.googles.com/overview:?project=1073148106645`.
|
||||
Copy the respective URL from your error message, and visit it via your browser.
|
||||
It may ask you to enable `Identity and Access Management (IAM) API`.
|
||||
|
||||
Click `enable` and wait as the API initializes for your account.
|
||||
|
||||
Once initialized, click create credentials in the upper right-hand corner. Select the `Compute Engine API` from the dropdown, and select `Application Data` under `What data will you be accessing?`. In addition, select `Yes, I’m using one or more` under `Are you planning on using this API with Compute Engine, Kubernetes Engine, App Engine, or Cloud Functions?`.
|
||||
Once initialized, click create credentials in the upper right-hand corner.
|
||||
Select the `Compute Engine API` from the dropdown, and select `Application Data`
|
||||
under `What data will you be accessing?`. In addition, select
|
||||
`Yes, I’m using one or more` under
|
||||
`Are you planning on using this API with Compute Engine, Kubernetes Engine, App Engine, or Cloud Functions?`.
|
||||
|
||||
<img src="../images/platforms/google-cloud-platform/gcp8.png">
|
||||
|
||||
Back in your GCP terminal, run the `coder templates create` one more time.
|
||||
|
||||
Congrats! You can now create new Linux-based workspaces that use Google Cloud Platform. Go onto your Coder dashboard, build your workspace, and get started coding!
|
||||
Congrats! You can now create new Linux-based workspaces that use Google Cloud
|
||||
Platform. Go onto your Coder dashboard, build your workspace, and get started
|
||||
coding!
|
||||
|
||||
## Next Steps
|
||||
|
||||
|
||||
+48
-29
@@ -1,18 +1,23 @@
|
||||
# JFrog
|
||||
|
||||
Use Coder and JFrog together to secure your development environments without disturbing your developers' existing workflows.
|
||||
Use Coder and JFrog together to secure your development environments without
|
||||
disturbing your developers' existing workflows.
|
||||
|
||||
This guide will demonstrate how to use JFrog Artifactory as a package registry
|
||||
within a workspace. We'll use Docker as the underlying compute. But, these concepts apply to any compute platform.
|
||||
within a workspace. We'll use Docker as the underlying compute. But, these
|
||||
concepts apply to any compute platform.
|
||||
|
||||
The full example template can be found [here](https://github.com/coder/coder/tree/main/examples/templates/jfrog/docker).
|
||||
The full example template can be found
|
||||
[here](https://github.com/coder/coder/tree/main/examples/templates/jfrog/docker).
|
||||
|
||||
## Requirements
|
||||
|
||||
- A JFrog Artifactory instance
|
||||
- An admin-level access token for Artifactory
|
||||
- 1:1 mapping of users in Coder to users in Artifactory by email address and username
|
||||
- Repositories configured in Artifactory for each package manager you want to use
|
||||
- 1:1 mapping of users in Coder to users in Artifactory by email address and
|
||||
username
|
||||
- Repositories configured in Artifactory for each package manager you want to
|
||||
use
|
||||
|
||||
<blockquote class="info">
|
||||
The admin-level access token is used to provision user tokens and is never exposed to
|
||||
@@ -64,7 +69,7 @@ provider "artifactory" {
|
||||
|
||||
When pushing the template, you can pass in the variables using the `--var` flag:
|
||||
|
||||
```sh
|
||||
```shell
|
||||
coder templates push --var 'jfrog_host=YYY.jfrog.io' --var 'artifactory_access_token=XXX'
|
||||
```
|
||||
|
||||
@@ -76,13 +81,14 @@ functionality for most developers.
|
||||
|
||||
Most users should be able to install `jf` by running the following command:
|
||||
|
||||
```sh
|
||||
```shell
|
||||
curl -fL https://install-cli.jfrog.io | sh
|
||||
```
|
||||
|
||||
Other methods are listed [here](https://jfrog.com/getcli/).
|
||||
|
||||
In our Docker-based example, we install `jf` by adding these lines to our `Dockerfile`:
|
||||
In our Docker-based example, we install `jf` by adding these lines to our
|
||||
`Dockerfile`:
|
||||
|
||||
```Dockerfile
|
||||
RUN curl -fL https://install-cli.jfrog.io | sh && chmod 755 $(which jf)
|
||||
@@ -90,7 +96,10 @@ RUN curl -fL https://install-cli.jfrog.io | sh && chmod 755 $(which jf)
|
||||
|
||||
## Configuring Coder workspace to use JFrog Artifactory repositories
|
||||
|
||||
Create a `locals` block to store the Artifactory repository keys for each package manager you want to use in your workspace. For example, if you want to use artifactory repositories with keys `npm`, `pypi`, and `go`, you can create a `locals` block like this:
|
||||
Create a `locals` block to store the Artifactory repository keys for each
|
||||
package manager you want to use in your workspace. For example, if you want to
|
||||
use artifactory repositories with keys `npm`, `pypi`, and `go`, you can create a
|
||||
`locals` block like this:
|
||||
|
||||
```hcl
|
||||
locals {
|
||||
@@ -102,7 +111,8 @@ locals {
|
||||
}
|
||||
```
|
||||
|
||||
To automatically configure `jf` CLI and Artifactory repositories for each user, add the following lines to your `startup_script` in the `coder_agent` block:
|
||||
To automatically configure `jf` CLI and Artifactory repositories for each user,
|
||||
add the following lines to your `startup_script` in the `coder_agent` block:
|
||||
|
||||
```hcl
|
||||
resource "coder_agent" "main" {
|
||||
@@ -146,8 +156,8 @@ resource "coder_agent" "main" {
|
||||
}
|
||||
```
|
||||
|
||||
You can verify that `jf` is configured correctly in your workspace by
|
||||
running `jf c show`. It should display output like:
|
||||
You can verify that `jf` is configured correctly in your workspace by running
|
||||
`jf c show`. It should display output like:
|
||||
|
||||
```text
|
||||
coder@jf:~$ jf c show
|
||||
@@ -165,16 +175,16 @@ Default: true
|
||||
|
||||
## Installing the JFrog VS Code Extension
|
||||
|
||||
You can install the JFrog VS Code extension into workspaces
|
||||
by inserting the following lines into your `startup_script`:
|
||||
You can install the JFrog VS Code extension into workspaces by inserting the
|
||||
following lines into your `startup_script`:
|
||||
|
||||
```sh
|
||||
# Install the JFrog VS Code extension.
|
||||
# Find the latest version number at
|
||||
# https://open-vsx.org/extension/JFrog/jfrog-vscode-extension.
|
||||
JFROG_EXT_VERSION=2.4.1
|
||||
curl -o /tmp/jfrog.vsix -L "https://open-vsx.org/api/JFrog/jfrog-vscode-extension/$JFROG_EXT_VERSION/file/JFrog.jfrog-vscode-extension-$JFROG_EXT_VERSION.vsix"
|
||||
/tmp/code-server/bin/code-server --install-extension /tmp/jfrog.vsix
|
||||
```shell
|
||||
# Install the JFrog VS Code extension.
|
||||
# Find the latest version number at
|
||||
# https://open-vsx.org/extension/JFrog/jfrog-vscode-extension.
|
||||
JFROG_EXT_VERSION=2.4.1
|
||||
curl -o /tmp/jfrog.vsix -L "https://open-vsx.org/api/JFrog/jfrog-vscode-extension/$JFROG_EXT_VERSION/file/JFrog.jfrog-vscode-extension-$JFROG_EXT_VERSION.vsix"
|
||||
/tmp/code-server/bin/code-server --install-extension /tmp/jfrog.vsix
|
||||
```
|
||||
|
||||
Note that this method will only work if your developers use code-server.
|
||||
@@ -195,8 +205,8 @@ Artifactory:
|
||||
|
||||
Now, your developers can run `npm install`, `npm audit`, etc. and transparently
|
||||
use Artifactory as the package registry. You can verify that `npm` is configured
|
||||
correctly by running `npm install --loglevel=http react` and checking that
|
||||
npm is only hitting your Artifactory URL.
|
||||
correctly by running `npm install --loglevel=http react` and checking that npm
|
||||
is only hitting your Artifactory URL.
|
||||
|
||||
## Configuring pip
|
||||
|
||||
@@ -211,11 +221,15 @@ Artifactory:
|
||||
EOF
|
||||
```
|
||||
|
||||
Now, your developers can run `pip install` and transparently use Artifactory as the package registry. You can verify that `pip` is configured correctly by running `pip install --verbose requests` and checking that pip is only hitting your Artifactory URL.
|
||||
Now, your developers can run `pip install` and transparently use Artifactory as
|
||||
the package registry. You can verify that `pip` is configured correctly by
|
||||
running `pip install --verbose requests` and checking that pip is only hitting
|
||||
your Artifactory URL.
|
||||
|
||||
## Configuring Go
|
||||
|
||||
Add the following environment variable to your `coder_agent` block to configure `go` to use Artifactory:
|
||||
Add the following environment variable to your `coder_agent` block to configure
|
||||
`go` to use Artifactory:
|
||||
|
||||
```hcl
|
||||
env = {
|
||||
@@ -224,10 +238,15 @@ Add the following environment variable to your `coder_agent` block to configure
|
||||
```
|
||||
|
||||
You can apply the same concepts to Docker, Maven, and other package managers
|
||||
supported by Artifactory. See the [JFrog documentation](https://jfrog.com/help/r/jfrog-artifactory-documentation/package-management) for more information.
|
||||
supported by Artifactory. See the
|
||||
[JFrog documentation](https://jfrog.com/help/r/jfrog-artifactory-documentation/package-management)
|
||||
for more information.
|
||||
|
||||
## More reading
|
||||
|
||||
- See the full example template [here](https://github.com/coder/coder/tree/main/examples/templates/jfrog/docker).
|
||||
- To serve extensions from your own VS Code Marketplace, check out [code-marketplace](https://github.com/coder/code-marketplace#artifactory-storage).
|
||||
- To store templates in Artifactory, check out our [Artifactory modules](../templates/modules.md#artifactory) docs.
|
||||
- See the full example template
|
||||
[here](https://github.com/coder/coder/tree/main/examples/templates/jfrog/docker).
|
||||
- To serve extensions from your own VS Code Marketplace, check out
|
||||
[code-marketplace](https://github.com/coder/code-marketplace#artifactory-storage).
|
||||
- To store templates in Artifactory, check out our
|
||||
[Artifactory modules](../templates/modules.md#artifactory) docs.
|
||||
|
||||
@@ -1,15 +1,19 @@
|
||||
# Additional clusters
|
||||
|
||||
With Coder, you can deploy workspaces in additional Kubernetes clusters using different [authentication methods](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs#authentication) in the Terraform provider.
|
||||
With Coder, you can deploy workspaces in additional Kubernetes clusters using
|
||||
different
|
||||
[authentication methods](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs#authentication)
|
||||
in the Terraform provider.
|
||||
|
||||

|
||||
|
||||
## Option 1) Kubernetes contexts and kubeconfig
|
||||
|
||||
First, create a kubeconfig file with [multiple contexts](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/).
|
||||
First, create a kubeconfig file with
|
||||
[multiple contexts](https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/).
|
||||
|
||||
```sh
|
||||
$ kubectl config get-contexts
|
||||
```shell
|
||||
kubectl config get-contexts
|
||||
|
||||
CURRENT NAME CLUSTER
|
||||
workspaces-europe-west2-c workspaces-europe-west2-c
|
||||
@@ -20,9 +24,10 @@ CURRENT NAME CLUSTER
|
||||
|
||||
If you deployed Coder on Kubernetes, you can attach a kubeconfig as a secret.
|
||||
|
||||
This assumes Coder is deployed on the `coder` namespace and your kubeconfig file is in ~/.kube/config.
|
||||
This assumes Coder is deployed on the `coder` namespace and your kubeconfig file
|
||||
is in ~/.kube/config.
|
||||
|
||||
```sh
|
||||
```shell
|
||||
kubectl create secret generic kubeconfig-secret -n coder --from-file=~/.kube/config
|
||||
```
|
||||
|
||||
@@ -41,15 +46,20 @@ coder:
|
||||
readOnly: true
|
||||
```
|
||||
|
||||
[Upgrade Coder](../../install/kubernetes.md#upgrading-coder-via-helm) with these new values.
|
||||
[Upgrade Coder](../../install/kubernetes.md#upgrading-coder-via-helm) with these
|
||||
new values.
|
||||
|
||||
### VM control plane
|
||||
|
||||
If you deployed Coder on a VM, copy the kubeconfig file to `/home/coder/.kube/config`.
|
||||
If you deployed Coder on a VM, copy the kubeconfig file to
|
||||
`/home/coder/.kube/config`.
|
||||
|
||||
### Create a Coder template
|
||||
|
||||
You can start from our [example template](https://github.com/coder/coder/tree/main/examples/templates/kubernetes). From there, add [template parameters](../../templates/parameters.md) to allow developers to pick their desired cluster.
|
||||
You can start from our
|
||||
[example template](https://github.com/coder/coder/tree/main/examples/templates/kubernetes).
|
||||
From there, add [template parameters](../../templates/parameters.md) to allow
|
||||
developers to pick their desired cluster.
|
||||
|
||||
```hcl
|
||||
# main.tf
|
||||
@@ -79,17 +89,22 @@ provider "kubernetes" {
|
||||
|
||||
## Option 2) Kubernetes ServiceAccounts
|
||||
|
||||
Alternatively, you can authenticate with remote clusters with ServiceAccount tokens. Coder can store these secrets on your behalf with [managed Terraform variables](../../templates/parameters.md#managed-terraform-variables).
|
||||
Alternatively, you can authenticate with remote clusters with ServiceAccount
|
||||
tokens. Coder can store these secrets on your behalf with
|
||||
[managed Terraform variables](../../templates/parameters.md#managed-terraform-variables).
|
||||
|
||||
Alternatively, these could also be fetched from Kubernetes secrets or even [Hashicorp Vault](https://registry.terraform.io/providers/hashicorp/vault/latest/docs/data-sources/generic_secret).
|
||||
Alternatively, these could also be fetched from Kubernetes secrets or even
|
||||
[Hashicorp Vault](https://registry.terraform.io/providers/hashicorp/vault/latest/docs/data-sources/generic_secret).
|
||||
|
||||
This guide assumes you have a `coder-workspaces` namespace on your remote cluster. Change the namespace accordingly.
|
||||
This guide assumes you have a `coder-workspaces` namespace on your remote
|
||||
cluster. Change the namespace accordingly.
|
||||
|
||||
### Create a ServiceAccount
|
||||
|
||||
Run this command against your remote cluster to create a ServiceAccount, Role, RoleBinding, and token:
|
||||
Run this command against your remote cluster to create a ServiceAccount, Role,
|
||||
RoleBinding, and token:
|
||||
|
||||
```sh
|
||||
```shell
|
||||
kubectl apply -n coder-workspaces -f - <<EOF
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
@@ -141,7 +156,8 @@ rolebinding.rbac.authorization.k8s.io/coder created
|
||||
|
||||
### 2. Modify the Kubernetes template
|
||||
|
||||
You can start from our [example template](https://github.com/coder/coder/tree/main/examples/templates/kubernetes).
|
||||
You can start from our
|
||||
[example template](https://github.com/coder/coder/tree/main/examples/templates/kubernetes).
|
||||
|
||||
```hcl
|
||||
variable "host" {
|
||||
@@ -172,20 +188,21 @@ provider "kubernetes" {
|
||||
|
||||
### Create Coder template with managed variables
|
||||
|
||||
Fetch the values from the secret and pass them to Coder. This should work on macOS and Linux.
|
||||
Fetch the values from the secret and pass them to Coder. This should work on
|
||||
macOS and Linux.
|
||||
|
||||
To get the cluster address:
|
||||
|
||||
```sh
|
||||
$ kubectl cluster-info
|
||||
```shell
|
||||
kubectl cluster-info
|
||||
Kubernetes control plane is running at https://example.domain:6443
|
||||
|
||||
$ export CLUSTER_ADDRESS=https://example.domain:6443
|
||||
export CLUSTER_ADDRESS=https://example.domain:6443
|
||||
```
|
||||
|
||||
To fetch the CA certificate and token:
|
||||
|
||||
```sh
|
||||
```shell
|
||||
export CLUSTER_CA_CERTIFICATE=$(kubectl get secrets coder-service-account-token -n coder-workspaces -o jsonpath="{.data.ca\.crt}")
|
||||
|
||||
export CLUSTER_SERVICEACCOUNT_TOKEN=$(kubectl get secrets coder-service-account-token -n coder-workspaces -o jsonpath="{.data.token}")
|
||||
@@ -193,7 +210,7 @@ export CLUSTER_SERVICEACCOUNT_TOKEN=$(kubectl get secrets coder-service-account-
|
||||
|
||||
Create the template with these values:
|
||||
|
||||
```sh
|
||||
```shell
|
||||
coder templates create \
|
||||
--variable host=$CLUSTER_ADDRESS \
|
||||
--variable cluster_ca_certificate=$CLUSTER_CA_CERTIFICATE \
|
||||
@@ -201,9 +218,10 @@ coder templates create \
|
||||
--variable namespace=coder-workspaces
|
||||
```
|
||||
|
||||
If you're on a Windows machine (or if one of the commands fail), try grabbing the values manually:
|
||||
If you're on a Windows machine (or if one of the commands fail), try grabbing
|
||||
the values manually:
|
||||
|
||||
```sh
|
||||
```shell
|
||||
# Get cluster API address
|
||||
kubectl cluster-info
|
||||
|
||||
|
||||
@@ -1,13 +1,22 @@
|
||||
# Kubernetes event logs
|
||||
|
||||
To stream Kubernetes events into your workspace startup logs, you can use Coder's [`coder-logstream-kube`](https://github.com/coder/coder-logstream-kube) tool. `coder-logstream-kube` provides useful information about the workspace pod or deployment, such as:
|
||||
To stream Kubernetes events into your workspace startup logs, you can use
|
||||
Coder's [`coder-logstream-kube`](https://github.com/coder/coder-logstream-kube)
|
||||
tool. `coder-logstream-kube` provides useful information about the workspace pod
|
||||
or deployment, such as:
|
||||
|
||||
- Causes of pod provisioning failures, or why a pod is stuck in a pending state.
|
||||
- Visibility into when pods are OOMKilled, or when they are evicted.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
`coder-logstream-kube` works best with the [`kubernetes_deployment`](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/deployment) Terraform resource, which requires the `coder` service account to have permission to create deployments. For example, if you use [Helm](https://coder.com/docs/v2/latest/install/kubernetes#install-coder-with-helm) to install Coder, you should set `coder.serviceAccount.enableDeployments=true` in your `values.yaml`
|
||||
`coder-logstream-kube` works best with the
|
||||
[`kubernetes_deployment`](https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/deployment)
|
||||
Terraform resource, which requires the `coder` service account to have
|
||||
permission to create deployments. For example, if you use
|
||||
[Helm](../../install/kubernetes.md#install-coder-with-helm) to install Coder,
|
||||
you should set `coder.serviceAccount.enableDeployments=true` in your
|
||||
`values.yaml`
|
||||
|
||||
```diff
|
||||
coder:
|
||||
@@ -19,11 +28,13 @@ serviceAccount:
|
||||
name: coder
|
||||
```
|
||||
|
||||
> Note: This is only required for Coder versions < 0.28.0, as this will be the default value for Coder versions >= 0.28.0
|
||||
> Note: This is only required for Coder versions < 0.28.0, as this will be the
|
||||
> default value for Coder versions >= 0.28.0
|
||||
|
||||
## Installation
|
||||
|
||||
Install the `coder-kubestream-logs` helm chart on the cluster where the deployment is running.
|
||||
Install the `coder-kubestream-logs` helm chart on the cluster where the
|
||||
deployment is running.
|
||||
|
||||
```shell
|
||||
helm repo add coder-logstream-kube https://helm.coder.com/logstream-kube
|
||||
@@ -34,7 +45,8 @@ helm install coder-logstream-kube coder-logstream-kube/coder-logstream-kube \
|
||||
|
||||
## Example logs
|
||||
|
||||
Here is an example of the logs you can expect to see in the workspace startup logs:
|
||||
Here is an example of the logs you can expect to see in the workspace startup
|
||||
logs:
|
||||
|
||||
### Normal pod deployment
|
||||
|
||||
@@ -54,6 +66,13 @@ Here is an example of the logs you can expect to see in the workspace startup lo
|
||||
|
||||
## How it works
|
||||
|
||||
Kubernetes provides an [informers](https://pkg.go.dev/k8s.io/client-go/informers) API that streams pod and event data from the API server.
|
||||
Kubernetes provides an
|
||||
[informers](https://pkg.go.dev/k8s.io/client-go/informers) API that streams pod
|
||||
and event data from the API server.
|
||||
|
||||
coder-logstream-kube listens for pod creation events with containers that have the CODER_AGENT_TOKEN environment variable set. All pod events are streamed as logs to the Coder API using the agent token for authentication. For more details, see the [coder-logstream-kube](https://github.com/coder/coder-logstream-kube) repository.
|
||||
coder-logstream-kube listens for pod creation events with containers that have
|
||||
the CODER_AGENT_TOKEN environment variable set. All pod events are streamed as
|
||||
logs to the Coder API using the agent token for authentication. For more
|
||||
details, see the
|
||||
[coder-logstream-kube](https://github.com/coder/coder-logstream-kube)
|
||||
repository.
|
||||
|
||||
@@ -4,10 +4,12 @@ Coder's control plane and/or workspaces can be deployed on Kubernetes.
|
||||
|
||||
## Installation
|
||||
|
||||
Refer to our [Helm install docs](../../install/kubernetes.md) to deploy Coder on Kubernetes. The default helm values will provision the following:
|
||||
Refer to our [Helm install docs](../../install/kubernetes.md) to deploy Coder on
|
||||
Kubernetes. The default helm values will provision the following:
|
||||
|
||||
- Coder control plane (as a `Deployment`)
|
||||
- ServiceAccount + Role + RoleBinding to provision pods + PVCS in the current namespace (used for Kubernetes workspaces)
|
||||
- ServiceAccount + Role + RoleBinding to provision pods + PVCS in the current
|
||||
namespace (used for Kubernetes workspaces)
|
||||
- LoadBalancer to access control plane
|
||||
|
||||
## Kubernetes templates
|
||||
@@ -18,9 +20,11 @@ From the dashboard, import the Kubernetes starter template:
|
||||
|
||||
In the next screen, set the following template variables:
|
||||
|
||||
- `use_kubeconfig`: `false` (The ServiceAccount will authorize Coder to create pods on your cluster)
|
||||
- `use_kubeconfig`: `false` (The ServiceAccount will authorize Coder to create
|
||||
pods on your cluster)
|
||||
- `namespace`: `coder` (or whatever namespace you deployed Coder on)
|
||||
|
||||

|
||||
|
||||
> If you deployed Coder on another platform besides Kubernetes, you can set `use_kubeconfig: true` for Coder to read the config from your VM, for example.
|
||||
> If you deployed Coder on another platform besides Kubernetes, you can set
|
||||
> `use_kubeconfig: true` for Coder to read the config from your VM, for example.
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
# Other platforms
|
||||
|
||||
Coder is highly extensible and is not limited to the platforms outlined in these docs. The control plane can be provisioned on any VM or container compute, and workspaces can include any Terraform resource. See our [architecture diagram](../about/architecture.md) for more details.
|
||||
Coder is highly extensible and is not limited to the platforms outlined in these
|
||||
docs. The control plane can be provisioned on any VM or container compute, and
|
||||
workspaces can include any Terraform resource. See our
|
||||
[architecture diagram](../about/architecture.md) for more details.
|
||||
|
||||
The following resources may help as you're deploying Coder.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user