mirror of
				https://github.com/linuxkit/linuxkit.git
				synced 2025-10-31 03:59:48 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			67 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| This directory contains scripts/files to bootstrap a `etcd` cluster both on the local machine as well as on Google Cloud.
 | |
| 
 | |
| An `etcd` cluster can be bootstrapped in different ways (see the [Documentation](https://coreos.com/etcd/docs/latest/op-guide/clustering.html) for more details. For the demo we use configuration via static IP addresses. With Infrakit these are managed by assigning `LogicalID`s to cluster members. The `LogicalID` is interpreted as a IP address.
 | |
| 
 | |
| The moby `etcd` package is build with [build-pkg.sh](./build-pkg.sh). It takes the official `etcd` container and adds a [script](./etcd.sh) to start `etcd`. [etcd.sh](./etcd.sh) first attempts to join a new cluster. If that fails it attempts to join an existing cluster. Note, the number and members of the cluster are somewhat hard coded in the script.
 | |
| 
 | |
| Each node is also configured with a disk, which is mounted inside the
 | |
| `etcd` container. `etcd` uses it to keep some state to help with
 | |
| restarts.
 | |
| 
 | |
| ## Preparation
 | |
| 
 | |
| - Build the `etcd` image and then moby image:
 | |
| ```
 | |
| ./build-pkg.sh
 | |
| moby build etcd
 | |
| ```
 | |
| 
 | |
| ## InfraKit cluster setup (OUTDATED)
 | |
| 
 | |
| This should create a HyperKit based, InfraKit managed `etcd` cluster with 5 `etcd` instances.
 | |
| 
 | |
| Start InfraKit:
 | |
| ```
 | |
| ./start-infrakit
 | |
| ```
 | |
| 
 | |
| Note: The HyperKit InfraKit plugin must be started from the directory
 | |
| where the `etcd` mobylinux image is located.
 | |
| 
 | |
| Now, commit the new config:
 | |
| ```
 | |
| infrakit group commit infrakit.json
 | |
| ```
 | |
| 
 | |
| To check if everything is fine, we created (above) a local `etcd.local` docker image which already has the environment set up to contact the cluster:
 | |
| ```
 | |
| docker run --rm -ti etcd.local etcdctl member list
 | |
| docker run --rm -ti etcd.local etcdctl cluster-health
 | |
| ```
 | |
| 
 | |
| You can perform rolling updates, by for example, switching the kernel version in `etcd.yml`, build a new moby, e.g., `moby build -name etcd-4.10 etcd`, update `infrakit.json`, and then commit the new configuration to InfraKit: `infrakit group commit infrakit.json`.
 | |
| 
 | |
| 
 | |
| ## Infrakit GCP setup
 | |
| 
 | |
| Note: This setup is somewhat specific to our GCP setup (IP addresses
 | |
| and account info) and needs to be adjusted to your setting. The
 | |
| configuration is documented in the top-level README.md.
 | |
| 
 | |
| Build the image and upload it:
 | |
| ```
 | |
| moby build etcd
 | |
| ```
 | |
| 
 | |
| Start the infrakit components in separate windows:
 | |
| ```
 | |
| infrakit-group-default
 | |
| infrakit-flavor-vanilla
 | |
| infrakit-instance-gcp
 | |
| ```
 | |
| 
 | |
| Commit the configuration:
 | |
| ```
 | |
| infrakit group commit infrakit-gce.json
 | |
| ```
 |