sudo snap install juju --classic
source /var/snap/microstack/common/etc/microstack.rc
tee openstack-cloud.yaml > /dev/null << EOL
clouds:
openstack:
type: openstack
auth-types: [userpass]
config:
use-default-secgroup: true
network: private
external-network: public
allocate-public-ip: true
use-floating-ip: true
endpoint: '${OS_AUTH_URL}/v3'
regions:
microstack: {}
EOL
juju add-cloud --client openstack openstack-cloud.yaml
tee openstack-credentials.yaml > /dev/null << EOL
credentials:
openstack:
default-region: microstack
admin:
auth-type: userpass
domain-name: ""
project-domain-name: default
tenant-id: ""
tenant-name: admin
user-domain-name: default
username: admin
password: ${OS_PASSWORD}
version: "3"
EOL
juju add-credential --client openstack -f openstack-credentials.yaml
juju set-default-credential openstack admin
NB: region must be microstack:
SERIES=focal
IMAGE=$(openstack image list -f value -c ID --name ubuntu.${SERIES})
mkdir simplestreams
juju metadata generate-image \
-d ~/simplestreams \
-i ${IMAGE} \
-s ${SERIES} \
-r microstack \
-u ${OS_AUTH_URL}/v3
Choose a large flavor: 8 VCPUs, 8GB RAM, 20GB disk
FLAVOR=8.8192.20
juju bootstrap --debug \
--bootstrap-series=focal \
--bootstrap-constraints allocate-public-ip=true \
--bootstrap-constraints use-floating-ip=true \
--bootstrap-constraints instance-type=${FLAVOR} \
--metadata-source $HOME/simplestreams/ \
openstack openstack
tee model-config.yaml > /dev/null << EOL
allocate-public-ip: true
use-floating-ip: true
image-metadata-url: /home/ubuntu/simplestreams/images
network: private
external-network: public
EOL
juju add-model k8s openstack --config model-config.yaml
tar cvzf simplestreams.tar.gz simplestreams
juju switch controller
juju scp simplestreams.tar.gz 0:
juju ssh 0 -- tar xvzf simplestreams.tar.gz
tee kubernetes-core-bundle.yaml > /dev/null << EOL
description: A minimal Kubernetes cluster, single master and single worker.
series: focal
machines:
'0':
constraints: cores=2 mem=4G root-disk=10G
series: focal
'1':
constraints: cores=2 mem=4G root-disk=10G
series: focal
'2':
constraints: cores=4 mem=4G root-disk=20G
series: focal
'3':
constraints: cores=8 mem=8G root-disk=20G
series: focal
applications:
containerd:
charm: cs:~containers/containerd-130
resources: {}
easyrsa:
annotations:
gui-x: '450'
gui-y: '550'
charm: cs:~containers/easyrsa-384
num_units: 1
resources:
easyrsa: 5
to:
- '0'
etcd:
annotations:
gui-x: '800'
gui-y: '550'
charm: cs:~containers/etcd-594
num_units: 1
resources:
core: 0
etcd: 3
snapshot: 0
to:
- '1'
flannel:
annotations:
gui-x: '450'
gui-y: '750'
charm: cs:~containers/flannel-558
resources:
flannel-amd64: 761
flannel-arm64: 758
flannel-s390x: 745
kubernetes-master:
annotations:
gui-x: '800'
gui-y: '850'
charm: cs:~containers/kubernetes-master-1008
expose: true
num_units: 1
options:
channel: 1.21/stable
resources:
cdk-addons: 0
core: 0
kube-apiserver: 0
kube-controller-manager: 0
kube-proxy: 0
kube-scheduler: 0
kubectl: 0
to:
- '2'
kubernetes-worker:
annotations:
gui-x: '100'
gui-y: '850'
charm: cs:~containers/kubernetes-worker-768
expose: true
num_units: 1
options:
channel: 1.21/stable
resources:
cni-amd64: 797
cni-arm64: 788
cni-s390x: 800
core: 0
kube-proxy: 0
kubectl: 0
kubelet: 0
to:
- '3'
relations:
- - kubernetes-master:kube-api-endpoint
- kubernetes-worker:kube-api-endpoint
- - kubernetes-master:kube-control
- kubernetes-worker:kube-control
- - kubernetes-master:certificates
- easyrsa:client
- - kubernetes-master:etcd
- etcd:db
- - kubernetes-worker:certificates
- easyrsa:client
- - etcd:certificates
- easyrsa:client
- - flannel:etcd
- etcd:db
- - flannel:cni
- kubernetes-master:cni
- - flannel:cni
- kubernetes-worker:cni
- - containerd:containerd
- kubernetes-worker:container-runtime
- - containerd:containerd
- kubernetes-master:container-runtime
EOL
tee openstack-overlay.yaml > /dev/null << EOL
description: Charmed Kubernetes overlay to add native OpenStack support.
applications:
openstack-integrator:
annotations:
gui-x: "600"
gui-y: "300"
charm: cs:~containers/openstack-integrator
num_units: 1
trust: true
relations:
- ['openstack-integrator', 'kubernetes-master:openstack']
- ['openstack-integrator', 'kubernetes-worker:openstack']
EOL
juju deploy ./kubernetes-core-bundle.yaml --overlay openstack-overlay.yaml --trust
watch -c juju status --color
sudo snap install kubectl --classic
TODO
TODO
TODO
TODO