Last active
November 21, 2021 03:55
-
-
Save ferdinandosimonetti/f75b1f76c78b90050c09484cb21bac65 to your computer and use it in GitHub Desktop.
Install Rancher and downstream cluster with multiple Ingress Controllers on K3D
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| PS C:\Users\ferdi> k3d cluster create rancher --api-port 6500 --port 443:443@loadbalancer | |
| INFO[0000] Prep: Network | |
| INFO[0000] Created network 'k3d-rancher' | |
| INFO[0000] Created volume 'k3d-rancher-images' | |
| INFO[0001] Creating node 'k3d-rancher-server-0' | |
| INFO[0001] Creating LoadBalancer 'k3d-rancher-serverlb' | |
| INFO[0001] Starting cluster 'rancher' | |
| INFO[0001] Starting servers... | |
| INFO[0001] Starting Node 'k3d-rancher-server-0' | |
| INFO[0007] Starting agents... | |
| INFO[0007] Starting helpers... | |
| INFO[0007] Starting Node 'k3d-rancher-serverlb' | |
| INFO[0007] (Optional) Trying to get IP of the docker host and inject it into the cluster as 'host.k3d.internal' for easy access | |
| INFO[0009] Successfully added host record to /etc/hosts in 2/2 nodes and to the CoreDNS ConfigMap | |
| INFO[0009] Cluster 'rancher' created successfully! | |
| INFO[0009] --kubeconfig-update-default=false --> sets --kubeconfig-switch-context=false | |
| INFO[0009] You can now use it like this: | |
| kubectl config use-context k3d-rancher | |
| kubectl cluster-info | |
| PS C:\Users\ferdi> kubectx k3d-rancher | |
| ✔ Switched to context "k3d-rancher". | |
| PS C:\Users\ferdi> kubectl create namespace cert-manager | |
| namespace/cert-manager created | |
| PS C:\Users\ferdi> helm repo add jetstack https://charts.jetstack.io | |
| "jetstack" has been added to your repositories | |
| PS C:\Users\ferdi> helm repo update | |
| PS C:\Users\ferdi> helm repo update | |
| Hang tight while we grab the latest from your chart repositories... | |
| ...Successfully got an update from the "jetstack" chart repository | |
| Update Complete. ⎈Happy Helming!⎈ | |
| PS C:\Users\ferdi> helm install cert-manager jetstack/cert-manager --namespace cert-manager --set installCRDs=true --version=1.0.4 --wait | |
| NAME: cert-manager | |
| LAST DEPLOYED: Sun Apr 25 12:40:05 2021 | |
| NAMESPACE: cert-manager | |
| STATUS: deployed | |
| REVISION: 1 | |
| TEST SUITE: None | |
| NOTES: | |
| cert-manager has been deployed successfully! | |
| In order to begin issuing certificates, you will need to set up a ClusterIssuer | |
| or Issuer resource (for example, by creating a 'letsencrypt-staging' issuer). | |
| More information on the different types of issuers and how to configure them | |
| can be found in our documentation: | |
| https://cert-manager.io/docs/configuration/ | |
| For information on how to configure cert-manager to automatically provision | |
| Certificates for Ingress resources, take a look at the `ingress-shim` | |
| documentation: | |
| https://cert-manager.io/docs/usage/ingress/ | |
| PS C:\Users\ferdi> kubectl -n cert-manager get all | |
| NAME READY STATUS RESTARTS AGE | |
| pod/cert-manager-cainjector-7b744d56fb-pbmj8 1/1 Running 0 2m17s | |
| pod/cert-manager-7998c69865-twlg2 1/1 Running 0 2m17s | |
| pod/cert-manager-webhook-7d6d4c78bc-t2km8 1/1 Running 0 2m17s | |
| NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE | |
| service/cert-manager-webhook ClusterIP 10.43.231.30 <none> 443/TCP 2m17s | |
| service/cert-manager ClusterIP 10.43.239.80 <none> 9402/TCP 2m17s | |
| NAME READY UP-TO-DATE AVAILABLE AGE | |
| deployment.apps/cert-manager-cainjector 1/1 1 1 2m17s | |
| deployment.apps/cert-manager 1/1 1 1 2m17s | |
| deployment.apps/cert-manager-webhook 1/1 1 1 2m17s | |
| NAME DESIRED CURRENT READY AGE | |
| replicaset.apps/cert-manager-cainjector-7b744d56fb 1 1 1 2m17s | |
| replicaset.apps/cert-manager-7998c69865 1 1 1 2m17s | |
| replicaset.apps/cert-manager-webhook-7d6d4c78bc 1 1 1 2m17s | |
| PS C:\Users\ferdi> helm repo add rancher-stable https://releases.rancher.com/server-charts/stable | |
| "rancher-stable" has been added to your repositories | |
| PS C:\Users\ferdi> helm repo update | |
| Hang tight while we grab the latest from your chart repositories... | |
| ...Successfully got an update from the "jetstack" chart repository | |
| ...Successfully got an update from the "rancher-stable" chart repository | |
| Update Complete. ⎈Happy Helming!⎈ | |
| PS C:\Users\ferdi> kubectl create namespace cattle-system | |
| namespace/cattle-system created | |
| PS C:\Users\ferdi> helm install rancher rancher-stable/rancher --namespace cattle-system --set hostname=rancher.localhost --set replicas=1 --wait | |
| NAME: rancher | |
| LAST DEPLOYED: Sun Apr 25 12:41:51 2021 | |
| NAMESPACE: cattle-system | |
| STATUS: deployed | |
| REVISION: 1 | |
| TEST SUITE: None | |
| NOTES: | |
| Rancher Server has been installed. | |
| NOTE: Rancher may take several minutes to fully initialize. Please standby while Certificates are being issued and Ingress comes up. | |
| Check out our docs at https://rancher.com/docs/rancher/v2.x/en/ | |
| Browse to https://rancher.localhost | |
| Happy Containering! | |
| PS C:\Users\ferdi> kubectl -n cattle-system rollout status deploy/rancher | |
| PS C:\Users\ferdi> kubectl -n cattle-system rollout status deploy/rancher | |
| Waiting for deployment "rancher" rollout to finish: 0 of 1 updated replicas are available... | |
| deployment "rancher" successfully rolled out | |
| ######### Multiple ports exposed | |
| # 80,8443 -> Ambassador Ingress Controller (Service installed as type LoadBalancer) | |
| # 30080,30443 -> Kong Ingress Controller (Service installed as type NodePort) | |
| # 31080,31443 -> Traefik Ingress Controller (Service installed as type NodePort) | |
| PS C:\Users\ferdi> k3d cluster create prova3 --api-port 6443 --k3s-server-arg '--disable=traefik' --port 80:80@loadbalancer --port 8443:44 | |
| 3@loadbalancer --port 30080:30080@server[0] --port 30443:30443@server[0] --port 31080:31080@server[0] --port 31443:31443@server[0] | |
| INFO[0000] Prep: Network | |
| INFO[0000] Created network 'k3d-prova3' | |
| INFO[0000] Created volume 'k3d-prova3-images' | |
| INFO[0001] Creating node 'k3d-prova3-server-0' | |
| INFO[0001] Creating LoadBalancer 'k3d-prova3-serverlb' | |
| INFO[0001] Starting cluster 'prova3' | |
| INFO[0001] Starting servers... | |
| INFO[0001] Starting Node 'k3d-prova3-server-0' | |
| INFO[0007] Starting agents... | |
| INFO[0007] Starting helpers... | |
| INFO[0007] Starting Node 'k3d-prova3-serverlb' | |
| INFO[0008] (Optional) Trying to get IP of the docker host and inject it into the cluster as 'host.k3d.internal' for easy access | |
| INFO[0010] Successfully added host record to /etc/hosts in 2/2 nodes and to the CoreDNS ConfigMap | |
| INFO[0010] Cluster 'prova3' created successfully! | |
| INFO[0010] --kubeconfig-update-default=false --> sets --kubeconfig-switch-context=false | |
| INFO[0010] You can now use it like this: | |
| kubectl config use-context k3d-prova3 | |
| kubectl cluster-info | |
| # Get "internal" Docker host IP address | |
| PS C:\Users\ferdi> kubectx k3d-rancher | |
| ✔ Switched to context "k3d-rancher". | |
| PS C:\Users\ferdi> kubectl -n kube-system describe cm coredns|findstr host.k3d.internal | |
| 192.168.65.2 host.k3d.internal | |
| # add rancher.localhost and other service's hostnames as aliases of host.k3d.internal | |
| PS C:\Users\ferdi> kubectx k3d-prova3 | |
| ✔ Switched to context "k3d-prova3". | |
| PS C:\Users\ferdi> kubectl edit -n kube-system cm coredns | |
| ### add prova3 cluster to Rancher | |
| PS C:\Users\ferdi> curl --insecure -sfL https://rancher.localhost/v3/import/bc2pw7rmdrqqfrlgm9gkrk8lvvp2qz8d5spfmdr22zfdl27mxh4hhf_c-4m2qm.yaml | kubectl apply -f - | |
| clusterrole.rbac.authorization.k8s.io/proxy-clusterrole-kubeapiserver created | |
| clusterrolebinding.rbac.authorization.k8s.io/proxy-role-binding-kubernetes-master created | |
| namespace/cattle-system created | |
| serviceaccount/cattle created | |
| clusterrolebinding.rbac.authorization.k8s.io/cattle-admin-binding created | |
| secret/cattle-credentials-6e59094 created | |
| clusterrole.rbac.authorization.k8s.io/cattle-admin created | |
| deployment.apps/cattle-cluster-agent created | |
| ### AMBASSADOR INGRESS CONTROLLER | |
| helm repo add datawire https://www.getambassador.io | |
| helm repo update | |
| kubectl create namespace ambassador | |
| helm install ambassador datawire/ambassador --namespace ambassador | |
| ### KONG INGRESS CONTROLLER | |
| helm repo add kong https://charts.konghq.com | |
| helm repo update | |
| kubectl create namespace kong | |
| helm install kong kong/kong --namespace kong --values kong-values.yml | |
| ### OPERATOR LIFECYCLE MANAGER | |
| # https://github.com/operator-framework/operator-lifecycle-manager/releases | |
| kubectl apply -f https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.17.0/crds.yaml | |
| kubectl apply -f https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.17.0/olm.yaml | |
| ### KEYCLOAK OPERATOR (IN CUSTOM NAMESPACE) | |
| # https://operatorhub.io/install/keycloak-operator.yaml | |
| kubectl create -f keycloak-operator.yml | |
| ### KEYCLOAK (3 nodes + db) VIA OPERATOR, EXPOSED VIA AMBASSADOR | |
| kubectl create -f keycloak-install.yml |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Please edit the object below. Lines beginning with a '#' will be ignored, | |
| # and an empty file will abort the edit. If an error occurs while saving this file will be | |
| # reopened with the relevant failures. | |
| # | |
| apiVersion: v1 | |
| data: | |
| Corefile: | | |
| .:53 { | |
| errors | |
| health | |
| ready | |
| kubernetes cluster.local in-addr.arpa ip6.arpa { | |
| pods insecure | |
| fallthrough in-addr.arpa ip6.arpa | |
| } | |
| hosts /etc/coredns/NodeHosts { | |
| ttl 60 | |
| reload 15s | |
| fallthrough | |
| } | |
| prometheus :9153 | |
| forward . /etc/resolv.conf | |
| cache 30 | |
| loop | |
| reload | |
| loadbalance | |
| } | |
| NodeHosts: | | |
| 172.24.0.2 k3d-prova3-server-0 | |
| # 192.168.65.2 host.k3d.internal | |
| 192.168.65.2 host.k3d.internal rancher.localhost ambassador.localhost keycloak.localhost | |
| kind: ConfigMap | |
| metadata: | |
| annotations: | |
| objectset.rio.cattle.io/applied: '{"apiVersion":"v1","data":{"Corefile":".:53 | |
| {\n errors\n health\n ready\n kubernetes cluster.local in-addr.arpa | |
| ip6.arpa {\n pods insecure\n fallthrough in-addr.arpa ip6.arpa\n }\n hosts | |
| /etc/coredns/NodeHosts {\n ttl 60\n reload 15s\n fallthrough\n }\n prometheus | |
| :9153\n forward . /etc/resolv.conf\n cache 30\n loop\n reload\n loadbalance\n}\n"},"kind":"ConfigMap","metadata":{"annotations":{"objectset.rio.cattle.io/id":"","objectset.rio.cattle.io/owner-gvk":"k3s.cattle.io/v1, | |
| Kind=Addon","objectset.rio.cattle.io/owner-name":"coredns","objectset.rio.cattle.io/owner-namespace":"kube-system"},"labels":{"objectset.rio.cattle.io/hash":"bce283298811743a0386ab510f2f67ef74240c57"},"name":"coredns","namespace":"kube-system"}}' | |
| objectset.rio.cattle.io/id: "" | |
| objectset.rio.cattle.io/owner-gvk: k3s.cattle.io/v1, Kind=Addon | |
| objectset.rio.cattle.io/owner-name: coredns | |
| objectset.rio.cattle.io/owner-namespace: kube-system | |
| creationTimestamp: "2021-04-25T12:41:03Z" | |
| labels: | |
| objectset.rio.cattle.io/hash: bce283298811743a0386ab510f2f67ef74240c57 | |
| name: coredns | |
| namespace: kube-system | |
| resourceVersion: "327" | |
| uid: c0a47372-8c3e-4367-9f47-dcabb24257de |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| apiVersion: getambassador.io/v2 | |
| kind: Mapping | |
| metadata: | |
| name: keycloak | |
| namespace: keycloak | |
| spec: | |
| prefix: / | |
| host: keycloak.fsimonetti.info | |
| service: https://keycloak:8443 | |
| --- | |
| apiVersion: keycloak.org/v1alpha1 | |
| kind: Keycloak | |
| metadata: | |
| name: keycloak | |
| namespace: keycloak | |
| labels: | |
| app: keycloak | |
| spec: | |
| instances: 3 | |
| extensions: | |
| - https://github.com/aerogear/keycloak-metrics-spi/releases/download/1.0.4/keycloak-metrics-spi-1.0.4.jar | |
| externalAccess: | |
| enabled: false | |
| --- | |
| apiVersion: keycloak.org/v1alpha1 | |
| kind: KeycloakRealm | |
| metadata: | |
| name: myrealm | |
| namespace: keycloak | |
| labels: | |
| app: myrealm | |
| spec: | |
| realm: | |
| id: "myrealm" | |
| realm: "myrealm" | |
| enabled: True | |
| displayName: "My Realm" | |
| instanceSelector: | |
| matchLabels: | |
| app: keycloak | |
| --- | |
| apiVersion: keycloak.org/v1alpha1 | |
| kind: KeycloakClient | |
| metadata: | |
| name: myclient | |
| namespace: keycloak | |
| labels: | |
| app: myclient | |
| spec: | |
| realmSelector: | |
| matchLabels: | |
| app: myrealm | |
| client: | |
| # auto-generated if not supplied | |
| #id: 123 | |
| clientId: myclient |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| --- | |
| apiVersion: v1 | |
| kind: Namespace | |
| metadata: | |
| name: keycloak | |
| --- | |
| apiVersion: operators.coreos.com/v1 | |
| kind: OperatorGroup | |
| metadata: | |
| name: operatorgroup | |
| namespace: keycloak | |
| spec: | |
| targetNamespaces: | |
| - keycloak | |
| --- | |
| apiVersion: operators.coreos.com/v1alpha1 | |
| kind: Subscription | |
| metadata: | |
| name: keycloak-operator | |
| namespace: keycloak | |
| spec: | |
| channel: alpha | |
| name: keycloak-operator | |
| source: operatorhubio-catalog | |
| sourceNamespace: olm |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Default values for Kong's Helm Chart. | |
| # Declare variables to be passed into your templates. | |
| # | |
| # Sections: | |
| # - Deployment parameters | |
| # - Kong parameters | |
| # - Ingress Controller parameters | |
| # - Postgres sub-chart parameters | |
| # - Miscellaneous parameters | |
| # - Kong Enterprise parameters | |
| # ----------------------------------------------------------------------------- | |
| # Deployment parameters | |
| # ----------------------------------------------------------------------------- | |
| deployment: | |
| kong: | |
| # Enable or disable Kong itself | |
| # Setting this to false with ingressController.enabled=true will create a | |
| # controller-only release. | |
| enabled: true | |
| ## Optionally specify any extra sidecar containers to be included in the deployment | |
| ## See https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.18/#container-v1-core | |
| # sidecarContainers: | |
| # - name: sidecar | |
| # image: sidecar:latest | |
| # Override namepsace for Kong chart resources. By default, the chart creates resources in the release namespace. | |
| # This may not be desirable when using this chart as a dependency. | |
| # namespace: "example" | |
| # ----------------------------------------------------------------------------- | |
| # Kong parameters | |
| # ----------------------------------------------------------------------------- | |
| # Specify Kong configuration | |
| # This chart takes all entries defined under `.env` and transforms them into into `KONG_*` | |
| # environment variables for Kong containers. | |
| # Their names here should match the names used in https://github.com/Kong/kong/blob/master/kong.conf.default | |
| # See https://docs.konghq.com/latest/configuration also for additional details | |
| # Values here take precedence over values from other sections of values.yaml, | |
| # e.g. setting pg_user here will override the value normally set when postgresql.enabled | |
| # is set below. In general, you should not set values here if they are set elsewhere. | |
| env: | |
| database: "off" | |
| nginx_worker_processes: "2" | |
| proxy_access_log: /dev/stdout | |
| admin_access_log: /dev/stdout | |
| admin_gui_access_log: /dev/stdout | |
| portal_api_access_log: /dev/stdout | |
| proxy_error_log: /dev/stderr | |
| admin_error_log: /dev/stderr | |
| admin_gui_error_log: /dev/stderr | |
| portal_api_error_log: /dev/stderr | |
| prefix: /kong_prefix/ | |
| # Specify Kong's Docker image and repository details here | |
| image: | |
| repository: kong | |
| tag: "2.3" | |
| # Kong Enterprise | |
| # repository: kong-docker-kong-gateway-docker.bintray.io/kong-enterprise-edition | |
| # tag: "2.3.2.0-alpine" | |
| pullPolicy: IfNotPresent | |
| ## Optionally specify an array of imagePullSecrets. | |
| ## Secrets must be manually created in the namespace. | |
| ## If using the official Kong Enterprise registry above, you MUST provide a secret. | |
| ## ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ | |
| ## | |
| # pullSecrets: | |
| # - myRegistrKeySecretName | |
| # Specify Kong admin API service and listener configuration | |
| admin: | |
| # Enable creating a Kubernetes service for the admin API | |
| # Disabling this is recommended for most ingress controller configurations | |
| # Enterprise users that wish to use Kong Manager with the controller should enable this | |
| enabled: false | |
| type: NodePort | |
| # To specify annotations or labels for the admin service, add them to the respective | |
| # "annotations" or "labels" dictionaries below. | |
| annotations: {} | |
| # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" | |
| labels: {} | |
| http: | |
| # Enable plaintext HTTP listen for the admin API | |
| # Disabling this and using a TLS listen only is recommended for most configuration | |
| enabled: false | |
| servicePort: 8001 | |
| containerPort: 8001 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32080 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: [] | |
| tls: | |
| # Enable HTTPS listen for the admin API | |
| enabled: true | |
| servicePort: 8444 | |
| containerPort: 8444 | |
| # Set a target port for the TLS port in the admin API service, useful when using TLS | |
| # termination on an ELB. | |
| # overrideServiceTargetPort: 8000 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32443 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: | |
| - http2 | |
| # Kong admin ingress settings. Useful if you want to expose the Admin | |
| # API of Kong outside the k8s cluster. | |
| ingress: | |
| # Enable/disable exposure using ingress. | |
| enabled: false | |
| # TLS secret name. | |
| # tls: kong-admin.example.com-tls | |
| # Ingress hostname | |
| hostname: | |
| # Map of ingress annotations. | |
| annotations: {} | |
| # Ingress path. | |
| path: / | |
| # Specify Kong status listener configuration | |
| # This listen is internal-only. It cannot be exposed through a service or ingress. | |
| status: | |
| enabled: true | |
| http: | |
| # Enable plaintext HTTP listen for the status listen | |
| enabled: true | |
| containerPort: 8100 | |
| parameters: [] | |
| tls: | |
| # Enable HTTPS listen for the status listen | |
| # Kong versions prior to 2.1 do not support TLS status listens. | |
| # This setting must remain false on those versions | |
| enabled: false | |
| containerPort: 8543 | |
| parameters: [] | |
| # Specify Kong cluster service and listener configuration | |
| # | |
| # The cluster service *must* use TLS. It does not support the "http" block | |
| # available on other services. | |
| # | |
| # The cluster service cannot be exposed through an Ingress, as it must perform | |
| # TLS client validation directly and is not compatible with TLS-terminating | |
| # proxies. If you need to expose it externally, you must use "type: | |
| # LoadBalancer" and use a TCP-only load balancer (check your Kubernetes | |
| # provider's documentation, as the configuration required for this varies). | |
| cluster: | |
| enabled: false | |
| # To specify annotations or labels for the cluster service, add them to the respective | |
| # "annotations" or "labels" dictionaries below. | |
| annotations: {} | |
| # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" | |
| labels: {} | |
| tls: | |
| enabled: false | |
| servicePort: 8005 | |
| containerPort: 8005 | |
| parameters: [] | |
| type: ClusterIP | |
| # Specify Kong proxy service configuration | |
| proxy: | |
| # Enable creating a Kubernetes service for the proxy | |
| enabled: true | |
| type: NodePort | |
| # To specify annotations or labels for the proxy service, add them to the respective | |
| # "annotations" or "labels" dictionaries below. | |
| annotations: {} | |
| # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" | |
| labels: | |
| enable-metrics: "true" | |
| http: | |
| # Enable plaintext HTTP listen for the proxy | |
| enabled: true | |
| servicePort: 80 | |
| containerPort: 8000 | |
| nodePort: 30080 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32080 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: [] | |
| tls: | |
| # Enable HTTPS listen for the proxy | |
| enabled: true | |
| servicePort: 443 | |
| containerPort: 8443 | |
| nodePort: 30443 | |
| # Set a target port for the TLS port in proxy service, useful when using TLS | |
| # termination on an ELB. | |
| # overrideServiceTargetPort: 8000 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32443 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: | |
| - http2 | |
| # Define stream (TCP) listen | |
| # To enable, remove "{}", uncomment the section below, and select your desired | |
| # ports and parameters. Listens are dynamically named after their servicePort, | |
| # e.g. "stream-9000" for the below. | |
| stream: {} | |
| # # Set the container (internal) and service (external) ports for this listen. | |
| # # These values should normally be the same. If your environment requires they | |
| # # differ, note that Kong will match routes based on the containerPort only. | |
| # - containerPort: 9000 | |
| # servicePort: 9000 | |
| # # Optionally set a static nodePort if the service type is NodePort | |
| # # nodePort: 32080 | |
| # # Additional listen parameters, e.g. "ssl", "reuseport", "backlog=16384" | |
| # # "ssl" is required for SNI-based routes. It is not supported on versions <2.0 | |
| # parameters: [] | |
| # Kong proxy ingress settings. | |
| # Note: You need this only if you are using another Ingress Controller | |
| # to expose Kong outside the k8s cluster. | |
| ingress: | |
| # Enable/disable exposure using ingress. | |
| enabled: false | |
| # Ingress hostname | |
| # TLS secret name. | |
| # tls: kong-admin.example.com-tls | |
| hostname: | |
| # Map of ingress annotations. | |
| annotations: {} | |
| # Ingress path. | |
| path: / | |
| # Optionally specify a static load balancer IP. | |
| # loadBalancerIP: | |
| # Custom Kong plugins can be loaded into Kong by mounting the plugin code | |
| # into the file-system of Kong container. | |
| # The plugin code should be present in ConfigMap or Secret inside the same | |
| # namespace as Kong is being installed. | |
| # The `name` property refers to the name of the ConfigMap or Secret | |
| # itself, while the pluginName refers to the name of the plugin as it appears | |
| # in Kong. | |
| # Subdirectories (which are optional) require separate ConfigMaps/Secrets. | |
| # "path" indicates their directory under the main plugin directory: the example | |
| # below will mount the contents of kong-plugin-rewriter-migrations at "/opt/kong/rewriter/migrations". | |
| plugins: {} | |
| # configMaps: | |
| # - pluginName: rewriter | |
| # name: kong-plugin-rewriter | |
| # subdirectories: | |
| # - name: kong-plugin-rewriter-migrations | |
| # path: migrations | |
| # secrets: | |
| # - pluginName: rewriter | |
| # name: kong-plugin-rewriter | |
| # Inject specified secrets as a volume in Kong Container at path /etc/secrets/{secret-name}/ | |
| # This can be used to override default SSL certificates. | |
| # Be aware that the secret name will be used verbatim, and that certain types | |
| # of punctuation (e.g. `.`) can cause issues. | |
| # Example configuration | |
| # secretVolumes: | |
| # - kong-proxy-tls | |
| # - kong-admin-tls | |
| secretVolumes: [] | |
| # Enable/disable migration jobs, and set annotations for them | |
| migrations: | |
| # Enable pre-upgrade migrations (run "kong migrations up") | |
| preUpgrade: true | |
| # Enable post-upgrade migrations (run "kong migrations finish") | |
| postUpgrade: true | |
| # Annotations to apply to migrations job pods | |
| # By default, these disable service mesh sidecar injection for Istio and Kuma, | |
| # as the sidecar containers do not terminate and prevent the jobs from completing | |
| annotations: | |
| sidecar.istio.io/inject: false | |
| # Additional annotations to apply to migration jobs | |
| # This is helpful in certain non-Helm installation situations such as GitOps | |
| # where additional control is required around this job creation. | |
| jobAnnotations: {} | |
| resources: {} | |
| # Example reasonable setting for "resources": | |
| # resources: | |
| # limits: | |
| # cpu: 100m | |
| # memory: 256Mi | |
| # requests: | |
| # cpu: 50m | |
| # memory: 128Mi | |
| # Kong's configuration for DB-less mode | |
| # Note: Use this section only if you are deploying Kong in DB-less mode | |
| # and not as an Ingress Controller. | |
| ### dblessConfig: | |
| ### # Either Kong's configuration is managed from an existing ConfigMap (with Key: kong.yml) | |
| ### configMap: "" | |
| ### # Or the configuration is passed in full-text below | |
| ### config: | |
| ### _format_version: "1.1" | |
| ### services: | |
| ### # Example configuration | |
| ### # - name: example.com | |
| ### # url: http://example.com | |
| ### # routes: | |
| ### # - name: example | |
| ### # paths: | |
| ### # - "/example" | |
| # ----------------------------------------------------------------------------- | |
| # Ingress Controller parameters | |
| # ----------------------------------------------------------------------------- | |
| # Kong Ingress Controller's primary purpose is to satisfy Ingress resources | |
| # created in k8s. It uses CRDs for more fine grained control over routing and | |
| # for Kong specific configuration. | |
| ingressController: | |
| enabled: true | |
| image: | |
| repository: kong/kubernetes-ingress-controller | |
| tag: "1.1" | |
| args: [] | |
| # Specify Kong Ingress Controller configuration via environment variables | |
| env: | |
| # The controller disables TLS verification by default because Kong | |
| # generates self-signed certificates by default. Set this to false once you | |
| # have installed CA-signed certificates. | |
| kong_admin_tls_skip_verify: true | |
| # If using Kong Enterprise with RBAC enabled, uncomment the section below | |
| # and specify the secret/key containing your admin token. | |
| # kong_admin_token: | |
| # valueFrom: | |
| # secretKeyRef: | |
| # name: CHANGEME-admin-token-secret | |
| # key: CHANGEME-admin-token-key | |
| admissionWebhook: | |
| enabled: false | |
| failurePolicy: Fail | |
| port: 8080 | |
| ingressClass: kong | |
| rbac: | |
| # Specifies whether RBAC resources should be created | |
| create: true | |
| serviceAccount: | |
| # Specifies whether a ServiceAccount should be created | |
| create: true | |
| # The name of the ServiceAccount to use. | |
| # If not set and create is true, a name is generated using the fullname template | |
| name: | |
| # The annotations for service account | |
| annotations: {} | |
| # general properties | |
| livenessProbe: | |
| httpGet: | |
| path: "/healthz" | |
| port: 10254 | |
| scheme: HTTP | |
| initialDelaySeconds: 5 | |
| timeoutSeconds: 5 | |
| periodSeconds: 10 | |
| successThreshold: 1 | |
| failureThreshold: 3 | |
| readinessProbe: | |
| httpGet: | |
| path: "/healthz" | |
| port: 10254 | |
| scheme: HTTP | |
| initialDelaySeconds: 5 | |
| timeoutSeconds: 5 | |
| periodSeconds: 10 | |
| successThreshold: 1 | |
| failureThreshold: 3 | |
| resources: {} | |
| # Example reasonable setting for "resources": | |
| # resources: | |
| # limits: | |
| # cpu: 100m | |
| # memory: 256Mi | |
| # requests: | |
| # cpu: 50m | |
| # memory: 128Mi | |
| # ----------------------------------------------------------------------------- | |
| # Postgres sub-chart parameters | |
| # ----------------------------------------------------------------------------- | |
| # Kong can run without a database or use either Postgres or Cassandra | |
| # as a backend datatstore for it's configuration. | |
| # By default, this chart installs Kong without a database. | |
| # If you would like to use a database, there are two options: | |
| # - (recommended) Deploy and maintain a database and pass the connection | |
| # details to Kong via the `env` section. | |
| # - You can use the below `postgresql` sub-chart to deploy a database | |
| # along-with Kong as part of a single Helm release. | |
| # PostgreSQL chart documentation: | |
| # https://github.com/bitnami/charts/blob/master/bitnami/postgresql/README.md | |
| postgresql: | |
| enabled: false | |
| # postgresqlUsername: kong | |
| # postgresqlDatabase: kong | |
| # service: | |
| # port: 5432 | |
| # ----------------------------------------------------------------------------- | |
| # Miscellaneous parameters | |
| # ----------------------------------------------------------------------------- | |
| waitImage: | |
| # Wait for the database to come online before starting Kong or running migrations | |
| # If Kong is to access the database through a service mesh that injects a sidecar to | |
| # Kong's container, this must be disabled. Otherwise there'll be a deadlock: | |
| # InitContainer waiting for DB access that requires the sidecar, and the sidecar | |
| # waiting for InitContainers to finish. | |
| enabled: true | |
| # Optionally specify an image that provides bash for pre-migration database | |
| # checks. If none is specified, the chart uses the Kong image. The official | |
| # Kong images provide bash | |
| # repository: bash | |
| # tag: 5 | |
| pullPolicy: IfNotPresent | |
| # update strategy | |
| updateStrategy: {} | |
| # type: RollingUpdate | |
| # rollingUpdate: | |
| # maxSurge: "100%" | |
| # maxUnavailable: "0%" | |
| # If you want to specify resources, uncomment the following | |
| # lines, adjust them as necessary, and remove the curly braces after 'resources:'. | |
| resources: {} | |
| # limits: | |
| # cpu: 100m | |
| # memory: 256Mi | |
| # requests: | |
| # cpu: 100m | |
| # memory: 256Mi | |
| # readinessProbe for Kong pods | |
| # If using Kong Enterprise with RBAC, you must add a Kong-Admin-Token header | |
| readinessProbe: | |
| httpGet: | |
| path: "/status" | |
| port: status | |
| scheme: HTTP | |
| initialDelaySeconds: 5 | |
| timeoutSeconds: 5 | |
| periodSeconds: 10 | |
| successThreshold: 1 | |
| failureThreshold: 3 | |
| # livenessProbe for Kong pods | |
| livenessProbe: | |
| httpGet: | |
| path: "/status" | |
| port: status | |
| scheme: HTTP | |
| initialDelaySeconds: 5 | |
| timeoutSeconds: 5 | |
| periodSeconds: 10 | |
| successThreshold: 1 | |
| failureThreshold: 3 | |
| # Proxy container lifecycle hooks | |
| # Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/ | |
| lifecycle: | |
| preStop: | |
| exec: | |
| # Note kong quit has a default timeout of 10 seconds | |
| command: ["/bin/sh", "-c", "/bin/sleep 15 && kong quit"] | |
| # Sets the termination grace period for pods spawned by the Kubernetes Deployment. | |
| # Ref: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-handler-execution | |
| terminationGracePeriodSeconds: 30 | |
| # Affinity for pod assignment | |
| # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity | |
| # affinity: {} | |
| # Topology spread constraints for pod assignment (requires Kubernetes >= 1.19) | |
| # Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ | |
| # topologySpreadConstraints: [] | |
| # Tolerations for pod assignment | |
| # Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ | |
| tolerations: [] | |
| # Node labels for pod assignment | |
| # Ref: https://kubernetes.io/docs/user-guide/node-selection/ | |
| nodeSelector: {} | |
| # Annotation to be added to Kong pods | |
| podAnnotations: {} | |
| # Labels to be added to Kong pods | |
| podLabels: {} | |
| # Kong pod count. | |
| # It has no effect when autoscaling.enabled is set to true | |
| replicaCount: 1 | |
| # Annotations to be added to Kong deployment | |
| deploymentAnnotations: | |
| kuma.io/gateway: enabled | |
| traffic.sidecar.istio.io/includeInboundPorts: "" | |
| # Enable autoscaling using HorizontalPodAutoscaler | |
| # When configuring an HPA, you must set resource requests on all containers via | |
| # "resources" and, if using the controller, "ingressController.resources" in values.yaml | |
| autoscaling: | |
| enabled: false | |
| minReplicas: 2 | |
| maxReplicas: 5 | |
| ## targetCPUUtilizationPercentage only used if the cluster doesn't support autoscaling/v2beta | |
| targetCPUUtilizationPercentage: | |
| ## Otherwise for clusters that do support autoscaling/v2beta, use metrics | |
| metrics: | |
| - type: Resource | |
| resource: | |
| name: cpu | |
| target: | |
| type: Utilization | |
| averageUtilization: 80 | |
| # Kong Pod Disruption Budget | |
| podDisruptionBudget: | |
| enabled: false | |
| maxUnavailable: "50%" | |
| podSecurityPolicy: | |
| enabled: false | |
| spec: | |
| privileged: false | |
| fsGroup: | |
| rule: RunAsAny | |
| runAsUser: | |
| rule: RunAsAny | |
| runAsGroup: | |
| rule: RunAsAny | |
| seLinux: | |
| rule: RunAsAny | |
| supplementalGroups: | |
| rule: RunAsAny | |
| volumes: | |
| - 'configMap' | |
| - 'secret' | |
| - 'emptyDir' | |
| allowPrivilegeEscalation: false | |
| hostNetwork: false | |
| hostIPC: false | |
| hostPID: false | |
| # Make the root filesystem read-only. This is not compatible with Kong Enterprise <1.5. | |
| # If you use Kong Enterprise <1.5, this must be set to false. | |
| readOnlyRootFilesystem: true | |
| priorityClassName: "" | |
| # securityContext for Kong pods. | |
| securityContext: {} | |
| serviceMonitor: | |
| # Specifies whether ServiceMonitor for Prometheus operator should be created | |
| enabled: false | |
| # interval: 10s | |
| # Specifies namespace, where ServiceMonitor should be installed | |
| # namespace: monitoring | |
| # labels: | |
| # foo: bar | |
| # targetLabels: | |
| # - foo | |
| # ----------------------------------------------------------------------------- | |
| # Kong Enterprise parameters | |
| # ----------------------------------------------------------------------------- | |
| # Toggle Kong Enterprise features on or off | |
| # RBAC and SMTP configuration have additional options that must all be set together | |
| # Other settings should be added to the "env" settings below | |
| enterprise: | |
| enabled: false | |
| # Kong Enterprise license secret name | |
| # This secret must contain a single 'license' key, containing your base64-encoded license data | |
| # The license secret is required to unlock all Enterprise features. If you omit it, | |
| # Kong will run in free mode, with some Enterprise features disabled. | |
| # license_secret: kong-enterprise-license | |
| vitals: | |
| enabled: true | |
| portal: | |
| enabled: false | |
| rbac: | |
| enabled: false | |
| admin_gui_auth: basic-auth | |
| # If RBAC is enabled, this Secret must contain an admin_gui_session_conf key | |
| # The key value must be a secret configuration, following the example at | |
| # https://docs.konghq.com/enterprise/latest/kong-manager/authentication/sessions | |
| session_conf_secret: kong-session-config | |
| # If admin_gui_auth is not set to basic-auth, provide a secret name which | |
| # has an admin_gui_auth_conf key containing the plugin config JSON | |
| admin_gui_auth_conf_secret: CHANGEME-admin-gui-auth-conf-secret | |
| # For configuring emails and SMTP, please read through: | |
| # https://docs.konghq.com/enterprise/latest/developer-portal/configuration/smtp | |
| # https://docs.konghq.com/enterprise/latest/kong-manager/networking/email | |
| smtp: | |
| enabled: false | |
| portal_emails_from: none@example.com | |
| portal_emails_reply_to: none@example.com | |
| admin_emails_from: none@example.com | |
| admin_emails_reply_to: none@example.com | |
| smtp_admin_emails: none@example.com | |
| smtp_host: smtp.example.com | |
| smtp_port: 587 | |
| smtp_auth_type: '' | |
| smtp_ssl: nil | |
| smtp_starttls: true | |
| auth: | |
| # If your SMTP server does not require authentication, this section can | |
| # be left as-is. If smtp_username is set to anything other than an empty | |
| # string, you must create a Secret with an smtp_password key containing | |
| # your SMTP password and specify its name here. | |
| smtp_username: '' # e.g. postmaster@example.com | |
| smtp_password_secret: CHANGEME-smtp-password | |
| manager: | |
| # Enable creating a Kubernetes service for Kong Manager | |
| enabled: true | |
| type: NodePort | |
| # To specify annotations or labels for the Manager service, add them to the respective | |
| # "annotations" or "labels" dictionaries below. | |
| annotations: {} | |
| # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" | |
| labels: {} | |
| http: | |
| # Enable plaintext HTTP listen for Kong Manager | |
| enabled: true | |
| servicePort: 8002 | |
| containerPort: 8002 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32080 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: [] | |
| tls: | |
| # Enable HTTPS listen for Kong Manager | |
| enabled: true | |
| servicePort: 8445 | |
| containerPort: 8445 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32443 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: | |
| - http2 | |
| ingress: | |
| # Enable/disable exposure using ingress. | |
| enabled: false | |
| # TLS secret name. | |
| # tls: kong-proxy.example.com-tls | |
| # Ingress hostname | |
| hostname: | |
| # Map of ingress annotations. | |
| annotations: {} | |
| # Ingress path. | |
| path: / | |
| portal: | |
| # Enable creating a Kubernetes service for the Developer Portal | |
| enabled: true | |
| type: NodePort | |
| # To specify annotations or labels for the Portal service, add them to the respective | |
| # "annotations" or "labels" dictionaries below. | |
| annotations: {} | |
| # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" | |
| labels: {} | |
| http: | |
| # Enable plaintext HTTP listen for the Developer Portal | |
| enabled: true | |
| servicePort: 8003 | |
| containerPort: 8003 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32080 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: [] | |
| tls: | |
| # Enable HTTPS listen for the Developer Portal | |
| enabled: true | |
| servicePort: 8446 | |
| containerPort: 8446 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32443 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: | |
| - http2 | |
| ingress: | |
| # Enable/disable exposure using ingress. | |
| enabled: false | |
| # TLS secret name. | |
| # tls: kong-proxy.example.com-tls | |
| # Ingress hostname | |
| hostname: | |
| # Map of ingress annotations. | |
| annotations: {} | |
| # Ingress path. | |
| path: / | |
| portalapi: | |
| # Enable creating a Kubernetes service for the Developer Portal API | |
| enabled: true | |
| type: NodePort | |
| # To specify annotations or labels for the Portal API service, add them to the respective | |
| # "annotations" or "labels" dictionaries below. | |
| annotations: {} | |
| # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" | |
| labels: {} | |
| http: | |
| # Enable plaintext HTTP listen for the Developer Portal API | |
| enabled: true | |
| servicePort: 8004 | |
| containerPort: 8004 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32080 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: [] | |
| tls: | |
| # Enable HTTPS listen for the Developer Portal API | |
| enabled: true | |
| servicePort: 8447 | |
| containerPort: 8447 | |
| # Set a nodePort which is available if service type is NodePort | |
| # nodePort: 32443 | |
| # Additional listen parameters, e.g. "reuseport", "backlog=16384" | |
| parameters: | |
| - http2 | |
| ingress: | |
| # Enable/disable exposure using ingress. | |
| enabled: false | |
| # TLS secret name. | |
| # tls: kong-proxy.example.com-tls | |
| # Ingress hostname | |
| hostname: | |
| # Map of ingress annotations. | |
| annotations: {} | |
| # Ingress path. | |
| path: / | |
| clustertelemetry: | |
| enabled: false | |
| # To specify annotations or labels for the cluster telemetry service, add them to the respective | |
| # "annotations" or "labels" dictionaries below. | |
| annotations: {} | |
| # service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*" | |
| labels: {} | |
| tls: | |
| enabled: false | |
| servicePort: 8006 | |
| containerPort: 8006 | |
| parameters: [] | |
| type: ClusterIP | |
| extraConfigMaps: [] | |
| # extraConfigMaps: | |
| # - name: my-config-map | |
| # mountPath: /mount/to/my/location | |
| # subPath: my-subpath # Optional, if you wish to mount a single key and not the entire ConfigMap | |
| extraSecrets: [] | |
| # extraSecrets: | |
| # - name: my-secret | |
| # mountPath: /mount/to/my/location | |
| # subPath: my-subpath # Optional, if you wish to mount a single key and not the entire ConfigMap |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment