Kubernetesマイクロサービス開発の実践をハンズオン形式で進めているのですが、どうもIngressControllerのデプロイ時に下記のエラーが発生して先に進むことができません。
kubectl -n kube-system describe pod -l app.kubernetes.io/name=aws-load-balancer-controller | less
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedMount 6m55s (x620 over 20h) kubelet MountVolume.SetUp failed for volume "cert" : secret "aws-load-balancer-webhook-tls" not found
Warning FailedMount 116s (x552 over 20h) kubelet Unable to attach or mount volumes: unmounted volumes=[cert], unattached volumes=[], failed to process volumes=[]: timed out waiting for the condition
エラーの原因を探るのもいいのですが、最近EKS Auto Modeなるアドオンいらずのモードができたというので使ってみます。
クラスタ作成時
EKS Auto Modeはノードの管理も自動化されるので、ノードに関する設定は抜いて--enable-auto-mode
を追加します。
eksctl create cluster --name=sandbox --region=us-east-1 --enable-auto-mode
DB作成時
CSIアドオンを使用しないので、こちらに従ってstorage-class.yaml
とpvc.yaml
をapplyします。
storage-class.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: auto-ebs-sc
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: ebs.csi.eks.amazonaws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp3
encrypted: "true"
pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: auto-ebs-claim
spec:
accessModes:
- ReadWriteOnce
storageClassName: auto-ebs-sc
resources:
requests:
storage: 8Gi
bookinfo-reviews-db.yaml
bookinfo-reviews-db.yamlのvolumeClaimTemplates
以降は削除してvolumesを下記のように書き換えます。
volumes:
- name: initdb
configMap:
name: reviews-db-v1-init
items:
- key: CREATE_REVIEWS_DATA.sql
path: ./CREATE_REVIEWS_DATA.sql
- name: var-lib-mysql
persistentVolumeClaim:
claimName: auto-ebs-claim
IngressClassの作成
こちらにあるようにIngressClassを作成します。
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
namespace: game-bookinfo
labels:
app.kubernetes.io/name: LoadBalancerController
name: alb
spec:
controller: eks.amazonaws.com/alb
ここまでで「4-2-1 データベースのデプロイ」までは動かすことができました。
コメント