## # The worker nodes to be used should be tagged as 'kubernetes'. # One server should be tagged as 'kubernetes-public-ip', to denote a machine # configured with a public IP. # The worker nodes with GPUs should be tagged as 'gpu'. ## series: xenial description: An eight-machine Kubernetes cluster, appropriate for production. Includes a three-machine etcd and ceph-mon cluster, a Kubernetes master, three Kubernetes worker nodes and a Kubernetes worker with GPUs. The Ceph (Luminous) cluster uses three nodes for Ceph Monitors and a Ceph OSD in LXD containers on each worker machine. Two Ceph MDSs provide redundant shared Ceph File System. # ---------------------------------------------------------------------- machines: "0": series: xenial constraints: tags=kubernetes #root-disk=8G "1": series: xenial constraints: tags=kubernetes #root-disk=8G "2": series: xenial constraints: tags=kubernetes #root-disk=8G # ---------------------------------------------------------------------- services: defaultgw: charm: cs:~csd-garr/defaultgw options: # ip route | grep default gateway: 90.147.161.27/25 easyrsa: charm: cs:~containers/easyrsa-50 bindings: "": space-os-mgmt num_units: 1 to: # an lxd on the unit of kubernetes-master - "lxd:kubernetes-master" annotations: gui-x: '450' gui-y: '550' etcd: charm: cs:~containers/etcd-96 bindings: "": space-os-mgmt num_units: 3 # constraints: tags=kubernetes options: channel: 3.2/stable to: - "lxd:0" - "lxd:1" - "lxd:2" annotations: gui-x: '800' gui-y: '550' flannel: charm: cs:~containers/flannel-66 # no bindings options: cidr: 10.111.0.0/16 annotations: gui-x: '450' gui-y: '750' kubeapi-load-balancer: charm: cs:~containers/kubeapi-load-balancer-69 bindings: "": space-os-mgmt # necessary for getting a floating IP apiserver: space-pub expose: true num_units: 1 to: - "lxd:kubernetes-master" annotations: gui-x: '450' gui-y: '250' kubernetes-keystone: charm: ./kubernetes-keystone options: keystone-url: https://keystone.cloud.garr.it:5000/v3 webhook-authn-config: /root/cdk/webhook-authn.onfig kubernetes-master: charm: cs:~containers/kubernetes-master-122 bindings: "": space-os-mgmt #kube-api-endpoint: space-pub num_units: 1 constraints: tags=kubernetes-public-ip cores=2 mem=4G #root-disk=16G options: channel: 1.11/stable authorization-mode: "Node,RBAC" # RBAC to allow access to dashboard to User "system:anonymous" # Because of this bug https://github.com/kubernetes/kubernetes/issues/39722 # the value must be false, rather than what the documentation says. api-extra-args: "anonymous-auth=false authentication-token-webhook-config-file=/root/cdk/webhook-authn.onfig" enable-dashboard-addons: True annotations: gui-x: '800' gui-y: '850' kubernetes-worker: charm: cs:~containers/kubernetes-worker-138 bindings: "": space-os-mgmt num_units: 3 constraints: tags=kubernetes cores=4 mem=4G #root-disk=16G expose: true options: channel: 1.11/stable cuda_repo: 9.2.88-1 # Enable Cloud Controller Manager # https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/ # kubelet-extra-args: --cloud-provider=external annotations: gui-x: '100' gui-y: '850' kubernetes-worker-gpu: charm: cs:~containers/kubernetes-worker-138 bindings: "": space-os-mgmt # charm: ./kubernetes-worker # patched for cuda-9.0 num_units: 1 constraints: tags=gpu cores=4 mem=4G #root-disk=16G expose: true options: channel: 1.11/stable cuda_repo: 9.2.88-1 # kubelet-extra-args: --cloud-provider=external annotations: gui-x: "520" gui-y: "226" ceph-mon: charm: cs:ceph-mon num_units: 3 bindings: "": space-os-mgmt options: # source: cloud:xenial-pike to: - 'lxd:0' # lxd:etcd - 'lxd:1' - 'lxd:2' annotations: gui-x: '1200' gui-y: '400' ceph-osd: charm: cs:~csd-garr/ceph-osd num_units: 3 bindings: "": space-os-mgmt cluster: space-os-data options: osd-devices: /dev/mapper/mpatha /dev/mapper/mpathb /dev/mapper/mpathc /dev/mapper/mpathd osd-max-backfills: 1 osd-recovery-max-active: 1 osd-journal-size: 10000 use-syslog: True # source: cloud:xenial-pike # bluestore: True to: - "kubernetes-worker/0" - "kubernetes-worker/1" - "kubernetes-worker/2" annotations: gui-x: '1400' gui-y: '400' ceph-mds: charm: cs:ceph-fs num_units: 1 bindings: "": space-os-mgmt to: - 'lxd:1' annotations: gui-x: '1200' gui-y: '400' # manila: # charm: cs:manila # bindings: # "": space-os-mgmt # to: # - 'lxd:2' # options: # debug: True # manila-generic: # charm: cs:manila-generic # bindings: # "": space-os-mgmt # to: # - 'lxd:2' # options: # debug: True # ---------------------------------------------------------------------- relations: - ["kubernetes-master:kube-api-endpoint", "kubeapi-load-balancer:apiserver"] - ["kubernetes-master:loadbalancer", "kubeapi-load-balancer:loadbalancer"] - ["kubernetes-master:certificates", "easyrsa:client"] - ["kubernetes-master:juju-info", "defaultgw:juju-info"] - ["kubernetes-master:juju-info", "kubernetes-keystone:juju-info"] - ["kubernetes-master:etcd", "etcd:db"] # Kube load balancer - ["kubeapi-load-balancer:certificates", "easyrsa:client"] - ["kubeapi-load-balancer:juju-info", "defaultgw:juju-info"] - ["etcd:certificates", "easyrsa:client"] # Kube worker - ["kubernetes-master:kube-control", "kubernetes-worker:kube-control"] - ["kubernetes-worker:certificates", "easyrsa:client"] - ["kubernetes-worker:kube-api-endpoint", "kubeapi-load-balancer:website"] # Kube GPU worker - ["kubernetes-master:kube-control", "kubernetes-worker-gpu:kube-control"] - ["kubernetes-worker-gpu:certificates", "easyrsa:client"] - ["kubernetes-worker-gpu:kube-api-endpoint", "kubeapi-load-balancer:website"] # Flannel - ["flannel:etcd", "etcd:db"] - ["flannel:cni", "kubernetes-master:cni"] - ["flannel:cni", "kubernetes-worker:cni"] - ["flannel:cni", "kubernetes-worker-gpu:cni"] # Ceph - ["kubernetes-master:ceph-storage", "ceph-mon:admin"] - ["ceph-osd:mon", "ceph-mon:osd"] - ["ceph-mds:ceph-mds", "ceph-mon:mds"] # # Manila # - [ manila, keystone ] # - [ manila, manila-generic ] # - [ neutron-openvswitch, manila ]