Charmed Kubernetes on Azure
Charmed Kubernetes will run seamlessly on Microsoft Azure ®.
With the addition of the
azure-integrator, your cluster will also be able
to directly use Azure native features.
azure-integrator charm simplifies working with Charmed Kubernetes on
Azure. Using the credentials provided to Juju, it acts as a proxy between
Charmed Kubernetes and the underlying cloud, granting permissions to
dynamically create, for example, storage.
description: Charmed Kubernetes overlay to add native Azure support. applications: azure-integrator: annotations: gui-x: "600" gui-y: "300" charm: cs:~containers/azure-integrator num_units: 1 trust: true relations: - ['azure-integrator', 'kubernetes-master'] - ['azure-integrator', 'kubernetes-worker']
To use this overlay with the Charmed Kubernetes bundle, it is specified during deploy like this:
juju deploy charmed-kubernetes --overlay azure-overlay.yaml --trust
... and remember to fetch the configuration file!
juju scp kubernetes-master/0:config ~/.kube/config
A standard install of Charmed Kubernetes will use more resources than the current quotas allocated to a new Azure account. If you see error messages saying allocating machines would exceed your quota, you will need to log a support request with Azure to increase the quota accordingly.
Resource usage: By relating to this charm, other charms can directly allocate resources, such as managed disks and load balancers, which could lead to cloud charges and count against quotas. Because these resources are not managed by Juju, they will not be automatically deleted when the models or applications are destroyed, nor will they show up in Juju's status or GUI. It is therefore up to the operator to manually delete these resources when they are no longer needed, using the Azure management website or API.
This section describes creating a busybox pod with a persistent volume claim backed by Azure's Disk Storage.
1. Create a storage class using the
kubectl create -f - <<EOY apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: azure-standard provisioner: kubernetes.io/azure-disk parameters: storageaccounttype: Standard_LRS kind: managed EOY
2. Create a persistent volume claim using that storage class:
kubectl create -f - <<EOY kind: PersistentVolumeClaim apiVersion: v1 metadata: name: testclaim spec: accessModes: - ReadWriteOnce resources: requests: storage: 100Mi storageClassName: azure-standard EOY
3. Create the busybox pod with a volume using that PVC:
kubectl create -f - <<EOY apiVersion: v1 kind: Pod metadata: name: busybox namespace: default spec: containers: - image: busybox command: - sleep - "3600" imagePullPolicy: IfNotPresent name: busybox volumeMounts: - mountPath: "/pv" name: testvolume restartPolicy: Always volumes: - name: testvolume persistentVolumeClaim: claimName: testclaim EOY
Charmed Kubernetes can make use of additional types of storage - for more information see the storage documentation.
The following commands start the 'hello-world' pod behind an Azure-backed load-balancer.
kubectl run hello-world --replicas=5 --labels="run=load-balancer-example" --image=gcr.io/google-samples/node-hello:1.0 --port=8080 kubectl expose deployment hello-world --type=LoadBalancer --name=hello watch kubectl get svc -o wide --selector=run=load-balancer-example
You can then verify this works by loading the described IP address (on port 8080!) in a browser.
For more configuration options and details of the permissions which the integrator uses, please see the azure charm page.