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の制限など影響が出たり、時間を無駄に使ってしまう事がありましたので、参考にしていただければと思います。