Skip to content

Commit

Permalink
kube: calico/docker version (#125)
Browse files Browse the repository at this point in the history
Signed-off-by: Yoan Blanc <yoan.blanc@exoscale.ch>
  • Loading branch information
greut authored and Yoan Blanc committed Mar 29, 2019
1 parent 67c6062 commit 4425352
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 20 deletions.
14 changes: 10 additions & 4 deletions cmd/kube.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,14 @@ var (
// kubeSecurityGroup represents the firewall security group to add k8s VM instances into
kubeSecurityGroup = "exokube"

// kubeTagName represents the name of the tag used to store the kubernetes version
kubeTagName = "exokube:kubernetes"
// kubeTagKubernetes represents the name of the tag used to store the version of Kubernetes
kubeTagKubernetes = "exokube:kubernetes"

// kubeTagCalico represents the name of the tag used to store the version of Calico
kubeTagCalico = "exokube:calico"

// kubeTagDocker represents the name of the tag used to store the version of Docker
kubeTagDocker = "exokube:docker"
)

// kubeCmd represents the kube command
Expand All @@ -28,9 +34,9 @@ cluster inside an Exoscale VM for users looking to try out Kubernetes or develop
with it day-to-day.`,
}

func getKubeInstanceVersion(vm *egoscale.VirtualMachine) string {
func getKubeInstanceVersion(vm *egoscale.VirtualMachine, tagName string) string {
for _, tag := range vm.Tags {
if tag.Key == kubeTagName {
if tag.Key == tagName {
return tag.Value
}
}
Expand Down
48 changes: 39 additions & 9 deletions cmd/kube_create.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ const (
kubeDockerVersion = "18.06"

// kubeCalicoVersion is the version of Calico installed
kubeCalicoVersion = "3.4"
kubeCalicoVersion = "3.6"

// kubeDefaultTemplate is the template to install Kubernetes on.
kubeDefaultTemplate = defaultTemplate
Expand All @@ -40,11 +40,12 @@ type kubeBootstrapStep struct {
}

type kubeCluster struct {
Name string
KubernetesVersion string
DockerVersion string
CalicoVersion string
Address string
CalicoVersion string
DockerVersion string
IsOldCalico bool
KubernetesVersion string
Name string
}

// kubeBootstrapSteps represents a k8s instance bootstrap steps
Expand Down Expand Up @@ -162,10 +163,15 @@ sudo kubeadm init \
--pod-network-cidr=192.168.0.0/16 \
--kubernetes-version "{{ .KubernetesVersion }}"
sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf taint nodes --all node-role.kubernetes.io/master-
{{ if not .IsOldCalico }}
sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf apply \
-f https://docs.projectcalico.org/v{{ .CalicoVersion }}/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml
{{ else }}
sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf apply \
-f https://docs.projectcalico.org/v{{ .CalicoVersion }}/getting-started/kubernetes/installation/hosted/etcd.yaml
sudo kubectl --kubeconfig=/etc/kubernetes/admin.conf apply \
-f https://docs.projectcalico.org/v{{ .CalicoVersion }}/getting-started/kubernetes/installation/hosted/calico.yaml`,
-f https://docs.projectcalico.org/v{{ .CalicoVersion }}/getting-started/kubernetes/installation/hosted/calico.yaml
{{ end }}`,
},
}

Expand Down Expand Up @@ -205,6 +211,24 @@ var kubeCreateCmd = &cobra.Command{
return err
}

dockerVersion, err := cmd.Flags().GetString("docker-version")
if err != nil {
return nil
}

if dockerVersion == "" {
dockerVersion = kubeDockerVersion
}

calicoVersion, err := cmd.Flags().GetString("calico-version")
if err != nil {
return nil
}

if calicoVersion == "" {
calicoVersion = kubeCalicoVersion
}

sizeOpt, err := cmd.Flags().GetString("size")
if err != nil {
return err
Expand Down Expand Up @@ -255,7 +279,9 @@ var kubeCreateCmd = &cobra.Command{
ResourceIDs: []egoscale.UUID{*vm.ID},
Tags: []egoscale.ResourceTag{
{Key: "managedby", Value: "exokube"},
{Key: kubeTagName, Value: kubernetesVersion},
{Key: kubeTagKubernetes, Value: kubernetesVersion},
{Key: kubeTagDocker, Value: dockerVersion},
{Key: kubeTagCalico, Value: calicoVersion},
},
}); err != nil {
return fmt.Errorf("unable to tag cluster instance: %s", err)
Expand All @@ -279,9 +305,11 @@ var kubeCreateCmd = &cobra.Command{
if err := bootstrapExokubeCluster(sshClient, kubeCluster{
Name: clusterName,
KubernetesVersion: kubernetesVersion,
CalicoVersion: kubeCalicoVersion,
DockerVersion: kubeDockerVersion,
CalicoVersion: calicoVersion,
DockerVersion: dockerVersion,
Address: vm.IP().String(),
// Calico 3.4 and 3.5 have a different set of files
IsOldCalico: strings.Compare("3.6", calicoVersion) == 1,
}, kubeCreateDebug); err != nil {
return fmt.Errorf("cluster bootstrap failed: %s", err)
}
Expand Down Expand Up @@ -549,5 +577,7 @@ func init() {
kubeCreateCmd.Flags().StringP("size", "s", "medium", "<name | id> "+
"(micro|tiny|small|medium|large|extra-large|huge|mega|titan|jumbo)")
kubeCreateCmd.Flags().StringP("version", "v", "", "install a specific Kubernetes version")
kubeCreateCmd.Flags().String("calico-version", "", "install a specific Calico version")
kubeCreateCmd.Flags().String("docker-version", "", "install a specific Docker version")
kubeCmd.AddCommand(kubeCreateCmd)
}
16 changes: 9 additions & 7 deletions cmd/kube_list.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,17 +30,19 @@ func listKubeInstances() error {
}

table := table.NewTable(os.Stdout)
table.SetHeader([]string{"Name", "IP Address", "Size", "Version", "State"})
table.SetHeader([]string{"Name", "IP Address", "Size", "Version", "Calico", "Docker", "State"})

for _, key := range vms {
vm := key.(*egoscale.VirtualMachine)

kubeVersion := getKubeInstanceVersion(vm)
if kubeVersion == "" {
continue
}

table.Append([]string{vm.Name, vm.IP().String(), vm.ServiceOfferingName, kubeVersion, vm.State})
table.Append([]string{
vm.Name,
vm.IP().String(),
vm.ServiceOfferingName,
getKubeInstanceVersion(vm, kubeTagKubernetes),
getKubeInstanceVersion(vm, kubeTagCalico),
getKubeInstanceVersion(vm, kubeTagDocker),
vm.State})
}

table.Render()
Expand Down

0 comments on commit 4425352

Please sign in to comment.