MicroK8s の Ingress Controller について

MicroK8s の Ingress はアドオンが提供されており、すぐに利用可能ですが Ingress Controller の ingress-class を確認していなかったために Cluster-Issuer や Issuer を作成する際ハマってしまうことがありました。どの Kubernetes ディストリビューションも Ingress Contorolelr のアドオンが利用でき非常に便利ですがアドオンを利用する際はオブジェクトの内容を確認した方が良いと改めて感じましたので共有となります。

MicroK8s の Ingress Controlelr は以下の通り Ingress-Class が Public となっています。

Name:           nginx-ingress-microk8s-controller
Selector:       name=nginx-ingress-microk8s
Node-Selector:  <none>
Labels:         microk8s-application=nginx-ingress-microk8s
Annotations:    deprecated.daemonset.template.generation: 1
Desired Number of Nodes Scheduled: 3
Current Number of Nodes Scheduled: 3
Number of Nodes Scheduled with Up-to-date Pods: 3
Number of Nodes Scheduled with Available Pods: 3
Number of Nodes Misscheduled: 0
Pods Status:  3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:           name=nginx-ingress-microk8s
  Service Account:  nginx-ingress-microk8s-serviceaccount
  Containers:
   nginx-ingress-microk8s:
    Image:       k8s.gcr.io/ingress-nginx/controller:v1.0.0-alpha.2
    Ports:       80/TCP, 443/TCP, 10254/TCP
    Host Ports:  80/TCP, 443/TCP, 10254/TCP
    Args:
      /nginx-ingress-controller
      --configmap=$(POD_NAMESPACE)/nginx-load-balancer-microk8s-conf
      --tcp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-tcp-microk8s-conf
      --udp-services-configmap=$(POD_NAMESPACE)/nginx-ingress-udp-microk8s-conf
      --ingress-class=public

      --publish-status-address=127.0.0.1
    Liveness:   http-get http://:10254/healthz delay=10s timeout=5s period=10s #success=1 #failure=3
    Readiness:  http-get http://:10254/healthz delay=0s timeout=5s period=10s #success=1 #failure=3
    Environment:
      POD_NAME:        (v1:metadata.name)
      POD_NAMESPACE:   (v1:metadata.namespace)
    Mounts:           <none>
  Volumes:            <none>
Events:               <none>      

MicroK8s の場合、Issuer などのオブジェクトは 以下のように class を public としましょう。

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: cluster-issuer
spec:
  acme:
    email: example@github.com
    server: https://acme-v02.api.letsencrypt.org/directory
    privateKeySecretRef:
      name: example-sercret
    solvers:
    - http01:
        ingress:
          class: public 

大体のディストリビューションは ingress class が nginx となっており何も考えずに nginx にしてしまうと issuer のステータスが READY にならず、Let’sEncryptの制限など影響が出たり、時間を無駄に使ってしまう事がありましたので、参考にしていただければと思います。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です