Sean Eagan 7517d3161c Fix potential port conflict
This change has been tested by the promenade resiliency gate.

This adds configuration for which ports to use for the tiller container
in the bootstrap-armada pod, and changes the defaults to be outside of
`net.ipv4.ip_local_port_range`, since the apiserver container in this pod
dynamically selects ports in that range to connect to etcd, which can
cause conflicts. See [0] for an example.

By default, since we're no longer using the standard tiller ports, this
does mean that we cannot connect to this tiller instance (before it's
replaced by the chart-based instance) via the helm CLI, until it supports
overriding the tiller port to connect to, however this should be
relatively soon [1].

[0]: https://github.com/helm/helm/issues/4886
[1]: https://github.com/helm/helm/pull/5590

Change-Id: Ief11411f079db27489e6974c028f6b7a16bb67bf
2019-08-05 15:52:39 -05:00

2.2 KiB

Genesis

Specific configuration for the genesis process. This document is a strict superset of the combination of kubernetes-node and host-system, so only differences are discussed here.

Sample Document

Here is a complete sample document:

schema: promenade/Genesis/v1
metadata:
  schema: metadata/Document/v1
  name: genesis
  layeringDefinition:
    abstract: false
    layer: site
data:
  hostname: n0
  ip: 192.168.77.10
  armada:
    target_manifest: cluster-bootstrap
  tiller:
    listen: 24134
    probe_listen: 24135
  labels:
    static:
      - calico-etcd=enabled
      - node-role.kubernetes.io/master=
    dynamic:
      - kubernetes-apiserver=enabled
      - kubernetes-controller-manager=enabled
      - kubernetes-etcd=enabled
      - kubernetes-scheduler=enabled
      - promenade-genesis=enabled
      - ucp-control-plane=enabled
  images:
    armada: quay.io/airshipit/armada:latest
    helm:
      tiller: gcr.io/kubernetes-helm/tiller:v2.14.0
    kubernetes:
      apiserver: gcr.io/google_containers/hyperkube-amd64:v1.11.6
      controller-manager: gcr.io/google_containers/hyperkube-amd64:v1.11.6
      etcd: quay.io/coreos/etcd:v3.0.17
      scheduler: gcr.io/google_containers/hyperkube-amd64:v1.11.6
  files:
    - path: /var/lib/anchor/calico-etcd-bootstrap
      content: ""
      mode: 0644

Armada

This section contains particular configuration options for bootstrapping with Armada. It currently only supports a single option: target_manifest, which specifies which armada/Manifest/v1 to be used during Genesis.

Bootstrapping Images

Bootstrapping images are specified in the top level key images:

armada: <Armada image for bootstrapping>
helm:
  tiller: <Tiller image for bootstrapping>
kubernetes:
  apiserver: <API server image for bootstrapping>
  controller-manager: <Controller Manager image for bootstrapping>
  etcd: <etcd image for bootstrapping>
  scheduler: <Scheduler image for bootstrapping>