How to deploy the cloud service (publicly accessible)
Pre-Requirements
A running sealos kubernetes cluster
with at least svc(s) below:
- kubernetes
- calico
- service-auth(@see service-auth)
Optional:
- kubernetes-dashboard
- lens
Install ingress-nginx and cert-manager
- ingress-nginx
If you are using a bare-metal hosts, you will wish to installhostNetwork+DaemonSetingress-nginx.
See more: https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#via-the-host-network - cert-manager
Apply cert-manager and ingress configs
Note: currently we are using acme+dns01 to auto create and manage certs.
Apply reflector to sync tls secrets, Currently we are using kubernetes-reflector with pull approach
- Install reflector
- Update
Certificateto share tls keys to destination namespaces.
@see: https://cert-manager.io/docs/tutorials/syncing-secrets-across-namespaces/#using-reflector
Side: using Godaddy as dns01 issuer
- Install custom godaddy webhook: godaddy-webhook
- Following readme to install and apply
- Using
ignress-nginx-cloud/to apply wildcard domain cert
Troubleshooting
The DaemonSet ingress-nginx-controller do not run on masters
kubectl taint node [masters-node-name] node-role.kubernetes.io/master-
May be there are new taints like NoSchedule, just delete them all.
The godaddy-webhook related
-
User "system:serviceaccount:cert-manager:cert-manager" cannot create resource "godaddy" in API group "xxx.xxx.xxx" at the cluster scopeCheck
groupNamefield, currently it's hardcoded toacme.mycompany.com, and must be edited undergodaddy-webhook'sClusterRoleand re-apply. https://github.com/cert-manager/cert-manager/issues/3432 -
Error presenting challenge: secrets "godaddy-api-key" not foundError presenting challenge: secrets "godaddy-api-key" not found. https://github.com/cert-manager/cert-manager/issues/650
-
Error presenting challenge: Unable to check the TXT record: ### Unexpected HTTP status: 403