『Kubernetesマイクロサービス開発の実践』でEKS Auto Modeを使用する

開発

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.yamlpvc.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.yamlvolumeClaimTemplates以降は削除して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 データベースのデプロイ」までは動かすことができました。

コメント

タイトルとURLをコピーしました