Helm install Nginx Ingress

To facilitate the cluster service is exposed to the outside of the cluster, you use Ingress. Next Helm will use to deploy Nginx Ingress Kubernetes. Nginx Ingress Controller be deployed on the edge node Kubernetes.

Here masteras an edge node, markedlabel

[root@master /]# kubectl label node master node-role.kubernetes.io/edge=
node/master labeled
[root@master /]# kubectl get nodes
NAME      STATUS   ROLES         AGE    VERSION
master    Ready    edge,master   4d3h   v1.15.1
slaver1   Ready    <none>        4d2h   v1.15.1
slaver2   Ready    <none>        4d2h   v1.15.1

installation

Use yamlthe configuration file to install

stable / nginx-ingress chart file ingress-nginx.yaml values ​​as follows:

controller:
  replicaCount: 1
  hostNetwork: true
  nodeSelector:
    node-role.kubernetes.io/edge: ''
  affinity:
    podAntiAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
        - labelSelector:
            matchExpressions:
            - key: app
              operator: In
              values:
              - nginx-ingress
            - key: component
              operator: In
              values:
              - controller
          topologyKey: kubernetes.io/hostname
  tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: PreferNoSchedule
defaultBackend:
  nodeSelector:
    node-role.kubernetes.io/edge: ''
  tolerations:
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: PreferNoSchedule

The full version of nginx-ingress

nginx ingress controller replicaCount number of copies is 1, will be scheduled to the edge node on node1. Here does not specify the nginx ingress controller service externalIPs, but by hostNetwork: trueusing the host network is provided nginx ingress controller.

helm repo update

helm install stable/nginx-ingress \
-n nginx-ingress \
--namespace ingress-nginx  \
-f ingress-nginx.yaml

specific information:

[root@master /]# helm install stable/nginx-ingress -n nginx-ingress --namespace ingress-nginx  -f ingress-nginx.yaml
NAME:   nginx-ingress
LAST DEPLOYED: Tue Jul 30 14:39:58 2019
NAMESPACE: ingress-nginx
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME                      DATA  AGE
nginx-ingress-controller  1     <invalid>

==> v1/Pod(related)
NAME                                           READY  STATUS             RESTARTS  AGE
nginx-ingress-controller-657658b9b-sp9fx       0/1    ContainerCreating  0         <invalid>
nginx-ingress-default-backend-f8b68765c-kfks5  0/1    ContainerCreating  0         <invalid>

==> v1/Service
NAME                           TYPE          CLUSTER-IP      EXTERNAL-IP  PORT(S)                     AGE
nginx-ingress-controller       LoadBalancer  10.109.165.210  <pending>    80:32371/TCP,443:32057/TCP  <invalid>
nginx-ingress-default-backend  ClusterIP     10.101.156.153  <none>       80/TCP                      <invalid>

==> v1beta1/Deployment
NAME                           READY  UP-TO-DATE  AVAILABLE  AGE
nginx-ingress-controller       0/1    1           0          <invalid>
nginx-ingress-default-backend  0/1    1           0          <invalid>

==> v1beta1/PodDisruptionBudget
NAME                           MIN AVAILABLE  MAX UNAVAILABLE  ALLOWED DISRUPTIONS  AGE
nginx-ingress-controller       1              N/A              0                    <invalid>
nginx-ingress-default-backend  1              N/A              0                    <invalid>


NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace ingress-nginx get services -o wide -w nginx-ingress-controller'

An example Ingress that makes use of the controller:

  apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.class: nginx
    name: example
    namespace: foo
  spec:
    rules:
      - host: www.example.com
        http:
          paths:
            - backend:
                serviceName: exampleService
                servicePort: 80
              path: /
    # This section is only required if TLS is to be enabled for the Ingress
    tls:
        - hosts:
            - www.example.com
          secretName: example-tls

If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:

  apiVersion: v1
  kind: Secret
  metadata:
    name: example-tls
    namespace: foo
  data:
    tls.crt: <base64 encoded cert>
    tls.key: <base64 encoded key>
  type: kubernetes.io/tls

Direct installation using the command

helm install stable/nginx-ingress \
-n nginx-ingress \
--namespace ingress-nginx  \
--set controller.hostNetwork=true,rbac.create=true \
--set controller.replicaCount=1

Output:

[root@master /]# helm install stable/nginx-ingress \
> -n nginx-ingress \
> --namespace ingress-nginx  \
> --set controller.hostNetwork=true,rbac.create=true \
> --set controller.replicaCount=1
Error: release nginx-ingress failed: Deployment in version "v1beta1" cannot be handled as a Deployment: v1beta1.Deployment.Spec: v1beta1.DeploymentSpec.Template: v1.PodTemplateSpec.Spec: v1.PodSpec.HostNetwork: ReadBool: expect t or f, but found ", error found in #10 byte of ...|Network":"true,rba|..., bigger context ...|s":{}}],"dnsPolicy":"ClusterFirst","hostNetwork":"true,rbac.create=true","serviceAccountName":"def|...

