A Kubernetes operator to launch ingresses for services.
A number of environment variables must be configured. If you're using the deployment.yaml
file, you will find them towards the end of the file.
WATCH_NAMESPACE: apigw-operator-system
ENABLE_TLS: true
TLS_SECRET_NAME: ingresssecret
INGRESS_CLASS_NAME: nginx
Install operator and CRD:
kubectl apply -f deployment.yaml
An example CR is found at config/samples/operator_v1_apigw.yaml
. Apply it with:
kubectl apply -f config/samples/operator_v1_apigw.yaml
The custom resource's properties are:
host
: Required. URL to host the access point on.path
: Required. Path within the host to host the access point on.service
: Required. Name of the Kubernetes service.port
: Required. Internal port the service is listening on.auth
: Optional. A structure to configure authentication. If left empty, authentication is disabled. Must be disabled ifINGRESS_CLASS_NAME
is notnginx
, or resources will result in error. Has the following properties:type
:basic
ornone
(disabled).basic
: Structure for basic authentication. Has the following properties:user
password
A valid sample spec configuration is:
...
spec:
host: foo.bar.com
path: /
service: myservice
port: 9080
Another valid sample (requires nginx
as INGRESS_CLASS_NAME
):
...
spec:
host: foo.bar.com
path: /
service: myservice
port: 9080
auth:
type: basic
basic:
user: user
password: password
This section is for convenience purposes and briefly recaps some commands used in operator development.
Generate yaml resource files (run this after editing *_types.go
files):
make generate
Generate CRD manifests (run this after editing //+kubebuilder
annotations):
make manifests
Run operator locally outside the cluster, for testing purposes (export
required envs first):
make install run
Generate deployment.yaml file (remember to configure env
and image
in the Deployment resource):
./bin/kustomize build config/default > deployment.yaml