Installing an exception, when I was here the helm installation without setting rbac, remove and reinstall them

[root@master /]# helm install stable/nginx-ingress \
> -n nginx-ingress \
> --namespace ingress-nginx  \
> --set controller.hostNetwork=true,controller.replicaCount=1
NAME:   nginx-ingress
LAST DEPLOYED: Tue Jul 30 15:19:59 2019
NAMESPACE: ingress-nginx
STATUS: DEPLOYED

RESOURCES:
==> v1/ConfigMap
NAME                      DATA  AGE
nginx-ingress-controller  1     <invalid>

==> v1/Pod(related)
NAME                                           READY  STATUS             RESTARTS  AGE
nginx-ingress-controller-67db56c89f-2hkxq      0/1    ContainerCreating  0         <invalid>
nginx-ingress-default-backend-878d64884-q4fmt  0/1    ContainerCreating  0         <invalid>

==> v1/Service
NAME                           TYPE          CLUSTER-IP      EXTERNAL-IP  PORT(S)                     AGE
nginx-ingress-controller       LoadBalancer  10.108.107.199  <pending>    80:31412/TCP,443:31392/TCP  <invalid>
nginx-ingress-default-backend  ClusterIP     10.107.244.59   <none>       80/TCP                      <invalid>

==> v1beta1/Deployment
NAME                           READY  UP-TO-DATE  AVAILABLE  AGE
nginx-ingress-controller       0/1    1           0          <invalid>
nginx-ingress-default-backend  0/1    1           0          <invalid>

==> v1beta1/PodDisruptionBudget
NAME                           MIN AVAILABLE  MAX UNAVAILABLE  ALLOWED DISRUPTIONS  AGE
nginx-ingress-controller       1              N/A              0                    <invalid>
nginx-ingress-default-backend  1              N/A              0                    <invalid>


NOTES:
The nginx-ingress controller has been installed.
It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status by running 'kubectl --namespace ingress-nginx get services -o wide -w nginx-ingress-controller'

An example Ingress that makes use of the controller:

  apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.class: nginx
    name: example
    namespace: foo
  spec:
    rules:
      - host: www.example.com
        http:
          paths:
            - backend:
                serviceName: exampleService
                servicePort: 80
              path: /
    # This section is only required if TLS is to be enabled for the Ingress
    tls:
        - hosts:
            - www.example.com
          secretName: example-tls

If TLS is enabled for the Ingress, a Secret containing the certificate and key must also be provided:

  apiVersion: v1
  kind: Secret
  metadata:
    name: example-tls
    namespace: foo
  data:
    tls.crt: <base64 encoded cert>
    tls.key: <base64 encoded key>
  type: kubernetes.io/tls

Delete nginx-ingress

deletenginx-ingress

[root@master /]# helm delete nginx-ingress
release "nginx-ingress" deleted
[root@master /]# helm ls --all nginx-ingress
NAME            REVISION    UPDATED                     STATUS  CHART               APP VERSION NAMESPACE    
nginx-ingress   1           Tue Jul 30 14:31:01 2019    DELETED nginx-ingress-0.9.5 0.10.2      ingress-nginx
[root@master /]# helm delete --purge nginx-ingress
release "nginx-ingress" deleted
[root@master /]# helm ls --all nginx-ingress

Use --purgeparameters can be completely removed without leaving a record release, otherwise the next time you can not use the same name as the deployment of the release.

Successful installation View

View pods:

[root@master /]# kubectl get pod -n ingress-nginx -o wide
NAME                                            READY   STATUS             RESTARTS   AGE   IP              NODE     NOMINATED NODE   READINESS GATES
nginx-ingress-controller-657658b9b-sp9fx        0/1     CrashLoopBackOff   2          61s   18.16.202.163   master   <none>           <none>
nginx-ingress-default-backend-f8b68765c-kfks5   1/1     Running            0          61s   10.244.0.2      master   <none>           <none>

View services:

[root@master /]# kubectl get svc -o wide
NAME                                           TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE     SELECTOR
broken-gorilla-nginx-ingress-controller        LoadBalancer   10.111.2.40      <pending>     80:31105/TCP,443:30258/TCP   9m38s   app=nginx-ingress,component=controller,release=broken-gorilla
broken-gorilla-nginx-ingress-default-backend   ClusterIP      10.103.239.117   <none>        80/TCP                       9m38s   app=nginx-ingress,component=default-backend,release=broken-gorilla
kubernetes                                     ClusterIP      10.96.0.1        <none>        443/TCP                      4d4h    <none>

helm View:

[root@master /]# helm ls --all nginx-ingress
NAME            REVISION    UPDATED                     STATUS      CHART               APP VERSION NAMESPACE    
nginx-ingress   1           Tue Jul 30 14:39:58 2019    DEPLOYED    nginx-ingress-0.9.5 0.10.2      ingress-nginx

reference:

Use kubeadm installation Kubernetes 1.15

Use Helm install Nginx ingress

Helm use rapid deployment Ingress

Guess you like

Origin www.cnblogs.com/hongdada/p/11270704.html